GOMOKUアレイベースのAI-ALGORITHM?
-
02-10-2019 - |
質問
昔の方法(20年以上考えてください)私は自分のコンピューターに入力した雑誌でGomokuゲームソースコードに遭遇し、とても楽しかったです。
ゲームは勝つことは困難でしたが、コンピューターAIのコアアルゴリズムは本当に単純であり、多くのコードを考慮していませんでした。誰かがこのアルゴリズムを知っていて、それに関するいくつかのソースや理論へのリンクがあるのだろうか。
私が覚えているのは、基本的にボード全体をカバーする配列を割り当てたということでした。その後、私またはそれがピースを配置するたびに、ボード上のすべての場所に、作品が衝突する可能性のある多くのウェイトを追加します。
たとえば、私はそれらを覚えていないので、重みは間違いなく間違っていることに注意してください):
1 1 1
2 2 2
3 3 3
444
1234X4321
3 3 3
2 2 2
1 1 1
次に、単に最低値または最高値の開いた場所の配列をスキャンしました。
私がぼんやりしているもの:
- おそらく、2つの配列があり、1つは私とそれ自体のために1つあり、最小/最大の重みがありましたか?
- アルゴリズムにもっとあったかもしれませんが、その中心には基本的に配列と加重数がありました
これは誰かと一緒にベルを鳴らしますか?誰かが助けるものを手に入れましたか?
解決
あなたの説明を読んで、それについて少し考えて、それはおそらくあなたが説明した方法で、おそらく単一の配列で動作すると思います。
5 rowを獲得するという目標を達成するには、(a)相手が成功するのを防ぎ、(b)自分で成功する必要があります。
自分で成功するには、すでにボード上にある他の石の近くに石を置かなければならないので、連続して参加できる石の隣にあるフィールドに肯定的なスコアを追加することは理にかなっています。あなたが与えた線形の例、またはおそらくいくつかの四肢がうまくいくでしょう。
相手が成功するのを防ぐには、隣に石を置かなければなりません 彼の / 彼女 石。あなたが1本の石で2羽の鳥を打つ場合、それは特に良いことです。そのため、相手の石はあなたのものと同じように周囲の畑の価値を高める必要があります - 彼がすでに並んでいる石が多く、スコアが高く、より多くの可能性が高くなりますアルゴリズムは相手を切り離そうとします。
ここで最も重要なことは、異なるフィールドの重み付けであり、相手の石があなたのものとは異なる重み付けされているかどうかです。残念ながら、私はそれを助けることはできませんが、ゲーム自体が書かれたら、試行錯誤を通じて値を合理的に簡単に理解できるはずです。
ただし、これは非常に基本的なアプローチであり、ツリー検索アルゴリズムによってアウトパフォームされます。 Googleを検索すると、関連があります 脅威検索に関する論文, 、Gomokuにとっては明らかにうまく機能しているようです。紙は賃金壁の後ろにありますが:/
他のヒント
私は記事を読んでいませんが、説明から私の推測は何らかの形になります Minimaxアルゴリズム
私はあなたが言及したこのアルゴリズムを見ました - それは非常にシンプルで高速でした(バックトラッキングはありません:-))そしてそれは非常にうまく機能しました:-)私はどこかでソースを持っている必要がありますが、それは何年も前です...あなたの石の重みがありました他の石の数が近くにあるか、およびオペンテントの石の重量に応じて。これらは低かったため、アルゴリズムは攻撃戦略を好みました。
しかし、これはもちろん非常に些細なアルゴリズムです。勝利戦略はすでに見つかりました。この論文を参照してください: L.ビクターアリス、HJヴァンデンヘリク、MPHハンジェンズ。ゴモクと脅威空間検索. 。私が自分のプログラムを書いていたとき、それは私を大いに助けてくれました。これにより、対戦相手を攻撃し、勝利の組み合わせを見つけるのに非常に良いプログラムを書くことができます。
それは古代のゲームです - 私はコードを見つけました 惑星ソースコード. 。私は大学中にこのゲームをプレイしましたが、286日間で基本バージョンがありました。
これがあなたが探しているプログラムですftp://ftp.mrynet.com/usenix/80.1/boulder/dpw/gomoku.c
ほぼ40歳です