後でチェス エンジンを実装するためのトレーニングとして、オセロ (リバーシ) エンジンをコーディングしています。安定したピースの数を数えたいのですが、どのようにすればよいのかわかりません。
「エッジ安定」部分は簡単に数えることができますが、他の部分をどのように説明するかはわかりません。ボードを表すために 1 次元配列を使用しています。
それに関するヒントをいただければ幸いです。
http://en.wikipedia.org/wiki/Reversiから
「一般に、4 つの軸 (水平、垂直、各対角線) に沿って、境界上、塗りつぶされた列、または同じ色の安定したピースの隣にある場合、ピースは安定しています。」
すでに境界について言及しました-塗りつぶされた行は、ピースを数えるだけでチェックできますが、ここにはおそらく多くの最適化があります。たとえば、塗りつぶされた行を最初に見つけてから、反復するのではなく、完全な行の各位置を潜在的に安定しているとマークしますすべての位置を確認してから、関連するすべての方向を確認するため、無駄な労力につながります。
このページには、安定性の計算に関する詳細が記載されています。
コンピューター オセロに興味がある場合は、Logistello の出版物を調べてください。Logistelloは(少なくとも数年前には) 世界チャンピオンでした。著者の Michael Buro は、このトピックに関する博士論文を書きました。ソースコードが利用可能になったので、使用されているデータ構造を調べることができます。記憶によると、彼は 3 進数 (黒、白、空の値) を使用して高速検索を可能にし、さまざまなパターン (行、列、対角線、角など) の状態を維持して評価関数を高速化したと思います。
うーん、それはあなたのデータ構造に属していると思います。ピースが安定しているかどうかを確認するには、その隣のすべてのフィールド (水平、垂直、対角線) が次のルールのいずれかに従っているかどうかを確認する必要があります。
これを確認する方法は、データ構造によって異なります。おそらく、2 次元配列を選択できるので、実際のゲームボード (8x8 マトリックス) により近い「画像」が得られます。