人工智能完成总结报告..doc

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
人工智能完成总结报告.

完成总结报告 项目名称:数独游戏设计与实现 组 员:王郑合 2014204081 栾杰 2014204080 文宽 2014204104 二〇一四年十一月二十四日 1 问题描述 1.1 问题说明 数独游戏起源于瑞士,由十八世纪的瑞士数学家欧拉发明,是一种数字拼图游戏,其游戏规则是: ①在9×9的大九宫格内,已给定若干数字,其他宫位留白,玩家需自己按照逻辑推敲出剩下的空格里是什么数字。 ②必须满足的条件:每一行与每一列都有1到9的数字,每个小九宫格里也有1到9的数字,并且一个数字在每行、每列及每个小九宫格里只能出现一次,既不能重复也不能少。 ③每个数独游戏都可根据给定的数字为线索,推算解答出来。 1.2 数独求解描述 由于数独游戏的推广与普及,在当今世界上有着大量的数独爱好者,本项目的目的就是按照数独的游戏规则,通过对数据结构的分析和人工智能算法的研究,利用计算机程序来实现对已知数独游戏的快速求解。 1.3 数独出题描述 数独游戏挑战者的水平各异,对数独题目的难度要求各不相同,所以本项目致力于设计一种算法,使其在尽可能短的时间内生成不同难度等级的数独题,以满足不同水平游戏者的需求。同时,该算法还要考虑到三个方面要求:可变化的难度、解的唯一性和算法复杂度最小化。 2 功能分析 2.1 数独求解 数独虽然号称是数学问题, 但在求解时几乎用不上数学运算方法,事实上它更像是一种思维方式。数独游戏开始后,要想在空格中填入正确的数字,先要根据数独游戏规则对1-9分别进行逻辑判断,然后选择正确的数字填入空格。另外,由于某个格子填入数据时,有可能还要对原来已填入的数据进行修正,所以可以考虑使用递推和回溯搜索来求解数独问题。 2.2 数独出题 出题时,要能保证算法生成的数独题具有可变化的难度和唯一解,该算法内部应该包含有对数独题的求解和评级功能。本项目使用了一种基于“挖洞”思想的数独题生成算法,将该算法的设计工作分为评级、求解和生成三部分工作。利用随机数出现的概率不同来确定不同的难度,通过避免重填一个被“挖去”的格子,或者回溯到一个曾经无法“挖去”的格子,来降低算法的复杂性。 2.3 题目保存 当用户需要退出却仍没有完成数独题目的解答时,可以选择是否保存当前的求解进度。如果需要,本系统会帮助用户将目前未完成的数独题目的解答进度保存起来,以便用户下次使用本系统时,可以继续解答上次未完成的题目。 2.4 题目读取 用户可以在程序开始运行后,选则读取一道之前保存起来的题目进行解答,被读取的题目将会显示到程序界面上。 3 系统设计 3.1 功能结构图 本程序主要有数独求解和数独出题两个功能,数独求解包括题目检验、解题和输入输出,数独出题包括答案检验、难度选择、出题和输入输出。 3.2 业务流程图 3.3 类图 SudokuDlg类:程序的界面类。 Solve类:实现数独题目求解功能。 Make类:实现数独题目出题功能。 Pre类:对数据进行预处理。 3.4 界面设计 3.5 算法设计 3.5.1 数独求解算法 解决该数独求解问题时的要考虑的主要方面有: ①判断题目合法性,即验证给出数据本身是否符合游戏规则,行、列以及小九宫中从不重复地出现数字1-9; ②采用递推算法,若可以填入数字则填入数字,并入栈以便回溯,否则回溯至前面填入数字处重新填数; ③所有空白处都要填满数据; 其中,最重要的就是如何通过递推算法填入正确的数字,或者通过回溯算法重新填入数字并得到最终解,这是本算法的核心内容。 回溯法是解决数独问题的有效方法,有着较快的解题速度。然而一般的常用的回溯算法仍然有不足之处,比如会进行重复的运算。所以在采用回溯法之前,还可以利用一点小技巧,以缩短回溯算法的运行时间,甚至可将运行时间缩短接近于0。这个小技巧即在回溯算法的基础上,采用有限递推算法进行预处理。 算法活动图如下: 3.5.1 数独出题算法 要想设计一个算法用以生成各种难度等级的数独题,通过对游戏规则的分析,首先从三个方面定义难度等级,分别是已知格总数、已知格的分布和穷举搜索复杂度。 本算法采用“挖洞”思想,经过以下步骤生成数独题: ①用随机算法生成一个数独题目; ②用求解算法生成终盘; ③根据难度挖去部分数字; 整个生成数独题的算法分为两步执行:先利用拉斯维加斯随机算法随机生成一个填满数字且符合游戏规则的终盘;而后根据所需求的难度等级抹去一些数字,难度等级由随机数出现的概率来决定。 算法活动图如下:

文档评论(0)

kakaxi + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档