ライスの定理
ライスの定理(英: Rice's Theorem)は、
計算機科学における
計算可能関数の理論に関する重要な結果です。特定の性質Fを基に、任意の部分
計算可能関数がその性質を満たすかどうかを判定する手段は存在しないことを示しています。この定理は、計算可能性や決定性の限界を考える上で非常に重要な役割を果たしています。
定理の概要
ライスの定理の核心は、次のような命題にまとめられます:
「性質Fが自明でない限り、与えられたプログラムAに対して、関数fAが性質Fを満たすかどうかを判断できるようなプログラムMは存在しない。」ここで、自明な性質とは「全ての関数fAが満たす性質」または「いかなる関数fAも満たさない性質」のことを指します。
この定理を理解するためには、まず関数fAの考え方を知っておく必要があります。関数fAは、特定のプログラムAに基づいて計算されるもので、Aが入力xに対して出力yを生成します。ただし、Aが無限ループに入った場合の出力は特殊記号「⊥」で示されることに注意が必要です。
例えば、プログラムAが「xとyを足した結果にzを加える」というものであれば、fA(x, y, z)はx + y + zになります。一方、プログラムBが同様の結果を出力できる場合、fAとfBが異なるプログラムであっても、出力は同じになることがあり、これがライスの定理の根本的な性質となります。
次に、具体的な例とともに、ライスの定理がどのように適用されるかを考察します。例えば、あるプログラムが全ての入力に対して出力0を返すか、少なくとも1つの入力に対して0を返すか、または出力が常に10ビット以下であるかどうかの判定問題は、いずれもライスの定理によって決定不能であるとされています。
さらに、この定理は「
停止性問題の決定不能性定理」の一般化でもあります。
停止性問題とは、与えられたプログラムが入力に対して有限時間内に停止するかどうかを判断する問題です。ライスの定理はこの
停止性問題を拡張し、停止性の有無に関わらず、依然としてその性質を判断するプログラムは存在しないことを示しています。
証明の手法
ライスの定理の証明方法は背理法によって行われます。以下のような想定に基づいて証明が進められます。
1. 任意の非自明な性質Fが存在し、fAがFを満たすかを判断できるプログラムMが存在すると仮定する。
2. もしfAがFを満たすならM(A)=YESとなり、そうでなければM(A)=NOになる。
3. fAとfBが同じ結果を出力する場合、Mの出力も同様でなければなりません。このため、無限に停止しないプログラムUを考えると、出力は自明な性質に基づいて「⊥」となることが分かります。
このように、ライスの定理は、
計算可能関数の性質に関する判断がいかにして不可能であるかを示す重要な理論であり、
計算機科学のさまざまな領域で応用されています。
まとめ
ライスの定理は、さまざまなプログラムが持つ性質を判断する上での限界を示した重要な成果です。この定理を理解することは、計算可能性やアルゴリズムの限界を学ぶ上で、より深い理解を促進します。
計算機科学における理論的な基盤を築くこの定理は、今後も多くの分野で重要な意味を持ち続けるでしょう。