忍者ブログ

Memeplexes

プログラミング、3DCGとその他いろいろについて

タイムマシンコンピューターをシミュレートする その1

タイムマシンを計算に利用する方法が既に考え出されています。タイムマシンがあれば、普通のコンピュータではものすごく長い時間がかかる計算をあっという間に終わらせることができ、その潜在能力は量子コンピュータ以上です。ここでは、タイムマシンコンピュータを普通のコンピュータでシミュレートしてみます。未来からの情報量が多くなると普通のコンピュータでタイムマシンコンピュータを現実的な時間内にシミュレートすることはできませんが、未来からの情報量が少なければ可能です。


コード

TimeMachine.js

class TimeMachine{
	constructor(dataFromFuture){
		this._dataFromFuture = dataFromFuture;
	}

	static run(bitSize, procedure){
		var results = [];

		for(var i = 0; i < Math.pow(2, bitSize); i++){
			var timeMachine = new TimeMachine(i);
			procedure(timeMachine);

			if(!timeMachine.hasParadox){
				results.push(i);
			}
		}

		return results;
	}

	get hasParadox(){
		return this._dataToPast != this._dataFromFuture;
	}

	fromFuture(){
		return this._dataFromFuture;
	}

	toPast(dataToPast){
		this._dataToPast = dataToPast;
	}
}

TimeMachine.jsを使うコード

var results = TimeMachine.run(1, (timeMachine) => {
	var data = timeMachine.fromFuture();
	timeMachine.toPast(data);
});

for(var result of results){
	console.log(result);
}

実行結果

0
1

解説

このプログラムは、タイムマシンで情報を未来から取得する考えられる最も単純なシミュレーションです。具体的には、未来から1ビットの情報(0か1か)を受け取り、それを自分の過去に送ります。いわば鶏と卵で、始まりはありません。ありえる可能性の0と1両方を画面に出力します。

これはSFでよくある状況――「未来から画期的なアイデアを教えてもらう」――に似ています。SF映画『ターミネーター2』ではスカイネットを生み出したのは未来のスカイネットが現代に送り込んできたロボットのパーツを分析した科学者でした。スカイネットはスカイネットを元にして作り出されたのです。しかしそれなら、スカイネットを可能にしたテクノロジーは一体どこからやってきたのでしょう…?

輪廻の蛇

その状況を単純化して(未来から送られてくるのは0か1)コンピュータでシミュレートすると、未来からは単純に0か1が送られてきます。未来の自分から0か1が送られてくるのなら、両方可能性があるのです。これではランダムにコインを投げているのとかわりありません。

ありえるパターンは、「未来から0が送られてきたので過去に0を送る」か「未来から1が送られてきたので過去に1を送る」だけです。未来からの情報と過去に送る情報は同じなのです。「未来から0が送られてきたので過去に1を送る」はありえません。過去に1を送ったのなら、未来から1が送られてきたはずで、そうならなかったということは、何があろうと1を送ることになるのです。

これはおじいさん殺しのパラドックスの状況を単純化したものとみなすことができます。あなたは子供時代のおじいさんを殺すことはできませんが、それはおじいさんを殺してしまったら、そもそもあなたは存在しなかっただろうからです。あなたの存在が、あなたのおじいさんはなにがあろうと生き延びる証明となっているのです。同様に、未来から0が送られてきたということが、あなたが0を過去に送ることになる証明となっているのです。

具体的に何がタイムトラベルしているのか?

ところで、情報をタイムトラベルさせるときには、一体何がタイムトラベルしているのでしょう?『バック・トゥ・ザ・フューチャー』では車がタイムトラベルしていましたが、情報のような抽象的なものをタイムトラベルさせるとはどういうことでしょう?

答えは、「何がタイムトラベルしていても良い」です。黒い碁石を0、白い碁石を1として碁石がタイムトラベルしてもいいですし、青い光を0、赤い光を1として光がタイムトラベルしてもいいです。可能性は文字通り無限にあります。タイムトラベルする物体とコンピュータのデータと相互に変換する装置さえキチンと作っておけば、何をタイムトラベルさせてもよいのです。

拍手[0回]

PR