2012年2月24日金曜日

確率コンピュータ

今日はずいぶんと暖かい。 珈琲と果物などで目を覚ましてから、 「古楽の楽しみ」を聞きながら御飯を炊き、いつもの朝食。 お弁当を作って出勤。 午前午後とお仕事。 やはり少し体調不良で、首筋もぞくぞくしてきた。念のため、ちょっと早く帰ることにする。 夕食はカレーライスとマカロニサラダの残り。

プレプリントなど流し読みしていて、"stochastic computing" なるものを知る。 数値を確率で表現することで、計算する方法。 この計算では、例えば、0.25 という数が、 確率 0.25 で "1"、それ以外は "0"が現れるランダムなビット列として表現される。 それで何が嬉しいかと言うと、 例えば、0.25 かける 0.25 という計算が、 確率 1/4 で表が出るコインを二枚投げて同時に表が出る確率はいくらですか、 という問題に翻訳されるのである。 つまり、二つのビット列の流れを入力として、同時に "1" が入ってきたときだけ (「両方、表が出たときだけ」) "1"を出力すれば良い。 つまり、かけ算が AND ゲート 1 つでできちゃうのですよ。 一瞬、「すごいよ、そんなことを思いついた天才はどこのどいつなんだ? これからの時代は確率コンピュータなのか?」 と思ったのだが、 十分な精度の答を得るには相当長いビット列が必要なので、 実際にかけ算をするより効率が良いかどうかは怪しい。 さらに、そもそもどうやってランダムなビット列を生成するのか、 また、どうやって保存するのか、色々悩ましい。 しかし、いずれにせよ面白いアイデアではあり、 世の中には色々と知らないことがあるなあ、と思ったことである。

クイズ:この確率コンピュータのアイデアを最初に提唱した人は誰でしょう?
(答は Wikipedia の Stochastic computing の項目でチェック。 確かに、この人 を天才と呼ぶことに反対する人はあまりいない。)