停止性問題の概要
停止性問題とは、任意のプログラムとデータの組み合わせに対して、そのプログラムが有限な時間内に停止するかどうかを判断できる
アルゴリズムが存在するかどうかを問う問題です。この概念は、
計算可能性理論において非常に重要な役割を果たしています。
歴史的背景
1936年に
アラン・チューリングは、停止性問題を解く
アルゴリズムは存在しないことを証明しました。彼は、ある
アルゴリズムが存在すると仮定し、それを用いた場合に
矛盾が生じることを示す方法を用いました。この証明は、自己言及と反論を通じて、
アルゴリズムの限界を明らかにしました。
プログラムの基本的な扱い
プログラムAにデータxを入力し、その実行結果をy=A(x)と表現します。現代のコンピュータの動作においては、プログラムの実行ファイルをデータファイルとして扱うことが可能であり、この性質からプログラム自体を他のプログラムへの入力データとして用いることもできます。これにより、チューリングは「万能
チューリングマシン」の概念を提唱しました。このマシンは、任意の
チューリングマシンを模倣することが可能です。
停止性問題の定義
停止性問題は、具体的には「与えられたプログラムAとデータxに対して、A(x)が実行される際に停止するか否かを判断せよ」という形式で定義されます。この問題に取り組む上で重要なのは、全てのプログラムとデータの組み合わせに対して常に正しく結果を提示するプログラムHが存在しない点です。すなわち、
1. プログラムAの実行が停止する場合、H(A,x)はYESを返す。
2. プログラムAの実行が停止しない場合、H(A,x)はNOを返す。
このようなプログラムは存在しないことが示されています。
証明の概要
停止性問題を解くプログラムHが存在すると仮定すると、新たなプログラムMを定義することができます。このプログラムMは、H(A,A)がYESのときは停止せず、NOのときは停止します。この2つの条件が
矛盾を引き起こすことがショッキングな点です。具体的には、M(M)が停止するならば、H(M,M)=NOとなるため、停止しないことと合わせて
矛盾が生じます。また、M(M)が停止しない場合も、同様に
矛盾が生じます。したがって、停止性問題を解くプログラムHは存在しないという結論に至ります。
この停止性問題の証明は、
カントールの対角線論法と相互に関連しています。対角線論法を用いることによって、特定のプログラムの組み合わせの中には、すべての組み合わせを網羅することはできないことが示されます。特に、特定の自然数に基づくプログラムに対しても、その実行結果の全体を網羅することが非可能であるという点を強調しています。
不完全性定理とのつながり
停止性問題の決定不能性は、ゲーデルによる第一不完全性定理にも関係しています。この理論は、ある理論がすべての命題を証明または反証できるわけではないことを示しており、具体的には「プログラムMがある入力xで停止する」という命題は証明可能である一方で、関連する逆命題は証明できないことが示されています。これによって、理論の限界がさらに浮き彫りにされ、計算可能性に関する包括的な理解が得られます。
結論
停止性問題は、現代計算理論における重要な概念であり、
アルゴリズムの限界やプログラムの性質を理解するための鍵となります。これにより、様々な計算機能や理論の発展が促進され、新たな
アルゴリズムや技術が生み出されています。