ブラウニアンセルオートマトン(Brownian Cellular Automata: BCA)のシミュレータを作ってみる。

動作例

www.youtube.com

ソースコード

github.com

以下、非専門の者が書いているため誤り等ある可能性が非常に高いです。詳しくは出典等をご参照ください。

ブラウニアンセルオートマトン(Brownian Cellular Automata: BCA)とは

ブラウニアンセルオートマトンとはブラウン回路をセルオートマトンとして表現したものです。

ブラウン回路

ブラウン回路はノイズやゆらぎといった通常の電気回路では阻害要因となるものを利用する回路を表します。CPUのプロセスルール微細化のような回路の微細化が進むと、ブラウン運動のようなランダム性のあるノイズが無視できないものとなってきます。ブラウン回路ではこういったノイズも回路の動作の一部として利用します。

セルオートマトン

セルオートマトンはセルと変換規則で表す計算モデルです。代表的なものとしてはおなじみライフゲームがあります。

ブラウニアンセルオートマトンの特徴

以下のようなものが挙げられます。

  • ランダム性を表現するために非同期セルオートマトンとなります。実装例では、時間単位で1つの信号にのみ変換規則を適用することで表現しています。
  • 信号の伝達、交差、回転の3規則およびそれらを90n°回転させたものが適用対象となります。

これらを実装し、半加算器回路を構築したもの(出典より引用しました)が動作例で動かしている動画のものとなります。

出典

小林, 聡., 萩谷, 昌., 横森, 貴., 山村, 雅., 木賀, 大., 礒川, 悌., Peper, F., 西田, 泰., 角谷, 良., 本多, 健., & 青野, 真. (2015). 自然計算へのいざない. 近代科学社.

余談

最初XAML Islandsを利用したC++で書こうとしていたのですが、C# onlyで書いた方が楽そうだったので全部C#で書くことに。そしてMVVMガン無視してコードでGUI要素操作しているからC#のプロに怒られそう。