前言:
眼前大家对“数独的生成算法和解题算法”都比较珍视,同学们都想要了解一些“数独的生成算法和解题算法”的相关内容。那么小编同时在网摘上网罗了一些关于“数独的生成算法和解题算法””的相关文章,希望姐妹们能喜欢,朋友们一起来了解一下吧!数独(Sudoku)一词起源于日本,流行于全世界的数字游戏。
追溯数独的起源,早在四千多年前我国古代就可以看到它的影子。从本质上看,数独就是一种数字游戏,它的基本结构就是九宫格。传说大禹治水时,洛河里出现了一只乌龟,龟身画有一幅图就是“洛书”。这“洛书”是由许多点子组成的图形。
洛书中共有45个圈点,分别组合,摆成方形。南、西、东、北各为1、3、7、9个点;四角各为2、4、6、8个点;中间则为5个点。
到了北周时,易学家把它和九宫联系起来,即将八卦和中央之宫合起来,称作九宫。当时的数学书中就出现了用数代替圈点数的九宫图:“二四为肩,六八为足,左三右七,戴九履一,五居中央。”到宋朝,出现了“重排九宫”游戏。这就是格子数字游戏的起源。
但中国古代的九宫图和现代的数独只是外形的相似,内容却不同。九宫图即后来数学里所称的“幻方”,它的规律是每行、每列以及两条对角线上的数之和相等;而标准数独是由9个九宫组成一个阵,它要求每行、每列以及每个九宫的格内的数不能重复。所以,九宫图只是现代的数独起源之一。
从中国古代的九宫图改造到现代的数独的漫长过程中,有一个变化的突破点,这就是18世纪欧拉的拉丁方。
今天,我们一起来聊下关于数独的文化史和一些数学问题。
一、欧拉与拉丁方
作为数学史上最传奇、最多产的大师之一,瑞士数学家欧拉(LeonardEuler,1707—1783)在18世纪研究了一种有趣的数字方阵:考虑一个阶数(亦即行数和列数)为n的方阵,在小格里填入n种符号或数字,在每一行/列中,每一个符号出现且仅出现一次。这种方阵源自中世纪的格盘游戏,其求解过程可归结为“染色问题”——一个数学中最古老的问题之一。因为最初随手填入方阵内的是一个个拉丁字母,欧拉将这样的方阵命名为拉丁方(Latin Square)。拉丁方在实验设计、数据检验和幻方构造等领域应用极广。
很容易发现,数独其实正是一种特殊的拉丁方。惟一不同的是,数独加上了一个额外的条件:在每个小九宫格的区域内,每个数字同样出现且只出现一次。
二、终盘的可能性
通常将一个完成了的数独题目称为终盘。在数独游戏风行后,人们很快便希望知道这个游戏究竟存在多少个终盘形式。对此,德国数学家BertramFelgenhauer在2005年给出了答案:数独的最大可能终盘数为6,670,903,752,021,072,936,960种。
另一个方面,考虑到数独游戏的初始数字对称要求,以上结果可能有相当程度的重复,亦即其终盘结果会出现大量的雷同。据此,英国数学家FrazerJarvis和EdRussell给出了更准确的不同终盘数:5,472,730,538。这样一来,有志于破解所有数独题目的玩家又看到了希望的曙光,担心游戏被穷尽而没有游戏可玩的爱好者也不必焦虑:毕竟这个数目和地球人口一样多。
三、最小初盘问题
与终盘相对应,一个数独游戏给出的初始条件称为初盘。
一般常见的初盘数字个数在22—28之间,而数独爱好者们常问的一个问题是:最少给出多少个数字,数独游戏才确保有惟一解?具体地说:最少需要在初盘中给出多少个数字,使得移除其中任何一个数字该数独游戏便没有惟一解。
事实上,这个问题是数独中最有数学趣味的问题之一,并且长时间以来未得到解决。但当时数学家们估计,这个数字很可能是17。17个数字的最小惟一解初盘是由一名日本数独爱好者提出的。澳大利亚数学家GordonRoyle已经收集了36628个17个数字的惟一解初盘,而爱尔兰数学家Gary McGuire则致力于寻找16个数字的惟一解初盘,但至今仍无发现。部分数学家开始退而求其次,转而寻找只有两个解的16个数字初盘。
统计学家根据一个统计学原理曾随机地构造了大量17个数字的初盘,发现其中有惟一解的初盘只有数个未被GordonRoyle教授发现,这意味着,最小惟一解初盘问题的最终答案可能正是17。因为从理论上说,如果16个数字的惟一解终盘存在,那么每一个必将引起65个17个数字惟一解终盘的增加,而在研究中至今没有观察到这一效应。
2012年一位爱尔兰数学家利用一套极为复杂的运算法则以及数亿小时的“超级计算”,解决了数独运算中的一个重要的开放问题。
都柏林大学学院的GaryMcGuire于1月1日在互联网上贴出了自己的证明——完成一次数独所需的最小提示数(或起始数)是17;而16个或更少的线索则无法得到唯一解。
在1月7日于美国波士顿市召开的一次会议上,数学家们就此达成了共识,McGuire的证明很可能是有效的,并且是发展中的数独领域的一项重要进展。
弗吉尼亚州哈里森堡詹姆斯•麦迪逊大学的数学家Jason Rosenhouse是一本即将出版的数独算法书籍《严肃看待数独:全球最流行的铅笔游戏背后的数学》的作者之一,他认为:“这一方法是合理的,并且似乎是可靠的。对此我持谨慎乐观的态度。”
McGuire和他的研究小组花了两年时间来测试这一算法——他们在都柏林的爱尔兰高端计算中心耗费了约700万个CPU小时,利用“打集合算法”来寻找可能的方格。同样利用不同算法证明17个线索的数独的佩斯市西澳大利亚大学的数学家Gordon Royle表示:“做到这一点的唯一现实办法就是这种强力的方法……这是一个极具挑战性的问题,它可以激发人们将计算与数学方法推向极限,就像在攀登最高的山峰。”
McGuire表示,他的方法还可能在其他领域产生作用。这种“打集合算法”已经被用于基因测序分析和蜂窝网络的论文中,McGuire期待它能够被更多的研究人员所利用。他说:“希望这种算法能够激发更多的兴趣。”
四、最大初盘问题
与最小初盘问题相反,人们还可以提出最大初盘问题。
也就是说:在一个数独初盘中,最多能给出多少个数字,使得再增加一个数字该问题便只有惟一解。
相对于最小初盘问题,最大初盘问题容易解决得多。采用倒推法,在初始数字为80的情况下无需说明,缺啥补啥即可;在初始数字为79的初盘中也大约如此,因为考虑到必须满足每一个小九宫格内每个数字出现且仅出现一次,这意味着所缺少的数字都必须出现在同一个九宫格内,考虑到这个情况,还可以依次推出78的初盘也有惟一解。但当初盘中给定数字变为77的时候,该数独游戏便会出现两解的情况。
五、数字游戏传播史
“数独”可以被定义为一种逻辑智力拼图游戏,也可以被称为“数字游戏”。顾名思义,“数独”可以理解为一组独立的数字,将这组数字以一定的规则组合在一定区域内,便是数独游戏的主要内容。
具体地说,拼图是大九宫格(即3格宽×3格高)的正方形状,由9个小九宫格组成。游戏的目标是在每一个小九宫格中,不重复地填上1至9的数字,让整个大九宫格每一列、每一行的数字都不重复。一般而言,一条数独题会给出1/3左右的数字作为初始条件,剩下的2/3空白处由读者完成。
也许正是因为规则简单,所以数独才能迅速风靡世界。既然玩数独游戏无需数学运算或证明,似乎完全可以将其称为“数字游戏”。
Nikoli是所有数独爱好者需要感谢的第一个名字。
数独游戏在1979年前后已经在美国Dell杂志上刊登,但在众多填字游戏中并未引起特别注意。直到1984年,日本的填字游戏出版商Nikoli公司的煅治真起从美国发现了这个游戏,决定引入日本并将其命名为Sudoku,意思是“每个数字只能出现一次”。
随着Sudoku游戏在日本国内大受欢迎,Nikoli公司在1986年对其进行了两项改良:其一是题目中给出的初始数字限定在32个以内,其二是给出数字的分布采用对称形式。这就是今天我们看到的数独游戏的面貌。
很难解释为何在此后的十多年里,数独游戏一直只在日本国内流行。但可以肯定的是,将数独游戏重新发现并推广到国际市场的,是一名香港高等法院退休法官、新西兰人高乐德。他在1997年一次日本旅行中,在书店内发现数独游戏,立刻被其吸引住。此后高乐德花了六年时间开发数独出题程序,并向英国《泰晤士报》等报社出售其编写的数独题目。英国市场反应极佳,数独开始风行全球,而高乐德本人也因此获得巨额收入。
经过两年的迅速发展,数独游戏已经“侵入”了几乎一切公共传播领域:数以千计的报纸提供数独游戏,数十种数独刊物,全球各地分别成立了数独爱好者团体,电视上已经出现了数独节目,而第一届数独世界锦标赛也在06年举行,女选手亚娜最后夺冠,截止到18年的今天,数独世界锦标赛已经举办了12届(中国区选拔赛决赛将于8月在北京举行)。
标签: #数独的生成算法和解题算法 #算法实现的重排九宫问题