全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
人工智能课程大作业数独游戏摘要:通过数独求解规则的分析,归纳总结一套有效的求解算法,以计算机直接模拟人脑的思维方式,逐个排除不可能出现在宫格中的数字。论文详细阐述了比较排除法的算法思想,画出程序流程图,并提供主要代码。关键词:数独;策略;搜索本组成员:陈阳,李颖,司水花,马晓禾本人分工:负责一个数独游戏的算法的编写和测试1 引言数独(,Sudoku)是一种运用纸、笔进行演算的逻辑游戏。玩家需要根据99盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个粗线宫内的数字均含1-9,不重复。独盘面是个九宫,每一宫又分为九个小格。在这八十一格中给出一定的已知数字和解题条件,利用逻辑和推理,在其他的空格上填入1-9的数字。使1-9每个数字在每一行、每一列和每一宫中都只出现一次,所以又称“九宫格”。2 算法原理与系统设计本文所设计的比较排除法是以计算机直接模拟人脑思维方式进行搜索,需要选取对象后作出对比排查。以人脑思维方式,对数独题目进行求解,必定先会选定某个已知的数字,对其在其他行列进行比较,直至确定另一个可放置的位置。如果一个数字已用尽已知条件9个位置都出现,或还有空缺但是却已经无法确定其位置,则跳至下一个数字进行下一轮的比较与确定。然而计算机无法进行此类比较。由于计算机无法选定已知数,所以让计算机从选定未知数开始排查,再进行逐格的一项项排除,直至完成数独题目。该方法是根据数独游戏的出题原则,每格所填数字必须有根据,故可确定总有格子是可以通过现有已知量进行推导的。算法如下:(伪码描述、自然语言描述)intmain()ifstreamfin(szDataFile);/读取数独初始化文件if(!fin)couterrorinopenfiles!n; return-1; inti,j;for(i=0;i9;i+)for(j=0;jdataij;#ifdefOUTPUT_DEBUGi=0;j=6;while(i+j)TryOneStep();coutendlj次后,数据如下图:endl;Output(data);TryOneStep();#elsewhile(TryOneStep();#endifcout已完成搜索:endl;Output(data);return0;如图1所示的数独中,可将每个宫格进行编号,Aij表示第i行第j列中的数字。比较排除法排除步骤例表完成第一步后开始下一轮比较,直至得出全部结果为止。比较排除法算法描述如下:(1)算法输入:一组数独,未知数数值为0。(2)算法输出:一组经过运算后的数独,至少有一个原值为0的数字被改变的新状态输出。(3)算法步骤:Step1创建一个可取值域1,2,3,4,5,6,7,8,9。Step2自上而下、自左而右搜索下一个数值为0的空格。Step3与该空格所在宫的其他有效数字比较,消去在可取值域中两两相等的项。Step4与该空格所在行的其他有效数字进行横向比较,消去在可取值域中两两相等的项。Step5与该空格所在列的其他有效数字进行纵向比较,消去在可取值域中两两相等的项。Step6判断可取值域中不为0的数字的个数是否为1,如果不是,则跳至Step8。Step7可取值域中的唯一有效数字赋值于对应空格中,输出数独更新后的状态,跳至Step12。Step8判断数独是否已完成,是否还有0,如果有0,则跳至Step11。Step9判断是否运算至最后一个空格,如果不是最后一格,则重回Step1。Step10标记该方法该次运算不可行,跳至Step12。Step11输出该数独完成!。Step12结束。3 系统实现voidLookupInMatrix(inttdata9,intnumberToPut)inti,j,k;boolflag=false;intcount=0;intxToPut,yToPut;for(k=1;k=9;k+)/遍历1-9个方阵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;curstepycurstepcount=yToPut;curstepnumbercurstepcount=numberToPut;strategycurstepcount=LOOKUPINMATRIX;curstepcount+;tdataxToPutyToPut=numberToPut;4 实验或测试结果初始化数独文件程序执行结果5 结论数独作为一种智力游戏,具有逻辑性和可推理性,利用计算机对其进行求解可以更快得到答案。当某行已填数字的宫格达到8个,则推断该行剩余宫格能填的数字只剩下那个还没出现过的数字,成为行的唯一解。当某列已填数字的宫格达到8个,则该列剩余宫格能够填入的数字只剩下还未曾出现的数字,成为列的唯一解。甚至更加直接地,综合行列宫,从而确定某一空格的唯一解。算法的优点是思路易于理解,求解速度快。参考文献1张华国.数独算法分析
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T/CEPPC 11-2023区域碳达峰预测模型开发流程规范
- 2026年国考专业考试模拟题及答案详解
- 中国数据中心UPS行业市场前景预测及投资价值评估分析报告
- 2026年动物医学(实验动物学)考试模拟题及答案详解
- 2026年工业园区管委会考模拟题目及答案详解
- 2026年报社采编考试模拟题及答案详解
- AI特种设备巡检系统落地项目可行性研究报告
- 2026年中国小苏打行业发展策略、市场环境及未来前景分析预测报告
- 2026年国开电大专科中国现代文学在线形考(形考任务3)模拟题及答案详解
- 2026年风险控制专家资格认证考试模拟题及答案详解
- 水电厂、水电站运行维护岗理论题库及答案
- 第二单元自测练习卷-2026-2027学年三年级数学上册人教版(含答案)
- 新教材高中政治 第二课 第二框 社会主义制度在中国的确立教学设计 部编版第一册
- 2026年高考政治选择题主观题满分答题技巧
- 《信息技术基础》课件-人工智能技术及应用
- 2026年事业单位招聘考试(党史党建基础知识)测试题及答案
- 销售人员绩效考核方案
- 聘请住家保姆协议书
- 2026年凉山州领导干部任前廉政法规考试题库及答案
- (正式版)DB15∕T 4344-2026 《全固废充填采矿胶凝材料用于尾矿充填技术规范》
- 中班-科学-奇妙的大树
评论
0/150
提交评论