毕业设计论文——博弈算法的设计及其实现
摘 要
计算机诞生的目的之一是要帮助人类思考,人工智能就是以此为目标的
计算机科学,以实现人类智能为最终目标。
个人认为现阶段,人工智能的应用仍然以计算机自动处理事务为主,实
现真正人工智能仍然遥远。机器博弈是人工智能研究的一个重要分枝,它实
现计算机自动对弈,它的核心是博弈算法,计算机通过判断当前棋盘的状态,
然后按照博弈的规则试着产生很多走法,而选择其中一个相对比较好的走法。
本设计以五子棋游戏规则实现,五子棋游戏的棋盘表示简单,15×15 的
格子,棋子也只有两种,若不考虑禁手,规则也很简单,只要一方有五个棋
子连成一条线则赢,故很适合用来实现算法。在本次设计中,实现了几种经
典算法,同时,根据实际游戏规则,对这些算法作一定程度的改进,使它们
更加简单高效。
本设计采用 C++语言实现,以 visual c++作为开发工具。
关键词:人工智能,自动处理,机器博弈,五子棋,visual C++
I
毕业设计论文——博弈算法的设计及其实现
ABSTRACT
Artifical Intelligence(AI) is the intelligence of machines and the branch of
computer science that aims to create it.
Personally think that at this stage, the application of artificial intelligence to
automatic processing affairs mainly, realize the true artificial intelligence is still
far away. The game machine is an important branch ofartificial
intelligence
research, It realizes the automatic computer game. game algorithm is its core —
Computer looks at current state of the chess board,
according rules of the game
to try to put chess, and choice a good way. I implement this design by Gobang,
Gobang game rule is very imple, I realized several classical algorithm of game
machine, and made some improvement of these algorithms.
The design using C++ language, using visual C++ 2005 as a development
tool.
KEYWORDS:AI, Automatic processing,The Game Machine,Gobang,Visual C++
II
毕业设计论文——博弈算法的设计及其实现
目 录
第 1 章 引言 ................................................................................................................... 5
§1.1 人工智能 ........................................................................................................... 5
§1.2 人机博弈和五子棋 .......................................................................................... 5
§1.3 Visual C++ ..........................................................................................................6
第 2 章 需求分析 ...........................................................................................................7
§2.1 使用范围要求 ...................................................................................................7
§2.2 功能要求 ........................................................................................................... 7
§2.3 系统平台要求 ...................................................................................................7
第 3 章 人机界面设计 ..................................................................................................8
第 4 章 面向对象分析 ................................................................................................11
§4.1 对象设计 ......................................................................................................... 11
§4.2 动态模型 ......................................................................................................... 12
§4.3 功能模型 ......................................................................................................... 12
第 5 章 面向对象设计 ................................................................................................14
§5.1 类设计 ............................................................................................................. 14
§5.2 控制流程 ......................................................................................................... 15
第 6 章 详细设计及编码 ............................................................................................17
§6.1 全局数据 ......................................................................................................... 17
§6.2 游戏循环 ......................................................................................................... 17
§6.3 界面设计及事件处理 ....................................................................................17
§6.4 人类玩家的 Think 操作 ............................................. 错误!未定义书签。
第 7 章 计算机智能设计 ......................................................... 错误!未定义书签。
§7.1 棋局估值 .......................................................................错误!未定义书签。
§7.2 极大极小值算法 ..........................................................错误!未定义书签。
§7.3 Alpha-beta 算法 ............................................................ 错误!未定义书签。
§7.4 Alpha-beta 算法的窗口效应 .......................................错误!未定义书签。
§7.5 极小窗口搜索/PVS 算法 ........................................... 错误!未定义书签。
III
毕业设计论文——博弈算法的设计及其实现
§7.6 预估排序和历史启发 ................................................. 错误!未定义书签。
§7.7 有限范围限定 .............................................................. 错误!未定义书签。
§7.8 多核优化 .......................................................................错误!未定义书签。
第 8 章 总结结论 ......................................................................错误!未定义书签。
§8.1 各算法效率对比 ..........................................................错误!未定义书签。
§8.2 成果与不足 .................................................................. 错误!未定义书签。
参考文献 ..................................................................................... 错误!未定义书签。
致 谢 ......................................................................................... 错误!未定义书签。
IV
毕业设计论文——博弈算法的设计及其实现
第 1 章 引言
§1.1 人工智能
提到人工智能,可能最著名的便是 1997 年超级计算机“深蓝”战胜国际
象棋冠军卡斯帕罗夫的事,可以说“深蓝”的获胜是人工智能影响力的一个
里程碑。
对于什么是人工智能,有很多定义,我认为就是能自动完成人类所能完
成的一些思维活动。如果从这个意义上说的话,计算机学科所要解决的所有
问题都与人工智能有关。它的发展历史和计算机科学的发展历史是联系在一
起的,但也不仅仅局限于计算机科学,也涉及到心理学、哲学、语言学、医
学等很多门学科。它所包含的内容有:知识表示、自动推理和搜索方法、机
器学习和知识获取、知识处理系统、自然语言理解、计算机视觉、智能机器
人、自动程序设计等方面。
§1.2 人机博弈和五子棋
人机博弈就是人和计算机下棋,其重点在于计算机如何实现对弈,它是
人工智能研究的一个重要分枝,五子棋是一种对弈游戏,本设计的目的就是
通过五子棋这种对弈游戏初步探索实现博弈算法,为将来的人工智能研究打
下一个基础,其实现方法可以从以下几方面概述:
一、棋盘状态 用一种数学模型来表示当前棋局的状态,不同的对弈游戏
有不同的表示方法,本设计用五子棋这种游戏来实现,它的棋盘状态比较简
单,可以用一个 15*15 的二维数组表示 15*15 的棋盘,某棋盘上位置的状态
就用该数组中单元的数字表示,比如 1 表示黑子,0 表示白子,-1 表示空位。
二、对弈规则 每种对弈游戏都有不同的规则,规定了棋子的走法(如象
棋)或者能下子的位置以及胜负的判定。五子棋的规则很简单,如果不考虑
禁手,任意空位都可以放棋子,只要一方有五个棋子连成一线,则判胜。
三、搜索技术 要让计算机在下棋中有智能,搜索技术是至关重要的,简
单的说就是让计算机试着某步走法,这一步走了之后,再往后走若干步,按
照某种规则给这一步评分,最后,在所有走法中选择一个相对最佳的走法。
四、棋局估值 就是对某一种棋盘局面的优劣作出评价,简单地就是说走
5
毕业设计论文——博弈算法的设计及其实现
某一步棋后,这一步棋走得好不好。它在博弈技术中也是很重要的,从某种
意义上来说,搜索也是为了估值,或者说对估值作修正。
§1.3 Visual C++
本次的开发工具为 Microsoft visual c++ 2005,它是微软公司推出的 win32
的开发工具,本次实现之所以选用 Visual C++作为开发工具,除因个人使用
习惯外,主要是它生成的代码高效,具有灵活方便的类管理,以及界面设计
的可视化特点。另外,在 Visual C++ 2005 中引入了 OpenMp 的支持,OpenMp
为快速开发具有多核优化的程序提供简单方便的支持,使得博弈程序更加高
效。
6
毕业设计论文——博弈算法的设计及其实现
第 2 章 需求分析
§2.1 使用范围要求
五子棋规则简单,男女老幼都可以玩,不但能让人们在对弈过程中得到
娱乐,而且还能开发智力。
§2.2 功能要求
1、支持人机对战。
2、能设置计算机智能等级。
3、能保存棋局状态,同时也能读入上一次保存的棋局状态,并且能够
接着上一次继续下棋。
4、能悔棋,即玩家在下错子后能回到上一步。
5、背景音乐和下棋音效。
§2.3 系统平台要求
编程语言:C++
操作系统:windows
开发工具:microsoft Visual C++
7
毕业设计论文——博弈算法的设计及其实现
第 3 章 人机界面设计
图 3.1 五子棋程序界面
如图 3.1,在左边的为 15×15 的棋盘,右边的“黑子”和“白子”下接列表
框设定持黑子和白子的玩家类型,各有三项,分别是“人”,“计算机”,“当选
择“人”后,就可以用鼠标在棋盘下放该类型的棋子,当为“计算机”,则由计
算机自动产生走法并在棋盘上下该种类型的棋子,并且会弹出一个选择智力
级别的对话框。
8