コンピューターにできること、できないこと
ボードゲームで、初手から最終手までルール上指せるすべての手を推計し、合計した数字:
チェス、10の120乗。
将棋、10の220乗。
囲碁、10の360乗。
宇宙に存在する原子の数は10の80乗に満たないと言われています。 こういう数は、いかにコンピューターといえども不可能、つまり、初手から最終手までルール上指せるすべての手を読んで、必ず勝つコンピューターは『現在一般的な一つの命令を順番にこなす』コンピューターのモデルでは無理でしょう。 僕のパソコンでは無理です。
『量子物理学を用いた、実現していない』量子コンピューターなら理論上はありえるかもしれませんが、これはまだまだ先の話だとおもわれます。
10の80乗がどれぐらい簡単にでてくる数字か、少し考えてみます。 例えば、「1から100までの数から適当に一つ選んで?」って、学校のクラスの人、40人に頼むとします。 すると、全員が選ぶ数の組み合わせは、1の後に0を80個付けた数、10の80乗の分だけ、選びかたがあります。 たったこれだけでも、この数は宇宙に存在する原子の数と同じぐらい途方もない数です。
今年のパソコン、AMD Athlon 64でも2.8 GHzで、8400 MIPSだから、一秒に8400000000回、一つの命令、例えば足し算、が実行出来ます。 すると、一日に725760000000000まで順番に数を数えられます。 上の問題を、まともに全部の組み合わせをチェックするやりかたで解こうとすると、なんと 138の後に0が63個つく日数かかるのです。 そんなに待つのは到底不可能。 百年でも36500日しかないんですから。
総当たりして一日以内で終るのは、上の問題だと、7人分だけ。 コンピューターの能力の限界を超えるのなんて、すっごい簡単です。
さて、できないことをいかにやるか。
コンピュータ将棋世界一、「激指」開発者インタビューより抜粋
『「激指」では、羽生善治氏(現プロ四冠王)が実戦で指された棋譜を元に「この局面ではこういう手がよく指される」という可能性を数値化した上で、よく指されるタイプの手については手数を多く、あまり指されない手については確認程度に読む、という形で思考の効率化を図ってます。』
この、『効率化の方法を考えて実践する』のがコンピューターサイエンスです。 これだけです。 いかに余分な仕事をせずに、楽ができるか考えます。 このなかでも、やるべきことは、1、理論的に、そもそも解けそうな問題かどうか考え、できそうなら効率化の方法を考える、2、実践的に新しい問題に応用して経験を積む、というようにわけられます。
計算量が多すぎる場合、やれることはニつあります。一つは、上記のように『計算が少なくてすむ方法を考える』こと、もう一つは『並列化』です。
一つで無理でもプロセッサーの数を増やせばいいわけですが、この場合は問題が相互関係がない小さな問題に細かく分解できる性質のものであるかどうかで、できるかどうかが決まります。 現在のスーパーコンピューターはこれです。
ここでは、『第一位は米国のASCIプロジェクトにより開発されたASCI whiteであり、ピーク性能12.3TeraFlopsの計算性能を持って』います。(スーパーコンピュータの動向)
『10P(ペタ)FLOPSの水準になれば映画「2001年宇宙の旅」に登場するコンピュータ「HAL」のように人と同様の能力を持ったシステムを実現でき,100PFLOPSの水準になれば映画「マトリックス」に登場するコンピュータのように世界そのものを表現するシステムが実現できる可能性がある』といわれます。(CELLプロセッサーの記事より)
チェスだって、まともに解くのは不可能でも、効率化とハードの革新により、人間のチャンピオンと張り合うところまできました。 効率化と並列化の波は、何を可能にしてくれるでしょうか。
囲碁ができないコンピューター vs 映画「マトリックス」に登場するコンピューターの話でした。
参考、スーパーコンピュータの動向
http://www.nistep.go.jp/achiev/ftx/jpn/stfc/stt007j/feature1.html
参考、CELLプロセッサー
http://techon.nikkeibp.co.jp/article/NEWS/20051118/110883/
参考、「激指」開発者インタビュー
http://pcweb.mycom.co.jp/news/2002/05/17/26.html
参考、人工知能とゲーム
http://www.google.com/search?q=cache:NT-O5dM83poJ:www.yomiuri.co.jp/net/feature/004/20030818fe02.htm+yomiuri+%E5%9B%B2%E7%A2%81+%E4%BA%BA%E5%B7%A5%E7%9F%A5%E8%83%BD&hl=ja