1. HOME
  2. 刊行物
  3. 金融ITフォーカス
  4. カテゴリから探す
  5. 数理の窓
  6. 自分自身の複製をつくるには?

自分自身の複製をつくるには?

2012年4月号

外園康智

 命令文を実行すると、その命令文と全く同じ文章ができる命令文を作れ!
 問題の意味が分かり難いので、例を挙げると、「コピーせよ“コピーせよ”」という命令文があったとする。これを実行した場合、コピーできるのは後半の“コピーせよ”だけになる。実行の命令文とは同じ文言にならない。この命令文に、更に「コピーせよ」を埋め込んで、「コピーせよ『コピーせよ“コピーせよ”』」としたとしても、結果は同じである。この解答(※1)には少し工夫が必要で、次のようになる。

次の文の2つコピーを作り、2つ目のコピーは鍵カッコで囲め
『次の文の2つコピーを作り、2つ目のコピーは鍵カッコで囲め』

 コンピューター言語においても、自己のコードを正確に複製するプログラムを作ることができる。これはクワインプログラムと呼ばれており、CやPerlなどの各種言語に模範解答が存在する。ポイントは、上記の自己複製命令文と同様で、プログラム自身を“命令文”と表示用の“データ”と両方に利用する二重利用にある。このような情報の二重利用は「この文は嘘だ」のような自己言及パラドックス文と同じ構造だ。
 自己複製プログラムをうまく応用しているのが、コンピューターウィルスである。ウィルスは宿主のコンピューターのリソースを使って自己増殖を行う。つまりウィルスプログラムをメモリに読込ませ、命令を解釈させ、CPU含む実行環境(=広義のインタープリタ)を利用して自己を複製していく。
 では、さらに問題を膨らませて、この“インタープリタ”自身も自己複製するマシンを作ろうとしたら、問題は飛躍的に難しくなるだろう。これがフォン=ノイマンが考えた“自己増殖オートマトン”である。大げさに言うと、机の上のPCが勝手にブラウザ画面を作り出し、ある日突然まったく同じ機能をもつPCをもう一台作り出すようなものである。そして、生命は自己増殖オートマトンの一つの答えである。驚くべきことにDNAは複製のための命令文、自分自身の遺伝データ、解釈をつかさどるインタープリタと、すべてを、そのDNA螺旋構造のコードの中に持つ。
 そして、この構造をもつ一番大きい存在は、宇宙そのものだ。素粒子を動かす物理法則、宇宙自身のデータ、実行環境のすべてを含んでいる。この構造が詳しく分かれば、この宇宙が別の宇宙からコピーされたものか分かるかも知れない。

(外園 康智)

1) 「この文をコピーせよ」も解の1つと考えられるのだが、「この文」の指す範囲が文脈によって変わりうるのが難点だ。

※組織名、職名は掲載当時のものです。

印刷用PDF

Writer’s Profile

外園康智Yasunori Hokazono

金融デジタル企画一部
上級研究員

この執筆者の他の記事

外園康智の他の記事一覧

このページを見た人はこんなページも見ています