[PR]
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
プログラミング、3DCGとその他いろいろについて
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
このブログのタイムトラベル関係のジョークの一覧です。
結構数が増えてきたので、まとめてみることにしました。
すべてClosed timelike curveモノで、過去へ戻るとこの宇宙にそっくりな平行宇宙に行く話はひとつもありません。
これは私が小学生の頃に初めて考えた思い出のタイムトラベルジョークです。
Closed timelike curveモノでも過去改変は実質的に可能という話です。
それを利用しそれ以上のことも行います。
これは3部構成になっていて、1部はタイムマシンの手に入れ方、2部は過去が変えられない宇宙での過去改変、3部はさらなる応用です。
1部は今見返すと、「タイムマシンコンピュータを利用してNP完全問題を多項式時間内に解く」のロジックにかなり似ていますね。
「タイムマシンコンピュータを利用してNP完全問題を多項式時間内に解く」だけは私が考えたジョークではなく、Todd A. Brunさんの論文なのですが。
まあSFにも原型っぽい話は結構ありますし、多分よくあるアイデアなのでしょう。
2部の結論は奇妙です。
知的生命体の記憶というレイヤーの話と、過去改変が可能かどうかという物理的な問題が関係ある、ということでなのですから。
3部は多分、数学的宇宙仮説を信じるような人でないと笑えないでしょう……。
2部とはまた違った味わいのジョークです。
はっきり言ってこれは全然面白くありません。
実際、これ自体はジョークではなく、ほかのジョークのための前提みたいなものです。
これがないとほかのジョークの意味がわからないので書いただけで、私自身あまり心をこめて書いていません。
オチもありませんしひどいもんです。
単に面白く無いだけではなく、減点要素もいくつかあります。
まずこのTimeMachine<T>クラスという名前。
なんでしょうかこれは!?
もちろん、ぱっと見わかりやすいかもしれません。
しかし、このクラスの機能は明らかに名前負けしています。
変数も一つしか送れませんし。
ClosedTimelikeCurve<T>クラスのほうがセンスあった気がします。
とはいえ、別の記事でも使っていて修正が大変なのでそのままにしておきますが。
おそらく過去に情報を送れる宇宙では、過去に情報を送るクラスを、System.IO.Streamクラスのサブクラスとする可能性もあるでしょう。
そこらへん設定のツメが甘いと言わざるを得ません。
後の方になると文章が明らかにやる気なくなっています。
実際、書いた私が言うのですから間違いありません。
このジョーク集の中では唯一、私が考えたジョークではありません。
元ネタがあり、Todd A. Brunさんの論文です。
とても面白いです。
「どうして私はこのことを思いつけなかったのだろう」と自己嫌悪に陥るくらい面白いです。
これはSFでよくある未来からやってきた自分にタイムマシンの作り方を教えてもらう系の欠点をなくした素晴らしいロジックです。
とはいえ、これにも欠点はあり、「未来から誤った情報が送られてきて、NP完全問題を実際に解き始めることになってしまい、したがって数億年コンピュータを動かしている内にメンテする人が滅亡しコンピュータが壊れてしまった(ゆえに過去に正しい情報が送られなかった)」という可能性もあります。
しかしそれが次のジョークである「論理の力だけで自分を実行しているハードウェアを破壊するプログラム」を思いつくきっかけとなりました。
このジョークを思いついたきっかけは、「タイムマシンコンピュータを利用してNP完全問題を多項式時間内に解く」のロジックについてある人と議論していた時でした。
そのある人はこんな感じのことを言いました(正直私のリスニング能力はかなり悪いので、正確かは怪しいです。):
「もしコンピュータが途中で壊れたらどうなるんだい?どんな情報が未来から送られてくるんだい?」
私はそんなのどうでもいいじゃないか、どうせすぐ計算が終わるから壊れないだろうしとでも言いたげな顔でこう言いました。
「それは…間違った情報が送られてくるんだよ」
「なら、このNP問題を解く関数が実行されることになるね。長い時間かけて」
私は初め彼の言っている言葉の意味がわからなかったのですが、そこでほのめかされている可能性に気がついて背筋が凍る思いでした。
そう!長い時間かけてコンピュータを実行すれば、当然コンピュータが計算途中で壊れる危険性も高まるのです。
つまり、次のような閉じた因果関係の輪が存在し得るのです。
間違った情報が未来から送られてきた
↓
長い時間をかける計算が実行される
↓
長い時間をかけているため、計算が終了する前に破壊される可能性が高くなる
↓
破壊されたので正しい答えを過去へ送れない
↓
間違った情報が未来から送られてきた
↓
..
ハードウェアが破壊される可能性について頭の隅にはあったのですが、こうしたはっきりとした因果関係を思い描いたことはありませんでした。
ひょっとすると、このソフトウェアを動かすことによって、ハードウェアが破壊される確率が通常より高まることさえあるかもしれません。
純然たるソフトウェアによるハードウェアの破壊のイメージが頭の中で大きくなると、このジョークを思いつくまでに時間はかかりませんでした。
上の因果ループでは、間違った情報が未来から送られてきた時点で、ハードウェアが破壊されることが決定されてしまっています。
では意図的に「間違った情報」が未来から送られてきたとしたら…?
つまり、プログラムの書き方によっては、論理の力だけで、ハードウェアの破壊を意図的に引き起こせるのです。
気分が高揚した私でしたが、しばらくして考えが変わり、これは実際にはたいして重要ではないと考えるようになりました。
何しろ実質たった3行のシンプルなプログラムなので、すでに誰かが考えていると思います。
停止性問題の証明のあまのじゃくさのエッセンスをそのままプログラムにしたような。
実際、これに似た状況はSFでいかにもよく有りそうではありませんか。
SF作家グレッグ・イーガンさんのSF小説『百光年ダイアリー』では、未来から過去へ情報を送る技術が開発されます。
登場人物は何度か自分が受け取ったのとは違う情報を送ろうとするのですが、送(り/れ)ません。
ですがもしそのストーリーで、主人公が違う情報を送ろうとすれば、ハードウェアが誤作動をおこし、やはり同じ情報が過去へと送られたでしょう。
私がこのジョークがさほど面白く無いかもしれない、と思った別の理由に、これを利用して何が出来るのかよくわからない、というのがあります。
敵に捕まった時、このソフトウェアを敵のコンピュータに流しこみ破壊して脱出するのでしょうか?
しかしそんなことが出来る状況なら、普通のプログラムを使って敵のシステムを乗っ取って、偽情報で敵を撹乱しながら、出口までの扉を全部開けて脱出したほうがはるかに懸命だというものです。
それでも、このジョークは次のジョークの種となりました。
このジョークのエッセンスは、「このプログラムは決して最後まで正確には実行されない」というものでした。
そのため、一度誰かが実行し始めれば、ハードウェアがだめになってしまうのです。
しかし、ハードウェアの故障耐性があまりにも高かった場合どうなるでしょう?
もう少し可能性の高い(しかしそれでも一般的にはレアな)現象の方が起きるのではないでしょうか?
実行しようとした人が直前で突然死するというような…。
このふたつのジョークは「論理の力だけで自分を実行しているハードウェアを破壊するプログラム」での考察がもとになっています。
このふたつのジョークは本質的に言っていることは同じです。
「自分を死から守るお守り」は、「願望成就機械」の特殊なケースです。
(実際には「自分を死から守るお守り」を思いついた後、それを一般化して「願望成就機械」にしたのですが)
あるいは「タイムマシンコンピュータを利用してNP完全問題を多項式時間内に解く」を更に一般化したものが「願望成就機械」だと考えることが出来るかもしれません。
宇宙がひとつの巨大なコンピュータだと考えれば、抽象度は違うものの「タイムマシンコンピュータを利用してNP完全問題を多項式時間内に解く」と「願望成就機械」は似たようなことを言っています。
「NP問題の答えが手に入らないならタイムパラドックスを起こすぞ」
「思い通りにならないならタイムパラドックスを起こすぞ(思い通りになるかどうかの判定はP)」
ただ、「願望成就機械」のほうが応用範囲は広いですし、あからさまに宇宙を脅迫していますね。
自画自賛になりますが、この2つのジョークはわたしとしては爆笑モノです。
このタイムトラベルジョーク集の中では出来のいいほうだと思います。
腹筋が筋肉痛を起こしそうです。
基本的なアイデアはこうです:
もしも「決して実行されることのないプログラム」があるのなら、それを実行できないと嘆くよりも、実行できないことを逆手に取ってやるほうが建設的です。
このプログラムは単体で何が楽しいのかよくわかりませんが、外の世界の因果関係に上手く組み込んでやると、面白い結果が出るでしょう。
たとえば、そんなプログラムを実行するボタンがあったら、そのボタンは決して押されることがありません。
眼の前にあって、手を伸ばせば届きそうなのに、押そうとすると必ず何かが起こって押すことが出来ないのです。
面白いですが、まだ実用にはなりません。
何が起きるのか、上手く制御できませんからね。
ひょっとしたら押そうとした人が本人すら気づいていなかった病気で突然死するのかもしれませんし、単に近くで遊んでいるスポーツ少年たちのボールが当たって気絶するだけかもしれません。
単にもっと面白いものを見つけてどこかへ行ってしまったのかもしれません。
その人に恨みがあって、その人に「このボタン押してよ」と言えば、死ぬ可能性はありますが、そうでない可能性もそれなりにあるでしょう。
証拠は残りませんが、殺しの手段としては確実性がないのでまだいまいちです。
本人の近くまで行かなければいけないので目撃者もいるでしょうしね。
直接の証拠はないとはいえ、警察に怪しまれるのは嫌でしょう。
もうちょっと洗練された方法はないでしょうか?
たとえば、ボタンではなく何か別のものをトリガーにするような。
コインを投げたとしましょう。
コインが表だったらなにもせず、コインが裏だったらそのプログラムを実行する堅牢なシステムを作ったらどうなるでしょう?
そのプログラムは決して実行されない性質を持つので、コインは何回投げても表になるでしょう。
サンクトペテルブルクの賭けで大儲けできそうですね。
宝くじを買ったとしましょう。
一等があたったら何もせず、外れたらそのプログラムを実行する堅牢なシステムを作ったらどうなるでしょう?
そのプログラムは決して実行されない性質を持つので、あなたは宝くじの一等に当たるでしょう。
笑いが止まりませんね。
誰かを暗殺したいとしましょう。
ターゲットが次の日死んだら何もせず、生きていたらそのプログラムを実行する堅牢なシステムを作ったらどうなるでしょう?
デスノートができましたね。
そう、ここまでの例でお分かりになったと思いますが、あなたは、このシステムで操作しようとするターゲットの近くにいる必要はないのです。
ターゲットについて深い知識を持っている必要もありません。
あなたは宝くじ一等の番号を決めるシステムの場所や動作原理を知っている必要はありません。
あなたは暗殺対象と一度も会わなくてよく、現在の位置を知っている必要すらないのです。
範囲は地球上だけにとどまらず、観測可能な宇宙すべてがこのシステムの対象となりえます。
あなたは単に、対象の状態を観測することが出来さえすればいいのです。
しかしこんなSF、もうすでにありそうですね。
このシステムを上手くストーリーに組み込んだ物語を読んでみたいです。
追記 2015/01/07
そういえばこれはグレッグ・イーガンさんのSF小説『宇宙消失』に出てきた<アンサンブル>に機能が酷似していますね。
動作原理は違いますが。
しかし量子論的なアレの正体が未来から過去への情報がなんとかというマイナーな説もあるので、それと数学的宇宙仮説とを組み合わせるともしかしたら本質的に同じ事をやっていることが証明できるかもしれませんね。
まあ、<アンサンブル>は現実には出来ないっぽいことが後でわかったそうですが。
追記 2015/01/09
やっぱりありました!
ほとんどネタかぶりです!!
Search for Effect of Influence from Future in Large Hadron Collider