围棋对弈系统的设计与实现毕业论文.doc
《围棋对弈系统的设计与实现毕业论文.doc》由会员分享,可在线阅读,更多相关《围棋对弈系统的设计与实现毕业论文.doc(51页珍藏版)》请在三一办公上搜索。
1、围棋对弈系统的设计与实现摘 要计算机围棋是计算机博弈研究的一个重要分支,是当前人工智能研究的热点之一,一直以来吸引着大量的研究人员,产生了较大的社会影响和学术影响。由于围棋变化复杂、棋理深奥,是一种高智能的活动,因而围棋的计算机博弈设计难度较大,同时计算机围棋热点问题的研究为人工智能带来了崭新的方法和理论。计算机围棋的研究和实现需要多门学科的知识交叉,至少会涉及到围棋、计算机、数学、生物、逻辑学、军事学、教育、心理学乃至哲学等领域,因此其发展具有重要的研究价值和应用价值。论文主要介绍了围棋对弈系统中胜负判断与局面分析功能子系统具有的功能,论述了子系统的开发和实现的过程,同时对围棋胜负判断的主要
2、规则、计算机围棋中计算势的几个经典模型以及计算机围棋发展的现状进行了阐述。通过Visual Basic 6.0可视化开发工具实现了围棋对弈系统,该系统具有新局、继续以前局、存当前局、设置、回手、复盘、判断胜负、显示势力、显示定式等功能,能够辅助围棋爱好者进行“人-人”围棋对弈。围棋胜负判断与局面分析功能子系统,是围棋对弈系统的一个重要组成部分,并为“人人”围棋对弈系统向“人机”围棋对弈系统发展打下基础。在实现过程中,通过建立棋局的记录来判断棋盘上每一点的归属,从而确定双方地域,故能够对提掉死子后的终局棋盘进行判断胜负;通过建立棋子的影响模型、力学模型以及度量公式,将棋子向棋盘其它部分辐射的影响
3、量化,从而判断对弈双方的影响地域。 关键词:计算机围棋;胜负判断;影响模型;势AbstractComputer Go is an important branch of Computer Game research, and it is also an hotspot of Artificial Intelligence. Computer Go has been attracting lots of researchers and has brought remarkable social and scientific influence in the meantime. On one ha
4、nd, because the moves in Go are not only manifold but also complicated, which makes it a more difficult work in Computer Go programming. On the other hand, it has brought Artificial Intelligence many new methods and theories. At the same time, Computer Go has been involved in many cross-disciplinari
5、es such as Go, Computer, Mathematics, Biology, Logics, Strategics, Education, Psychics and even Philosophy. Consequently, its development has important research value and applied value.The paper mainly introduces the background, functions to be completed and the development procedure of the system.
6、It presents the rules of victory judgment, the classic influence model and the current situation. The Go Playing System is built by Visual Basic 6.0 and includes many functions such as new game, load game, storage game, settings, undo, redo, victory judgment of the two sides, show influence and form
7、ulized series of moves. It can help Go enthusiasts to make competition of human-to-human.Both of the victory judgment and situation analysis subsystems are needed sections of human-to-human Go Playing System, and they will all be foundations of the human-to-machine Computer Go System in the future.
8、In the process of implementation, the system can obtain the result by building the record adscription of every point. The paper builds the influence model, mechanical model and measurable formula. It is constructed to quantify the influence that stones make and estimate the areas of the two players.
9、Key words: Computer Go;victory judgment;influence model;force前 言围棋是一项广有裨益的智力竞技运动,它集休闲娱乐、陶冶性情、修心养性于一身,是中华文化的瑰宝,是人类智慧的最高象征之一。围棋经历了数千年,久盛不衰,且至今还在不断发展。现在的人工智能科学研究在它面前显得很是稚嫩,因而值得将它作为重要的研究对象。在人工智能领域内,博弈是很重要的一个研究分支。通过对博弈的研究,可以解决很多实际问题,使计算机智能向人类智能迈进。计算机国际象棋和计算机围棋一直是人工智能的热门课题,而围棋程序的编制被称作人工智能的“试金石”,是人工智能技术的一大
10、难题,它将会在今后相当长的时期内哺育着人工智能科学的成长。本系统立足于“人人”围棋对弈系统的设计与实现,具有围棋记谱、打谱、对弈计时、查看定式、初步显示局面形势等功能,是一个适宜在计算机上对弈的“人人”对弈系统,可作为实用的围棋学习、研究和娱乐的良好的辅助工具。围棋胜负判断与局面分析功能子系统是围棋对弈系统的重要组成部分,本文在此基础上初步讨论了“人机”对弈的模式和方法,分析了“人机”对弈系统所应具有的功能。本系统的实现为进一步研究围棋的“人-机”对弈奠定了基础。论文研究的主要内容:(1)设计与实现一定条件下的围棋棋局最后胜负判断功能子系统。(2)探讨“非中国围棋规则中棋局最后胜负判断”实现的
11、途径和方法。(3)设计与实现局面分析功能子系统。(4)探讨“人机”围棋对弈系统实现的途径和方法。围棋胜负自动判断是一个实用的围棋对弈系统所应具有的功能。在现实的围棋胜负判断中,往往需要一个裁判员通过做棋来判断棋局最终的胜负。如果有一个客观、准确的围棋自动判断胜负系统,一方面可以省时省力,一方面可以做到客观公正。但实现一个具有人(裁判员)一样的判断能力的胜负判断系统,存在着许多困难和挑战。本系统通过建立棋局的记录来判断棋盘上每一点的归属,从而确定棋局中双方地域,故能够对提掉死子后的终局棋盘用中国规则判断胜负,并由此讨论如何实现用日本规则判断胜负;通过建立棋子的影响模型、力学模型以及度量公式,将棋
12、子向棋盘其它部分辐射的影响量化,从而判断对弈双方的影响领域,在此基础上,探讨如何实现“人机”对弈中着法的选择。但目前仍有许多问题有待于进一步解决,例如影响函数的优化,死子的提取等问题。 第一章 绪论1.1 围棋概述1.1.1 围棋简介围棋相传为尧所创,有“尧造围棋,以教子丹朱”的记载。班固在汉书中提到“纵横一十九道,天元是为太极,太极生两仪,为黑白子;两仪生四象,为四个角”。又记载:“棋有白黑,阴阳分也,骈罗列布,效天文也。”A1可知围棋本是仿效天文而制,逐渐演变为博弈游戏。1.1.2 相关围棋术语1. 块棋同色的棋子在经线或纬线上相邻,称为连接。如图1-1,连接在一起的棋子组成了一块棋,当然
13、单一的一颗棋子也可以称一块棋。块棋的气是组成它的所有棋子的气总和;一般来说,有两个及两个以上真眼的块棋是不能被提掉的,如图中的eye点,因为对方不可能同时落下两颗棋子填眼,故图1-1中的块棋是活棋。 eyeeye图1-1 已经活的块棋2. 假眼同颜色的几个棋子围住一个交叉点,该交叉点称为“眼”。棋块被围,至少须有两眼方能成活,而己方的这两眼能使对方无法入内打吃取子,称为“真眼”。有时眼形不完备,有被下子投入提吃的可能,称为“假眼”。一个完整的眼,在角上必须有三子,在边上必须有五子,在中腹至少占领周围七子。如图1-2,其中a为真眼,b为假眼。ab图1-2 真眼和假眼3. 死活死棋指棋盘上迟早要被
14、对方吃掉的棋子。常见形式有:(1)没有气的棋子。(2)有些棋子虽还有气,但本身已无条件做成两个眼,终将被对方吃掉。如图1-3,黑棋三例均为死棋。图1-3 死棋活棋指棋盘上对方无法吃掉的棋子。常见形式有:(1)一块棋至少有两个对方禁着点。(2)一块棋所围的空点较多,已经具备做成两个眼的条件。如图1-4,黑棋有a和b两个白棋的禁着点,为活棋。B1ab图1-4 活棋4. 分断也称“断”,指把对方的棋子分割成两部分,是一种激烈的攻击手段。此后双方将引起激烈战斗,所以要在对方两面薄弱的情况下选择断点。 5. 联络围棋术语中两棋子的连接仅指经纬线上的连接,又称并。但实际的连接中可以有许多方式,如并、尖、飞
15、、大飞等,如图1-5,1-6。如果两块棋没有联络,则称为断开的。图1-5 并、关、二间关图1-6 尖、飞、大飞6. 棋块两块或多块互相紧密联络的同色块棋组成棋块,由于互相之间有紧密的联络,它们可以被看作一块棋。棋块是对局中棋手分析棋局的一个较大的单位,其最重要的属性是确定它是否是活的,或是否可以做出两个眼,或可以与一个已有两个眼的活棋块联络。如图1-7中含三个棋块。图1-7 棋块7. 棋势两块或多块联络松散的同色块棋组成棋势,如图1-7中三个棋块(每个棋块由多个块棋组成)围成了很大的地域,构成棋势。对于棋手而言,将棋势转化为实地是很重要的。而对方侵入这块地域则称为打入。8. 棋局是所有那些必须
16、记录下来的信息。根据这些信息,比赛在按计划暂停后能够得以继续进行下去。显然,这些信息包括了此时棋子在棋盘上的位置以及指出下一步该哪方走,有时甚至需要有对局时间等信息。9. 数棋当对局结束后,从棋盘上提掉死子,分别数出双方的提子数和围空数之和,多的一方为胜者。1.2 计算机围棋1.2.1计算机与围棋计算机运用于棋类方面几乎与计算机诞生的历史一样长。这方面内容主要属于人工智能范畴。人工智能作为一门学科首先是在五十年代被建立起来的,随即便运用于博弈,同时博弈等方向的研究也极大地促进了人工智能的发展。 计算机围棋发展至今的一些代表性程序为陈志行教授的HandTalk、陈克训教授的Go Intellec
17、t、Mark Boon的Goliath和许舜钦教授的学生们所制作的程序以及开放源代码的GNUGO。还一些计算机围棋软件的界面还是基于DOS命令下的,以字符界面方式工作,通过命令提示符输入坐标及相应得命令来下棋。计算机围棋发展初期的八十年代,围棋程序以大约每年两级的速度在进步,而到了九十年代计算机围棋已发展到某一程度,但仍以大约每年一级的速度在稳定进步中,由此看来,计算机围棋目前仍在稳定发展之中,另一方面,由各围棋程序各有特色看来,计算机围棋还有相当大的发展空间。 就围棋而言,人弈棋凭的主要是经验,即“棋感”,精确计算为辅。人类的优势是模糊判断、灵敏的直觉,高手往往会灵机一动而弈出妙手。当然事物
18、有其两面性,即人的直觉有时也会误导形成错误,棋手的心态也至关重要,即直觉是法宝,亦是促成盲动的败因。 计算机的优势是计算速度快,不为情绪、直觉所惑,故地域广狭之分能较为准确,劣势是不擅模糊判断、只能根据少数经验选点导致搜索量过大,且没有棋感,不知道走哪一步较好、哪一步不好,只有逐点试,有时费时甚巨(也未必有用),有时不够准确。1.2.2 围棋编程的挑战围棋带来的众多挑战中的一个方面便是计算机程序的实现。福特兰德说:“计算机围棋程序已经产生了许多改进,但是没有突破性的进展。” B2计算机围棋程序不仅不能很快地计算出棋局变化的可能性,而且也不能准确地进行计算。但尽管如此,由于围棋本身的高深和复杂促
19、使程序设计师们在人工智能领域不断地推进基础性的工作,开发有关围棋计算机程序的吸引力也在不断增加。1. 棋类算法及其在象棋与围棋中的对比 由于技术的进步,计算机速度的提高、算法的不断发展,目前电脑国际象棋的水平已极高,一九九七年,IBM的电脑“深蓝”一举战胜卡斯帕罗夫,震惊世界。其实电脑国际象棋的水平早在七、八十年代已挤身世界高手之林,而中国象棋软件也已几乎具有大师水准,非一般爱好者能望其项背。唯独计算机围棋举步维艰,连业余下手都胜券难握,更莫论一等一的高手,究其原因不外是围棋之博大精深、纵横变换繁复,棋手多靠经验下棋,计算机很难描述经验,更难应用经验。围棋和象棋一样是博弈游戏,看似仅有黑白两种
20、棋子,简单不过。实则比起兵种繁多的象棋却复杂得多。目前,棋类算法主要有两大类:基于模式匹配和使用博弈树。这在国际象棋中的运用可以追溯到五、六十年代,且而十分成功。 电脑围棋起源于六十年代。Zobrist和Ryder两位博士在论文中均涉及了围棋程序,前者的算法基于模式识别;而后者的算法基于搜索,即使用博弈树。这两种在国际象棋中效果不错的算法在围棋中的表现却极差,竟然连仅有几盘棋经验的人都赢不了。 这里分析一下上述两种算法。(1)模式匹配象棋中因为棋子个数少、种类多,那么就较易分别与归纳(实际上也是困难的,但比围棋容易实现得多)。而在围棋中,显然将所有的模式都存储起来是不可能的。那么只有模糊匹配。
21、但这似乎也很难办。围棋中有“愚形”这个名词,一般指的是效率差的形状。那么怎样是效率差呢?就是浪费子力,在不必要的地方落子,哪怕只是一个子。而模糊的匹配在一子之差时究竟如何判断?是好形还是愚形?这就陷入了矛盾的境地。况且,根据实际情况,还有“愚形之妙手”,实难判断。(2)搜索算法搜索的代价是极大的,据估计,国际象棋搜索7个回合约有500亿至600亿种选择(当然是在博弈树剪枝后),这个数字尽管也十分庞大,但以目前的技术水平还是可以承受的;然而在围棋中,我们稍微计算一下便知道:假设每步大约有只有一百个可行点(已经非常少了),那么14步(即7个回合)以内的变化则约有1028种,当然这只是保守的估计,已
22、足以骇人了。可见在全局使用搜索算法是不可行的。因此当前的做法一般是在局部明确目标(如做活、杀棋、突围、切断等)的情况下,才使用博弈树进行搜索。2. 为什么围棋无法像国际象棋那样编程同国际象棋编程相比较,围棋编程领域的发展尚处于初级阶段。在国际象棋的编程研究领域中曾出现过像60年代和70 年代时投入了强大的研究力量的情形,在围棋编程领域从来没有过。在两者之间有着本质的区别,使得国际象棋受人青睐成为研究对象,同时,即使也有力量投入围棋编程,其结果也无法赶上国际象棋编程的进步。这其中原因,一方面是由于围棋本身的复杂性,另一方面是由于在国际象棋领域取得的编程技术无法恰当地运用于围棋领域。 (1)围棋棋
23、子类型简单,只有一种,但棋盘为19*19,且由于着手的相对自由,使得围棋棋局的平均手数大约为300步,每步棋着的选择(分支因子)可高达平均200个。(2)围棋有两种终局方式:认输和自然终局,且需要双方同时认可,但往往初学者很难判断是否已经没棋可下,所以他们的棋局往往比高手之间的要长,围棋程序也会犯同样的毛病。如果按照日本的数目法计算胜负,则多余的着手会因为填在己方的空里或变成对方的提子而减少目数。(3)围棋的棋子威胁度与国际象棋不同,就国际象棋而言,棋子的威胁度仅是它所能走到的格子,而在围棋中,棋子下后就不再移动(仅当提子时例外),但可以对棋盘上其他的棋子产生影响,如引征可以改变某块棋的征子关
24、系。(4)围棋中,棋子的移动对棋局的变化影响不显著,从而需要大容量的记忆分析棋局。即使是一个初学者也可以看出60步以后的征子结果,这是一个很深但很窄的计算问题。但只有最后当棋子被提掉的时候,棋盘的物理状态才发生显著的变化。3. 围棋的复杂性围棋的复杂性具有以下的特点:变化的复杂性;计算的复杂性;胜负判断的复杂性;打劫的复杂性;对弈时间长;顶尖高手失手率高;计算机程序的设计难度大;棋评的内容复杂。围棋全局与其死活问题其复杂性都大致可归纳为如下三点:(1)模糊性“围棋”之名自是取自围地之意,倘若是双方落子一开始便是紧紧相贴的,那么可想而之行棋的速度(即占领地盘的速度)是极慢的,故而布局、中盘以至大
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 围棋对弈系统的设计与实现 毕业论文 围棋 对弈 系统 设计 实现
链接地址:https://www.31ppt.com/p-3937373.html