まったり アイマス2

アイドルマスター2 超ライトユーザーのプレイ日記

2816. 非決定性、補足^2

2019年09月18日 | 日記

 で、なぜ全知全能の神がサイコロを振ることになったのかについて、多少とも意見を述べておかないと無責任のような気がしてきました。本当に解説できたら量子力学のパラドックスを説明したのと多分等価でノーベル賞ものですから、以下の解説にはあまり期待しないでください、お願いします。

 迷路のたとえは限界があるので注意なのですが、要は出口への経路が複数あった場合にどちらを選ぼうとも結果は同じ。と、これで納得できれば苦労は無いわけ。

 一階述語論理の標準形というのがあって、私の理解では、
  OR節の集合 → AND節の集合
 です。プログラミングでは→(ならば)の前半が条件部、後半が実行部と解釈できます。しかし、このままではOR節の部分で行ったり来たりするので、実用的にはホーン節の集合に分解します。でも、今度はAND節の方がコピーだらけになって、いわゆる直積になるので、そのままでは等価ではありません。そのためにPROLOGではカット述語が用意されているのです。カット述語には一応の理論的背景があるのは以前に言ったとおり。
 そして第五世代コンピュータ計画の後半のGHCのガードではOR部の一つが成功した場合に、他の可能性は捨てられてしまいます。これをやらないと組み合わせ爆発が起こって、にっちもさっちも行かなくなります。

 これでめでたく古典LISPのCOND形式の形、C言語で言うとif p1 then d1 elseif p2 then d2 elsef p3 then d3 ... else dn; の形になって実用計算可能となります。
 then以降のd1等の処理は普通のプログラムなので、今の常識で言う並列処理、スーパーコンピュータやGPUがやっている処理で高速化できます。
 他方、条件部のp1の方の処理も別途ですけど並列化できます。で、ここが問題点、その1。

 もし、p1, p2, ,,,, pnの高々一つしか真にならなければ、私たちが思い浮かぶ普通の世界と一致していて、これには用語があって、安全なカットと呼ばれています。
 しかし、一階述語論理だけではそんな都合の良い制限はありません。複数のpが成功することがあって、その場合は早い者勝ちで、たまたま最初に成功したpに対応するdが実行され、他の可能性があったとしても、それらは捨てられてしまいます。
 つまり、何らかの外部条件によって結果が変わりうる、サイコロが振られた、ということ。実際にGHCでは複数の結果のどれが選ばれるかの保証はありません。

 うむ、ここまでの説明で眠ってしまった方、多数と思われます。こんなの分かれば天才です。でも、もう準備はかなりできたと私は思います。あとはその天才が現れるのを待つだけ、というのはしかし、楽観的すぎるかもしれません。問題点があといくつ出てくるのか、想像もつかないです。

 私なりに要約すれば、サイコロを振るように見えるのは、一階述語論理を実用計算に持ち込もうとしたときに導入した、いささか便宜的に見える仕掛けのためだと思います。自然界に意思があるなら、ちっとも自分はサイコロを振ったつもりでは無いと言うと思います。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする