- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于_挖洞_思想的数独游戏生成算法
基于“挖洞”思想的数独游戏生成算法
薛源海, 蒋彪彬, 李永卓 指导老师: 闫桂峰, 孙华飞
( 北京理工大学理学院 数学系, 北京 100081)
摘要: 设计一个算法用以生成各种难度等级的数独题, 通过对游戏规则的分析, 首先从以下三个方面定 义难度等级: 已知格总数、已知格的分布和穷举搜索复杂度. 本算法采用“挖洞”思想, 经过以下两步生成数独 题: 1) 运用拉斯维加斯随机算法生成一个终盘; 2) 采用以下五个操作“抹去”一部分数字来生成数独题: ① 根据所需要的难度等级选取一种挖洞顺序; ② 制定两个约束来控制已知格的分布; ③ 通过深度优先搜索来 求解, 从而保证“挖去”一个数字后该数独题仍有唯一解; ④ 引入剪枝技术来避免无效的“挖洞”尝试; ⑤ 对 “挖”好“洞”的数独题进行等效对称变换, 以增加题目的多样性. 可以生成游戏者所需要的任意5 种难度的数 独题. 经过对算法时间和空间复杂度的分析, 论证了本算法的有效性. 对“挖洞法”的研究成果可总结为以下 三个方面: 1) 通过对“挖洞”顺序的大量试探, 找到了可生成高难度数独题的“挖洞”顺序; 2) 采用反证法来 判断一个数独题解的唯一性; 3) 通过避免“回溯”和“重填”来降低算法的运行时间.
关键词: 挖洞法; 拉斯维加斯算法; 剪枝; 反证法
1 问题的提出
数独是一种源自18 世纪末的瑞士, 后在美国 发展, 并在日本得以发扬光大的数学智力拼图游
戏1 . 其游戏规则为: 在由 9 个小九宫格组成的 大九宫格( 9 格×9 格) 里, 已填有若干数字; 需用 数字1~ 9 填满剩下的空格, 使得每一行和每一列 都包含数字1~ 9, 每个小九宫格里也均是数字1~
9, 并且每个数字在它所在的行、列以及小九宫格 里面都只出现一次. 该游戏环境如图1 所示.
近年来, 数独游戏正吸引着世界上无数的 游戏挑战者. 他们水平各异, 所以一些计算机学 者们正致力于设计算法使其在尽可能短的时间 内生成不同难度等级的数独题, 以满足不同水
图 1 数独游戏环境
平游戏者的需求2 . 在此, 本文提出了一种基于“挖洞”思想的数独题生成算法, 同时考虑到 三个方面要求: 可变化的难度、解的唯一性和算法复杂度最小化.
2 问题的分析
要能保证算法生成的数独题具有可变化的难度和唯一解, 该算法内部应该包含有对数 独题的求解和评级功能. 本文将该算法的设计工作分为评级、求解和生成 3 部分工作.
首先, 根据游戏者需求的难度等级, 我们从已知格的总数和分布以及穷举求解的搜索次
数这三个方面特性, 通过赋权求和来评估一个数独题的难度等级. 然后, 运用“反证法”思想, 并结合“深度优先搜索求解器”一起论证一个“洞”被“挖去”后是否能保证该题有唯一解. 最 后, 论证了可通过避免“重填”一个被“挖去”的格子, 或者“回溯”到一个曾经无法“挖去”的格
子, 来降低算法的复杂性.
3 模型的假设和定义
1) 在本文中, 我们将数独游戏的格盘大小定为 9 格×9 格, 不涉及其他大小的格盘.
2) 文中所有关于运行时间的统计数据都是通过我们的计算机得到的; 在同等的计算环 境下, 这些数据是可靠而具有可比性的.
4 难度等级的度量
在本节中, 我们从人类的逻辑推理和计算机的穷举 搜索两方面来评估一道数独题的难度. 由于游戏者对未
知格的推理建立在已知格所提供的信息上. 而已知格的 数量和分布决定了它们能为游戏者所提供信息的多
少3 . 已知格数量越少, 其分布越不均匀、不对称, 该数 独题通过逻辑推理的求解难度就越大.
由此针对某一道数独题 (见图 2) , 我们给出如下三个
评定项目 (见表 1) , 对其进行 0~ 5 分的评估, 并给这三项 指标赋予相应的权重, 进而求和得到该题的得分 ( 亦为 0
~ 5 分). 将该分数的整数部分用以权衡游戏者需求的难
图 2 数独题评分样例
度等级如下: 等级一, 低级, 0~ 1 分; 等级二, 初级, 1~ 2 分; 等级三, 中级, 2~ 3 分; 等级四,
高级, 3~ 4 分; 等级五, 骨灰级, 4~ 5 分.
表 1 数独题评分表
评分项目详细描述权重得分已知格总数总共 22 个已知, 在等级五范围内0. 45行、列中已知格数的低限第一行中有 0 个已知, 达到等级五的低限0. 35穷举搜索次数263734 次, 等级四0. 34总评等级五, 骨灰级总分4. 7
5 算法详述
整个生成数独题的算法分为两步执行: 先随机生成一个填满数字且符合游戏约束
文档评论(0)