《人工智能基础》实验报告-实验名称:数独游戏设计与实现

《人工智能基础》实验报告-实验名称:数独游戏设计与实现

ID:5184404

大小:323.77 KB

页数:24页

时间:2017-12-05

《人工智能基础》实验报告-实验名称:数独游戏设计与实现_第1页
《人工智能基础》实验报告-实验名称:数独游戏设计与实现_第2页
《人工智能基础》实验报告-实验名称:数独游戏设计与实现_第3页
《人工智能基础》实验报告-实验名称:数独游戏设计与实现_第4页
《人工智能基础》实验报告-实验名称:数独游戏设计与实现_第5页
资源描述:

《《人工智能基础》实验报告-实验名称:数独游戏设计与实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、完成总结报告项目名称:数独游戏设计与实现二〇二一年六月二十四日1问题描述1.1问题说明数独游戏起源于瑞士,由十八世纪的瑞士数学家欧拉发明,是一种数字拼图游戏,其游戏规则是:①在9×9的大九宫格内,已给定若干数字,其他宫位留白,玩家需自己按照逻辑推敲出剩下的空格里是什么数字。②必须满足的条件:每一行与每一列都有1到9的数字,每个小九宫格里也有1到9的数字,并且一个数字在每行、每列及每个小九宫格里只能出现一次,既不能重复也不能少。③每个数独游戏都可根据给定的数字为线索,推算解答出来。1.2数独求解描述由于数独游戏的推广与普及,在当今世界上有着大量的数独爱好者,

2、本项目的目的就是按照数独的游戏规则,通过对数据结构的分析和人工智能算法的研究,利用计算机程序来实现对已知数独游戏的快速求解。1.3数独出题描述数独游戏挑战者的水平各异,对数独题目的难度要求各不相同,所以本项目致力于设计一种算法,使其在尽可能短的时间内生成不同难度等级的数独题,以满足不同水平游戏者的需求。同时,该算法还要考虑到三个方面要求:可变化的难度、解的唯一性和算法复杂度最小化。2功能分析2.1数独求解数独虽然号称是数学问题,但在求解时几乎用不上数学运算方法,事实上它更像是一种思维方式。数独游戏开始后,要想在空格中填入正确的数字,先要根据数独游戏规则对1

3、-9分别进行逻辑判断,然后选择正确的数字填入空格。另外,由于某个格子填入数据时,有可能还要对原来已填入的数据进行修正,所以可以考虑使用递推和回溯搜索来求解数独问题。2.2数独出题出题时,要能保证算法生成的数独题具有可变化的难度和唯一解,该算法内部应该包含有对数独题的求解和评级功能。本项目使用了一种基于“挖洞”思想的数独题生成算法,将该算法的设计工作分为评级、求解和生成三部分工作。利用随机数出现的概率不同来确定不同的难度,通过避免重填一个被“挖去”的格子,或者回溯到一个曾经无法“挖去”的格子,来降低算法的复杂性。2.3题目保存当用户需要退出却仍没有完成数独题

4、目的解答时,可以选择是否保存当前的求解进度。如果需要,本系统会帮助用户将目前未完成的数独题目的解答进度保存起来,以便用户下次使用本系统时,可以继续解答上次未完成的题目。2.4题目读取用户可以在程序开始运行后,选则读取一道之前保存起来的题目进行解答,被读取的题目将会显示到程序界面上。3系统设计3.1功能结构图本程序主要有数独求解和数独出题两个功能,数独求解包括题目检验、解题和输入输出,数独出题包括答案检验、难度选择、出题和输入输出。3.2业务流程图3.3类图SudokuDlg类:程序的界面类。Solve类:实现数独题目求解功能。Make类:实现数独题目出题功

5、能。Pre类:对数据进行预处理。3.4界面设计3.5算法设计3.5.1数独求解算法解决该数独求解问题时的要考虑的主要方面有:①判断题目合法性,即验证给出数据本身是否符合游戏规则,行、列以及小九宫中从不重复地出现数字1-9;②采用递推算法,若可以填入数字则填入数字,并入栈以便回溯,否则回溯至前面填入数字处重新填数;③所有空白处都要填满数据;其中,最重要的就是如何通过递推算法填入正确的数字,或者通过回溯算法重新填入数字并得到最终解,这是本算法的核心内容。回溯法是解决数独问题的有效方法,有着较快的解题速度。然而一般的常用的回溯算法仍然有不足之处,比如会进行重复的

6、运算。所以在采用回溯法之前,还可以利用一点小技巧,以缩短回溯算法的运行时间,甚至可将运行时间缩短接近于0。这个小技巧即在回溯算法的基础上,采用有限递推算法进行预处理。算法活动图如下:3.5.1数独出题算法要想设计一个算法用以生成各种难度等级的数独题,通过对游戏规则的分析,首先从三个方面定义难度等级,分别是已知格总数、已知格的分布和穷举搜索复杂度。本算法采用“挖洞”思想,经过以下步骤生成数独题:①用随机算法生成一个数独题目;②用求解算法生成终盘;③根据难度挖去部分数字;整个生成数独题的算法分为两步执行:先利用拉斯维加斯随机算法随机生成一个填满数字且符合游戏规

7、则的终盘;而后根据所需求的难度等级抹去一些数字,难度等级由随机数出现的概率来决定。算法活动图如下:4系统实现4.1开发平台本项目基于VisualStudio2010平台的MFC,采用C++语言进行开发与测试。4.2运行环境本项目可在各个版本的Win7系统或者WindowsXP系统下运行。4.3数据结构数据结构是计算机存储、组织数据的方式。通常情况下,精心选择的数据结构可以带来拥有更高的运行或存储效率的算法。一般认为,一个数据结构是由数据元素依据某种逻辑联系组织起来的,对数据元素间逻辑关系的描述称为数据的逻辑结构;数据必须在计算机内存储,数据的存储结构是数据

8、结构的实现形式,是其在计算机内的表示。数独从形式上看是一个方阵,十

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。