2012-07-06 9 views
8

私はMinesweeperソルバーを実装する必要があります。私はルールベースのエージェントを実装し始めました。 私は特定のルールを実装しました。私は現在のセル(周りのセルについての情報を持つ)のために最もよくマッチするルールを選択するヒューリスティックな機能を持っています。したがって、選択された各セルに対して、8つの周囲のセルを表示したり、マークしたり、何もしないようにすることができます。というのは。現時点では、エージェントは入力としていくつかのセルを明らかにし、周囲のセル(現時点ではエージェントがわからない、どのセルをどのように扱うかを決める方法)を決定します。AI Minesweeperプロジェクト

私の質問は、処理するセルを決定するために実装するアルゴリズムは何ですか?

最初の移動の場合、エージェントはコーナーセルを表示します(または、最初の移動の規則に従う)。それ以降に何をするのですか?

私は何らかの検索を実装する必要があることを理解しています。私は多くの検索アルゴリズム(BFS、DFS、A-STARなど)を知っていますが、これは問題ではありません。私はこれらの検索をどのように使用できるのか分かりません。

私はそれを人工知能の原則:現代的なアプローチで実装する必要があります。

答えて

8

ここでは、BFS、DFS、およびA *はおそらく適切ではありません。これらのアルゴリズムは、世界の完全な知識を持っているときに行動のコースを計画しようとしている場合には効果的です。掃海艇では、そのような知識はありません。

代わりに、本書のセクションIIIの論理推論技術を使用することをお勧めします。特に、SATや第10章のテクニックを使用してください。これにより、鉱山がどこにあるのかについての結論を "次の8つの正方形のうちの1つが鉱山であり、次の8つの正方形のうちの2つが鉱山です。各ステップでこれを行うことで、鉱山がどこにあるかを特定するのに役立つか、継続する前に推測する必要があることに気づくでしょう。

希望すると便利です。

+0

私はルールでこれらの技術のいくつかを実装しました。特定のメソッド:treatCell(i_CellToTreat)を実装しました。これは最良のルールと一致し、それを実行します。私は明らかにされた細胞をどの順序で治療するか、どの細胞を治療するかを知りません。現時点では明らかにされた細胞の集合全体を反復して治療します。小さなボードではうまく動作しますが、より良いアルゴリズムを実装する必要があります。 – Nikita