[数独实验报告]数独实验报告范文

实验报告 2018-04-08 网络整理 晴天

【fanwen.jxxyjl.com--实验报告】

  Sudoku 数独实验报告

  一、 算法描述

  求解Sudoku让人最容易想到的方法是穷举每个方格可能的值,如果符合条件,则得到解,不符合条件则进行回溯。通过递归的方法,显然可以得到数独的解。

  我想到的简单的递归方法,是每一行从左到右,试验每一个方格可能的数字,进行递归。这种方法看似非常麻烦,实际上对于一般的数独题,速度是非常快的,思想比较简单,写出来的代码也非常简单、易懂。

  算法1:简单递归方法

  从第一个格开始,从1到9试验,是否满足行、列、九宫格互不相同的条件。若满足条件,则填入该数字,再试验下一个格。当一个格子出现没有数字能填的情况时,说明已经填的数字有误,回溯,再进行递归。

  算法2:优化的递归算法

  先遍历所有格子,统计每种格子可能出现数字的个数。每次挑选可能出现数字个数最少的格子来进行递归。

  设置三维数组poss[i][j][k]来存储可能出现数字的信息。poss[i][j][0]记录i行j列的格子可能出现数字的个数,poss[i][j][k](1<=k<=9) 若poss[i][j][k]=1,表示k可能在(i,j)格出现。若poss[i][j][k]=0,表示k不可能在(i,j)格中出现。每次找poss[i][j][0]最小的格子,来进行下一个递归。

  算法3:生成数独棋盘的算法

  我最开始的想法是穷举法,随机生成满足行各不相同的9行,再判断9宫格、每列是否符合要求,符合条件时,随机生成停止。然而,这种算法的当然时间复杂度显然是过高。第99一步的随机生成的次数是9*9/P9=9608。随机生成一组棋盘耗时就非常大。后来,我从求解的个数的程序获得启发。算法二对于1000多组解的数独棋盘,解起来也很快。随机生成填9个方格,再用算法一的方法解出来,取第一组正确的解作为棋盘即可生成填好的棋盘。再把一定数量的格子的数字随机删除,计算解的个数。如果解唯一,就得到了棋盘。

  二、数据结构

  这三种算法的数据结构不是非常复杂,只是普通的数组。

  算法一:数组a[i][j]

  算法二:数组a[i][j]和poss[i][j][k]

  算法三:数组a[i][j]和poss[i][j][k]

  三、时间效率分析

  算法1:这种算法在tsinsen系统上只用了15ms得到全部答案。

  虽然这种算法在tsinsen系统的测试中有很好的表现,但是我试了试在几道骨灰级难度的题,发现这种算法可能会用到10秒以上的时间,并且测试数据不同,时间差异非常大。

  我认为,这种算法的漏洞在于,如果开始的格子可能出现的数字非常多,递归树开始的枝会非常多。并且,我们一般做数独题,都会先挑可能出现数字个数最少的格子来填,充分利用了已知条件。然而,这种算法只按格子的行列顺序来试验,显然非常傻。于是,我想出了第二种算法。

  算法2:这种算法耗时长。

  非常令人失望的是,虽然它能在短时间内解出骨灰级题目,但是,和上一个算法相比,对于简单的题目,它比较耗时。在tsinsen系统中测试的时间是91ms。它的缺陷在于,每次递归都必须更新(i,j)格子所在的行、列、九宫格所有的元素。每次要求20个数的poss[i][j]。回溯同样要更新。并且求poss[i][j]的函数时间复杂度是O(n)。每一步所耗时间比上一种算法多很多。但是,总的试验的步数能显著减少。 所以,这种算法适用于数独解题的动画演示和解极难题目。

  四、程序结构

  五、运行结果

  六、总结和反思

  后来老师提高了难度,要求程序能求出多解数独题的解的个数。几千个解的数据都能迅速得出答案,但是几万个解的数据,需要很长时间,更别提几百万的数据。这两种递归的算法都有问题,优化的空间也有限,需要更强大、高效的算法。

  这次Project让我不断思考,改进了最初的算法。编程是确实是一个克服困难、不断改进与超越的过程。总有新的数据摆在面前,把原来的算法打击得很惨,激励着我们研究更加先进的算法。

本文来源:https://fanwen.jxxyjl.com/shiyanbaogao/61909.html

  • 【中小学生班级公约】中小学生班级群体心智潜能开发实验报告

    我区心理教育专业委员会报经阳泉市教育科学规划课题立项的《中小学生班级群体心智潜能开发研究》实验课题,经过XX年6月至XX年年6月的三年时间的实验。经阳泉市教育科学规划领导组办公室组织专家进行成果鉴定审核,符合免予鉴定条件,已准予结题,并于XX年年9月29日,授予阳泉市教育科学规划课题结题证书,证...

    发布于:2018-04-23

    详细阅读
  • 电子政务实验报告|电子政务实验报告

    通过短短一学期对电子政务这门课程的学习,我学习到了很多。在实践学习中,我基本掌握了电子政务操作平台,在理论学习中,对各国的电子政务的发展有了了解,对电子政务的整体有了认知。   第一 对“电子政务实践平台”的整体认识   我们选择的电子政务实践平台是奥派电子政务实践平台。奥派电子政务实践平台包括...

    发布于:2018-04-22

    详细阅读
  • 【和书法教育有关的课题】书法教育课题开题实验报告

    一、开题背景:  1、《中国教育改革和发展纲要》指出:中小学要由应试教育转向全面提高国民素质的轨道,面向全体学生,全面提高学生思想、文化、科学、劳动技能和身体素质,促进学生生动活泼地发展,办出各自的特色。《纲要》为我们创办书法特色指明了方向,注入了活力。我校决定从学校的写字教学入手,争创特色,全...

    发布于:2018-04-22

    详细阅读
  • 【数据库上机实验报告心得】数据库上机实验报告

    数据库上机实验报告  试验内容   1、 数据表的建立   基本表《简单的》带有主键   带有外码约束的(外码来自其他表或者本表)   2、 数据表的修改   添加删除列   修改列属性类型   添加删除约束(约束名)   元组的添加,修改,删除   删除数据表   试验过程   1...

    发布于:2018-04-21

    详细阅读
  • 实验课题总结报告模板_校本培训课题实验总结报告范文

    三年来,在各级领导的关怀和指导下,经过语文课题组成员的共同努力,我校“自修-反思”式课题实验语文组取得较好的成果。现总结如下:  自修反思课题实验使全组教师能积极自主学习、自觉更新教学理念。教师教学中的“对话者”、“组织者”、“促进者”的角色意识强化了,语文教师教学方式发生了深刻变革。课题实验极...

    发布于:2018-04-21

    详细阅读
  • 大学物理实验霍尔效应实验报告|大学物理实验课程设计实验报告

    北方民族大学   大学物理实验(设计性实验)   实验报告   指导老师:王建明   姓 名:张国生   学 号:XX0233   学 院:信息与计算科学学院   班 级:05信计2班   重力加速度的测定   一、实验任务   精确测定银川地区的重力加...

    发布于:2018-04-21

    详细阅读
  • 科学探究实验报告怎么写|例谈科学探究实验与实验报告

    例谈科学探究实验与实验报告   山东菏泽曹县第二中学 陈焘   摘要:科学探究实验是新课程着重介绍的知识点,同时又是当前基础教育课程改革的热点、亮点和难点。本文对科学探究的六大要素逐一加以解释,并以实例说明如何做好科学探究实验及如何做实验报告。   关键词:科学探究 科学探究实验 实...

    发布于:2018-04-21

    详细阅读
  • 中学生物教学下旬学研_生物教学中引导学习教学模式的实验报告

    生物学是一门实验科学。生物新课程倡导面向全体学生、提高生物科学素养和探究性学习的课程理念。其中探究学习是让学生在主动参与的过程中进行学习,让学生在探究问题的活动中获取知识,了解科学家的工作方法和思维方法,学会科学研究所需要的各种技能,领悟科学观念,培养科学精神。这种学习的方式的中心是针对问题的探...

    发布于:2018-04-21

    详细阅读
  • 学校德育评价体系建设_构建学校德育管理与评价体系的实验报告

    一、问题的提出   (一)xx同志在第三次全国教育工作会议上的讲话中指出:“要说素质,思想政治素质是最重要的素质”。可见德育是素质教育的核心,研究和构建学校德育评价体系,是加强学校德育工作的当务之急。   (二)坚持以德育为首,是关系到学校办学方向的大问题。但长期以来,对德育说起来重要,干起...

    发布于:2018-04-21

    详细阅读
  • 【网页制作实验报告】网页制作实验报告

    网页制作实验报告  实验一:站点设置   一、实验目的及要求   本实例是通过“站点定义为”对话框中的“高级”选项卡创建一个新站点。   二、仪器用具   1、生均一台多媒体电脑,组建内部局域网,并且接入国际互联网。   2、安装windows xp操作系统;建立iis服务器环境,支持asp。...

    发布于:2018-04-21

    详细阅读

Copyright @ 2011-2019 范文大全网 All Rights Reserved. 版权所有

免责声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。

 站长统计