BB(3, 3) がなぜ難しいのか: Bigfoot
(sligocki.com)- 3状態3記号チューリングマシン Bigfoot は、空白テープから停止するかどうかを証明するために Collatz 類似問題を解かなければならない事例であり、(BB(3, 3)) もそれと同じくらい難しい可能性があることを示している
- この機械は bbchallenge.org の (BB(3, 3)) 未解決候補 160 個のうちの 1 つであり、遷移表
1RB2RA1LC_2LC1RB2RB_---2LA1LAで定義される - 振る舞いは (A(a,b,c)) 構成の反復規則へと還元され、(b \bmod 6) に応じて a が増減し、(a) が 0 より下に下がろうとするときにのみ停止する
- 空白テープから 69 ステップ後に (A(2,1,2)) に到達し、2,400 万回の反復後には (a = 3,999,888) まで増大しており、停止する可能性は実験的にはきわめて低く見える
- (b \bmod 6) の数列は決定的だが、大局的には右へ 2/3、左へ 1/3 の偏りを持つランダムウォークのように見え、永久に実行されることを証明するには、この Collatz 類似関数が停止遷移に到達しないことを示す必要がある
Bigfoot が (BB(3, 3)) を難しくする理由
- 3状態3記号チューリングマシン 1 台の 停止性 を証明するには Collatz 類似問題を解かなければならない
- したがって (BB(3, 3)) 問題を解くことは、この Collatz 類似問題を解くのと同じくらい難しい可能性がある
- Paul Erdős は Collatz 型の問題について “Mathematics may not be ready for such problems” と述べたことがある
- 前回の記事 Mother of Giants では、「Beeping」Busy Beaver 探索で発見されたチューリングマシンの系統を扱った
- その系統では、準停止状態(quasihalt)かどうかを証明するために、Collatz 類似問題を効率よくシミュレートするか、完全に解く必要がある
- Bigfoot は変種ゲームではなく、通常の Busy Beaver ゲームの中で発見された事例である
既存の Busy Beaver 難解性の事例
- 人間が直接作った複数のチューリングマシンは、特定の Busy Beaver 値を証明するために別の難しい数学的命題の証明が必要となる事例を与えている
- (BB(745)): ZFC の無矛盾性の証明が必要
- (BB(27)): Goldbach 予想の証明が必要
- (BB(15)) と (BB(5,4)): (n > 8) のとき (2^n) の 3 進表現に少なくとも 1 つ数字 2 が現れるという Erdős の予想の証明が必要
- ただし、こうした Busy Beaver 値はいずれも現在の到達可能な範囲の外にある
- 過去 60 年間で証明された値は (BB(2), BB(3), BB(4), BB(2,3)) だけであり、(BB(6) > 10 \uparrow\uparrow 15) であることが知られている
- Bigfoot を分析する前は、(BB(3, 3)) は証明できる可能性があると考えられていた
Bigfoot の定義と出典
- このチューリングマシンの名前は Bigfoot であり、遷移表は次の文字列で定義される
1RB2RA1LC_2LC1RB2RB_---2LA1LA
- bbchallenge に登録されている機械である
- 遷移表は次の通り
| 状態 | 0 | 1 | 2 |
|---|---|---|---|
| A | 1RB | 2RA | 1LC |
| B | 2LC | 1RB | 2RB |
| C | — | 2LA | 1LA |
- Bigfoot は bbchallenge.org の Discord チャンネルで共有された (BB(3,3)) の非公式な残存 holdout 160 個のうちの 1 つである
- この特定のチューリングマシンは 2023 年 10 月 14 日、同じ Discord チャンネルで @savask により低レベルの動作説明とともに初めて共有された
- その後の分析で Collatz 類似構造 と偏ったランダムウォークとしての性質が明らかになった
(A(a,b,c)) 構成へ還元される動作
- 一般の構成を次のように置く
[ A(a, b, c) = 0^\infty ; 12^a ; 11^b ; \text{ <A } ; 11^c ; 0^\infty ]
- Bigfoot が (c \ge 1) の (A(a,b,c)) 構成に入ると、以下の規則がその後の動作を、停止するまでまたは永久に、正確に記述する
[ \begin{array}{l} A(a, 6k, c) \to A(a, 8k+c-1, 2) \quad \text{if } 8k+c \ge 1 \ A(a, 6k+1, c) \to A(a+1, 8k+c-1, 3) \quad \text{if } 8k+c \ge 1 \ A(a, 6k+2, c) \to A(a-1, 8k+c+3, 2) \quad \text{if } a \ge 1 \ A(a, 6k+3, c) \to A(a, 8k+c+1, 5) \ A(a, 6k+4, c) \to A(a+1, 8k+c+3, 2) \ A(a, 6k+5, c) \to A(a, 8k+c+5, 3) \end{array} ]
[ A(0, 6k+2, c) \to \text{Halt}(16k+2c+7) ]
- これらの規則は、(b) と (c) のパラメータに対する Collatz 類似関数 を反復している
- (a) は累積値のように振る舞う
- (b \equiv 1 \pmod{6}) または (b \equiv 4 \pmod{6}) なら (a) は増加する
- (b \equiv 2 \pmod{6}) なら (a) は減少する
- (a) が 0 より下へ減少しようとする場合にのみ Bigfoot は停止する
空白テープから観測された軌跡
- 空白テープから開始すると、Bigfoot は 69 ステップ後に (A(2,1,2)) 構成に到達する
- その後のシミュレーションでは (a) は着実に増え続けるように見え、2,400 万回の反復後には (a = 3,999,888) となる
- (b \bmod 6) の剰余列が一様乱数だと仮定すると、この過程は数直線上の 偏ったランダムウォーク と同じになる
- 各ステップで右へ進む確率は (\frac{2}{3})
- 左へ進む確率は (\frac{1}{3})
- Markov chain 理論では、現在位置が (a=n) のとき、将来 (a=-1) に到達する確率が ((\frac{1}{2})^{n+1}) であることを証明できる
- 実際の (b \bmod 6) 列はランダムではなく完全に決定的で、奇数・奇数・偶数・偶数というパターンを一貫してたどる
- それでも大域的にはランダムな Markov chain と似た軌跡を示す
- 2,400 万ステップ後、Markov chain は右に 800 万回、左に 400 万回進むと期待される
- これは実際の (a) の値である約 400 万と非常に近い
「Probviously」停止しないというヒューリスティック
- (a \approx 4,000,000) の時点で、ランダムな Markov chain が (a=-1) に到達する確率はおよそ ((\frac{1}{2})^{4,000,000}) である
- この値は、科学的には失敗が保証されたとみなしてよいほど小さい
- Bigfoot が Markov chain と似たように動作するなら、停止しない ように見える
- しかしこれは厳密な数学的命題ではなく、実験的なヒューリスティックにすぎない
- Bigfoot が googolplex 回反復した後に停止する可能性も排除できない
- John Conway は、Collatz 予想が “probviously” 真でありそうだというヒューリスティックを説明するためにこの表現を作ったが、Collatz の証明はいまだ見つかっていない
Bigfoot が取りうる 2 つの結末
- Bigfoot は次のどちらかである
- 停止する
- 永久に実行される
- 停止するなら、この Collatz 類似関数の反復を十分に高速化して最後までシミュレーションすることで証明できる
- 永久に実行されるなら、この Collatz 類似関数が (a=0) の停止遷移に決して到達しないことを証明しなければならない
- Markov chain のヒューリスティックによれば後者のほうがもっともらしく見え、しかもそのほうがはるかに証明しにくそうである
Cryptids という名前
- この種の機械は、比較的単純な数学規則にその動作を還元できるが、その規則自体が未解決の数学問題の一群に属している
- 停止するとも停止しないとも噂されるだけで、どちらについても具体的な証拠が示されていない伝説上の生物に似ている
- このような機械を Cryptids と呼ぼうという名称が提案されている
- Loch Ness Monster や Chupacabra のような伝説の生物との比喩である
- このチューリングマシンはランダムに歩いているように見えるため、Bigfoot という名前が付けられた
この Collatz 類似動作は本当に難しいのか
- この特定の Collatz 類似関数の力学は、これまでほとんど分析されたことのない問題に見える
- 少しの整数論と計算によって、この問題にだけ適用できる巧妙な数学的性質が見つかる可能性は残っている
- そのような性質が発見されれば、(BB(3,3)) の証明がまだ到達可能な範囲にあることが分かるかもしれない
- Collatz 類似問題で問えることは、経験的には 2 種類に分かれる
- 比較的自明に証明できる問い
- どの数学者も証明法を知らない問い
- Bigfoot では、(b) が奇数・奇数・偶数・偶数のパターンを繰り返すことや、古典的な (3n+1) Collatz 規則を適用した後は必ず偶数になり、次の段階で 2 で割られることは前者の範疇に入る
- Collatz 系の振る舞いに関するそれ以外のほとんどすべての問いは、後者の範疇に属する例とみなせる
81 ケースによる別表現
- 2023 年 10 月 18 日に追加された別表現は、従来の (A(a,b,c)) 説明の不便さを軽減する
- 従来の説明には 3 つの不便がある
- (b) と (c) のパラメータが絡み合っている
- 入力の法 6 と出力の法 8 が共通因子 2 を持つ
- (b) が奇数・奇数・偶数・偶数の反復パターンに従う
- Matthew House は、新しい構成を次のように定義すればこれらの問題を回避できると指摘した
[ B(a,b)=A(a,2b+1,2) ]
- (b=81k+r) とおき、元の 4 つの遷移を 1 つの遷移にまとめると、Bigfoot の Collatz 類似動作は 81 ケース の規則として表現できる
- この表現は従来の (A) 表現にあった 3 つの特徴を解消し、古典的な Collatz 問題により近く見える
- ただし 81 ケースすべてを扱う必要があるため、やや扱いにくい
- 一部の規則は (a \ge 2) という条件に依存する
1件のコメント
Hacker News の意見
BB(3, 3) そのものが難しいというより、Collatz 型の問題をエンコードしていて、そうした問題は概して非常に難しい、と見るほうが正確そうです。
ただし、この特定のインスタンスが本当に難しいかどうかは別問題です。挙動がかなり一方向に偏って見えるうえ、古典的な Collatz 問題のようにすべての整数の軌道を見る必要はなく、単一の軌道だけを見ればよいからです。
単一の軌道か複数の軌道かという点にも、ある程度同意します。ただし、このチューリングマシンが停止しない世界だと仮定すると、このシステムの単一軌道を証明することは、古典的な Collatz 予想の単一軌道より「難しい」と見なせます。Collatz 予想が真なら、任意の単一軌道の証明は結局有限計算で済みますが、記事の単一軌道については永遠に停止しないことを示さなければならず、より洗練された数学が必要になるからです。
誇張したいわけではありません。これは、BB(3, 3) を解くには Collatz 予想や、すでによく研究されている数学上の未解決問題を必ず証明しなければならない、という意味ではありません。それでも、よく研究された問題に似た難問であるという「次善の」結果としては意味があると思います。この Collatz 類似問題がどれほど難しいかは、誰が解けるかを見れば分かるでしょう。
ここを理解する助けがほしいです。748 状態のチューリングマシンがあり [0]、このマシンは ZFC が矛盾している場合に限って停止する、という理解です。
このマシンはコンピュータ上で実装して実行できる「物理的な」対象です。現在の計算能力は不足していますが、原理的にはこのマシンを BB(748) ステップだけ実行することを妨げるものはありません。停止すれば定理 1 により ZFC が矛盾していることを証明したことになり、停止しなければ ZFC が無矛盾であることを証明したように見えます。
ここが混乱の核心です。抽象的な結果ではなく、実際に実行して値を得られる計算のように見えます。
もちろん Gödel の第 2 不完全性定理によれば、ZFC の内部では ZFC の無矛盾性を証明できません。ところが上のチューリングマシンが停止しなければ、ZFC が無矛盾であることを証明したことになり、矛盾のように見えます。
どこが間違っているのでしょうか。現時点での推測は、定理 1 の証明で、748 状態チューリングマシンが ZFC が矛盾している場合に限って停止することを示すために、ZFC より強いメタ理論を使っている、というものです。そうであれば矛盾ではありません。BB(748) ステップだけ走らせることはできても、それは ZFC+ が ZFC の無矛盾性を証明することを示すだけで、これはすでに知られています。たとえば ZFC +「到達不能基数が存在する」がそのような役割を果たします。
論文を詳しく読んだわけではないので、実際にそうなのかは分かりません。この問題を深く考えたことのある人が、洞察をくれないでしょうか。
[0] https://www.ingo-blechschmidt.eu/assets/bachelor-thesis-unde...
ビジービーバーの神がその値を教えてくれるなら、理論上はその分だけチューリングマシンを動かすことができ、言うとおり ZFC の無矛盾性の有無を証明できます。しかし人間が BB(748) を計算するには、実質的にこの特定の 748 状態チューリングマシンがいつか停止するのか、そして他のすべての 748 状態チューリングマシンが停止するのかも突き止めなければなりません。
宇宙のすべての物質とエネルギーを使ってコンピュータを作り、そのコンピュータがこの作業だけを物理的に可能な最高効率で実行したとしても、計算を終えられません。
だからこそ、数学が物理や現実から切り離される地点が生じます。そうした対象について語り、推論することはできますが、もはや物理的な意味は持ちません。
しかし停止しないことを証明するのは、はるかに難しいです。TREE(3) ステップだけ実行しても、TREE(3)+1 ステップで停止しないことの証明にはなりません。
なので残念ながら、「ただ走らせればいい」とは言えません。
筆者の文体がよかったです。冗長に見えないのに、テーマを理解する助けになっていて、そのバランスを取るのは簡単ではありません。
関連資料: https://nickdrozd.github.io/2020/08/13/beeping-busy-beavers.... および https://googology.fandom.com/wiki/Googology_Wiki
BB が計算不可能だというのは、こういう意味なのか? BB が大きくなるほど数学全体を内包するようになり、結局すべてを証明しなければならない、という意味なのか気になる
残りの数学全体は、停止問題を通じて BB の中へ持ち込まれる。任意の数学的予想が真または偽である場合にのみ停止するプログラムを書けるので、停止問題や BB を解こうとするには、すべての数学を知っていなければならない[0]。これはチューリング完全性が計算可能性の境界だから可能になる。コンピュータを内包できるものは、それ自体がコンピュータである
[0] 実際には、これ自体が停止を決定不能にしている理由ではない。決定不能性は、仮想的な停止判定器が「自分は停止しない」と言うときだけ停止する、という形で、プログラムが「自分自身を停止問題の中に引き込む」ことから生じる
私たちが証明も反証もできないと「知っている」数学の問題がある。すべての命題を真でありかつ偽であると証明できる場合でないなら、そうなるというのがゲーデルの第1不完全性定理である。すべての命題を真としても偽としても証明できるなら、その証明体系は役に立たず、証明することに何の意味もなくなるので、そうならない別の証明体系を選ぶべきである。だから通常は前者、つまり証明も反証もできない問題があると仮定する。付け加えると、ゲーデルの第2不完全性定理は、私たちが前者の場合にいること自体を決して証明できない、という内容である
そして BB が計算不可能だということは、BB が大きくなると、いつか証明も反証もできない問題が真である場合にだけ停止するプログラムをエンコードできる、という意味である。したがって、そのプログラムが停止するのか停止しないのかを証明できない
厳密に言えば、証明も反証もできないものを証明または反証することは偽を証明するのと同じであり、これは結局すべての命題を「証明」するために使えてしまうので、「数学全体を包含する」という表現は、ある意味では正しい。ただしこれは臨界条件であり、「すべての」数学問題をエンコードできるほど大きなチューリングマシンが現れるよりずっと前に働く。実際、すべての数学問題をエンコードするのに十分な有限の状態数は存在しない。算術の文字列はいくらでも長くできるからである
その次には、私たちには解けない BB が存在することは驚くことではなくなり、どの BB は解けて、どの BB は解けないのかを調べることが面白くなる
「したがって BB(3, 3) 問題を解くことは、少なくともこの Collatz 類似問題を解くのと同じくらい難しい」という部分が、なぜ驚くべきことなのか分からない。実際、ほとんど自明に証明されるように見える。すべての BB(x, y) 問題はコラッツ型問題に還元されるのではないか?
BB(x, y) は停止問題へ簡単に変換できる。x 個の状態と y 個の記号を持つすべてのマシンのうち停止するものを見つけ、停止しないものは別にしておく。その後、停止するマシンをすべて1ステップずつ一緒に実行し、すべてが停止するまで回せば、実行したステップ数が BB(x, y) の値になる
Conway は停止問題をコラッツ型問題へ還元する方法を示したと理解している。そうであれば、BB から停止問題へ、さらにコラッツ問題へという2段階の還元によって、任意の x, y に対する BB(x, y) をコラッツ型問題へ落とし込めるように見える
必要なのは、コラッツから停止問題へ、さらに B(x,y) へ向かう還元である。コラッツから停止問題へ行くのは自明だが、停止問題から B(x,y) へ行くのはそれほど自明ではない。コラッツから還元可能であり、かつ B(3,3) より難しくない停止問題の部分集合が何なのかを、正確に定義する必要がある
停止問題は、計算可能なプログラムに基づくアルゴリズム情報理論や帰納の多くのアプローチを、しばしば「阻む」ように見える。では、停止問題が現実世界の帰納能力に物質的な影響を与えるかについての研究はあるのか気になる
たとえば、あるオラクルが、任意の単調な万能チューリングマシンについて、実行中にこれ以上出力テープへ何も書き込まない地点に到達したかどうかを教えてくれるとしよう。このオラクルを使った帰納の結果は、プログラム空間を完全探索し、あるプログラムが十分大きな n ステップの間出力を出さなければ、単に次のプログラムへ「飛ばす」方式と大きく異なるのだろうか?
BB(3,3) のように意図的に作られた境界事例や敵対的な例ではなく、「普通の」圧縮可能なデータに対する帰納の話である
セキュリティ研究者として、自分で**ファザー(fuzzer)**を書いている。ファザーは、テスト対象のプログラムに対してセキュリティ上意味のある入力を自動で見つけるツールである。入力をアルゴリズム的に生成・変形してプログラムに与え、1秒あたり数十回、数百回、数千回と何が起きるかを観察する
ある入力がプログラムをクラッシュさせるなら、それはプログラムを「停止させた」と見ることができる。どんなプログラムについても、すべてのバグを現実的な時間内に見つけるファザーを作るには、停止問題を解かなければならないように思う。実際、数十億回テストしても画像デコーダからなおバグを見つける人がいるのだから、私たちのファザーが完全でないのは確かである
同時に現実では、ファザーに十分な時間を与えると、複雑なプログラム内部へ予想以上に深く入り込むことも見てきた。テスト対象が行う入力検証や、現代の PC の限られたメモリとストレージが、ファザーをある程度軌道に乗せてくれる。ただし暗号技術が絡むと例外で、ファザーにとっては計算上のタール坑のようなものになる。よく防御され、よく仕様化されたプログラムは、ファザーが停止問題を解く必要がないようにするガードレールとして機能する
だから、プログラムのセキュリティバグ検出については、こう見ている。暗号技術を除けば、ファザーは厳格な入力検証を行うプログラムを狙うのに強い。逆に厳格な入力検証を行わないプログラムには、そもそもファザーは必ずしも必要ではなく、そうした場所ではファザーが必ずうまく機能するとも限らない
BBB、つまりビープ音を鳴らすビジービーバーが、なぜ準停止の前にずっと長く実行されうるのか、直感はある?
見える点の一つは、実質的に停止状態を使う必要がないということ。その意味では、3状態BBBは4状態BBに似ているのかもしれない。それ以外にもあるのか気になる
だからサイズXのプログラムやチューリングマシンに、サイズY(ただしY >> X)のすべてのプログラムの実行をシミュレートさせることができる。それらのプログラムのうち一つが停止するたびにビープ音を鳴らすようにすると、最後のビープ音は、BB(Y)がBB(Y)より多いステップの後に停止することをシミュレートしたときに発生する。したがってBBB(X) > BB(Y) >> BB(X)となる
記憶が正しければ基本的に同じ構成により、BB(N)が分かればサイズN以下のプログラムの停止問題を非常に遅く計算できる一方、BBB(N)が分かれば、そのサイズ以下の停止オラクルが与えられたチューリングマシンに対する停止問題をさらにずっと遅く計算できる
これは自分にはあまりにもナードな内容だ
こういうものを理解するには、どんな前提知識が必要なのか気になる。基本的な微積分だけで十分? どんな具体的なトピックや科目が良い基礎になるだろう?
[1] https://www.scottaaronson.com/writings/bignumbers.html
入門的な理論計算機科学の教科書を追っていけば、大半を理解する助けになる。コンピュータサイエンス専攻の学生はたいてい1〜2年生で学び、簡単ではない。うちの学校では最も恐れられている試験の一つだった
Hopcroft & Ullmannの入門書がよい。ただし関連する内容が非常に多いので、出発点に近いものだと考えればよい
多くのコンピュータサイエンス学部課程には、公開資料のある講義があるはず
1RB2RA1LC_2LC1RB2RB_---2LA1LAはどう読めばいい?https://bbchallenge.org/1RB2RA1LC_2LC1RB2RB_---2LA1LA
たとえば状態Bで、現在のヘッド位置のテープ値が0なら、2を書き込み、ヘッドを左に1マス移動して、状態Cへ行く
3文字は、書き込む記号、新しい状態、移動方向を意味する。
---状態は停止(状態, テープ値)の各ペアが、(新しいテープ値, テープヘッドの移動方向, 新しい状態)の三つ組にマッピングされている[0] https://bbchallenge.org/1RB2RA1LC_2LC1RB2RB_---2LA1LA