ある特定の将来の時点で宇宙のすべての原子の状態を計算するコンピューターを構築したとしましょう。定義上、ユニバースは存在するすべてのもの(および残りの部分と相互作用するすべてのもの)であるため、構築中のコンピューターも含まれます。コンピューターを使用して、コンピューター自体の原子を含む宇宙のすべての原子の状態を計算できますか?
そのようなコンピューターが他の理論的または実用的な理由で不可能な場合、それは何ですか?
ある特定の将来の時点で宇宙のすべての原子の状態を計算するコンピューターを構築したとしましょう。定義上、ユニバースは存在するすべてのもの(および残りの部分と相互作用するすべてのもの)であるため、構築中のコンピューターも含まれます。コンピューターを使用して、コンピューター自体の原子を含む宇宙のすべての原子の状態を計算できますか?
そのようなコンピューターが他の理論的または実用的な理由で不可能な場合、それは何ですか?
回答:
いいえ、コンピューターは基本的な情報理論に違反することなく、他の何かに加えて完全に自分自身をシミュレートすることはできません。圧縮できない文字列が存在します。
これが最も簡単な証明です。コンピューターには合計可能な状態があり、宇宙にはコンピューターの外側に何かがあり、宇宙には少なくともN + 1 個の異なる可能な状態があるとします。オーバーヘッドがゼロの場合、コンピューターの各状態は宇宙の状態に対応できますが、宇宙にはコンピューターよりも多くの状態があるため、宇宙の一部の状態はコンピューターの同じ状態にマップされます。その場合、シミュレーションはそれらを区別できません。
これがあなたの質問に答えるかどうかはわかりませんが、意味があり、何らかの洞察につながることを願っています。
自分自身を含む宇宙のすべての原子をシミュレートできるチューリングマシンがあり、必然的に自分自身をシミュレートできると仮定します。
さて、それを停止する問題に減らすのは簡単です:
ましょチューリングマシン取るMを入力として、それが(以来、宇宙をシミュレートすることにより、停止しているか否かを決定する反対(例えば行う、その後、宇宙に含まれている)X場合停止をMがない、とあれば永遠にループM停止)。次に、X (X )は矛盾を示します。
本質的に、これは、Xが停止するかどうかを判断するために最善のができることは、それ自体を実行する(つまり、宇宙を動作させる)ことであるため、宇宙をシミュレートしても利点がありません。
時間後の宇宙の状態が必要な場合も同様です。以来、それが中に停止するかどうかを判断することはできませんトンの内、時間やないトンの時間(同じ引数)、それはそれを行うには、宇宙にそれをできるようになります。それを行う宇宙をシミュレートしようとしても、決定にかかる時間を短縮することはできません。そして、 t時間で宇宙がどのように見えるかを決定するのに t以上かかる場合、シミュレーションは分岐します( tが無限大になるにつれて)。
これは、時間で宇宙がどのように見えるかを決定する有用なシミュレータのみが正確にt時間を要する、つまり宇宙を機能させることによって結論を導きます。その場合、このシミュレーターは本当に些細なシミュレーターです。
これをモデリングの問題とみなすことができると思います。どうすれば物理学ではなくコンピューター科学になるように質問を言い換えることができますか?物事を始めるために、私たちがこれをどのように試みるかについての簡単で具体的な例を挙げようとします...
「宇宙」を、非常に離散的で単純な(そして有限の)ものに置き換えましょう。私たちの宇宙は有限のセルオートマトンであるとしましょう。特に、全世界は n × nグリッドです。
ワールド初期構成は任意であると仮定します。今の質問は以下のようです:私たちは、厳密なサブセットを選択することができますCのを(「コンピュータ」)、および初期の状態 Cを、以下の条件を満足することを:
Wの初期状態は変更しません。(つまり、私たちは「コンピューター Cを構築する」だけで、外部の世界を改ざんすることはありません。)
その後、我々は、セルオートマトン(全世界の段階の任意の数を実行することができを含め、Cとの間の任意の相互作用Wをと C)。
Cを調べるだけで、世界現在の状態を読み取ることができます。(つまり、Cはの「シミュレーション」でなければなりませんW我々は全体の状態読み取ることができなければならないこと。注意Wをするだけでなく、W ∖意味で、。 Cは、その外側と内側の両方をシミュレートすることができなければなりません!)
さて、これは実行可能ですか?カウント引数を使用して(Cよりも状態が多い)、それは不可能だと言いたくなるかもしれません。しかし、これは必ずしもそうではありません!
セルオートマトンが全体的であると仮定しましょう。次に、グリッドWの右半分にし、Cの初期構成をW ∖ Cの鏡像にして、すべてが対称になるようにします。それでおしまい。
オートマトンを開始して、何が起こるかを確認します。の現在の状態は、常にC +その鏡像の状態に等しくなります。つまり、単に検査するだけですで、 W全体の状態を知るのに十分です。
(もちろん、ここでコンピューターはWと対話しと、将来の状態に影響を与えます。しかし、それは現実の世界でも起こります。)
ここで、この質問に対する重要な答えがあるかどうかを確認するのは興味深いかもしれません。たとえば、サイズが小さいコンピューターを許可するCAが半分ますか?
以下は、単純な(非形式的な)証明です。たとえば、2115年で、Macと呼ぶ100年前のコンピューターと、神と呼ばれる最先端のスーパーコンピューターがあります。私が次のことをするまで、神は簡単にMacをシミュレートして予測できます。
最初に、WebカメラをMacに接続し、それを神の画面に向けます。次に、Macでプログラムを実行し、無限ループで、神の画面で検出されたすべての数字を保存し、保存された数字のリストにない数字を生成して表示します。最後に、今から1分後にMacが表示する数字を神に見せてください。神が示す数字が何であれ、Macは異なるものを生成して表示するため、神は正しい答えを出すことができません。
これは、スーパーコンピューターが私に予測する場合、彼女が私に何をするように言っても、私は反対を行うことができるという事実と同等です(マークのコメントのように)。また、これは、スーパーコンピューターが未来を予測するために使用するプロセス(シミュレーション、未来への旅、戻ってくる、神託を求めるなど)に関係なく成り立ちます。
無限のテープを持ち、他のチューリングマシンをシミュレートできるチューリングマシンとは対照的に、有限コンピューターはそれ自体をシミュレートできません。ただし、同様のコンピューターで任意のコンピューターをシミュレートすることはできますが、「シミュレートされた」もの(仮想マシンなど)よりも少し多くのメモリが必要です:http : //meaningofstuff.blogspot.com/2016/03/ can-computer-or-human-simulate-itself.html