Halting Problemの決定不能性の証明は、結果を逆にすることでごまかしますか?


12

チューリングの停止問題を理解するのに苦労しています。

彼の証明は、与えられた入力に対してコンピューターが永久に停止するかループするかを決定できる魔法のマシンが存在することを前提としています。次に、出力を逆にする別のマシンを接続しますが、矛盾があるため、HHHは存在できません。

私の懸念は、答えを逆にしたため間違っていると言っているように見えることです。類推として、特定の入力で正しい答えを出力し、他の入力で間違った答えを出力するというマシンがある場合。次に、Aの結果を逆にする別のマシンを接続して、2つのマシンの組み合わせがAの定義方法と矛盾するようにします。2台のマシンは、Aが正しい回答を出力するように定義されている入力に対して誤った回答を生成し、Aが誤った回答を出力するように定義されている入力に対して正しい回答を出力します。これは矛盾と呼ばれますか?したがって、一部の入力で正しい答えを出力し、他の入力で誤った答えを出力するマシンは存在しませんか?AAAAA

回答:


20

短いバージョン:マシンの出力は正しくも正しくもありません。単に矛盾しているため、最初に決定したマシンは、入力マシンが特定の文字列で停止かどうか存在できないます。

長いバージョン:最初に証拠をスケッチします(または少なくとも1つのバージョン-多くあります)。

  1. 我々はチューリングマシンがあるとチューリングマシンか否かを判断するM個の入力に停止X又はありません。HALT(M,x)Mx
  2. 使用、我々は機械コンストラクトF L I PM X 使用H A L TをするかどうかをチェックするためにMの上の停止X、次に反対側、すなわちを行うか否かの場合Mの上の停止XF L I Pは場合、ループMは上で停止していないのxF L I Pの停止。HALTFLIP(M,x)HALTMxMxFLIPMxFLIP
  3. 最後に、我々は、TMの作成 TMの説明を受け取り、実行します(私は良い名前を使い果たした)、F L I Pを入力してM M )を出力何でも、F L I P出力。C(M)FLIP(M,M)FLIP

決定者が存在する限り、これらの各ステップは実装が簡単であることに注意することが重要です。F L I PH A L Tを使用して何をするかをチェックする必要があり、Cは入力を複製してF L I Pに渡すだけです。HALTFLIPHALTCFLIP

私たちが実行したときに何が起こるかを見たときに矛盾が生じ。いずれかのCは、入力として、またはそれ自体が与え停止。H A L Tがこれを決定します。C(C)CHALT

  • 場合入力に停止CはH A L Tは言うY E Sを、その後F L I Pはループ、そうであろうC意志ループ、矛盾H A L TをCCHALTYesFLIPCHALT
  • 場合入力にループCH A L Tは言うN個のOを、その後F L I Pのように、停止するCはまた、停止、矛盾しますH A L TをCCHALTNoFLIPCHALT

構築の各ステップは明らかに健全であるため、は存在できないとのみ結論付けることができます。H A L Tが何を言っても、何を出力するかを決定できない場合、つまり問題が決定できない場合を構築しました。ちょっとポイントを実際に叩くために、H A L Tは存在できません-つまり、停止問題を決定するTMは存在できません-論理的に存在しない場所を明示的に構築したケースが少なくとも1つあるからです可能な答え。決定者が間違った答えを出力することは許可されておらず、何かを出力する必要があることを忘れないでください。しかし、構築した場合、考えられる両方の答えが間違っています。HALTHALTHALT


マシン定義は、Mが受け入れる入力を受け入れないため、意味がありません。それでは、どうすれば実行できますか?CM
AleksandrH

7

あなたは「矛盾」の2つの異なる意味を議論しています。

あなたのアナロジーでは、マシンAとその反転された変更は、出力が常に異なるという意味で互いに矛盾しています。(例えば、彼らは「整数上の2つのテスト機能を実装するかもしれないX?≤5」と「X > 5?」)確かに「矛盾」は、日常の使用に意味することができます一つのことだが、それは論理的にはそれが何を意味するかではないこと証明。

論理的証明では、それはより強力なもの、つまり単に不可能なものを意味します。たとえば、5を超えるすべての入力で「true」を返し、10未満のすべての入力で「false」を返す関数です。たとえば、7の場合、その出力は両方とも「true」であるため、 「false」ですが、それらは同じではありません。チューリングの議論は、停止プログラムがより強い意味で矛盾していることを示しています。それが不可能または既に偽であることがわかっている何かにつながると仮定します。


2

停止の問題が決定不能であることを示すもう1つの証拠があります。私たちは、プログラムがあると言う出力文字列、それが停止し、出力した場合のx。(プログラムが停止しない場合、文字列は出力されません。)f n を、最大nの長さのCプログラムによって出力される最も長い文字列の長さと定義します。xxf(n)n

停止の問題が決定可能であったと仮定します。次に、Cプログラムによってを計算できます。f(m)

入力、長さが最大mのすべての停止中のCプログラムを実行し、出力を決定します。最大出力の長さを返します。mm

つまり、各に対して、f m + 1個のゼロを出力するプログラムP mを書くことができます。P mの長さは?P mを実装する、プレースホルダー付きの固定Cプログラムテンプレートがあります。プレースホルダーには定数mを入力する必要があります。mを指定する| m | 文字(ここで| M |の10進表現の長さメートル)、どこ| m | ログ10mPmf(m)+1PmPmmm|m||m|m|m|log10mTPmT+log10mmm=2TT+log10mmf(m)Pmf(m)f(m)+1。私たちは矛盾に達しました。

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