简体   繁体   English

Go的游戏算法?

[英]Algorithms to play Game of Go?

What is the state of the art of algorithms to play the game of Go ? Go游戏的算法技术水平是什么?
Which articles (describing algorithms) are best to read ? 最好阅读哪些文章(描述算法)?

There is a StackExachge site devoted to Go, but not enough people commited to ask the question there. 有一个专门用于Go的StackExachge网站 ,但没有足够的人承诺在那里提出问题。

All the current top bots use Monte Carlo -based algorithms. 所有当前的机器人都使用基于蒙特卡罗的算法。 They're usually heavily adapted to Go and have many additional layers to support the MC algorithm in predicting the outcome of each move. 它们通常非常适合Go,并且有许多额外的层来支持MC算法来预测每次移动的结果。 You can look at an open source bot such as Fuego for an example. 您可以查看一个开源机器人,例如Fuego

是最基本的资源开始,但我敢说它非常完整

The Amirim project tried to use a minimax approach combining ab-pruning and partition search methods to get a Go AI working. Amirim项目试图使用结合ab-pruning和分区搜索方法的minimax方法来实现Go AI的工作。 They seemed to have some success but I don't remember them proving their AI by playing it against human opponents. 他们似乎取得了一些成功,但我不记得他们通过对抗人类对手来证明自己的AI。

I suggest you lookup partition search . 我建议你查找分区搜索

Unfortunately the link I had to the Amirim project is now dead ( here ). 不幸的是,我对Amirim项目的链接已经死了( 这里 )。

I implemented something similar it in Prolog by using alpha-beta pruning.. This kind of approach can be used easily with Go since it is a perfect information game in which 我通过使用alpha-beta修剪在Prolog中实现了类似的东西。这种方法可以很容易地用于Go,因为它是一个完美的信息游戏,其中

  • every possible move is known 每一个可能的举动都是已知
  • the state of the game is completely known 游戏的状态是完全已知的

You could start from Minimax trees and then dig deeper which clever approaches like AB-pruning, negmax and so on. 您可以从Minimax树开始,然后深入挖掘AB-pruning,negmax等聪明的方法。

The cool thing is that you can first develop the engine that works out the best move and then try to find the best heuristic (also by letting your AIs play one against the other to see which one is smarter) that decides how much good is a move. 很酷的是,你可以先开发最佳动作的引擎,然后尝试找到最好的启发式(也可以让你的AI玩一个对抗另一个看看哪一个更聪明)决定了多少好处是移动。

Of course finding a good heuristic is the part of the implementation in which you have to study the rules of the game and that requires to think about various strategies.. so it is the more complex one but also the funniest. 当然,找到一个好的启发式是实现的一部分,你必须要研究游戏规则,这需要考虑各种策略..所以它是更复杂的,但也是最有趣的。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM