数独游戏的难度等级分析及求解算法研究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的九个九宫格,每个九宫格由33列共9个小方格构成,这样整个大正方形形成一个9×9的方格群。数独的规则是数独的编写者事先在一些方格里填上些数字作为提示,利用事先提供的数字作为线索,在大正方形内填满1-9的数字,要求大正方形每一行、每一列及每个九宫格内均必须包括19的每一个数字,既不能遗漏也不能重复[3]

 

1.3  数独的特点

 

数独游戏的特点十分鲜明,它将简单性、灵活性、趣味性融合为一体。

简单性表现为数独游戏规则十分简单,只需要认识1-9个数字,利用题目所提供的数字为线索,运用逻辑推理的方法,加上必要的耐心,便可开始数独的游戏。

在实际操作过程中,数独的求解方法众多,唯一法、相斥法、排除法等等[4]。数独的题目多种多样,解题没有固定的模式,求解一道数独需要一种或多种方法交互使用,过程相当灵活。

玩家在求解数独的过程,体验着思维跳跃的快乐,解题时往往苦思冥想,在思考后得到答案,又有一种豁然开朗的快乐,思考数独的过程给人一种“山穷水复疑无路,柳暗花明又一村”的感觉。解题过程中开动脑筋,活跃思维,十分有趣。

 

1.4  数独组合

 

数字排列组合的方式千变万化,简单的81个格子所组合的数独终盘数量惊人。2005Bertram. FelgenhauerFrazer. Jarvis发表《Enumerating possible Sudoku grids》,用暴力破解法算出数独存在种排列的组合。排除数字交换和对称等重复的因素,数独终盘有 种排列组合[5]81个格子可组合出数量如此庞大的数独终盘,那每个数独终盘又能够创造多少数独题目呢?根据统计学上的排列组合[6],每个数独盘中,挖掉的空格数有9×9=81种可能,当所挖的空格个数为n个,对应的挖空方式有种。因此,每个数独终盘的挖空方式有 种,即可以创造 种题目。所有数独终盘能够制造  种数独题目。

注:发现在博客园写数学公式真是麻烦啊,我是先存储成图片格式再上传,这样做是不是太笨了,大家有没有简单的方法介绍一下呢?

 

 

posted @ 2011-08-25 18:43  candy.huang  阅读(8588)  评论(5编辑  收藏  举报