身近な文字列が遺伝子になる発想
「homo sapiens」という文字列を見たとき、これが遺伝子として機能するとしたらどんな生物になるだろうか。この疑問から始まった実験的な試みが、アルファベット文字列を遺伝子コードとして利用する生態系シミュレーターの設計です。
実際の遺伝子はA、T、G、Cの4つの塩基で構成されています。この仕組みをヒントに、26文字のアルファベットを4進数に変換して遺伝子として扱う方法を考案しました。これにより、日常的な単語や文章が生物の設計図として機能する興味深いシステムが生まれます。
アルファベットから4進数への変換システム
変換の仕組みは単純です。a=00、b=01、c=02、d=03のように、アルファベット26文字を4進数の組み合わせに対応させます。たとえば、「homo sapiens」は「1332303202003320103102」という数字の列に変換されます。
4進数を選んだ理由は、26以下の最大の2の累乗は、16で4の2乗だったからです。変換後の数字列は2桁ずつ区切り、それぞれが特定の機能を持つ遺伝子コードとして解釈します。
遺伝子コードの読み取りルール
2桁の数字コードには、それぞれ明確な役割が割り当てられています。
プロモーター(遺伝子の読み取り開始を示す33と読み取り終了を示す00)、
条件制御(30のIF文と31のELSE文)、個別スイッチ(01のFORCE、02のSKIP、03のNEGATIVE)、
そして実際の機能を表すコード(10が光合成、11が移動、20が草食など)です。
33 = START(遺伝子読み取り開始)
00 = END(遺伝子読み取り終了)
```
### 条件制御
```
30 = IF(次の条件チェック)
31 = ELSE(条件が偽の場合の処理開始)
```
### 個別スイッチ(3種類)
```
01 = FORCE(次の機能を強制的に+1、条件無視)
02 = SKIP(次の機能をスキップ)
03 = NEGATIVE(次の機能を反転:+1 → -1)
```
### 機能コード(累積加算)
```
10 = 光合成機能(+1)
11 = 移動機能(+1)
12 = サイズ制御(+1)
13 = 毒性(+1)
20 = 草食機能(+1)
21 = 肉食機能(+1)
22 = 防御機能(+1)
23 = 繁殖機能(+1)
```Code language: JavaScript (javascript)
読み取りはSTART(33)から始まり、END(00)で一時停止します。
次のSTARTが見つかるまで、コードは読み飛ばされます。
これは実際の遺伝子でも見られる転写開始点と終了点の概念を模倣したものです。
条件分岐による複雑な制御
IF文(30)は次に来る機能コードをチェックし、その機能が既に活性化されているかどうかで分岐します。
例えば、光合成機能が既にオンになっていれば条件は真となり、ELSE(31)までの処理が実行されます。
光合成がオフの場合は偽となり、ELSEからの処理が実行されます。
この条件分岐により、生物の既存の能力に応じて新しい機能が追加される仕組みを表現できます。
まるで「すでに光合成ができるなら草食能力を追加する」といった生物学的に合理的な進化パターンを再現することが可能です。
実際の解釈例:homo sapiensの場合
「homo sapiens」を変換した「1332303202003320103102」を解釈してみます。
最初の13は毒性機能を+1、次の32はジャンクのため1桁ずらして23(繁殖機能+1)を読み取ります。続く03はNEGATIVEスイッチで、次の機能を反転させます。02もジャンクのため1桁ずらして00(END)に到達し、以降の読み取りは停止されます。
結果として、毒性+1、繁殖-1(NEGATIVEにより反転)という特性を持つ生物が生成されます。つまり「homo sapiens」は毒を持つが繁殖力の低い生物として解釈されることになります。この結果は偶然ながら、現代人類の一部の特徴を皮肉めいて表現しているとも言えるでしょう。
進化シミュレーションへの応用
このシステムの真価は、時間経過による突然変異の表現にあります。文字列の一部をランダムに変更することで、生物の特性が段階的に変化します。突然変異により新しい機能が追加されたり、既存の機能が失われたりする過程を観察できます。
また、複数の個体の遺伝子を交配によって組み合わせることも可能です。2つの文字列の一部を交換することで、親の特徴を受け継いだ子個体を生成できます。この過程で、有利な遺伝子の組み合わせを持つ個体が生存し、不利な組み合わせは淘汰される自然選択の過程も再現されます。
アルファベット文字列を遺伝子として扱うこのシステムは、複雑な生物学的概念を身近で理解しやすい形で表現する新しいアプローチです。実際の遺伝子の基本的な仕組みを保ちながら、誰でも扱える文字列を使用することで、学習のハードルを大幅に下げています。