数独游戏的难度等级分析及求解算法研究1——关于数独
这是自己本科所写的毕业论文,今天整理电脑的时候,无意中找到这篇文章,当初集中精力2个月才完成这篇论文, 再次读来,觉得写得过于肤浅,但毕竟是自己的心血,与其散落在学校的档案库和自己的硬盘中,倒不如拿来与园友分享。为避免篇幅过长,文章分为3个章节发布。
本论文首先介绍数独的历史、特点、游戏规则以及数独终盘组合数的基本情况;然后,探讨数独游戏的难度等级的划分模型,通过统计数独书籍所定义的难度等级与空格个数,运用图表分析,推断数独游戏难度等级与空格数成正比关系的结论,提出空格自由度的概念来划分数独难度系数,建立计算空格自由度的模型。以空格自由度和空格个数为衡量数独游戏难度等级的标准,建立划分数独难度等级的数学模型,并编写程序快速实现数独难度等级划分的过程;最后,研究程序语言求解数独的算法,分别使用递归法与回溯法的方式求解数独,并分析这两种算法各自的优势与不足。
1关于数独
1.1 数独的发展史
数独(Sudoku)是一种数学智力拼图游戏。数独源于一种特殊的拉丁方阵。拉丁方阵的发明者是 18 世纪末的瑞士数学家欧拉,拉丁方阵是一种含有n种符号的
1.2 数独的游戏规则
数独发展至今,玩法和形式更加多元化。传统的数独是将一个大正方形划成3×3的九个九宫格,每个九宫格由3行3列共9个小方格构成,这样整个大正方形形成一个9×9的方格群。数独的规则是数独的编写者事先在一些方格里填上些数字作为提示,利用事先提供的数字作为线索,在大正方形内填满1-9的数字,要求大正方形每一行、每一列及每个九宫格内均必须包括1到9的每一个数字,既不能遗漏也不能重复[3]。
1.3 数独的特点
数独游戏的特点十分鲜明,它将简单性、灵活性、趣味性融合为一体。
简单性表现为数独游戏规则十分简单,只需要认识1-9个数字,利用题目所提供的数字为线索,运用逻辑推理的方法,加上必要的耐心,便可开始数独的游戏。
在实际操作过程中,数独的求解方法众多,唯一法、相斥法、排除法等等[4]。数独的题目多种多样,解题没有固定的模式,求解一道数独需要一种或多种方法交互使用,过程相当灵活。
玩家在求解数独的过程,体验着思维跳跃的快乐,解题时往往苦思冥想,在思考后得到答案,又有一种豁然开朗的快乐,思考数独的过程给人一种“山穷水复疑无路,柳暗花明又一村”的感觉。解题过程中开动脑筋,活跃思维,十分有趣。
1.4 数独组合
数字排列组合的方式千变万化,简单的81个格子所组合的数独终盘数量惊人。2005年Bertram. Felgenhauer和Frazer. Jarvis发表《Enumerating possible Sudoku grids》,用暴力破解法算出数独存在种排列的组合。排除数字交换和对称等重复的因素,数独终盘有
注:发现在博客园写数学公式真是麻烦啊,我是先存储成图片格式再上传,这样做是不是太笨了,大家有没有简单的方法介绍一下呢?