数独中的数学模型
数学探究活动之数独

Swordfish法
03
CHAPTER
数独题目与解答
规则:每行、每列及每个3x3的子方格中,1-9的数字各出现一次。
题目
总结词:简单规则,适合初学者
9x9的表格,其中包含一些数字,需要根据规则填充剩余数字。
解答:按照数独的规则,逐步推理出每个空格的数字。
初级题目与解答
01
03
02
04
05
X-Wing法
Swordfish法是一种基于数独棋盘结构的方法,通过将棋盘划分为多个区域,逐个填满每个区域,最终达到解题目的。
总结词
Swordfish法是一种较为复杂的数独解题技巧。它基于数独棋盘的结构特点,将棋盘划分为多个区域,然后逐个填满每个区域。这种方法需要较强的观察力和逻辑推理能力,但能够快速解决一些难度较大的数独题目。
中级题目与解答
总结词:难度适中,适合进阶玩家
与初级题目类似,但难度更大,需要更复杂的逻辑推理。
可能包含多个锁链数独、窗口数独等变种规则。
题目
01
03
04
02
高级题目与解答
总结词:高难度挑战,适合资深玩家
题目
可能包含多个变种规则和特殊条件。
非常复杂的数独题目,需要极高的逻辑推理能力和耐心。
04
CHAPTER
数独问题也是人工智能和机器学习领域常用的基准测试问题之一,通过研究数独问题的求解算法,可以推动人工智能技术的发展。
人工智能与机器学习
解决数独问题需要使用到各种数据结构和算法,如动态规划、回溯算法等,这些技术在计算机科学领域有着广泛的应用。
数据结构和算法应用
数独在计算机科学中的应用
数圈
数圈是将数独游戏与图形结合的一种变种,玩家需要在由不同图形组成的棋盘上填入数字,满足特定规则。
数独问题-数学建模

数独问题摘要本文是对数独问题进行求解。
结合数独生成的特点,立足于题中数独建模和WNF P函数和整数规划模型。
求解的要求,建立了数独难度分析()对于问题一,首先研究数独难度的影响因素,通过综合分析数独的特点结构,WNF P可以在常数时间内计算出来以衡量数独的难易程度。
通过计算可知得出()()0.04531WNF P=,根据数独难度的划分得到如下结论:数独难度系数为4,达到了极难的程度。
对于问题二,我们通过对此数独的分析和讨论,利用穷举法,通过matlab 软件编程求解,最终得出答案,如表1所示。
对于问题三,我们利用回溯法思想,建立求解模型,具体算法一般采用如下步骤:1).在此数独初盘选择一个空单元格;2).取这个单元格中一个可能的候选数;3).将这个候选数填入单元格中,迭代完成数独;4).若这个候选数推导得到一个无效数独终盘,返回此单元格取其他候选数;对于问题四采用整数规划模型,采用三维0-1 变量的方法,运用lingo软件编程求解。
最终得到答案,如表1所示。
关键词:数独数独难度分析穷举法回溯法整体规划1问题的重述前段时间芬兰一位数学家号称设计出全球最难的“数独游戏”,并刊登在报纸上,让大家去挑战。
该数独如下图所示:数独是根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个粗线宫内的数字均含1-9,且不重复。
每一道合格的数独谜题都有且仅有唯一答案,推理方法也以此为基础,任何无解或多解的题目都是不合格的。
根据以上描述,试完成以下问题:1. 分析此数独的难度;2. 用穷举算法求解数独;3. 设计此数独求解的较优的算法;4. 建立数独求解模型并给出此数独的答案。
2模型的基本假设1该数独问题存在唯一解。
3符号说明X表示空单元格候选数?()X的加权函数W n表示候选数数?()c X表示数独空单元格中的候选数数目函数nE p表示该数独的空格处()()WNF P表示该数独难度的函数x表示数k是否填入数独方中的(i,j)处ijkc表示往空格处填入0后数独方中(i,j)处的数ijy表示经过求解后数独方中(i,j)处的数ij4模型的建立与求解4.1 问题14.1.1数独难度的影响因素通过对数独的分析与研究,数独难度与数独候选数、逻辑推理方法、搜索步数、空格数以及空格的分布情况都有密切的关系。
四宫格数独运用的数学原理

四宫格数独运用的数学原理数独是一种源于18世纪瑞士的数学逻辑游戏,它以其独特的魅力吸引着全世界的玩家。
数独游戏通常在一个9×9的网格中进行,但近年来,各种变种数独如雨后春笋般涌现,其中四宫格数独便是其中之一。
四宫格数独,顾名思义,是在一个四×四的网格中进行的数独游戏。
虽然其规模较小,但其数学原理与9宫格数独有着异曲同工之妙。
一、四宫格数独的基本规则在四宫格数独中,玩家需要在一个四×四的网格中填入数字1至四,每个数字在每一行、每一列以及每个2×2的小宫格中只能出现一次。
这一规则确保了游戏的唯一解性,即只要给定的初始条件符合规则,那么游戏就一定有一个确定的解。
二、四宫格数独的数学原理1. 排列组合原理:在四宫格数独中,每个宫格、每行、每列都需要包含数字1至四,且每个数字只能出现一次。
这实际上是一个排列组合问题。
对于每个宫格、每行、每列,都有四!(即四的阶乘,等于2四)种可能的排列方式。
但由于各个宫格、行、列之间是相互关联的,因此并不是所有的排列方式都是合法的。
2. 线性代数原理:如果将四宫格数独看作是一个线性方程组,那么每个宫格、行、列都可以看作是一个方程。
这些方程中的未知数就是网格中的数字。
通过解这个线性方程组,我们可以找到数独的解。
在四宫格数独中,由于规模较小,这个线性方程组通常可以直接通过穷举法或回溯法求解。
3. 图论原理:四宫格数独也可以看作是一个图论问题。
在这个图中,每个数字是一个节点,而每个宫格、行、列则是一个约束条件,表示这些节点之间不能相连。
通过寻找满足所有约束条件的节点排列,我们就可以找到数独的解。
三、四宫格数独的解题策略1. 唯一解法:在四宫格数独中,很多时候我们可以通过观察找到某个位置只能填入某个数字的情况。
这是因为在这个位置所在的行、列和宫格中,其他数字都已经被排除,只剩下一个数字可以选择。
这种方法称为唯一解法,它是解决数独问题的基础。
数独游戏的难度等级分析及求解算法研究1——关于数独

数独游戏的难度等级分析及求解算法研究1——关于数独这是⾃⼰本科所写的毕业论⽂,今天整理电脑的时候,⽆意中找到这篇⽂章,当初集中精⼒2个⽉才完成这篇论⽂,再次读来,觉得写得过于肤浅,但毕竟是⾃⼰的⼼⾎,与其散落在学校的档案库和⾃⼰的硬盘中,倒不如拿来与园友分享。
为避免篇幅过长,⽂章分为3个章节发布。
本论⽂⾸先介绍数独的历史、特点、游戏规则以及数独终盘组合数的基本情况;然后,探讨数独游戏的难度等级的划分模型,通过统计数独书籍所定义的难度等级与空格个数,运⽤图表分析,推断数独游戏难度等级与空格数成正⽐关系的结论,提出空格⾃由度的概念来划分数独难度系数,建⽴计算空格⾃由度的模型。
以空格⾃由度和空格个数为衡量数独游戏难度等级的标准,建⽴划分数独难度等级的数学模型,并编写程序快速实现数独难度等级划分的过程;最后,研究程序语⾔求解数独的算法,分别使⽤递归法与回溯法的⽅式求解数独,并分析这两种算法各⾃的优势与不⾜。
1关于数独1.1数独的发展史数独(Sudoku)是⼀种数学智⼒拼图游戏。
数独源于⼀种特殊的拉丁⽅阵。
拉丁⽅阵的发明者是 18 世纪末的瑞⼠数学家欧拉,拉丁⽅阵是⼀种含有n种符号的⽅阵,其中每列或每⾏的n种符号都不可重复出现[1]。
20世纪70年代由美国⼀本字谜游戏杂志《Number Place》⾸先发表了数独的雏形,此时的数独开始发展为在9×9的格⼦中填⼊1-9的数字。
2004年数独第⼀次在英国《泰晤⼠报》正式亮相,引起了⼀场“数独”热,短短数⽉间,便蔓延⾄全球[2],时⾄今⽇,数独在⽇本最为盛⾏,并得到发扬光⼤。
1.2数独的游戏规则数独发展⾄今,玩法和形式更加多元化。
传统的数独是将⼀个⼤正⽅形划成3×3的九个九宫格,每个九宫格由3⾏3列共9个⼩⽅格构成,这样整个⼤正⽅形形成⼀个9×9的⽅格群。
数独的规则是数独的编写者事先在⼀些⽅格⾥填上些数字作为提⽰,利⽤事先提供的数字作为线索,在⼤正⽅形内填满1-9的数字,要求⼤正⽅形每⼀⾏、每⼀列及每个九宫格内均必须包括1到9的每⼀个数字,既不能遗漏也不能重复[3]。
数独九宫格的解题方法

数独九宫格的解题方法数独九宫格是一个古老的解谜游戏,它被认为是最古老的智力游戏。
它最初在18世纪末期出现在法国,然后传播到欧洲其他地区,一直到19世纪初,它才走进日本。
今天,数独九宫格已经变成了全球最受欢迎的智力游戏之一,它也成为许多数学家和谜题探索者都喜欢探索的一种游戏。
数独九宫格是一种基于数字和逻辑思维的智力游戏,它有九个空格,其中每个空格都有一个九宫格内的1到9的不同数字。
游戏总的目的是利用这九个数字填充九宫格,使每行、每列和每个九宫格的数字都不重复,实现完美的九宫格。
解决数独九宫格的基本思想是:根据已知的数字和重复的数字判断出漏掉的数字,并填入九宫格中,使九宫格中的数字满足重复数字的要求。
解题的关键是发现九宫格中数字的规律,并根据这些规律,想出解决问题的算法。
一般来说,解题的步骤如下:1.首先,观察九宫格中的数字,查找九宫格中明显的规律,将明显规律记录下来,以便解决数独九宫格所需。
2.其次,每一行、每一列和每一个九宫格中都不能出现重复的数字,将未填写的数字从1到9进行排序,比较行、列和九宫格中已有的数字,如果都没有出现,则将排序的数字填入九宫格中,直到所有的空格全部填满。
3.最后,采用先把小规律解决掉,后解决大规律的做法,反复观察九宫格,解决数独九宫格中的难题。
比如需要用逻辑思维推断出某个单元格的数字,或者需要判断其他单元格的数字是否可行等。
解决数独九宫格既是一种智力游戏,也是一种科学研究,需要掌握大量的数学知识和逻辑推理能力。
正确的解决方法不仅能够帮助我们更好地了解和掌握数学知识,而且能够帮助我们提高逻辑推理能力,增强对我们身边问题解决的能力。
所以,我们可以把解决数独九宫格作为一个日常训练,也可以把它当作一种智力游戏来玩,充分发挥它的功能。
数独九宫格是一种有趣的智力游戏,它不仅能够刺激大脑,而且能够促进思维能力的发展。
解决数独九宫格比较有挑战性,它需要逻辑思维推理能力,需要我们利用所有的数字重复和规律,仔细分析每一个空格的可能,以此来解决问题。
关于数独的数学知识

关于数独的数学知识
数独是一种经典的逻辑数学游戏,通常在9x9的方格中进行。
游戏的目标是在每一行、每一列和每一个3x3的小方格中填入数字
1到9,使得每个数字在每一行、每一列和每一个小方格中都不重复。
数独游戏可以帮助玩家锻炼逻辑思维、数学推理能力以及耐心。
在数独中,数学知识主要涉及到排列组合、概率统计和数学逻
辑等方面。
首先,数独游戏中的数字填入需要满足每一行、每一列
和每一个小方格中数字的唯一性,这涉及到排列组合的概念,玩家
需要根据已有的数字和规则来进行逻辑推理,找到唯一的数字填入
位置。
其次,数独游戏也可以通过概率统计的方法来解决,特别是
在较难的数独题目中,可能需要通过试错的方法来找到合适的数字
填入位置。
最后,数独游戏本身就是一种数学逻辑游戏,玩家需要
运用数学逻辑推理来解决问题,例如通过排除法、唯一候选数法等
方法来填入数字。
除此之外,数独还与图论、矩阵等数学知识有关。
例如,数独
可以用图论的方法来建模,将每个格子看作图中的节点,每行、每
列和每个小方格看作图中的边,从而进行数学建模和分析。
另外,
数独也可以通过矩阵运算的方式来解决,将数独中的数字布局转化
为矩阵形式,通过矩阵运算来求解数独问题。
总的来说,数独游戏涉及到丰富的数学知识,包括排列组合、概率统计、数学逻辑、图论和矩阵等方面,通过数独游戏可以锻炼玩家的数学思维和逻辑推理能力,是一种富有趣味和挑战性的数学游戏。
数独中的数学模型

数独中的数学模型摘要现如今数独游戏风靡全球,深受人们喜爱。
其难度等级多样,求解数独难度等级较高的常常需要花费大量的时间和精力,因此我们试图用计算机来解决这一问题。
在问题一中,我们主要考虑空格数的多少以及空格自由度与数独难度等级的关系。
由一定的案例分析得出数独题目的难度等级与空格数存在正比关系,接着我们考虑如果只是简单的按照空格的数目多少来划分数独题目的难易程度是不全面的,因此继续分析,得出空格自由度与数独的难度等级存在正比的关系,最后又以空格数和空格自由度综合分析进行验证,得出此数独等级为3级。
[1] 空格自由度法模型如下:在问题二中,我们运用穷举法分析大量可能情况,再用MATLAB编写程序得出此数独游戏的终盘。
在问题三中,我们运用了比较排除法、唯一解法和综合法来求解此数独游戏,最终选用综合法作为较优方法。
[1]在问题四中,我们用循环回溯法进行求解,使用MATLAB编写程序得出结果(见表8)。
[1]关键字:穷举法比较排除法唯一解法循环回溯法数独空格数空格自由度一、问题背景数独是一种数字解谜游戏,英文名叫Sudoku,前身为“九宫格”,当时的算法比现在的更为复杂,要求纵向、横向、斜向上的三数之和等于15,而不只是数字的不能重复,儒家典籍《易经》中的“九宫图”也是来源于此。
关于它的起源一直存有争议,有人认为最早起源于中国,也有人认为起源于瑞士。
1970年由美国一家数学逻辑游戏杂志首先发表,名为Number。
后在日本流行,于1984年把Sudoku取名为数独。
数独全面考验做题者观察能力和逻辑推理能力,它的玩法逻辑简单,除了1到9的阿拉伯数字以外,不必用到任何东西,但数字的排列方式却又千变万化,不少教育者认为,数独是锻炼大脑的绝佳方式。
它不仅具有很强的趣味性,也是一种对智慧和毅力的考验。
二、问题重述芬兰一位数学家号称设计出全球最难的“数独游戏”,并刊登在报纸上,让大家去挑战。
这位数学家说,他相信只有“智慧最顶尖”的人才有可能破解这个“数独之谜”。
数学思维玩转数独

数学思维玩转数独数独是一种经典的数学游戏,无论是儿童还是成年人,都可以通过解答数独来锻炼自己的逻辑思维和数学能力。
数独游戏的规则简单明了,但是其中蕴含的数学思维却十分深奥。
本文将介绍一些数学思维技巧,帮助读者们更加高效地解决数独难题。
一、数独背后的数学原理数独是基于数学原理的游戏,通过填写数字,使每一行、每一列和每一个九宫格内都包含1-9的数字,且不重复。
数独的求解可以依靠数学的数独解题算法,其中最基本的是唯一候选数法和排除法。
唯一候选数法是指通过观察某个格子所在行、列、九宫格内已有的数字,推断出该格子唯一可能的数字。
排除法是指通过观察某一行、列或九宫格内已填的数字,排除掉其他格子的候选数字。
掌握了这些数学原理和算法,我们就可以更快地解答数独难题。
二、角度转变,跳出常规思维在解答数独的过程中,有时候需要换一种角度思考,跳出常规思维。
例如,我们可以将每一个格子看作一个待填数字的集合,而不仅仅是一个数字。
通过观察某个格子所在行、列、九宫格内已经填写的数字,我们可以逐步缩小每个格子的候选数字范围,最终找到唯一的解。
这种角度转变可以帮助我们更好地理解数独的逻辑,提高解题的效率。
三、递归思维,分而治之递归思维在解决复杂问题时十分有用,同样适用于数独游戏。
当我们遇到难题时,可以将数独棋盘分割成几个小的九宫格或子矩阵,然后逐个解决每个小九宫格。
通过逐层回溯和递归,我们可以得到整个数独的解。
这种分而治之的思维方式,能够简化问题的规模,帮助我们更好地进行解题。
四、数独游戏与数学教育的关系数独游戏不仅可以作为一种娱乐方式,也可以与数学教育相结合,从而提高学生的数学素养。
数独作为一种逻辑思维的训练工具,在学生中有着广泛的应用。
通过解决数独难题,学生们可以锻炼自己的逻辑思维、数学推理能力和问题解决能力。
同时,数独还能培养学生的观察力、耐心和专注力,这些都是数学学习中非常重要的素养。
五、数独的变种游戏数独游戏有着许多的变种,如超级数独、对角线数独、克隆数独等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数独中的数学模型 Company number:【WTUT-WT88Y-W8BBGB-BWYTT-19998】数独中的数学模型摘要现如今数独游戏风靡全球,深受人们喜爱。
其难度等级多样,求解数独难度等级较高的常常需要花费大量的时间和精力,因此我们试图用计算机来解决这一问题。
在问题一中,我们主要考虑空格数的多少以及空格自由度与数独难度等级的关系。
由一定的案例分析得出数独题目的难度等级与空格数存在正比关系,接着我们考虑如果只是简单的按照空格的数目多少来划分数独题目的难易程度是不全面的,因此继续分析,得出空格自由度与数独的难度等级存在正比的关系,最后又以空格数和空格自由度综合分析进行验证,得出此数独等级为3级。
[1] 空格自由度法模型如下:在问题二中,我们运用穷举法分析大量可能情况,再用MATLAB编写程序得出此数独游戏的终盘。
在问题三中,我们运用了比较排除法、唯一解法和综合法来求解此数独游戏,最终选用综合法作为较优方法。
[1]在问题四中,我们用循环回溯法进行求解,使用MATLAB编写程序得出结果(见表8)。
[1]关键字:穷举法比较排除法唯一解法循环回溯法数独空格数空格自由度一、问题背景数独是一种数字解谜游戏,英文名叫Sudoku,前身为“九宫格”,当时的算法比现在的更为复杂,要求纵向、横向、斜向上的三数之和等于15,而不只是数字的不能重复,儒家典籍《易经》中的“九宫图”也是来源于此。
关于它的起源一直存有争议,有人认为最早起源于中国,也有人认为起源于瑞士。
1970年由美国一家数学逻辑游戏杂志首先发表,名为Number。
后在日本流行,于1984年把Sudoku取名为数独。
数独全面考验做题者观察能力和逻辑推理能力,它的玩法逻辑简单,除了1到9的阿拉伯数字以外,不必用到任何东西,但数字的排列方式却又千变万化,不少教育者认为,数独是锻炼大脑的绝佳方式。
它不仅具有很强的趣味性,也是一种对智慧和毅力的考验。
二、问题重述芬兰一位数学家号称设计出全球最难的“数独游戏”,并刊登在报纸上,让大家去挑战。
这位数学家说,他相信只有“智慧最顶尖”的人才有可能破解这个“数独之谜”。
所给数独游戏表格如下:据介绍,目前,数独游戏难度的等级有一到五级,一是入门等级,五则比较难。
不过这位数学家说,他所设计的数独游戏难度等级是十一,可以说是所有数独游戏中,难度最高的等级。
数独是根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个粗线宫内的数字均含1-9,不重复。
每一道合格的数独谜题都有且仅有唯一答案,推理方法也以此为基础,任何无解或多解的题目都是不合格的。
由此我们要解决以下问题:问题一:分析此数独的难度;问题二:用穷举算法求解数独;问题三:设计此数独求解的较优的算法;问题四:建立数独求解模型并给出此数独的答案。
三、问题分析根据题中所给信息我们知道数独是一种数字解谜游戏,要求游戏者有很好的观察能力和逻辑推理能力。
针对问题一:分析此数独难度,我们认为有两点因素:一、空格数的多少,二、空间自由度。
因此我们采取例证法进行分析,根据空格数来划分等级,进行一定的数据分析求出空格率,进而得出难度系数与空格数的关系。
数独的难度等级与行、列、宫格内的空格数存在着密切联系,所以数独难易程度还与空间自由度有关。
数独的空格自由度,指除掉空格本身,空格所在行、列、九宫内的空格数总和。
除此之外我们可以以玩家完成数独题目的时间来判定数独题目的难度。
针对问题二:“穷举法”是指当一个问题有几种可能而一时难以判定时,把几种可能一一列举出来,然后逐一尝试,直到尝试结果与给定的条件和结论相符为止。
这种方法一般在计算机中运用,因为计算机计算速度快,可以很快验证答案是否正确,所以我们就以此来分析所有可能情况得出最终结果。
针对问题三:为了找出更好的数独解法,我们运用了三种方法来求解。
分别是:比较排除法、唯一解法和综合法。
分析比较,选出较优方案。
针对问题四:我们选用循环回溯法进行分析求解,与问题三中所求结果对比,以此验证其准确性。
四、模型假设1、假设每种数独游戏都存在一定的联系且相互之间的难易程度成一定的比例;2、假设实验者水平相同,随着实验不断进行,完成数独题目熟练程度不会增加;3、假设实验者数独时间与数独题目难度无关。
五、符号说明六、模型建立与求解6.1问题一的求解为了更好的区分难易程度我们将数独以空格数划分为五个等级,具体划分如下:空格数的取值范围为0-81,以空格数来平均划分难度等级,将空格数平均分成5个类型,空格数的取值范围缩小到37-81。
划分等级如下表所示:以《数独》为例,我们得到一些数据。
《数独》题目数为100道,表格行表示空格的个数,列表示难度的级别,一星为最容易,二星为容易,三星为难,四星为最难。
例如:表一的首格3表示,难度为一星,空格数为50的题目有3道。
表1 统计《数独》空格数与难度经过多次试验与分析,我们初步得到,随着空格数的增加,数独的难度系数也相应的增加。
为进一步探讨数独的难易程度是否还与其他因素有关,我们对数独题目的统计表格进行处理,在同等难度上,将每种空格的题目个数除以该难度的总题目数,得到如下表格。
表2 计算《数独》空格率与难度表格的数据用图表表示(图1),由图可以清晰看出,难度等级递增,空格数也不断增加。
难度等级与空格数存在正比的关系。
图1 《数独》空格数与难度经过我们的多次试验与分析,我们初步得到,随着空格数的增加,数独的难度系数也相应的增加,当然数独题目的难度等级与空格数存在正比关系。
难度等级的增加,空格数总体趋势递增,不同难度等级的题目空格数也一样的情况。
空格自由度与难度等级数独题目的难度等级与空格数存在正比关系。
难度等级的增加,空格数总体趋势递增,不同难度等级的题目空格数也一样的情况。
我们得出初步结论,简单按照空格的数目多少来划分数独题目的难易程度是不全面的。
同样空格数的数独题目,空格数分布位置的不同对难度等级也造成影响。
注:格数是决定难度等级的因素,但不是唯一的因素。
表3 统计《数独-再露锋芒》空格数与难度计算空格自由度的模型如下:空格自由度的取值范围大,当数独题目全为0时,空格的数为 81,空间自由度为2106;数独题目只剩1个空格时,空格自由度为0。
在[0,2106]的范围内平均划分,将难度级别划分为5个等级,空格自由度0-420难度等级为1;421-841为2;842-1262为3;1263-1683为4;1683-2106为5。
这与实际题目的难度划分不一致。
空格自由度划分的区间缩小到[700,1300],[700,820]为1级,[820,940]为2级,[940,1060]为3级,[1060,1180]为4级,[1080,1300]为5级(图2)。
图2 空格自由度难度模型随机抽取数独书籍不同难度等级的题目,进行空格自由度的计算,验证空格自由度衡量数独题目的难度是否合理,首先抽取4道不同难度的数独题目,将题目转换为字符串,计算空格自由度,实验结果如下:表4 实验数据由实验结果看出空格自由度与数独的难度等级存在正比的关系,难度系数的划分合理,与书中的划分基本一致。
数独题目的难度等级由空格数与空格自由度综合决定,建立几何难度等级模型:(1)以数独的空格数来划分,将空格数为横坐标X;(2)将空格自由度的总和划分等级,将等级数设为纵坐标Y;(3)根据(X,Y)判定难度。
将计算好的空格数和空格自由度划分等级,两者结合,便可得到数独题目的难度等级了。
难度等级等级为A-I,A为最易,I为最难,随着字母变大,难度逐次增加。
具体划分的数据如下:图3 难度判定坐标表5 难度系数划分依据A B C D E F G H I为了测试难度等级划分的情况的准确程度,主要做了如下测试:(1)测试的数独题目,查找出自《数独》和《路途中的数独》资料表6 测试题目(2)书籍中对数独难度等级的划分,并不一定合理,为了更准确区分难度等级,我们将的题目由3个人完成,计算每道数独题目完成需要的平均时间,完成时间越长,数独题目难度越大。
测试结果如下:表7 测试结果 Test result(3)实验结果表明,划分的难度与书中所划分的难度基本一致。
以玩家完成数独题目的时间来判定数独题目的难度的话,那么此种划分难度等级的方法也合理。
问题二的求解MATLAB编程求解数独“链式推导方法”解数独定义所谓链式推导方法就是根据数独题中候选数的出现关系或分布规律来推导,形成一条或多条推导链,最后证明某个或某些候选数是真或是假的解数独题的方法。
现在能想到的链式推导方法有:1、由A证明B为假(由一个格子的候选数假设推导证明另一个格子里的某个候选数是假的方法)2、由A证明B为真(由一个格子的候选数假设证明另一个格子的某个候选数是真的方法)3、由A证明A为假(由某个候选数推导而出现错误证明本身假设是错的方法)4、与成名方法结合的链式推导5、还有………如何推导,先定义一下,所说的A、B、C……、a、b、c……等等,都是候选数在某格子位置的代号。
箭头“-->”是“导致”或“因此”的意思;“=”是等于,“<>”是不等于的意思;A=1-->B=2-->C=3……的意思是:当A是1时,导致B等于2,B等于2因此C就等于3……,余下类推;A=1-->B<>1-->……的意思就是当A是1时,B就不是1,余类推;“同一单元”的概念是指同一行或同一列或同一九宫格。
问题三的求解由于数独规则要求每行、每列和每宫的数字不重复,所以已出现的数字可以排除掉同行、同列、同宫中的其他单元格内再填入该数字的可能性,以下我们用两个截图解释。
比较排除法流程图如下:排除法的模型优点是步步为营,谨慎小心,出错率不大。
但其推算过程较复杂,编程水平要求很高,所以不适合解答本题。
当某行已填数字的宫格达到8个,那么该行剩余宫格能填的数字就只剩下那个还没出现过的数字了,成为行唯一解。
当某列已填数字的宫格达到8个,那么该列剩余宫格能填的数字就只剩下那个还没出现过的数字了,成为列唯一解。
当某九宫格已填数字的宫格达到8个,那么该九宫格剩余宫格能填的数字就只剩下那个还没出现过的数字了,成为九宫格唯一解。
以下我们用一个例子来简单的介绍这种算法:A行已经添入8个数字,A行只有数字3没有出现过,所以A9=3,这是行唯一解第1列已经添入8个数字,第1列只有数字5没有出现过,所以E1=5,这是列唯一解在A8所在九宫格区域已经添入8个数字,只有数字9没有出现过,所以A8=9,这是九宫格唯一解唯一解法实施起来比较简单,但就是因为简单所以只能应用于较简单的数独游戏中或者是用于较难数独游戏题型中的最后阶段,所以唯一解法的模型也不适合解答本题。