五子棋的算法用哪种比较简单

如题所述

第1个回答  2008-11-03
可以采用这样的笨算法,运行起来慢点,但是很简单易懂,而且效果很好。如果能够加以优化,则其实是很好的算法:

1、首先遍历整个棋盘,找到一个可以落子的点,然后假设自己在该点落子,再然后判断如果棋子落到这个点上后会对自己有什么利益,比如会不会形成冲4活三、双活三等等,(事先将冲四活三、双活三等效果定义上利益值,当然,如果是五个子连起来了的话,利益值要被定义成最高,最好是无穷大的),将各种效果的利益值相加,得到己方的利益值。
2、将角色互换一下,重复第一步,得到对方的利益值(其实是递桂算法)。
3、将己方的利益值减去对方的利益值,得到该点的总利益值。
4、整个棋盘所有能落子的点都计算出利益值之后,找出利益值最大的那个点,将棋子落到该点。

当然,这个算法可以有很大程度的优化,比如,如果没有相邻的棋子,可以放弃该点。还有一旦找出可以胜利的点,就不再继续往下计算。。。。

模拟算法:
int liyi(角色, 层次)
{
if(层次=0)
return 0;

for(第一个可以落子的点 到 最后一个可以落子的点)
{
int 利益,最大利益;

//递桂...
利益 = 获取本角色利益值() - liyi(角色=相反角色,层次-1);

if(利益>最大利益)
{
最大利益 = 利益;
保存该点。
}
落子到所保存的点。
}本回答被提问者采纳
第2个回答  2008-11-01
使用4级遍历算法,如果能使用棋谱库,会大幅度提升效率。
第3个回答  2008-11-01
什么算法啊?

应该是赢法吧?

五子棋的规则你其实不知道,一起了解一下吧
1.玩法一 双方分别使用黑白两色的棋子,下在棋盘直线与横线的交叉点上,先形成五子连线者获胜。2.玩法二 自己形成五子连线就替换对方任意一枚棋子。被替换的棋子可以和对方交换棋子。最后以先出完所有棋子的一方为胜。3.玩法解读 第一种玩法最常见,也很容易分出输赢;第二种,没听说过,刚百科查的。

求五子棋的人工智能的算法描述~~~
1、首先遍历整个棋盘,找到一个可以落子的点,然后假设自己在该点落子,再然后判断如果棋子落到这个点上后会对自己有什么利益,比如会不会形成冲4活三、双活三等等,(事先将冲四活三、双活三等效果定义上利益值,当然,如果是五个子连起来了的话,利益值要被定义成最高,最好是无穷大的),将各...

五子棋的电脑判断怎么写?
至于判断落子情况,我的做法是以当前空位为中心,取9个点,然后将空点定义为黑或白,去判断格式。我用二维数组定义格式,然后和实际情况比对。比如黑5的格式:{ { 1, 1, 1, 1, 1 } }。这简单极了,但是越少就越困难,比如白棋活3,情况就多多了:{ { 0, 0, 2, 2, 2, 0 }, { 0...

求vc简单的五子棋AI算法
我有个简单的思路:先定义一条线上棋子的各种布局,比如初步定义长度为五个子 ◎◎◎● ◎◎●◎× ◎●◎×× ◎×◎×◎ 等等。白圈是自己的子,黑圈是对方的子,叉子是未走的格子。程序里有个布局表,再定义各个布局的分数,比如连五最99分,连三30分等等。当机器走时,在空格放入一子,...

C语言五子棋算法
五子棋胜负的判定,一般有一下两种算法:1.扫描整个棋盘,分别扫描四个方向是否有5个连子。网上找了很多五子棋源码都是用此算法,这意味着每下一个棋子都要扫描一遍19×19的棋盘,复杂而且低效,代码略。2.每下一字,从该子开始扫描其四个方向(例如:从该子的(x-4,y)坐标开始扫描横向)是否...

五子棋游戏计算机采用哪些算法来确定胜负
黑7选择了I6,黑的连接点主要有G6和G8、F8。F8或G8是一个三通点,G6是活3点,所以G8要强于G6。本次我们讨论G6。由于G8和白棋靠的较近,所以F8更强一些。此时白10可选择G8,断黑的一个活2,自己成一个活2。但此时黑的活2比较多,攻势已经非常大,经过下面图1的进攻线路可以取胜。望...

想写一个机器学习类的五子棋,可能么?可能的话需要看什么书
如果你对机器学习有基本了解,并且希望实现一个一般水平的五子棋AI,无需很高的棋力,那么实现过程可能相对简单。你需要掌握极大极小搜索算法,并能编写一个基于棋形分加权和的评估函数。最后,使用随机调整方法训练棋形分的权值。此方法能够实现一个基础的五子棋AI,类似于一些休闲游戏的智能对手。对于五子...

五子棋先下的人一定赢
从实践的角度来讲,网上是可以搜索“地毯谱”(尤其是花月和蒲月都是五手两打必胜),一般在几百兆左右,可以用renlib软件打开,所谓地毯谱的意思就是黑棋会指定下法,但白棋每一步都可以选择棋盘任意位置,最后黑棋必胜。也就是说,只要按照此棋谱下棋,五子棋世界冠军都一定会输给你。所以正式...

C#编写五子棋思路
简单的AI算法就是:只考虑一步棋,先假定在某处落子,改变棋盘状态,再用估值函数对新的棋盘状态打分,取最优的那一步。较复杂的AI就要用到广度或深度搜索算法,即要让想电脑想N步棋,注意轮到对方落子时是任意的,对每个可能结果打分,再取最优的那一步。实现方法有两种,一种是递归,很耗内存和...

怎样能够开发一个极其聪明的五子棋应用?很难下赢计算机的,
在开发一个聪明的五子棋应用时,需要考虑多种高效搜索算法。现今,顶尖五子棋程序设计主要采用Proof number search、Dependency based search(即威胁空间搜索)及基于Alpha-beta框架的搜索算法。这些算法在决策和预测对手行动方面表现卓越。然而,使用Monte Carlo Tree Search的五子棋程序目前效果并不理想。为了...

相似回答