回 1-8 道 1 数と論理と計算量
チューリングマシンは、
読み終えたらどんな
この頁の流れ
「まだ
止まるか どうかを、 前もって 判定できるか
どんな
プログラムが
答えは、
チューリングマシンは どう 計算するのか
チューリングマシンは、
4 つの部品
チューリングマシンは、
| 部品 | 役目 |
|---|---|
| テープ | マス目が |
| ヘッド | 1 マスを |
| 状態 | 今どの |
| 規則の表 | 次に |
規則の
テープは
万能チューリングマシンと、 今の コンピュータ
Turing は、
この
チャーチ=チューリングの提唱
計算できる
これは
動かして確かめる
2 進数に
状態は、
| 状態 | 読む | 書く | 動く | 次 |
|---|---|---|---|---|
| A | 1 | 0 | 左 | A |
| A | 0 | 1 | 留まる | H |
| A | 空白 | 1 | 留まる | H |
1 を
動かす 2 進数に 1 を足す機械
▶ 実行ボタンを押すと結果がここに表示されます
実行すると、次の通りに出ます
1 A 1010
2 A 1000
3 H 11001011 (10 進数の
規則の
動かす 止まらない機械を上限で打ち切る
▶ 実行ボタンを押すと結果がここに表示されます
実行すると、次の通りに出ます
1000 B 10001000 歩で
止まるか
動かす 1 に着くまでの歩数
▶ 実行ボタンを押すと結果がここに表示されます
実行すると、次の通りに出ます
1 0
2 1
3 7
6 8
7 16
27 11127 から
止まるかを 判定する 機械は、 なぜ 作れないのか
止まるかを
判定の 逆をする機械
判定の機械を judge とし、judge をtrouble を
judge(trouble)がTrue (止まる ) と 答えたら、 永遠に回る - False (止まらない
) と 答えたら、 すぐ止まる
trouble はjudge は
実際に、
動かす 判定の逆をする機械
▶ 実行ボタンを押すと結果がここに表示されます
実行すると、次の通りに出ます
判定 A 止まる ループへ
判定 B 止まらない すぐ止まる判定 A にtrouble はtrouble にはtrouble を
動かして 確かめる 判定は、 終わらない
それなら、
動かす 動かして確かめる判定
▶ 実行ボタンを押すと結果がここに表示されます
実行すると、次の通りに出ます
RecursionErrorjudge は trouble を動かし、trouble はすぐに judge(trouble) をtrouble を
崩れる
- 時間を
かければ、 どんな プログラムも 止まるか 分かる、という 前提。 止まらない 相手は、 いくら待っても 「止まらない」と 言い切れない - 判定の
道具を 賢く すれば、 いつか 全部に 答えられる、という 前提。 どんな 判定からも、 それが 外れる 相手を作れる - 判定できないのは
難しい プログラムだけ、という 前提。 コラッツの 問題の ような 10 行ほどの ループでも、 止まるかは まだ誰にも 分からない
仕事で どう 確かめるか
停止問題が
1 つ目は、n != 0 ではなく n > 0 と
動かす 飛び越すと止まらない
▶ 実行ボタンを押すと結果がここに表示されます
実行すると、次の通りに出ます
止まった
打ち切り10 から
2 つ目は、
3 つ目は、
関わる実例
止まるかの
5 状態の ビジービーバーの 値 BB(5) の 確定 (2024 年 7 月 2 日)
ビジービーバーの
崩れた
よくある問い
今の コンピュータは チューリングマシンの 実物ですか
作りは
有限オートマトンとの 違いは何ですか
有限オートマトンは、
チューリングテストとの 違いは何ですか
チューリングテストは、
停止問題が 解けないなら、 バグを 探す道具は 役に 立たないのですか
役に
確認クイズ
答えだと
1 問目
チューリングマシンの
2 問目
この
111 に 1 を足す
tape = dict(enumerate("111"))
pos, state = 2, "A"
while state != "H":
sym = tape.get(pos, "_")
w, mv, state = rules[
(state, sym)]
tape[pos] = w
pos += mv
row = [tape[i] for i in
sorted(tape)]
print("".join(row))3 問目
停止問題に
4 問目
止まるか
説明課題
次の
- どんな
プログラムでも 止まるかを 判定する 道具が 作れない 理由を、 trouble の例で - それでも
仕事で 止まらない 処理から 身を守る方法
自分の
この回の 先の一歩
どんな
一次資料
どれも
- Turing Machines (Stanford Encyclopedia of Philosophy、
2025年5月21日改訂、英語)。Turing が 1936 年から 1937 年の 論文で 考えた こと、 Church が 書評で Turing machine と 名付けた こと、 テープが 限り無い こと、 5 つ組の 規則、 万能チューリングマシン、停止問題 - The Church-Turing Thesis (Stanford Encyclopedia of Philosophy、英語)。チャーチ=チューリングの
提唱が 証明できる 定理ではないこと - On Computable Numbers, with an Application to the Entscheidungsproblem (A. M. Turing、
Proceedings of the London Mathematical Society、英語)。チューリングマシンと 停止に 当たる 問題が 決定できない ことを 示した 元の 論文 (書誌は 上の SEP で 確かめた) - The Turing Test (Stanford Encyclopedia of Philosophy、英語)。チューリングテストが
Turing の 1950 年の 提案であること - The Busy Beaver Challenge (bbchallenge、英語)。BB(5) = 47,176,870 を
証明した こと、 Coq の 証明、 2024年7月2日の発表 - Determination of the fifth Busy Beaver value (bbchallenge の
共同の 論文、 arXiv、 2025年、英語)。証明で 5 状態の 機械を 181,385,789 台並べたこと - Improved verification limit for the convergence of the Collatz conjecture (D. Barina、
The Journal of Supercomputing、 2025年、英語)。コラッツの 問題を 2 の 71 乗まで 計算で 確かめたこと - Built-in Exceptions (Python 公式文書、英語)。呼び出しが
深くなりすぎると RecursionError が出ること
次へ
道 1 数と論理と計算量の回
- 1-12 進数と
16 進数桁の 重み、 変換、 表せる範囲頁で読む - 1-2文字コードと文字化けUnicode、
UTF-8、 Shift_JIS、BOM頁で読む - 1-3計算量を数えるBig-O、
ループの回数頁で読む - 1-4論理と真理値表AND、
OR、 NOT、 ド・モルガン準備中 - 1-5リトルエンディアンと
ビッグエンディアンバイトの 並び順、 ネットワーク、ファイル頁で読む - 1-6Base64 の仕組み64 字の
表、 = の 詰め物、 長さ 4/3頁で読む - 1-7情報量と
ハフマン符号化ビット、 確からしさ、圧縮頁で読む - 1-8チューリングマシンと停止問題テープ、
状態、 計算できない問題この回
