数独问题_数学建模
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数独问题
摘要
本文是对数独问题进行求解。结合数独生成的特点,立足于题中数独建模和
WNF P函数和整数规划模型。
求解的要求,建立了数独难度分析()
对于问题一,首先研究数独难度的影响因素,通过综合分析数独的特点结构,WNF P可以在常数时间计算出来以衡量数独的难易程度。通过计算可知得出()
()0.04531
WNF 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表示数独空单元格中的候选数数目函数
n
E p表示该数独的空格处
()
()
WNF P表示该数独难度的函数
x表示数k是否填入数独方中的(i,j)处
ijk
c表示往空格处填入0后数独方中(i,j)处的数
ij
y表示经过求解后数独方中(i,j)处的数
ij
4模型的建立与求解
4.1 问题1
4.1.1数独难度的影响因素
通过对数独的分析与研究,数独难度与数独候选数、逻辑推理方法、搜索步数、空格数以及空格的分布情况都有密切的关系。通过大量的计算观察发现,用到的逻辑与推理方法越复杂,那么在数独中出现的候选数越多;反之,在数独题中出现的候选数越多,解决数独题所用到的逻辑推理方法一般也越难。解答一个数独所用到的搜索步数越多,数独中的候选数越多。反之,一般情况下也成立。另外数独中的空格数以及空格的分布情况与候选数也有同样类似的关系。综合这几个影响数独难度的几种因素,分析候选数和空格数为主要影响因素,再根据其构造加权规函数()WNF P ,计算数值来衡量数独难度。
4.1.2 ()WNF P 函数的建立
加权规函数建立在候选数列表的基础上。根据候选数列表,计算出每一个空单元格中的候选数数目,将候选数数目与其相对应的加权函数结合起来,计算加权规函数WNF 。
定义单元格X 中的候选数数目函数()c X 为()?c X =X ,这个函数仅适用 于数独P 中的空单元格,而数独P 中的空单元格可以表示为
(){}{}|1,2,3,4,5,6,7,8,9:ννE P =X∈P ∀∈X →/ (1)
有()19n n <<个候选数的候选数数目函数
()(){}{}||?n C c n n X =X∈P X ==X∈P X = (2)
我们赋予它相应的加权函数()W n ,从而得到加权函数
()()()9
1n n WF W n C =P =P ∑ (3)
()WF P 不能准确的反映数独难度,()WF P 受数独中空单元格数目影响很大,呈正向关系,如在数独中删除单元格,数独空单元格数增加,导致()WF P 增加,即空格数越多,()WF P 越大,然而这并不符合所有的数独。为了排除这一影响,将加权函数()WF P 规,得到加权规函数:
()()()()()9
19n W n C W WNF =P P =E P ∑ (4)
根据以上的分析,对于某单元格X ,其候选数数?X 越大,其对应的加权函数()W n 也应越大。我们采用指数函数()exp 2n W n =”计算数独P 的()WNF P ,其中n 为某空单元格的候选数数目。计算发现,()WNF P 与数独难度是正相关的,即()WNF P 越大,数独的难度越大。
4.1.3 ()WNF P 函数的求解
根据题中给出的数独,按照数独游戏应该满足的条件,可以得到该数独的空格处的候选数列表,如下表2所示:
表2 空格处候选数列表
8 1246 24569 2347 12357 1234 13569 4579 1345679 12459 124 3 6 12578 1248 1589 45789 14579 1456 7 456 348 9 1348 2 458 13456 123469 5 2469 2389 2368 7 1689 2489 12469 12369 12368 269 2389 4 5 7 289 1269 24679 2468 24679 1 268 2689 5689 3 24569 23457 234 1 23479 237 2349 359 6 8 23467 2346 8 5 2367 23469 39 1 2379 23567 9 2567 2378 123678 12368 4 257 2357
根据表2,把所得变量带入式(3)得:
()1392WF P = (5)
由()60E P =代入式(4)式中得:
()0.04531WNF P = (6)
4.1.4数独难度的划分
根据计算所得()WNF P 大小,我们将数独题难度分为四个区间,分别表示简单、中等、难、极难。为方便表示,我们用1、2、3、4来表示难度系数。
1)若()()0,0.012WNF P ∈,数独简单,有较多候选数的空单元格很少,此时数独题用一些简单的直观法就可以解决,用1表示。