最終更新日:2004/12/12

ネギ担ぎ コンピュータチェス概論

このページはOpera6.0 で正常に表示できることを確認しています。

コンピュータがチェスを指す・・・といっても、 コンピュータは直観によってよさそうな手を選択したり、 相手のミスを期待したりして指し手を選択しているわけではありません。 コンピュータはあくまで「与えられた計算手順」に基づき局面の評価を数値化し、 読む必要のない手を決定し、不明な手を先読みしているに過ぎません。 そしてこの「与えられた計算手順」をいろいろなことに応用できるように抽象化したものを、 プログラミングの世界ではアルゴリズムと呼びます。

さて、コンピュータチェスにおけるアルゴリズムとは、大きく思考アルゴリズム定跡データベースに分けることができると思います。 またさらに、思考アルゴリズムは大きく2つに分けることができると思います。 1つはある局面で読む必要のある手と読む必要のない手を決定するための探索アルゴリズム、 もう1つはある局面を先読みなしで評価する評価関数です。 定跡データベースについては、文献も少なく、私の知識も乏しいため、 ここでは見なかったこととします(爆)。 データベースに関するページの作成は、私がもっと知識を得てからということで・・・

コンピュータの思考アルゴリズムを大雑把に書くと、以下の通りとなります。

  1. ある局面で可能な着手を全て生成し、有望そうな手から順に並べる
  2. 並べられた順に、生成した着手を指してみる
  3. まだ十分先まで先読みしていないと判断したら、この局面に関して1から繰り返す
  4. 十分先まで先読みしたと判断したら、その局面を評価し、1手戻す
  5. 他の可能な着手に関しても2から同様に繰り返し、最も有望な着手を選択する
基本的にはこの繰り返しです。ところが簡単に推測できるように、 これらの作業を単純に行っただけで強いコンピュータを作ろうとすると、 莫大なメモリと気の遠くなるほどの時間が必要となります。 そのため、先人たちはより効率の良いアルゴリズムについて研究してきたわけです。

次章からはこれらのアルゴリズムについて見ていきたいと思います。

コンピュータチェスのトップへ

バナー