0

最小数を見つけるために C プログラムを実行したいと考えています。キングとルーク対キングでメイトをチェックするために必要な動きの数、私はミニマックスアルゴリズムを使用することになっています.多くの検索は、実りあるものに私を導きませんでした.それをするために。

4

2 に答える 2

3

すべての最小最大アルゴリズムは、可能なすべてのポジションのツリーを持っていることを前提としています。したがって、まずこのツリーを claculate する必要があります。キングの動きは限られています (8) 他のすべてのピースを考慮すると、木は十分に大きくなります。

評価に使用する関数は、反対側のキングがボードの終了ラインに向かって配置される傾向があるボードを評価するものです (関心のあるシナリオでメイトがどのように達成されるかを知っている場合、それがメイトの位置になるため)。したがって、キングがボードのエンド ラインに近いツリーのすべての位置で、この関数はより大きな値を持ちます。

私のチェスの経験では、あなたが興味を持っているシナリオでのメイトの最大移動数は、特定のボードごとに25であることを考慮してください...

ボード上の各位置の関数値の簡単な例:

  100 90 90 90 90 90 90 100
  90  80 80 80 80 80 80 90
  90  80 70 70 70 70 80 90
  90  80 70 60 60 70 80 90
  90  80 70 60 60 70 80 90 
  90  80 70 70 70 70 80 90 
  90  80 80 80 80 80 80 90 
  100 90 90 90 90 90 90 100
于 2013-04-13T13:10:50.063 に答える
0

すべてのターミナル ポジション (チェックメイトと膠着状態) を定義し、逆方向に作業して、各ポジションのポジションと「メイトまでの距離」のハッシュ テーブルを作成することをお勧めします。または、このタスクは既に完了しているため、Nalimov テーブルベースをダウンロードしてください。

于 2013-06-27T22:09:19.970 に答える