回顾过去(想想20多年)我在杂志中遇到了一个Gomoku游戏源代码,我为我的电脑输入了这个源代码并且非常有趣。
游戏难以取胜,但计算机AI的核心算法非常简单,并没有考虑到很多代码。我想知道是否有人知道这个算法,并且有一些关于它的源或理论的链接。
我记得的是它基本上分配了一个覆盖整个电路板的阵列。然后,无论何时我或它放置一块,它都会在棋盘上的所有位置添加一些重量,这可能会影响该棋子。
例如(注意权重肯定是错误的,因为我不记得那些):
1 1 1
2 2 2
3 3 3
444
1234X4321
3 3 3
2 2 2
1 1 1
然后它只是扫描数组中一个具有最低或最高值的开放位置。
我模糊的事情:
这对任何人都响了吗?任何人都有任何有用的东西吗?
答案 0 :(得分:6)
阅读你的描述,并考虑一下,我认为它可能适用于单个数组,正如你所描述的那样。
要实现五连赢的目标,你必须(a)阻止对手成功,(b)自己成功。
为了取得成功,你必须在石板上已有的其他石头附近放置石头,因此在你的石头旁边可以参加连续的土地上添加一个正分数是有意义的。您给出的线性示例或二次方可能会很好。
为防止对手成功,你必须在他的 / 她的石头旁边放置石头。如果你用一块石头打两只鸟,那就特别好了,所以对手的石头应该像你一样增加周围区域的价值 - 他已经排队的石头越多,得分越高,并且越有可能算法将尝试将对手切断。
这里最重要的是不同领域的加权,以及对手的宝石加权是否与你的不同。不幸的是,我无法帮助解决这个问题,但是一旦游戏本身被编写,这些值应该相当简单,以便通过反复试验找出答案。
然而,这是一种非常基本的方法,并且将通过树搜索算法表现出色。搜索Google时,有一个相关的paper on Threat search,显然适用于Gomoku。尽管如此,该论文还是在支付墙后面:/
答案 1 :(得分:2)
我没看过这篇文章,但从描述来看,我的猜测是某种形式的Minimax algorithm
答案 2 :(得分:2)
我看到你提到的这个算法 - 它非常简单快速(没有回溯:-))并且它打得非常好:-)我必须在某个地方有源,但很多年前...有重量取决于附近有多少其他石头,以及对位石头的重量。这些都较低,所以算法更喜欢攻击策略。
但这当然是非常简单的算法。已经找到了制胜战略。 见本文:L. Victor Allis, H. J. van den Herik, M. P. H. Huntjens. Go-Moku and Threat-Space Search。当我写自己的程序时,它对我帮助很大。通过这种方式,你将能够编写出能够很好地攻击对手并找到胜利组合的程序。
答案 3 :(得分:1)
这是一款古老的游戏 - 我在Planet Source Code找到了代码。我在大学期间玩过这个游戏,在286天里有一个BASIC版本。
答案 4 :(得分:1)
这是您正在寻找的计划 ftp://ftp.mrynet.com/USENIX/80.1/boulder/dpw/gomoku.c
已近40岁
答案 5 :(得分:-1)