人工智能大作业_第1页
人工智能大作业_第2页
人工智能大作业_第3页
人工智能大作业_第4页
人工智能大作业_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 数独游戏摘要:通过数独求解规则的分析,归纳总结一套有效的求解算法,以计算机直接模拟人脑的思维方式,逐个排除不可能出现在宫格中的数字。论文详细阐述了比较排除法的算法思想,画出程序流程图,并提供主要代码。关键词:数独;策略;搜索本组成员:陈阳,李颖,司水花,马晓禾本人分工:负责一个数独游戏的算法的编写和测试1引言数独(t,Sudoku)是一种运用纸、笔进行演算的逻辑游戏.玩家需要根据9X9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个粗线宫内的数字均含19,不重复。独盘面是个九宫,每一宫又分为九个小格.在这八十一格中给出一定的已知数字和解题条件,利用逻辑和推理,在其他的

2、空格上填入19的数字.使1-9每个数字在每一行、每一列和每一宫中都只出现一次,所以又称“九宫格”。2算法原理与系统设计本文所设计的比较排除法是以计算机直接模拟人脑思维方式进行搜索,需要选取对象后作出对比排查。以人脑思维方式,对数独题目进行求解,必定先会选定某个已知的数字,对其在其他行列进行比较,直至确定另一个可放置的位置。如果一个数字已用尽已知条件9个位置都出现,或还有空缺但是却已经无法确定其位置,则跳至下一个数字进行下一轮的比较与确定。然而计算机无法进行此类比较。由于计算机无法选定已知数,所以让计算机从选定未知数开始排查,再进行逐格的一项项排除,直至完成数独题目.该方法是根据数独游戏的出题原

3、则,每格所填数字必须有根据,故可确定总有格子是可以通过现有已知量进行推导的。算法如下:(伪码描述、自然语言描述)intmain()ifstreamfin(szDataFile);/读取数独初始化文件if(!fin)coutdataij;廿ifdefOUTPUT_DEBUGi=0;j=6;while(i+vj)TryOneStep();coutendlj次后,数据如下图:endl;Output(data);TryOneStep();#elsewhile(TryOneStep();#endifcoutV已完成搜索:”Vendl;Output(data);return0;如图1所示的数独中,可将每个

4、宫格进行编号,Aij表示第i行第j列中的数字。比较排除法排除步骤例表完成第一步后开始下一轮比较,直至得出全部结果为止。83679257457131685194比较排除法算法描述如下:(1)算法输入:一组数独,未知数数值为0。(2)算法输出:一组经过运算后的数独,至少有一个原值为0的数字被改变的新状态输出。(3)算法步骤:Step1创建一个可取值域1,2,3,4,5,6,7,8,9。Step2自上而下、自左而右搜索下一个数值为0的空格。Step3与该空格所在宫的其他有效数字比较,消去在可取值域中两两相等的项。Step4与该空格所在行的其他有效数字进行横向比较,消去在可取值域中两两相等的项。Ste

5、p5与该空格所在列的其他有效数字进行纵向比较,消去在可取值域中两两相等的项。Step6判断可取值域中不为0的数字的个数是否为1,如果不是,则跳至Step8oStep7可取值域中的唯一有效数字赋值于对应空格中,输出数独更新后的状态,跳至Step12oStep8判断数独是否已完成,是否还有0,如果有0,则跳至Stepll.Step9判断是否运算至最后一个空格,如果不是最后一格,则重回Step1oStep10标记该方法该次运算不可行,跳至Step12oStepll输出该数独完成!.Step12结束。3系统实现voidLookupInMatrix(inttdata9,intnumberToPut)in

6、ti,j,k;boolflag=false;intcount=0;intxToPut,yToPut;for(k=1;k=9;k+)/遍历19个方阵count=0;/寻找可下该数字的点的数flag=false;for(i=0;i9;i+)for(j=0;j9;j+)if(datatemplateij=k)if(tdataij=0)xToPut=i;yToPut=j;count+;if(tdataij=numberToPut)flag=true;如果可行,记下并在暂存数据中执行这一操作if(!flag&count=1)curstepxcurstepcount=xToPut;curstepycurs

7、tepcount=yToPut;curstepnumbercurstepcount=numberToPut;strategycurstepcount=LOOKUPINMATRIX;curstepcount+;tdataxToPutyToPut=numberToPut4实验或测试结果丈炖F)恒式gEJto(H)0439LD3J00L0fl71392073524(JP0(J7r?5TOC o 1-5 h zCi7!&12Jtj70L534mJ250I2CiOLT20fg074DA7010200初始化数独文件程序执行结果5结论数独作为一种智力游戏,具有逻辑性和可推理性,利用计算机对其进行求解可以更快得到答案。当某行已填数字的宫格达到8个,则推断该行剩余宫格能填的数字只剩下那个还没出现过的数字,成为行的唯一解.当某列已填数字的宫格达到8个,则该列剩余宫格能够填入的数字只剩下还未曾出现的数字,成为列的唯一解。甚至更加直接地,综合行列宫,从而确定某一空格的唯一解。算法的优点是思路易于理解,求解速度快。参考文献张华国数独

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论