数独问题 数学建模

合集下载

数独问题-数学建模

数独问题-数学建模

数独问题摘要本文是对数独问题进行求解。

结合数独生成的特点,立足于题中数独建模和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数独难度的影响因素通过对数独的分析与研究,数独难度与数独候选数、逻辑推理方法、搜索步数、空格数以及空格的分布情况都有密切的关系。

数学创作活动

数学创作活动

数学创作活动数学创作活动是一种旨在激发学生对数学的兴趣和创造力的活动。

通过这些活动,学生可以运用数学知识进行创作,培养他们的数学思维和创新能力。

以下是一些可能的数学创作活动:1.数学游戏设计:让学生设计自己的数学游戏,例如数独、井字游戏等。

这可以帮助学生理解游戏背后的数学原理,同时也能激发他们的创新思维。

2.数学艺术:鼓励学生在艺术作品中融入数学元素,比如使用分形图案进行绘画,或者制作展示数学概念的雕塑等。

3.编写数学故事:让学生根据数学原理创作故事,可以是关于数学家的故事,也可以是包含数学原理的奇幻故事。

4.数学谜题和挑战:让学生设计和解答各种数学谜题,或者解决一些有趣的数学挑战,例如寻找最短路径问题等。

5.数学编程:通过编程来探索数学概念,例如使用Python等编程语言来绘制各种复杂的图形。

6.数学建模:让学生选择一个实际问题,然后使用数学模型进行解决。

例如,预测股票市场走势、设计最优化问题解决方案等。

7.数学戏剧和短片:让学生创作包含数学元素的戏剧或短片,通过表演来展示数学的魅力。

8.数学手工艺品:制作包含数学元素的实物,比如使用几何形状制作的拼图、挂饰等。

9.数学写作:让学生写一篇关于数学的论文或短篇小说,以培养他们的批判性思维和写作技巧。

10.数学展览:组织一个展览,展示学生创作的与数学相关的作品,可以是手工艺品、艺术品、科技作品等。

以上是一些可能的数学创作活动,具体形式可以根据学生的兴趣和能力进行调整。

重要的是让学生在活动中感受到数学的乐趣和价值,同时提高他们的数学技能和创造力。

数学建模lingo作业-习题讲解

数学建模lingo作业-习题讲解

基础题:1.目标规划问题最近,某节能灯具厂接到了订购16000套A 型和B 型节能灯具的订货合同,合同中没有对这两种灯具的各自数量做要求,但合同要求工厂在一周内完成生产任务并交货。

根据该厂的生产能力,一周内可以利用的生产时间为20000min ,可利用的包装时间为36000min 。

生产完成和包装一套A 型节能灯具各需要2min ;生产完成和包装完成一套B 型节能灯具各需要1min 和3min 。

每套A 型节能灯成本为7元,销售价为15元,即利润为8元;每套B 型节能灯成本为14元,销售价为20元,即利润为6元。

厂长首先要求必须按合同完成订货任务,并且即不要有足量,也不要有超量。

其次要求满意销售额达到或者尽量接近275000元。

最后要求在生产总时间和包装总时间上可以有所增加,但过量尽量地小。

同时注意到增加生产时间要比包装时间困难得多。

试为该节能灯具厂制定生产计划。

解:将题中数据列表如下:根据问题的实际情况,首先分析确定问题的目标级优先级。

第一优先级目标:恰好完成生产和包装完成节能灯具16000套,赋予优先因子p1;第二优先级目标:完成或者尽量接近销售额为275000元,赋予优先因子p2; 第三优先级目标:生产和包装时间的增加量尽量地小,赋予优先因子p3; 然后建立相应的目标约束。

在此,假设决策变量12,x x 分别表示A 型,B 型节能灯具的数量。

(1) 关于生产数量的目标约束。

用1d -和1d +分别表示未达到和超额完成订货指标16000套的偏差量,因此目标约束为1111211min ,..16000z d d s t x x d d -+-+=+++-=要求恰好达到目标值,即正、负偏差变量都要尽可能地小(2) 关于销售额的目标约束。

用2d -和2d +分别表示未达到和超额完成满意销售指标275000元的偏差值。

因此目标约束为221222min ,..1520-275000.z d s t x x d d --+=++=要求超过目标值,即超过量不限,但必须是负偏差变量要尽可能地小,(另外:d +要求不超过目标值,即允许达不到目标值,就是正偏差变量要尽可能地小) (3) 关于生产和包装时间的目标约束。

数独问题的整数规划模型

数独问题的整数规划模型
因此 , 所有 非 质 数 的 都 能 构 成 数 独 方 , 些 有 还能 构成 两种 或更 多 种数 独 方 . 质数 的 n都不 可 而
能构成 数独方 .
为 1p 区列 是 指 由区 组 成 的 “ ”从 左 到 右 记 为 一, 列 , lq 当数 独方 的 区行数 为 P时 , 每 区行数 一定 是 —. 其
第 1 卷第 3 1 期
21 0 1年 6月
金华职业技术学 院学报
Vnl 1l J.2N3 0 1o l . _0 u
数 独 问题 的整 数 规划 模 型
胡 英 武
( 华 职业 技 术 学 院 , 江 金 华 3 10 ) 金 浙 2 0 7
摘 要 : 独 是 近 年 流 行 的 一 种 益 智 游 戏 , 最 常 见 模 式 是 在 一 个 行 × 数 其 列 又 再 分 成 区共 z 小格 的方 中 , 个 填 入 适 "的 数 字 , 每 一 行 、 一 列 、 一 区都 含 有数 字 1 。 重 复 . 用 0 1规 划 的 方 法 建 立 数 独 问题 的 整 数 规 划 模 3 - - 使 每 每 不 运 — 型 , 出 了 9阶数 独 模 型 求解 的 Ln o程 序 , 给 ig 最后 对 模 型进 行 了评 价 .
2 数 独 方 的 基 本 概 念
为叙 述 方便 , n np ) 对 (=q 阶数 独 方 的行 、 、 列 区
进行 编码.
变量并 结 合整 数规 划 的方 法 。 出了 n阶 数独 方 问 给
题 的整 数规划模 型 .

阶数 独 方 的 必 要 条 件
因为 一个 I l的方 要 能再 分 成 n个 区 . t ̄ X 就必 须

数学建模lingo作业-习题讲解

数学建模lingo作业-习题讲解

基础题:1.目标规划问题最近,某节能灯具厂接到了订购16000套A 型和B 型节能灯具的订货合同,合同中没有对这两种灯具的各自数量做要求,但合同要求工厂在一周内完成生产任务并交货。

根据该厂的生产能力,一周内可以利用的生产时间为20000min ,可利用的包装时间为36000min 。

生产完成和包装一套A 型节能灯具各需要2min ;生产完成和包装完成一套B 型节能灯具各需要1min 和3min 。

每套A 型节能灯成本为7元,销售价为15元,即利润为8元;每套B 型节能灯成本为14元,销售价为20元,即利润为6元。

厂长首先要求必须按合同完成订货任务,并且即不要有足量,也不要有超量。

其次要求满意销售额达到或者尽量接近275000元。

最后要求在生产总时间和包装总时间上可以有所增加,但过量尽量地小。

同时注意到增加生产时间要比包装时间困难得多。

试为该节能灯具厂制定生产计划。

解:将题中数据列表如下:根据问题的实际情况,首先分析确定问题的目标级优先级。

第一优先级目标:恰好完成生产和包装完成节能灯具16000套,赋予优先因子p1;第二优先级目标:完成或者尽量接近销售额为275000元,赋予优先因子p2; 第三优先级目标:生产和包装时间的增加量尽量地小,赋予优先因子p3; 然后建立相应的目标约束。

在此,假设决策变量12,x x 分别表示A 型,B 型节能灯具的数量。

(1) 关于生产数量的目标约束。

用1d -和1d +分别表示未达到和超额完成订货指标16000套的偏差量,因此目标约束为1111211min ,..16000z d d s t x x d d -+-+=+++-=要求恰好达到目标值,即正、负偏差变量都要尽可能地小(2) 关于销售额的目标约束。

用2d -和2d +分别表示未达到和超额完成满意销售指标275000元的偏差值。

因此目标约束为221222min ,..1520-275000.z d s t x x d d --+=++=要求超过目标值,即超过量不限,但必须是负偏差变量要尽可能地小,(另外:d +要求不超过目标值,即允许达不到目标值,就是正偏差变量要尽可能地小) (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]。

初中数学综合实践活动主题

初中数学综合实践活动主题

初中数学综合实践活动主题数学在初中阶段是一门重要的学科,不仅仅是为了学习知识,更是为了培养学生的逻辑思维能力和问题解决能力。

为了提高学生的数学素养,培养他们的实践操作能力,初中数学综合实践活动应运而生。

本文将介绍几个适合初中数学综合实践活动的主题,以帮助学生更好地理解和掌握数学知识。

1. 数学游戏主题数学游戏是一种以游戏形式来进行数学实践活动的方式。

通过设定不同的数学游戏关卡和规则,可以激发学生的兴趣,引导学生主动参与数学实践活动。

比如,可以设计一个有趣的数独游戏,通过填数字的方式锻炼学生的逻辑推理能力和数字运算能力。

另外还可以设计数学迷宫游戏,通过解决数学问题来顺利通过迷宫,锻炼学生的问题解决能力和空间思维能力。

2. 数学建模主题数学建模是将数学方法应用于实际问题的过程。

通过选择不同的实际问题,学生可以学会把握问题的关键点,构建数学模型,并运用数学知识进行分析和解决问题。

比如,可以选择一个城市规划问题,让学生根据已有的数据和条件,通过建模分析,给出一个合理的城市规划方案。

这样既培养了学生的实际应用能力,又加深了他们对数学知识的理解和掌握。

3. 数学探究主题数学探究是一种通过自主发现和探索来学习数学的方法。

通过设置一些有趣的问题和实验,鼓励学生主动思考和探索,培养学生的问题解决能力和创新思维能力。

比如,可以让学生通过探究图形的对称性质,发现对称图形的特点和规律;或者通过探究数列的性质,发现数列中的规律和递推公式。

这样的探究活动不仅能够提高学生的数学思维能力,还能够培养他们的观察能力和分析能力。

通过以上介绍的数学综合实践活动主题,可以发现数学实践活动不仅有助于提高学生的数学素养,还能够培养他们的实践操作能力和问题解决能力。

对于初中数学教育来说,数学实践活动的重要性不言而喻,应该在教学中得以充分重视和应用。

希望本文的介绍能够给初中数学教师和学生提供一些有益的参考和启示,帮助他们更好地开展数学实践活动,促进学生的全面发展。

关于数独的数学知识

关于数独的数学知识

关于数独的数学知识
数独是一种经典的逻辑数学游戏,通常在9x9的方格中进行。

游戏的目标是在每一行、每一列和每一个3x3的小方格中填入数字
1到9,使得每个数字在每一行、每一列和每一个小方格中都不重复。

数独游戏可以帮助玩家锻炼逻辑思维、数学推理能力以及耐心。

在数独中,数学知识主要涉及到排列组合、概率统计和数学逻
辑等方面。

首先,数独游戏中的数字填入需要满足每一行、每一列
和每一个小方格中数字的唯一性,这涉及到排列组合的概念,玩家
需要根据已有的数字和规则来进行逻辑推理,找到唯一的数字填入
位置。

其次,数独游戏也可以通过概率统计的方法来解决,特别是
在较难的数独题目中,可能需要通过试错的方法来找到合适的数字
填入位置。

最后,数独游戏本身就是一种数学逻辑游戏,玩家需要
运用数学逻辑推理来解决问题,例如通过排除法、唯一候选数法等
方法来填入数字。

除此之外,数独还与图论、矩阵等数学知识有关。

例如,数独
可以用图论的方法来建模,将每个格子看作图中的节点,每行、每
列和每个小方格看作图中的边,从而进行数学建模和分析。

另外,
数独也可以通过矩阵运算的方式来解决,将数独中的数字布局转化
为矩阵形式,通过矩阵运算来求解数独问题。

总的来说,数独游戏涉及到丰富的数学知识,包括排列组合、概率统计、数学逻辑、图论和矩阵等方面,通过数独游戏可以锻炼玩家的数学思维和逻辑推理能力,是一种富有趣味和挑战性的数学游戏。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数独问题摘要本文是对数独问题进行求解。

结合数独生成的特点,立足于题中数独建模和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数独难度的影响因素通过对数独的分析与研究,数独难度与数独候选数、逻辑推理方法、搜索步数、空格数以及空格的分布情况都有密切的关系。

通过大量的计算观察发现,用到的逻辑与推理方法越复杂,那么在数独中出现的候选数越多;反之,在数独题中出现的候选数越多,解决数独题所用到的逻辑推理方法一般也越难。

解答一个数独所用到的搜索步数越多,数独中的候选数越多。

反之,一般情况下也成立。

另外数独中的空格数以及空格的分布情况与候选数也有同样类似的关系。

综合这几个影响数独难度的几种因素,分析候选数和空格数为主要影响因素,再根据其构造加权规范函数()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 ,从而得到加权函数()()()91n n WF W n C =P =P ∑ (3)()WF P 不能准确的反映数独难度,()WF P 受数独中空单元格数目影响很大,呈正向关系,如在数独中删除单元格,数独空单元格数增加,导致()WF P 增加,即空格数越多,()WF P 越大,然而这并不符合所有的数独。

为了排除这一影响,将加权函数()WF P 规范,得到加权规范函数:()()()()()919n 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表示。

2)若()()WNF P∈,数独有一定难度,要解决此数独要用到候选0.012,0.035数法中的一些简单方法,且与直观法结合起来推理,用2表示。

WNF P∈,数独比较难,内部逻辑结构复杂,将直观法3)若()()0.035,0.045与候选数法结合起来一般可以解决问题,用3表示。

0.045,1WNF P∈,这个数独很难,内部的逻辑结构相当复杂,将直4)若()()观法与候选数法结合起来不一定可以解决问题,甚至有时候需要对某些空单元格进行猜测,用4表示。

在这里,我们将(0,1)粗略分为四个区间,用来相对表示数独的相对难度。

根据数独难度的划分,由式(6)可得此数独难度系数为4,达到了极难的程度。

4.2 问题24.2.1算法的介绍本问中需要的是用穷举法对数独问题进行求解,首先介绍一下穷举法:穷举法,或称为暴力破解法,是基于计算机特点而进行解题的思维方法。

一般是在一时找不出解决问题的更好途径(即从数学上找不到求解的公式或规则)时,可以根据问题中的部分条件(约束条件)将所有可能解的情况列举出来,然后通过逐个验证是否符合整个问题的求解要求,而得到问题的解。

这样解决问题的方法我们称之为穷举算法。

穷举算法特点是算法简单,但运行时所花费的时间量大。

因此,我们在用穷举方法解决问题时,应尽可能将明显的不符合条件的情况排除在外,以尽快取得问题的解。

4.2.2 求解的思想结合本问中需要用穷举法解决数独问题,最终算出上面所给出的数独问题的解。

针对此数独问题,在此先介绍一下我的算法思想:1)建立一个堆栈来存放数据;2)根据每行、每列和一个小九宫中不能出现相同的数字的规则来找出所有空格中的所有可能值;3)从可能值中选取一个可能项最少的并提取一个出来,若还有可能值就将其放入堆栈中去,若提出的值不满足条件则从堆栈中再提取一个值来继续求解直到找到满足条件的解;举个例子吧,对这一数独问题,可以很快找到第八行第七列的可能值为3和9,其它空格的可能值都超过了三个,现取出3出来进行尝试,那么放入堆栈中的是9和其它的可能值,还有a(数独值),然后一直按这种方法进行下去,要是遇到不满足则从堆栈中重新拿出一个值来,直到结果满足结束循环。

下面列了一个流程图,如下流程图所示。

首先进行对程序中的所用符号进行说明,先将数独中问题的初始值(空格为0)存入数组a,将所有空格中的可能值存入数组y。

4.2.3 问题的求解根据该流程图进行编程,并在matlab中实现,具体程序见附录1。

经过2分钟左右求解得到最终结果,如下表4所示:4.3 问题3根据问题2中处理方法,发现穷举算法的特点是算法简单,但运行时所花费的时间较长。

因此,我们在此基础上进行改进,尽可能将明显的不符合条件的情况排除在外,以尽快取得问题的解。

在求解数独的过程中,遍历此数独所有可能的搜索树,直至找到数独的解为止!在这个过程中,我们采用回溯法进行求解。

回溯法是一种搜索算法,其基本思路是:在一个问题中,根据题意给出的边界条件划定出所有可能解的范围(称为可能解),根据题意确定出约束条件。

利用程序顺次在所有可能解中,搜索时按照深度搜索的方式进行。

即在第一层选定一个满足约束条件的解,然后以该可能解为出发点,搜索第二层的一个可能解(试探)。

如果搜索到第二层的一个可能解,则继续搜索第三层的一个可能解。

依次类推,直到所有层的可能解都被找到,则得到了该问题的一个完整解。

如果第二层所有的可能解都不满足约束条件,则返回第一层,放弃原有的可能解,使用第一层的下一个可能解(回溯)。

以此类推,寻找第二层的一个可能解。

具体算法一般采用如下步骤:1)在此数独初盘选择一个空单元格;2)取这个单元格中一个可能的候选数;3)将这个候选数填入单元格中,迭代完成数独;4)若这个候选数推导得到一个无效数独终盘,返回此单元格取其他候选数;由于回溯法是在不断地试探和回溯中运算,因此也可以称为试探法或者试探—回溯法。

从上面的描述中可知,回溯法得到的问题的解只是根据不同的初始条件获得的第一个完全满足所有约束条件的解,因此该解的获得和初始条件有关。

如果想要获得该问题的全部解,则需要遍历所有的可能的初始条件,也就是遍历所有的第一层的可能解。

回溯法相对于其他穷举的特点在于,不必把问题的每一层的所有的可能解都遍历一遍,只要当前的可能解不满足约束条件就抛弃该解,寻求下一个可能解,而不必求解其余的下层解。

当当前层的所有可能解都不满足约束条件,」则回溯到上一层,抛弃上一层的当前可能解。

从以上分析中结合数独问题的规则,得出数独问题的约束条件为:l)每一格的数值范围仅限于l一9。

相关文档
最新文档