計算可能な関数よりも計算できない関数の方が多いのはなぜですか?


29

現在、アルゴリズムと複雑さに関する本を読んでいます。現時点では、計算可能および計算不可能な機能について読んでおり、私の本は、計算可能よりも計算不可能な機能がはるかに多いと述べています。実際、大半は計算不可能です。ある意味では、私はそれを直感的に受け入れることができますが、この本は正式な証拠を与えておらず、トピックについて詳しく説明していません。

ここで誰かがそれについて詳しく説明したり、計算可能な関数よりも計算できない関数が多い理由をより厳密に理解したりすることを望みました。


2つの無限のセットを比較する場合、「more」のセマンティクスを修正する必要があります。
ラファエル

回答:


31

ある可算多くの計算機能:

各計算可能な関数には、少なくとも1つのアルゴリズムがあります。各アルゴリズムは、例えば、有限シンボル使用してバイナリストリング有限集合からのシンボルを使用して、有限の説明を持っている{0,1}。有限バイナリ文字列の数は、で表される{0,1}可算である(すなわち、自然数の数と同じN)。

したがって、最大で数え切れないほど多くの計算可能な関数が存在します。ある少なくとも可算多くの計算機能毎ので、定数関数F X = cが計算可能です。c{0,1}f(x)=c

言い換えると、次の間に対応関係があります。

  • 計算可能な関数のセット、
  • アルゴリズムのセット、
  • から有限の文字列の集合 { 0 1 }、および{0,1}{0,1}
  • 、自然数のセット。N

一方、文字列(または自然数)には、数え切れないほど多くの関数があります。関数(またはF { 0 1 } *{ 0 1 } *)は、各入力の値を割り当てます。これらの各値は、他から独立して選択できます。したがって、N N = 2 Nの可能な関数があります。自然数上の関数の数は、実数の数に等しくなります。f:NNf:{0,1}{0,1}NN=2N

数え切れないほど多くの関数しか計算できないため、それらのほとんどは計算できません。実際、計算できない関数の数もです。2N

これを直感的に想像したい場合は、自然数と実数、または有限バイナリ文字列と無限バイナリ文字列について考えてください。自然数や有限の文字列よりも実数や無限のバイナリ文字列の方がはるかに多くあります。言い換えれば、(この事実の証明については、Cantorの対角引数Cardinal算術を参照してください)。N<2N


いい答えだ!私が理解していない(ここでは些細なことを見逃しているかもしれません)のは、を取得する方法ですか?NN=2N
hsalin

それは枢機arithmetic算術です。自然数を2進数の自然数の無限のシーケンスで記述します。これにより、直感が得られます。
カベ

なぜこの仮定が真実であるのか-「各アルゴリズムには、有限セットのシンボルを使用した有限記述がある」アルゴリズムに無限の記述ができないのはなぜですか?
ローランドピフラカス

アルゴリズムの定義の一部である@RolandPihlakas(ご希望であれば、コンピュータープログラム)。
カヴェー

9

これは、数え切れないほど多くの計算不可能なブール関数の「明示的な」構成です。してみましょう停止問題の特徴的な機能を言う、いくつかの固定非計算ブール関数です。関数の集合を考える F = { F N{ 0 1 } X NF 2 X = K X } F Fは計算不可能であり、Fは非可算です。K

F={f:N{0,1}:xN,f(2x)=K(x)}.
fFF

計算可能な機能を持つ同様の構造があります。計算機能与え、ましょう G = { G N{ 0 1 } N NM N G M = R M } 言い換えれば、G Gが異なる場合R有限個の値に関する。Gのすべての機能R

G={g:N{0,1}:nNmn,g(m)=R(m).}
gGRG計算可能です(有限の多くの違いをハードコードします)。前の状況とは対照的に、は可算です。G

そのため、計算可能な場合のように「潜在的な」無限ではなく、実際の無限の「無限に多くの」自由度があるため、計算不可能な関数がたくさんあります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.