30
決定不能な問題 田浦健次朗 1 / 19

決定不能な問題 - 東京大学tau/lecture/...特に[0;1] の実数を2 進数で展開す ると考えれば, 0 x 1の実数$ 0-1 の(無限の) 列 実数の集合が可算個,

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 決定不能な問題 - 東京大学tau/lecture/...特に[0;1] の実数を2 進数で展開す ると考えれば, 0 x 1の実数$ 0-1 の(無限の) 列 実数の集合が可算個,

決定不能な問題

田浦健次朗

1 / 19

Page 2: 決定不能な問題 - 東京大学tau/lecture/...特に[0;1] の実数を2 進数で展開す ると考えれば, 0 x 1の実数$ 0-1 の(無限の) 列 実数の集合が可算個,

決定不能 (undecidable) な問題

▶ いかなるアルゴリズムでも「解けない」「問題」▶ 要するに, コンピュータで解けない問題

2 / 19

Page 3: 決定不能な問題 - 東京大学tau/lecture/...特に[0;1] の実数を2 進数で展開す ると考えれば, 0 x 1の実数$ 0-1 の(無限の) 列 実数の集合が可算個,

正しい理解

そもそもアルゴリズムで「問題」が「解ける」とは?▶ 問題: = 仕様 = 入力と出力の間で満たされるべき「関係」

▶ ある「問題」を「解く」アルゴリズム▶ 停止性: 任意の入力に対して, 有限時間で停止する▶ その時の出力が正しい

3 / 19

Page 4: 決定不能な問題 - 東京大学tau/lecture/...特に[0;1] の実数を2 進数で展開す ると考えれば, 0 x 1の実数$ 0-1 の(無限の) 列 実数の集合が可算個,

正しい理解

▶ 入力の長さに上限はない (任意の長さの bit 列) → 「無限個」ある

▶ 正確には, 可算集合 (countable set)

▶ 言い換えれば, 「仕様」= 「自然数 → 自然数」の関数▶ 数学では具体的な手順がなくても関数が「定義」できる.例

▶ …f(x) は連続で, かつ f(x) < 3 を満たす. そこでf(x) の最大値を M とする …

最も簡潔には, どのような「自然数の関数」が具体的に手順化可能か, という問い

4 / 19

Page 5: 決定不能な問題 - 東京大学tau/lecture/...特に[0;1] の実数を2 進数で展開す ると考えれば, 0 x 1の実数$ 0-1 の(無限の) 列 実数の集合が可算個,

可算集合 (countable set)

「集合 A が可算集合」⇐⇒ 「N ↔ A (自然数の集合) という1-1 対応を作ることができる」言い換え

1. A の元が一度ずつ現れる数列 a0, a1, a2, . . . を作ることができる

2. 自然数から A への全単射 i 7→ a(i) ∈ A が存在する

5 / 19

Page 6: 決定不能な問題 - 東京大学tau/lecture/...特に[0;1] の実数を2 進数で展開す ると考えれば, 0 x 1の実数$ 0-1 の(無限の) 列 実数の集合が可算個,

可算集合の例1. 3 の倍数の集合 3N :

0, 3, 6, 9, . . .

2. 整数の集合 Z

0, 1,−1, 2,−2, 3,−3, . . .

3. 自然数 2 つの組 (i, j) (i, j ∈ N) の集合 N× N

(0, 0), (0, 1), (1, 0), (0, 2), (1, 1), (2, 0), (3, 0), . . .

4. 任意の長さの bit 列

0, 1, 00, 01, 10, 11, 000, 001, 010, 011, 100, . . .

明らかに, 最初の集合 ⊊ N, 後者 3 つの集合 ⊋ N だが, それでも 1-1 対応が存在することに注意 (「無限」の不思議)

6 / 19

Page 7: 決定不能な問題 - 東京大学tau/lecture/...特に[0;1] の実数を2 進数で展開す ると考えれば, 0 x 1の実数$ 0-1 の(無限の) 列 実数の集合が可算個,

可算でない集合の例

▶ 実数全体の集合 R▶ 自然数の部分集合の集合 2N

▶ 自然数から {0, 1} への写像の集合 N → {0, 1}▶ (上と全く同じ事だが) {0, 1} の (無限) 数列の集合

それらが可算でないことの証明は後述

7 / 19

Page 8: 決定不能な問題 - 東京大学tau/lecture/...特に[0;1] の実数を2 進数で展開す ると考えれば, 0 x 1の実数$ 0-1 の(無限の) 列 実数の集合が可算個,

一番有名な決定不能な問題: 停止問題 (HaltingProblem)

▶ 入力: プログラムの文面 P とそれへの入力 (x)▶ 出力: P に入力 x を与えた時, 停止するか否か▶ つまり以下の関数 halt を「計算」したい

halt(P, x) ={

1 (Pにxを与えたら停止する場合)0 (Pにxを与えたら停止しない場合)

要するに, 「あなたが今走らせているプログラムは決して停止しませんよ」と (正確に) 教えてくれる言語処理系�

1 $ perl my_script my_data2 error: your program would not terminate on your data

8 / 19

Page 9: 決定不能な問題 - 東京大学tau/lecture/...特に[0;1] の実数を2 進数で展開す ると考えれば, 0 x 1の実数$ 0-1 の(無限の) 列 実数の集合が可算個,

停止問題は決定不能 (1)▶ 対角線論法を用いた証明▶ プログラムも可算個しかない (∵有限個の文字列で書かれる).そこで「全てのプログラム」が現れる列を, P0,P1,P2, . . . と書く

▶ データも同様に可算個なので,「全てのデータ」が現れる列を,X0,X1,X2, . . . と書く

▶ 関数 halt を実現するプログラム—任意の i, j に対して Pi に Xjを与えたら停止するか否かを答えられるプログラム H—があったとし, 矛盾を導く (背理法).

P0

P1

P2

P3

P4

...

9 / 19

Page 10: 決定不能な問題 - 東京大学tau/lecture/...特に[0;1] の実数を2 進数で展開す ると考えれば, 0 x 1の実数$ 0-1 の(無限の) 列 実数の集合が可算個,

停止問題は決定不能 (1)▶ 対角線論法を用いた証明▶ プログラムも可算個しかない (∵有限個の文字列で書かれる).そこで「全てのプログラム」が現れる列を, P0,P1,P2, . . . と書く

▶ データも同様に可算個なので,「全てのデータ」が現れる列を,X0,X1,X2, . . . と書く

▶ 関数 halt を実現するプログラム—任意の i, j に対して Pi に Xjを与えたら停止するか否かを答えられるプログラム H—があったとし, 矛盾を導く (背理法).

X0 X1 X2 X3 X4

P0

P1

P2

P3

P4

...

...

9 / 19

Page 11: 決定不能な問題 - 東京大学tau/lecture/...特に[0;1] の実数を2 進数で展開す ると考えれば, 0 x 1の実数$ 0-1 の(無限の) 列 実数の集合が可算個,

停止問題は決定不能 (1)▶ 対角線論法を用いた証明▶ プログラムも可算個しかない (∵有限個の文字列で書かれる).そこで「全てのプログラム」が現れる列を, P0,P1,P2, . . . と書く

▶ データも同様に可算個なので,「全てのデータ」が現れる列を,X0,X1,X2, . . . と書く

▶ 関数 halt を実現するプログラム—任意の i, j に対して Pi に Xjを与えたら停止するか否かを答えられるプログラム H—があったとし, 矛盾を導く (背理法).

0 1

0

1 1

0 1

1 1

0 1

0 1 1

1 0 1 0

0

0

...

...

...

...

...

...............

X0 X1 X2 X3 X4

P0

P1

P2

P3

P4

...

...0

1

0

1

1...

9 / 19

Page 12: 決定不能な問題 - 東京大学tau/lecture/...特に[0;1] の実数を2 進数で展開す ると考えれば, 0 x 1の実数$ 0-1 の(無限の) 列 実数の集合が可算個,

停止問題は決定不能 (2)▶ 以下のプログラム C を考える�1 bool C(x) {2 if (H(x,x))3 /* 無限ループ */4 while (1) ;5 else6 return 1;7 }

▶ C(0) = 1,C(1) = 0,C(2) =1,C(3) = 0,C(4) = 0, . . .

▶ C はどこかの行 (Pc) と一致するはずだが, 明らかにどの Pc とも対角線上で異なる

0 1

0

1 1

0 1

1 1

0 1

0 1 1

1 0 1 0

0

0

...

...

...

...

...

...............

X0 X1 X2 X3 X4

P0

P1

P2

P3

P4

...

...0

1

0

1

1...

10 / 19

Page 13: 決定不能な問題 - 東京大学tau/lecture/...特に[0;1] の実数を2 進数で展開す ると考えれば, 0 x 1の実数$ 0-1 の(無限の) 列 実数の集合が可算個,

停止問題は決定不能 (2)▶ 以下のプログラム C を考える�1 bool C(x) {2 if (H(x,x))3 /* 無限ループ */4 while (1) ;5 else6 return 1;7 }

▶ C(0) = 1,C(1) = 0,C(2) =1,C(3) = 0,C(4) = 0, . . .

▶ C はどこかの行 (Pc) と一致するはずだが, 明らかにどの Pc とも対角線上で異なる

1

0 1

0

0

1 1

0 1

1 1

0 1

0 1 1

1 0 1

0

0

0

0

1

0

...

...

...

...

...

...............

X0 X1 X2 X3 X4

P0

P1

P2

P3

P4

...

...0

1

0

1

1

...

...

10 / 19

Page 14: 決定不能な問題 - 東京大学tau/lecture/...特に[0;1] の実数を2 進数で展開す ると考えれば, 0 x 1の実数$ 0-1 の(無限の) 列 実数の集合が可算個,

停止問題は決定不能 (2)▶ 以下のプログラム C を考える�1 bool C(x) {2 if (H(x,x))3 /* 無限ループ */4 while (1) ;5 else6 return 1;7 }

▶ C(0) = 1,C(1) = 0,C(2) =1,C(3) = 0,C(4) = 0, . . .

▶ C はどこかの行 (Pc) と一致するはずだが, 明らかにどの Pc とも対角線上で異なる

1

0 1

0

0

1 1

0 1

1 1

0 1

0 1 1

1 0 1

0

0

0

0

1

0

...

...

...

...

...

...............

X0 X1 X2 X3 X4

P0

P1

P2

P3

P4

...

...0

1

0

1

1

...

...

10 / 19

Page 15: 決定不能な問題 - 東京大学tau/lecture/...特に[0;1] の実数を2 進数で展開す ると考えれば, 0 x 1の実数$ 0-1 の(無限の) 列 実数の集合が可算個,

停止問題は決定不能 (3)▶ 実質的には同じだがよく見かける別の論証の仕方.�

1 bool C(x) {2 if (H(x,x))3 /* 無限ループ */4 while (1) ;5 else6 return 1;7 }

▶ C も P0,P1, . . . のどこかに現れる. それを Pc としよう

▶ C に c を与えたらどうなるか?

0 1

0

1 1

0 1

1 1

0 1

0 1 1

1 0 1 0

0

0

...

...

...

...

...

...............

X0 X1 X2 X3 X4

P0

P1

P2

P3

P4

...

...0

1

0

1

1...

11 / 19

Page 16: 決定不能な問題 - 東京大学tau/lecture/...特に[0;1] の実数を2 進数で展開す ると考えれば, 0 x 1の実数$ 0-1 の(無限の) 列 実数の集合が可算個,

停止問題は決定不能 (3)▶ 実質的には同じだがよく見かける別の論証の仕方.�

1 bool C(x) {2 if (H(x,x))3 /* 無限ループ */4 while (1) ;5 else6 return 1;7 }

▶ C も P0,P1, . . . のどこかに現れる. それを Pc としよう

▶ C に c を与えたらどうなるか?

0 1

0

1 1

0 1

1 1

0 1

0 1 1

1 0 1 0

0

0

...

...

...

...

...

...............

X0 X1 X2 X3 X4

P0

P1

P2

P3

P4

...

...0

1

0

1

1...

11 / 19

Page 17: 決定不能な問題 - 東京大学tau/lecture/...特に[0;1] の実数を2 進数で展開す ると考えれば, 0 x 1の実数$ 0-1 の(無限の) 列 実数の集合が可算個,

停止問題は決定不能 (3)▶ 実質的には同じだがよく見かける別の論証の仕方.�

1 bool C(x) {2 if (H(x,x))3 /* 無限ループ */4 while (1) ;5 else6 return 1;7 }

▶ C も P0,P1, . . . のどこかに現れる. それを Pc としよう

▶ C に c を与えたらどうなるか?

0 1

0

1 1

0 1

1 1

0 1

0 1 1

1 0 1 0

0

0

...

...

...

...

...

...............

X0 X1 X2 X3 X4

P0

P1

P2

P3

P4

...

...0

1

0

1...

1

11 / 19

Page 18: 決定不能な問題 - 東京大学tau/lecture/...特に[0;1] の実数を2 進数で展開す ると考えれば, 0 x 1の実数$ 0-1 の(無限の) 列 実数の集合が可算個,

停止問題は決定不能 (4)▶ C に c を与えたらどうなるか?�1 if (H(c, c))2 無限ループ;3 else4 終了;

▶ halt(Pc,Xc) = 1▶ → H(c, c) = 1▶ → C(c) は停止しない▶ → halt(Pc,Xc) = 0▶ → 矛盾

▶ halt(Pc,Xc) = 0 も同様 →矛盾 (やってみよ)

0 1

0

1 1

0 1

1 1

0 1

0 1 1

1 0 1 0

0

0

...

...

...

...

...

...............

X0 X1 X2 X3 X4

P0

P1

P2

P3

P4

...

...0

1

0

1...

1

12 / 19

Page 19: 決定不能な問題 - 東京大学tau/lecture/...特に[0;1] の実数を2 進数で展開す ると考えれば, 0 x 1の実数$ 0-1 の(無限の) 列 実数の集合が可算個,

停止問題は決定不能 (4)▶ C に c を与えたらどうなるか?�1 if (H(c, c))2 無限ループ;3 else4 終了;

▶ halt(Pc,Xc) = 1▶ → H(c, c) = 1▶ → C(c) は停止しない▶ → halt(Pc,Xc) = 0▶ → 矛盾

▶ halt(Pc,Xc) = 0 も同様 →矛盾 (やってみよ)

0 1

0

1 1

0 1

1 1

0 1

0 1 1

1 0 1 0

0

0

...

...

...

...

...

...............

X0 X1 X2 X3 X4

P0

P1

P2

P3

P4

...

...0

1

0

1...

1

12 / 19

Page 20: 決定不能な問題 - 東京大学tau/lecture/...特に[0;1] の実数を2 進数で展開す ると考えれば, 0 x 1の実数$ 0-1 の(無限の) 列 実数の集合が可算個,

停止問題は決定不能 (4)▶ C に c を与えたらどうなるか?�1 if (H(c, c))2 無限ループ;3 else4 終了;

▶ halt(Pc,Xc) = 1▶ → H(c, c) = 1▶ → C(c) は停止しない▶ → halt(Pc,Xc) = 0▶ → 矛盾

▶ halt(Pc,Xc) = 0 も同様 →矛盾 (やってみよ)

0 1

0

1 1

0 1

1 1

0 1

0 1 1

1 0 1 0

0

0

...

...

...

...

...

...............

X0 X1 X2 X3 X4

P0

P1

P2

P3

P4

...

...0

1

0

1...

1

12 / 19

Page 21: 決定不能な問題 - 東京大学tau/lecture/...特に[0;1] の実数を2 進数で展開す ると考えれば, 0 x 1の実数$ 0-1 の(無限の) 列 実数の集合が可算個,

対角線論法

対角線論法はもともとカントールにより「実数の集合が可算でないこと」を示すのに発明された

▶ 実数は (無限桁の) 小数で表せる

▶ 特に [0, 1] の実数を 2 進数で展開すると考えれば,

0 ≤ x ≤ 1の実数↔ 0-1 の (無限の) 列

▶ 実数の集合が可算個, つまり, 全ての実数が現れる数列 r0, r1, . . . があったとする

0 1

0

1 1

0 1

1 1

0 1

0 1 1

1 0 1 0

0

0

...

...

...

...

...

...............

r0= 0.

...

...

0

1

0

1

1...

r4= 0.r3= 0.r2= 0.r1= 0.

小数第 j桁

13 / 19

Page 22: 決定不能な問題 - 東京大学tau/lecture/...特に[0;1] の実数を2 進数で展開す ると考えれば, 0 x 1の実数$ 0-1 の(無限の) 列 実数の集合が可算個,

対角線論法

対角線論法はもともとカントールにより「実数の集合が可算でないこと」を示すのに発明された

▶ 実数は (無限桁の) 小数で表せる▶ 特に [0, 1] の実数を 2 進数で展開すると考えれば,

0 ≤ x ≤ 1の実数↔ 0-1 の (無限の) 列

▶ 実数の集合が可算個, つまり, 全ての実数が現れる数列 r0, r1, . . . があったとする

0 1

0

1 1

0 1

1 1

0 1

0 1 1

1 0 1 0

0

0

...

...

...

...

...

...............

r0= 0.

...

...

0

1

0

1

1...

r4= 0.r3= 0.r2= 0.r1= 0.

小数第 j桁

13 / 19

Page 23: 決定不能な問題 - 東京大学tau/lecture/...特に[0;1] の実数を2 進数で展開す ると考えれば, 0 x 1の実数$ 0-1 の(無限の) 列 実数の集合が可算個,

対角線論法

対角線論法はもともとカントールにより「実数の集合が可算でないこと」を示すのに発明された

▶ 実数は (無限桁の) 小数で表せる▶ 特に [0, 1] の実数を 2 進数で展開すると考えれば,

0 ≤ x ≤ 1の実数↔ 0-1 の (無限の) 列

▶ 実数の集合が可算個, つまり, 全ての実数が現れる数列 r0, r1, . . . があったとする

0 1

0

1 1

0 1

1 1

0 1

0 1 1

1 0 1 0

0

0

...

...

...

...

...

...............

r0= 0.

...

...

0

1

0

1

1...

r4= 0.r3= 0.r2= 0.r1= 0.

小数第 j桁

13 / 19

Page 24: 決定不能な問題 - 東京大学tau/lecture/...特に[0;1] の実数を2 進数で展開す ると考えれば, 0 x 1の実数$ 0-1 の(無限の) 列 実数の集合が可算個,

対角線論法

▶ 右表の対角線上の数を逆転させた0-1 の無限列もまた実数

▶ そこでそれはどこかの行に現れなくてはならないが, 明らかに対角線部分で一致していない

0 1

0

1 1

0 1

1 1

0 1

0 1 1

1 0 1 0

0

0

...

...

...

...

...

...............

r0= 0.

......

0

1

0

1

1...

r4= 0.r3= 0.r2= 0.r1= 0.

小数第 j桁

14 / 19

Page 25: 決定不能な問題 - 東京大学tau/lecture/...特に[0;1] の実数を2 進数で展開す ると考えれば, 0 x 1の実数$ 0-1 の(無限の) 列 実数の集合が可算個,

対角線論法

▶ 右表の対角線上の数を逆転させた0-1 の無限列もまた実数

▶ そこでそれはどこかの行に現れなくてはならないが, 明らかに対角線部分で一致していない

1

0 1

0

0

1 1

0 1

1 1

0 1

0 1 1

1 0 1

0

0

0

0

1

0

...

...

...

...

...

...............

r0= 0.

......

0

1

0

1

1

...

...

r4= 0.r3= 0.r2= 0.r1= 0.

小数第 j桁

14 / 19

Page 26: 決定不能な問題 - 東京大学tau/lecture/...特に[0;1] の実数を2 進数で展開す ると考えれば, 0 x 1の実数$ 0-1 の(無限の) 列 実数の集合が可算個,

対角線論法のその他の応用

対角線論法は, 色々な集合が「可算でない (自然数と 1-1 対応させられない)」ことを示すのに有用である. 以下は演習問題

1. 自然数の部分集合すべての集合 2N は可算でない2. 自然数 → 自然数の関数すべての集合 N → N は可算でない

▶ 注: 2 つ目はすでに, 「決定不能な関数がある」ということの証明になっている

▶ 停止問題の決定不能性の証明は, そのような関数を具体的に示してみせた

15 / 19

Page 27: 決定不能な問題 - 東京大学tau/lecture/...特に[0;1] の実数を2 進数で展開す ると考えれば, 0 x 1の実数$ 0-1 の(無限の) 列 実数の集合が可算個,

もし, 停止問題が決定可能だったら…

色々な数学の問題を「解く」アルゴリズムが得られていた…▶ 自然数を未知数とする「あらゆる」方程式 f(x) = 0

(n ∈ N) が解を持つか否かを判定する�1 bool P(f) {2 for (i = 0; 1; i++)3 if (f(i) == 0) return 1;4 }5 bool solve(f) {6 return H(P, f);7 }

16 / 19

Page 28: 決定不能な問題 - 東京大学tau/lecture/...特に[0;1] の実数を2 進数で展開す ると考えれば, 0 x 1の実数$ 0-1 の(無限の) 列 実数の集合が可算個,

もし, 停止問題が決定可能だったら…

▶ もちろん変数の数は 2, 3, 4, …いずれでもよい (N× N,N× N× N なども可算だった)

▶ その他あらゆる可算個の領域を未知数とする方程式の解を判定可能

▶ フェルマーの最終予想も原理的にはコンピュータで解けた!

f(x, y, z, n) = xn + yn − z

17 / 19

Page 29: 決定不能な問題 - 東京大学tau/lecture/...特に[0;1] の実数を2 進数で展開す ると考えれば, 0 x 1の実数$ 0-1 の(無限の) 列 実数の集合が可算個,

その他の決定不能な問題

▶ 整数係数ディオファントス方程式の解の存在判定.▶ 入力: 多変数の整数係数多項式 f(x0, . . . , xn−1)▶ 出力: f(x0, . . . , xn−1) = 0 は解を持つか?

ヒルベルトの第 10 問題が, 「これを解くアルゴリズムを求めよ」というものだった

▶ ポストの対応問題▶ 入力: n 個の bit 列のペア (ai, bi) (i = 0, . . . ,n − 1▶ 出力: 各 bit 列を何度使っても良いとして, ai をつなげた文字列と, 対応する bi をつなげた文字列を同じにできるか

▶ 一階述語論理の真偽判定

18 / 19

Page 30: 決定不能な問題 - 東京大学tau/lecture/...特に[0;1] の実数を2 進数で展開す ると考えれば, 0 x 1の実数$ 0-1 の(無限の) 列 実数の集合が可算個,

参考

▶ Wikipedia. List of undecidable problemshttp://en.wikipedia.org/wiki/List_of_undecidable_problems

▶ Undecidable problems: a samplerhttp://arxiv.org/abs/1204.0299

19 / 19