欢迎来到天天文库
浏览记录
ID:42814272
大小:671.50 KB
页数:25页
时间:2019-09-23
《五子棋(算法)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、毕业论文答辩基于java小游戏开发——五子棋答辩人:黄洪华导师:钟少君班级:信息082班游戏设计背景增强思维能力培养博弈兴趣锻炼自己的耐性放松心情文化历史悠久蕴含禅理适合人群广操作简单设计思路总介绍对五子棋算法的设计原理和实现方法进行探讨和研究,主要包括数据结构、搜索算法和优劣评价函数组成。主要的特点包括快速的数据结构设计实现、以及高效率的搜索算法和尽可能的模拟人类的智能。棋局的表示我们知道五子棋的走法中有优先和禁手,如连四肯定是没有三四优先,而如果是黑方出现三三(包括“四、三、三”)、四四(包括“四、四、三”),而黑方只能以四三取胜,如果黑方走出禁手则
2、是输;五连与禁手同时形成,先五为胜,等等的规矩。但是电脑毕竟不是人类,可以类人但是却不可以自己思考,那么就需要给电脑一个它可以明白的评判标准。常用术语我们知道五子棋的走法中有优先和禁手,如连四肯定是没有三四优先,而如果是黑方出现三三(包括“四、三、三”)、四四(包括“四、四、三”),而黑方只能以四三取胜,如果黑方走出禁手则是输;五连与禁手同时形阳线:棋盘上可见的横纵直线。阴线:棋盘上无实线连接的隐形斜线。活3:由于一方走一着在无子交叉点上形成一个“活三”的局面,也就是在放一子就可行成4连了。活4:在棋盘某一条阳线或阴线上有同色4子不间隔地紧紧相连,且在此
3、4子两端延长线上各有一个无子的交叉点与此4子紧密相连。冲四:除"活四"外的,再下一着棋便可形成五连,并且存在五连的可能性的局面。由于篇幅有限不能将所有的规则讲完,只是提出了对讲算法有用的几点加以叙述。成,先五为胜,等等的规矩。如何让电脑知道该落子在哪一点呢在这方面,电脑要做得和人一样,判断棋盘上每一点的重要度。比如冲四比冲三强,冲三比造二强,遇到四三如果是对方的,堵死,如果是自己的,优先落子。遇到双三,如果是黑棋,黑方输,如果是白棋,优先等级仅次于四三。我们看到电脑在运算的时候,同种棋型在敌我双方的优先等级并不相同,由于禁手的缘故黑棋和白棋的处理也不相同
4、。同样是四三,如果是玩家的,则电脑不会冲自己的,而是先堵玩家的。基本的棋型优先顺序造一个二<……<造四个二<冲三<……<冲两个二和一个三<冲双三<冲四<冲四三。之所以这么设置是由于五子棋的下法所致,只要构成5颗一线就赢了,所以说一条线上构成的越多那么就有优势,当然就是棋数越多,分越多。五子棋搜索树种的极大极小搜索为了使谈论更有条理性,将博弈的双方分别命名为MAX和MIN。而搜索的任务是为MAX找最佳的移动。假设MAX先移动(此时暂时不考虑五子棋的禁手等规则),然后2个博弈者轮流移动。因此,深度为偶数的节点,对应于MAX下一步移动的位置,称为MAX节点;深
5、度为奇数的节点对应于MIN下一步移动的位置,称为MIN节点(博弈树的顶节点深度为0)。k层包括深度为2k和2k+1的节点。通常用层数表示博弈树的搜索深度。他可以表示出向前预测的MAX和MIN交替运动的回合数。对于复杂的博弈,博弈者必须认识到由于博弈树的复杂程度所以搜索到终点是不可能的(除了在博弈快结束时)。所以,常采用在有限范围搜索方法,这里使用启发式搜索。在启发式搜索的过程中,关键的一步是如何确定下一个要考察的节点,在确定节点时只要能充分利用与问题有关的信息,估计出节点的重要性,就能在搜索时选择重要性较高的节点,以利于博弈者以较快的速度求出最佳的棋步。
6、在这里我采用静态评估函数,用评估函数h(i)衡量每一个叶节点位置的“值”。一个最佳首步可以由一个最小最大化过程产生。假设轮到MAX从搜索树的叶节点中选取,他肯定选择拥有最大值的节点。因此,MIN叶节点的一个MAX节点双亲的倒推值就等于叶节点的静态评估值中的最大值。另一方面,MIN从叶节点中选取时,必然选取最小的节点(即最负的值)。既然如此,MAX叶节点的MIN双亲节点被分配一个倒推值,他等于叶节点静态评估值的最小值。在所有叶节点的父节点被赋予倒推值后,开始倒推另一层,假定MAX将选择有最大倒推值的MIN的后继节点,而MIN会选择有最小倒推值的MAX后继节
7、点。继续逐层对节点评估,直到最后开始节点的后继者被赋予倒推值。MAX将选择有最大倒推值的节点作为他的首步。整个过程的有效性基于这样的假设。用整个棋盘估值的函数h(n)为静态估值函数。设想当前棋局S为轮到计算机方下棋(用方框表示),任选一空点作为计算机方的下棋位置(可有若干种选择),接着考虑在此情况下游戏者一方下棋的棋局(用圆圈表示);从某一个圆圈棋局出发,任选一空点作为游戏者一方的落子处(又有若干种选择)。再次形成计算机方下棋的方框棋局。依此类推,这样可形成一棵以S为根结点的博弈树,该树以圆圈棋局为第2层子结点,以方框棋局为第3层子结点等等。如果继续向前
8、搜索,可形成多层子结点,现在以向前搜索3层子结点为例来说明极大极小值的过程。对第
此文档下载收益归作者所有