数学建模-Argyle(数独)问题_第1页
数学建模-Argyle(数独)问题_第2页
数学建模-Argyle(数独)问题_第3页
数学建模-Argyle(数独)问题_第4页
数学建模-Argyle(数独)问题_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、-作者xxxx-日期xxxx数学建模-Argyle(数独)问题【精品文档】论文题目:Argyle问题 姓名1:学号:专业:姓名2:学号:专业: 姓名3:学号:专业:2013年 07 月 17 日目录一.摘要2二.问题的重述23四、模型建立3333(1)问题1解析4(2)问题2解析4五.模型的评价与改进6六.参考文献6七、附录6九宫格数独,是一种源自18世纪末期的瑞士,之后在各个国家发展。数独盘面是个九宫,每一宫又分为九个小格。在这八十一格中给出一定的已知数字和解题条件,利用逻辑和推理,在其他的空格上填入1-9的数字。使1-9每个数字在每一行,每一列和每一宫中都只出现一次。这种游戏全面考验做题者

2、观察能力和推理能力。而Argyle数独除了满足标准数独的要求外,还要求标出的对角线上的数字也不重复。这一要求加深了解开数独的难度。所以,解开Argyle数独,关键在于很多点的候选值又很多,需要不断的尝试、不断的排除的这样一个过程。因此,通过使用Matlab软件编写代码来代替人脑进行尝试与排除,这样既节省了求解者的解题时间,同时也将当代计算机科技技术运用到解题的实践中,丰富了数学建模的解题灵活性,加强了求解的严谨性。针对问题1、2,可以将其统一化为一个问题,运用Matlab软件编写代码,之后通过建立“数独”矩阵,改变其大小,从而求解不同的Argyle问题。关键词:候选数、Argyle数独要求、M

3、atlab软件Argyle问题Argyle数独是标准数独的变形,标准数独是根据99盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个粗线宫内的数字均含1-9,不重复。每一道合适的数独谜题都有且仅有唯一答案,推理方法也以此为基础,任何无解或多解的题目都是不合格的。Argyle数独除了满足以上要求之外,同时还要求标出的对角线上的数字也不重复。如下图所示:现有以下问题待求解:根据以上描述,试完成以下问题:1.用matlab进行求解;2.利用matlab画出各个问题及解答的图形。这两个问题的核心在于如何用matlab来代替人来进行求解中候选数的尝试与排除这一重复的过程。且必须用m

4、atlab画出两个问题及解答的图形,此必须用到matlab中的plot与text这两个函数分别进行线与数字的显示工作。我们小组的思路是运用matlab中语言的If语句与For语句进行对问题的候选数进行筛选,先将满足的候选数存储在C中,之后再进行筛选,得到满意的答案。之后将所求结果放入事先准备好的九宫格中,使其一一对应,最终得出结果。所有Argyle问题都是99盘状所有Argyle都必须依照数独游戏的基本规则进行所有Argyle无数字的方格都填0来转化为99矩阵A所求解问题所转化的矩阵candidates求解问题候选数的函数sudoku解出数独问题的函数(递归法)C存储候选数X结果矩阵问题1解析

5、根据所输入的矩阵来进行求解;在输入页面输入矩阵:A=0,0,8,0,0,0,0,0,2; 0,0,0,0,7,3,0,0,0; 0,6,3,0,0,0,0,0,7; 0,4,0,0,0,9,0,7,0; 0,0,0,0,0,0,0,0,0; 6,0,0,0,0,0,8,5,1; 0,2,0,0,0,0,0,0,5; 0,0,0,4,0,0,0,0,0; 0,9,0,5,0,0,0,0,0;将候选数先行选出,排除一行、一列、一宫格里数字相同的情况;通过for语句的循环效果,先将一个数字填入矩阵中,之后利用递归法,将所有符合的数字填入矩阵中;最后,将矩阵上的数一一对应在九宫格框里,得出结果。如下图

6、所示:问题2解析根据所输入的矩阵来进行求解:在输入页面输入矩阵:A=0,8,0,0,0,0,0,0,0; 0,1,0,0,2,5,0,4,3; 0,0,2,0,0,0,0,5,0; 0,0,0,9,0,3,0,0,0; 0,2,0,0,0,0,0,8,0; 0,0,0,0,0,0,0,0,0; 3,0,7,0,8,0,6,0,0; 0,0,0,0,7,0,1,0,0; 0,0,0,0,5,0,0,0,8;同问题1一致,得出结果:如下图所示:5.1优点:此模型运用matlab软件进行求解,大大增添了该模型的规范化。同时,通过输入矩阵的不同,从而达到解析不同的Argyle问题。此模型中运用了递归法

7、,从而将程序大大简化了,加强了该模型的使用性,使得将该算法的合理性加强了。:此模型中,在运行之前必须输入原问题的矩阵式,从而使得程序能够运行。这样一来,将求解时的输入时间增加了。因此,应该用程序将隐藏在问题中的矩阵式直接找出来,而不是人工输入,这样一来将会节省更多的时间,使得该模型更加完善。1. Matlab程序设计与应用(第二版)刘卫国 主编2. sudokkusudoku-Cleve Moler=Experiments with MATLAB-chapter18-2009年问题1代码:clear;clc;close allhold on;for i=0:9 if rem(i,3)=0 pl

8、ot(0,9,i,i,k,LineWidth,3) else plot(0,9,i,i,k,LineWidth,2) endendtext(8.5,3.5,1)text(8.5,8.5,2)text(1.5,2.5,2)text(2.5,6.5,3)text(5.5,7.5,3)text(1.5,5.5,4)text(3.5,1.5,4)text(3.5,0.5,5)text(7.5,3.5,5)text(8.5,2.5,5)text(0.5,3.5,6)text(1.5,6.5,6)text(4.5,7.5,7)text(7.5,5.5,7)text(8.5,6.5,7)text(2.5,8

9、.5,8)text(6.5,3.5,8)text(1.5,0.5,9)text(5.5,5.5,9)for j=0:9 if rem(j,3)=0 plot(j,j,0,9,k,LineWidth,3) else plot(j,j,0,9,k,LineWidth,2) end end plot(4,9,0,5,k,LineWidth,1) plot(1,9,0,8,k,LineWidth,1) plot(0,8,1,9,k,LineWidth,1) plot(0,5,4,9,k,LineWidth,1) plot(0,5,5,0,k,LineWidth,1) plot(0,8,8,0,k,Li

10、neWidth,1) plot(1,9,9,1,k,LineWidth,1) plot(4,9,9,4,k,LineWidth,1) A=0,0,8,0,0,0,0,0,2; 0,0,0,0,7,3,0,0,0; 0,6,3,0,0,0,0,0,7; 0,4,0,0,0,9,0,7,0; 0,0,0,0,0,0,0,0,0; 6,0,0,0,0,0,8,5,1; 0,2,0,0,0,0,0,0,5; 0,0,0,4,0,0,0,0,0; 0,9,0,5,0,0,0,0,0; X = sudoku(A) for i=1:9 for j=1:9text(j-0.5,9.5-i,num2str(X(

11、i,j); endend function X = sudoku(X)C,s,e = candidates(X);while isempty(s) & isempty(e)X(s) = Cs;C,s,e = candidates(X);endif isempty(e)returnendif any(X(:) = 0)Y = X;z = find(X(:) = 0,1); for r = Cz X = Y;X(z) = r;X = sudoku(X);if all(X(:) 0) returnendendendfunction C,s,e = candidates(X)C = cell(9,9)

12、;tri = (k) 3*ceil(k/3-1) + (1:3);for j = 1:9 for i = 1:9 if X(i,j)=0 z = 1:9; z(nonzeros(X(i,:) = 0; z(nonzeros(X(:,j) = 0; z(nonzeros(X(tri(i),tri(j) = 0; Ci,j = nonzeros(z); end endendL = cellfun(length,C); s = find(X=0 & L=1,1);e = find(X=0 & L=0,1);end7.2问题2代码:clear;clc;close allhold on;for i=0:

13、9 if rem(i,3)=0 plot(0,9,i,i,k,LineWidth,3) else plot(0,9,i,i,k,LineWidth,2) endendtext(8.5,3.5,1)text(8.5,8.5,2)text(1.5,2.5,2)text(2.5,6.5,3)text(5.5,7.5,3)text(1.5,5.5,4)text(3.5,1.5,4)text(3.5,0.5,5)text(7.5,3.5,5)text(8.5,2.5,5)text(0.5,3.5,6)text(1.5,6.5,6)text(4.5,7.5,7)text(7.5,5.5,7)text(8.

14、5,6.5,7)text(2.5,8.5,8)text(6.5,3.5,8)text(1.5,0.5,9)text(5.5,5.5,9)for j=0:9 if rem(j,3)=0 plot(j,j,0,9,k,LineWidth,3) else plot(j,j,0,9,k,LineWidth,2) end end plot(4,9,0,5,k,LineWidth,1) plot(1,9,0,8,k,LineWidth,1) plot(0,8,1,9,k,LineWidth,1) plot(0,5,4,9,k,LineWidth,1) plot(0,5,5,0,k,LineWidth,1)

15、 plot(0,8,8,0,k,LineWidth,1) plot(1,9,9,1,k,LineWidth,1) plot(4,9,9,4,k,LineWidth,1) A=0,8,0,0,0,0,0,0,0; 0,1,0,0,2,5,0,4,3; 0,0,2,0,0,0,0,5,0; 0,0,0,9,0,3,0,0,0; 0,2,0,0,0,0,0,8,0; 0,0,0,0,0,0,0,0,0; 3,0,7,0,8,0,6,0,0; 0,0,0,0,7,0,1,0,0; 0,0,0,0,5,0,0,0,8; X = sudoku(A) for i=1:9 for j=1:9text(j-0.

16、5,9.5-i,num2str(X(i,j); endend function X = sudoku(X)C,s,e = candidates(X);while isempty(s) & isempty(e)X(s) = Cs;C,s,e = candidates(X);endif isempty(e)returnendif any(X(:) = 0)Y = X;z = find(X(:) = 0,1); for r = Cz X = Y;X(z) = r;X = sudoku(X);if all(X(:) 0) returnendendendfunction C,s,e = candidates(X)C = cell(9,9);tri = (

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论