- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《数独技巧(候选数法)》.doc
4.候选数法(Candidates Elimination Techniques)对于解决数独谜题,最常使用的方法就是直观法和候选数法。在谜题相对简单时,直观法可以取得相当好的效果。但是如果谜题比较复杂,直观法的效果就十分有限,即使通过试探性填数也不一定能够解题,而这时候选数法却可以很好地发挥作用。在对数独谜题求解的电脑程序的设计上,候选数法也因为高效易实现而被广泛应用。
如果用候选数法来解题,必须首先准备一张如下图所示的候选数栅格表:初始化时,每个单元格中都包含了1至9所有的数字,它表示该单元格中在解题时还可以选择填入的数字。很明显,不在候选数中的数字是不能够填入该单元格中的。如果某一单元格中已填入一个确定的数字,则根据数独游戏的规则,即该单元格所在行,列及区块中都不能再出现这个数字,则该数字应从这些单元格中的候选数字中去除。对于下面的这个谜题:
每填入一个数字时,都要将该单元格中的候选数全部删除,同时扫描其所在行,列和区块,看它们所覆盖的单元格上的候选数中有无该数字:
如果有,就把该数字从候选数中删除:同理,填入谜题中其他的初始数字,并删除这些数字各自所在行,列和区块候选数中的该数字,可以得到下面的候选数栅格表:
注意,填入数字的顺序与最终的候选数栅格表无关。
这时,我们发现每个单元格中的候选数已经比最初少了许多,真是一个令人兴奋的开始。随后,我们将辅以各种候选数删减技巧,进一步减少候选数的个数,当某单元格中只剩下唯一的候选数时,该单元格就得到了它的唯一解。细心的朋友已经发现,在上面的候选数栅格表中,单元格[I1]中已经剩下唯一候选数1,这时我们就可以通过显式唯一法来解题了。 在候选数删减法中,常用的算法包括:
显式唯一法 (Naked Single)
隐式唯一法 (Hidden Single)
区块删减法 (Intersection Removal)
显式数对法 (Naked Pair)
显式三数集法 (Naked Triplet)
显式四数集法 (Naked Quad)
隐式数对法 (Hidden Pair)
隐式三数集法 (Hidden Triplet)
隐式四数集法 (Hidden Quad)
矩形对角线法 (X-wing)
XY形态匹配法(XY-wing)
XYZ形态匹配法(XYZ-wing)
三链数删减法 (Swordfish)
WXYZ形态匹配法(WXYZ-wing) 显式唯一法 (Naked Single)这是候选数删减法中最简单的一种方法,就是扫描候选数栅格表,如果哪个单元格中只剩下一个候选数,就可应用显式唯一法,在该单元格中填入这个数字,并在相应行,列和区块的候选数中删除该数字。
在下面的图中:
单元格[I1]有唯一的候选数1,则毫无疑问地把数字1填入该单元格中,并扫描其所在行,列和区块的候选数中有无数字1:
如果有,则把1从这些单元格的候选数中删除:
显式唯一法虽然简单,但却是最有效的候选数删减法之一;尤其在谜题相对简单时,有时单单使用显式唯一法就可以解题。
4.2隐式唯一法 (Hidden Single)见文知义,隐式唯一法也是唯一候选数法的一种,但它肯定不如显式唯一法那样显而易见。我们知道,如果某一个单元格中只有一个候选数字,这时可以毫不犹豫地填入它;但是有没有这种情况,即使某个单元格中有不止一个候选数字,我们也可以轻易地推断出这个单元格的正确解答呢?
考虑下面的情况:
在第7列中,单元格[B7]中虽然有多个候选数,但观察整列后我们发现,只有这个单元格中有数字6。根据数独游戏的规则,每一列中都必须要有从1到9的所有数字,而同时6却只能出现在这个单元格中,所以很显然[B7]=6。当然,别忘了把6从[B7]所在的行,列和区块中删除。
同样,在下图中:
观察行B后我们发现,只有单元格[B8]中含有数字7。同理,[B8]是该行中唯一可以填入数字7的单元格,所以[B8]=7。另外,我们还要扫描相应行,列和区块,删除其中的候选数7。
当然,这种隐藏的唯一候选数也可能躲在区块中,看下图:对于起始于[A1]的区块而言,数字8只出现在单元格[A2]的候选数中,所以[A2]=8。从相应行,列和区块,删除其中的候选数8。隐式唯一法是显式唯一法的有力补充,很多稍复杂的题都可以在这两种方法的交替使用下得以解决。
区块删减法 (Intersection Removal)应用显式唯一法和隐式唯一法只能解决简单的谜题,遇到稍复杂的谜题,还是要靠其他的方法。区块删减法也是比较常用的方法,它的目的是尽量删减候选数,而不一定要生成某一单元格的唯一解(当然,产生唯一解更好)。区块删减法是利用区块中的候选数和行或列上的候选数之间的交互影响而实现的一种删减方法,它分为两种情况:
区块对行或列的影响
观察
文档评论(0)