dd50ee70’s blog

計算機科学を中心によしなしごとを

正規表現と有限オートマトン(番外)セルラーオートマタ

 一年近く更新しなかった理由、それは例のJABEEの審査に関わっていたからです。といっても一年中審査したわけでなく、要所要所ほんの数週間だけ作業があったのですが。そうこうする内に某学術雑誌に投稿していた論文に対し「大幅に修正を要す」という査読結果が来て、メゲながら修正していました。そうかと思うと、ひょんなことからやってみたセルラーオートマタの研究がうまくまとまり、専門誌に投稿するとサクッと掲載してもらえることになりました。別に時間がなかったわけではありません。基本的に暇人です。ただ、気になることがあると、こっちのブログまで手が回らないという「シングルタスク人間」なだけです。

 セルラーオートマタの研究について、以下簡単に紹介します。まず、セルラーオートマタとは下図の通りオートマトンがあるセルが並んだものです。オートマトンは有限種類の状態の一つを持ち、入力により状態が変化するものです。セルラーオートマタ*1では隣のオートマトンの状態が入力となります。そうして状態遷移関数(局所関数とも言う)により全てのオートマタが同時に状態遷移します。

セルラーオートマタの模式図と一斉射撃問題の初期様相

 セルラーオートマタの課題の一つに一斉射撃問題があります。上の図のように端っこのセルが将軍の状態で他のセルは全て兵士の状態から始めて、全てのセルが同じ状態(射撃状態)になるよう局所関数を工夫せよ、と言う問題です。下に解の一例を載せます。

一斉射撃の一例。青が射撃状態(Mazoyerという人が作った解を利用した)

この図は横はセルの状態配置を示し、下にいくとステップが進んだときの状態変化を示します。この問題は60年近くの歴史がありますが、今も多くの研究者を惹きつけています。隣同士の相互作用だけから全体が同期する現象はなんと言っても面白いし、応用もいっぱいありそうです。基本的な解はとっくに出尽くして、最近の関心はエラーから回復するかにあります。セルが完全にぶっ壊れてしまった場合については結果が多く出ています。ノイズなどで一時的にエラーが起こったとき、どう回復するか、これを今回私がやりました。一例を示します。

一時的なノイズによる誤動作から回復して同期を達成する

11ステップでエラーが起こっていますが、それがリセットされ、一斉射撃になっています。セルラーオートマタにもこういう研究もあるというご紹介でした。Journal of Cellular Automata という専門誌のvolume 17, 5-6 号に論文が掲載されました。ご興味のある方はリンクをクリックしてください(遅いので気長に)。

*1:オートマトンは単数形、オートマタは複数形、セルラーオートマタはオートマトンがいくつもあるから複数形です。