アルゴリズムセットのカーディナリティ


15

議論の誰かが、特定の問題に取り組むための少なくとも連続した数の戦略が存在する可能性があると考えています。特定の問題は取引戦略(アルゴリズムではなく戦略)でしたが、それは私の質問の要点の横にあると思います。

これにより、一連のアルゴリズムの基数について考えるようになりました。私は少し探していましたが、何も思いつきませんでした。チューリングマシンは有限のアルファベットセットで動作し、テープはインデックス付け可能でなければならず、したがってカウント可能でなければならないため、数え切れないほどの数のアルゴリズムを持つことは不可能だと考えてきました。私の集合論は確かに錆びているので、私の推論が有効であるかどうかは確かではなく、おそらくそれを証明することはできないでしょうが、それは興味深い考えです。

アルゴリズムのセットの基数は何ですか?


1
Yuval Filmusが述べたように、チューリング機械は数え切れないほどあります。しかし、ブール値の関数を計算できるため、ブール回路の多くの不均一なファミリーが連続しています。しかし、それはおそらく「アルゴリズム」の意味ではありません。
モニカの

回答:


28

アルゴリズムは非公式に、何らかのタスクを達成するための書かれた命令の有限シーケンスとして記述されます。より正式には、それらはチューリングマシンとして識別されますが、コンピュータープログラムとしても同様に説明できます。

使用する正確な形式はそれほど重要ではありませんが、基本的なポイントは、各アルゴリズムを有限の文字列として書き留めることができることです。簡単にするために、ゼロと1を想定します。ゼロと1のシーケンスは、バイナリで記述された自然数です。つまり、すべてのアルゴリズムは自然数として表現できるため、最大で数えられる無限のアルゴリズムが存在するということです。

完全な信用を得るには、一部の自然数が有効なプログラムをコーディングしない可能性があるため、自然数よりもアルゴリズムが少ない可能性があることを心配する必要があります。(ボーナスクレジットについては、2つの異なる自然数が同じアルゴリズムを表す可能性があるのではないかと思われるかもしれません。)ただしprint 1print 2print 3というように異なるすべてのアルゴリズムとすべてなので、無限に多くのアルゴリズムは、少なくとも可算あります。

したがって、アルゴリズムのセットは数え切れないほど無限であると結論付けます。


コメントは詳細なディスカッション用ではありません。この会話はチャットに移動さました
ジル 'SO-悪であるのをやめる'

10

アルゴリズムのセットは数え切れないほど無限です。これは、各アルゴリズムには、Turingマシンなどの有限の記述があるためです。

アルゴリズムの記述が有限であるという事実により、あるアルゴリズムを別のアルゴリズムに入力することができ、これが計算可能性理論の基礎となります。たとえば、停止問題を定式化できます。


7

特定の問題に取り組むための少なくとも連続した数の戦略

「連続体」はおそらく実数を意味するはずです...「少なくとも」をその単語と一緒に使用すると、ばかげていることになります。少し口に出して言うと:数え切れないほど無限はかなり大きいが、数え切れないほど無限は...大きいよりも大きい。はるかにそう。計り知れない。

それで、それを窓の外に捨てましょう。私たちがどのような無限大を扱っているかを知ることは、非常に簡単です(そして、あなたの友人が理論的なコンピューターサイエンスを聞いたことがなくても、直感的です)。

  • あらゆるアルゴリズムをチューリング完全言語で実装できます。現実世界の言語(Java、Cなど)のお気に入りの毒を選んで、これを少し分かりやすく説明してください。これらはすべて、誰もが思いつくアルゴリズムの理論セットと同等です。すべてのアルゴリズムはそれ自体が有限であることに注意してください。つまり、書き留めるために無限に多くのシンボルを必要とするアルゴリズムはありません。
  • 複雑なチューリングマシンについては考えないでください。選択した言語は、単純なファイルを使用してソースコードを保存します。すべてのファイルは、小さな数字(別名、バイト)のコレクションです。重要なことは、これらの数値が連続的ではなく整数であることはほぼ間違いありません。(もしあなたが純粋主義者であり、理論的な体制にとどまりたいなら、「バイト」という言葉を「記号」に置き換えれば、何も変わりません。)ください、その他のもの)、それらを1つの圧縮アーカイブ(つまり、1つのファイル)に圧縮するだけです。
  • これで、単一の整数をそこにあるすべてのファイルに全単射で割り当てることができます。単にファイルのビット/バイトの混乱を次々に書き込み、バイナリで表現された非常に膨大な数になります。遠い過去に、人々は実際にそれをしました:彼らはコンパイルされたバイナリプログラムを雑誌の16進数の長いリストとして印刷しました。あなたはそれらを入力するでしょうが、それらを数字以外のものとして見ることは決してありません(多くの場合、入力を容易にするために8または16桁のセットに便利にグループ化されます)。
  • そのため、すべてのプログラムは、任意の大きさではありますが、整数で表すことができます。逆のラウンドも機能します-すべての整数をすぐに簡単にファイルに転送し、コンパイラに投げることができます(明らかに、それらのほんの一部だけが有効なプログラムになりますが、それは今では重要ではありません)。
  • 結局、プログラム、つまりアルゴリズムは整数のサブセットです。したがって、数え切れないほど多くしか存在できません。
  • NB、単一のアルゴリズムのさまざまな実装が存在するという事実は、私たちにとって有利です。つまり、それらの整数の多くは同じアルゴリズム(の異なる表現)に凝縮されます。したがって、可算無限がすでに最小の無限ではない場合、アルゴリズムの数がさらに少なくなることを心配する必要がありますが、確かに大きくなりません(つまり、不可算)。

特定の問題は取引戦略(アルゴリズムではなく戦略)でした

あなたの友人が「戦略」で何を意味するのか分かりません。私は彼がアルゴリズムのようなものを意味していると思いますが、コンピューターにハッキングするのに十分なほど詳細に定式化されていませんか?それとも、実行中に人間の「直感」に何らかの形で依存するものはどれですか?もしそうなら、これらは無関係な詳細です。人類は、私たちがCSで使用しているという意味で、「アルゴリズム」よりも強力な、またはより大きなプロセスの記述をまだ発見していません。


3
再:「「連続」はおそらく実数を意味するはずです...「少なくとも」をその単語と一緒に使用すると、「ばかげている」ということはありません。 。実数よりも実数のセットの方が多いため、連続体よりも大きいセットについて話すのは非常に普通です。
ruakh

6

見る GödelNumberingを。これは、アルゴリズムが再帰的に列挙可能なセットのように可算であることはコンピューターサイエンスの基本的な事実です。

アルゴリズムは可算であるため、正式なシステムのすべてのセットを検証する(問題に真理値を割り当てる)アルゴリズムが存在しないことを簡単に示すことができます。これは、一連の問題をブール値にマッピングするすべての関数にアルゴリズムを割り当てることに相当します。ただし、これらの関数のセットは数えられません(問題のセットのべき集合と同じ基数であるため、数えられません)。

これが、アルゴリズムが単なる関数よりも「パワフル」でなければならない理由について直感を与えてくれることを願っています。


2

戦略をアルゴリズムで実装する必要があるという要件から始めず、実際の離散化効果を無視する場合、たとえば、パラメーター化された取引戦略として以下を受け入れることができます。

abab

ab


0

アルゴリズムをバイナリ*で書かれたコンピュータプログラムと考えると、アルゴリズムの数は(整数の)バイナリ数の数になります。したがって、アルゴリズムの基数は整数の基数です。

*チューリングマシンがすべてのアルゴリズムを実行でき、コンピューターがあらゆるプログラムチューリングマシンを実行できるという証拠は、この答えを不必要に長くするでしょう。前者はアルゴリズムの定義に依存するかもしれませんが、計算できない取引戦略を使用しているとは思いません。


1
これは既存の回答に何を追加しますか?
デビッドリチャービー

「チューリングマシンがすべてのアルゴリズムを実行できることを証明すると、この答えが不必要に長くなります」。答えは不可能です。なぜなら、あなたは教会チューリングの論文を
ジョン・コールマン

@DavidRicherby簡潔さを追加します。
user558317

1
@JohnColeman証明なしで証明の不可能性を主張する?私は、a)OPはおそらく気にしないだろうということを意味しました。b)定義の問題だからです。質問には「チューリングマシンはアルファベットの有限セットで動作し、テープはインデックス付け可能でなければならず、したがってカウント可能でなければならないため、数え切れないほどの数のアルゴリズムを持つことは不可能です。」
user558317

0

他の回答では、計算の標準モデル(チューリングマシン、ラムダ計算など)では、アルゴリズムのセットは数え切れないほど無限であることが既に説明されています。

ただし、アルゴリズムのセットが数え切れないほど無限にある計算の他の理論モデルがあります。たとえば、Blum–Shub–Smaleマシンには、数え切れないほど無限の命令セット1があるため、アルゴリズムのセットも数え切れないほど無限です。


1正確には、命令セット自体は有限ですが、数え切れないほど無限のセット(有理関数)を使用してパラメーター化されます。


有理関数は可算ではありませんか?
ベンミルウッド

@BenMillwood これがなぜそうなるのかの証拠を簡単にスケッチしてください。
マークC

@BenMillwood各についてx0Rf:xx0

ああ、定数も合理的でなければならないと思っていました。じゃあ心配しないで。
ベンミルウッド

-1

チューリングマシンはアルファベットの有限セットで動作し、テープはインデックス付け可能でなければならないため、カウント可能

特定のサイズを考えると、有限数のチューリングマシンがあり、数え切れないほどのサイズがあります。有限である限り、カウント可能な数のセットはカウント可能です。アルファベットのサイズはチューリングマシンの数の要因ですが、テープのサイズはそうではありません。アルファベットに数え切れないほど多くの文字を含めることができる場合、数え切れないほど多くのマシンが存在することになります(各実数は一連の記号としてエンコードできます)。

「アルゴリズム」とは、単に入力と出力の間の対応であって、チューリングマシンなどの「計算」の通常の意味ではないことを意味する場合は、数え切れないほど多くの異なる入力がある場合、明らかに数え切れないほど多くのアルゴリズムがあります:実数ごとに、入力として自然数を受け取り、その小数点以下の桁を出力する「アルゴリズム」を定義できます。たとえば、入力「3」を与える.5.5


ここであなたが何をしようとしているのか分かりません。問題はアルゴリズムの数に関するものであり、アルゴリズムは入力ではなくチューリングマシンです。開始時にテープ上に無数の非空白文字を許可しても、アルゴリズムの数には影響しません。また、いずれの場合でも、終了実行では入力の有限プレフィックスのみを読み取ることができます。一方、2番目の段落では、アルゴリズムと数学関数を混同しています。数え切れないほど多くの実数を除くすべてについて、あなたに伝えることができるアルゴリズムはありませんn

とにかく、数え切れないほど多くのアルゴリズムを持つとはどういう意味でしょうか?あなたは数え切れないほど多くしか書き留めることができません。アルゴリズムを書き留めることができないものはどのような意味ですか?
デビッドリチャービー

@DavidRicherbyええ、私はいくつかのことを混乱させました。しかし、一般的な意味で「アルゴリズム」を使用して、一連の選択肢を参照できます。そしてその意味で、入力に基づいて数字を選択することは、計算可能なものではありませんが、「アルゴリズム」です。
累積

コンピューターサイエンスでは、「アルゴリズム」と「計算可能」は同じものです。アルゴリズムはチューリングマシンです。
デビッドリチャービー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.