1994 年前後に私は,局所的な情報だけをつかってランダムさをふくんだやりかた (計算順序などをきめるのに乱数をつかう方法) で記号処理などを計算する方法 CCM (Chemical Computation Method / Chemical Casting Model) の研究をしていた. CCM による計算は Macintosh Common Lisp をつかって実行していたが,それでは Web 上で計算の様子をみせることができないので,1996 年に Java で書いたプログラムを公開した.
例題は 3 つあって,
- N クイーン問題とならべかえ (ソート) -- ひとつのプログラムで実行させるたびにことなる N クイーン問題の解をもとめたり,ソートをしたりすることができる.
- 地図とグラフ頂点のぬりわけ -- 実行させるたびにことなる米国の 4 色ぬりわけができる (下図がぬりわけ結果の例).
- 魔方陣 -- 実行させるたびにことなる魔方陣の解がもとめられる.
これらの例題では,局所的な情報だけで計算する (せまい範囲だけをみてクイーンの位置や州の色や魔方陣の欄の値をきめる規則をつかう) と解をもとめるまでの時間がかかり,よりひろい範囲の情報をつかうとまちがったこたえでとまってしまう (局所最小値につかまる) が,さらにランダムさを導入する (“frustration” を ON にする) とただしいこたえにいきつきやすくなることがためせるようになっている. わかりにくいとはおもうが… もうすこしくわしい説明は 「CCM をつかった単純な問題解決の例」 のページにある.