[ トップページ ]

« Perl による音声 (VoIP) 受信と再生 | メイン | JavaScript による単純な電卓 »

記号処理

Java によるランダム化された計算をつかった単純な問題解決の例

1994 年前後に私は,局所的な情報だけをつかってランダムさをふくんだやりかた (計算順序などをきめるのに乱数をつかう方法) で記号処理などを計算する方法 CCM (Chemical Computation Method / Chemical Casting Model) の研究をしていた. CCM による計算は Macintosh Common Lisp をつかって実行していたが,それでは Web 上で計算の様子をみせることができないので,1996 年に Java で書いたプログラムを公開した.

CCM をつかった単純な問題解決の例」 のページにも書いたように,これらのプログラムは,わけあって Java らしくないプログラムだが,動作させるには問題がないので,いまでもほぼもとのままのかたちで公開している.

例題は 3 つあって,

です. ためしてみてください. 計算が停止したときには,こたえが表示されるのと同時に,何回,規則の条件部をテストしたか (#tests),何回,規則を実行したか (#reactions),どれだけ時間がかかったか (Time (秒)) が表示されるようになっている. プログラムを公開したときには “full speed” (計算中に表示を更新しない最高速モード) で計算しても 1 秒くらいの時間がかかったものが,その後 PC や Java の高速化によって,いまではミリ秒単位で計算できるようになった.

これらの例題では,局所的な情報だけで計算する (せまい範囲だけをみてクイーンの位置や州の色や魔方陣の欄の値をきめる規則をつかう) と解をもとめるまでの時間がかかり,よりひろい範囲の情報をつかうとまちがったこたえでとまってしまう (局所最小値につかまる) が,さらにランダムさを導入する (“frustration” を ON にする) とただしいこたえにいきつきやすくなることがためせるようになっている. わかりにくいとはおもうが… もうすこしくわしい説明は 「CCM をつかった単純な問題解決の例」 のページにある.

CCM-coloring.png

Keywords:

トラックバック

このエントリーのトラックバックURL:
http://www.kanadas.com/mt/mt-tb.cgi/1663

コメントを投稿

このページについて

2007-11-17 16:45 に投稿されたエントリーのページです。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Creative Commons License
このブログは、次のライセンスで保護されています。 クリエイティブ・コモンズ・ライセンス.
Powered by
Movable Type 3.36