2

後でチェス エンジンを実装するためのトレーニングとして、オセロ (リバーシ) エンジンをコーディングしています。安定したピースの数を数えたいのですが、どのようにすればよいのかわかりません。

「エッジ安定」部分は簡単に数えることができますが、他の部分をどのように説明するかはわかりません。ボードを表すために 1 次元配列を使用しています。

それに関するヒントをいただければ幸いです。

4

2 に答える 2

2

http://en.wikipedia.org/wiki/Reversiから

「一般に、4 つの軸 (水平、垂直、各対角線) に沿って、境界上、塗りつぶされた列、または同じ色の安定したピースの隣にある場合、ピースは安定しています。」

すでに境界について言及しました-塗りつぶされた行は、ピースを数えるだけでチェックできますが、ここにはおそらく多くの最適化があります。たとえば、塗りつぶされた行を最初に見つけてから、反復するのではなく、完全な行の各位置を潜在的に安定しているとマークしますすべての位置を確認してから、関連するすべての方向を確認するため、無駄な労力につながります。

このページには、安定性の計算に関する詳細が記載されています。

コンピューター オセロに興味がある場合は、Logistello の出版物を調べてください。Logistello(少なくとも数年前には) 世界チャンピオンでした。著者の Michael Buro は、このトピックに関する博士論文を書きました。ソースコードが利用可能になったので、使用されているデータ構造を調べることができます。記憶によると、彼は 3 進数 (黒、白、空の値) を使用して高速検索を可能にし、さまざまなパターン (行、列、対角線、角など) の状態を維持して評価関数を高速化したと思います。

于 2012-02-28T19:50:22.633 に答える
0

うーん、それはあなたのデータ構造に属していると思います。ピースが安定しているかどうかを確認するには、その隣のすべてのフィールド (水平、垂直、対角線) が次のルールのいずれかに従っているかどうかを確認する必要があります。

  • 境界です
  • 同色の安定の一枚です
  • 満員の列です

これを確認する方法は、データ構造によって異なります。おそらく、2 次元配列を選択できるので、実際のゲームボード (8x8 マトリックス) により近い「画像」が得られます。

于 2012-02-28T19:54:30.800 に答える