标签:
杂谈 |
分类: MSN搬家 |
接上篇,越来越高深的技巧了,对于复杂题目有必要了解这些。
隐性三链数删减法(Hidden Triples)
矩形顶点删减法(X-Wing)
三链列删减法(Swordfish)
关键数删减法
数独的候选数法解题技巧──隐性三链数删减法
(Hidden Triples)
概说
遇到了高级、困难级的数独谜题,使得唯一候选数法和
隐性唯一候选数法黔驴技穷的时候,就是各种删减法上场的时机了。在各种的删减法中,哪一个要先用
是随个人之喜好的,并无限制。本页介绍的例子当然可用其它删减法完成解题,但还是要以隐性三链数删减法优先啰!

<图 1>
请看<图 1>的第 2 列,数字 1、7、8 只出现在(2,
1)、(2, 7)和(2, 8)这三个宫格的候选数中;这时 隐性三链数删减法的条件已成立了!这表示第 2 列的数字 1、7 和 8
将只能填到这三个宫格中,因为: 如果让别的数字填入这三个宫格之中后,这三个相异的数字能填入的可能宫格就只剩下两个,而那是
不可能的事!所以若这三个宫格的候选数中还有其它数字,全部是多余无用的,它们已不可能再用来
填入这些宫格中了,所以可以毫不考虑的把它们删减掉。于是(2, 7)和(2, 8)这两个宫格候选数中的 6
都可被安全的删减掉;其中(2, 7)的候选数少了数字 6,将使得(8, 7)出现行隐性唯一候选数 6 ,于是
可用隐性唯一候选数法来填入下一个解了。
整理一下:
1. 当某 3 个数字仅出现在某列的某三个宫格候选数中时,就可以把这三个宫格的候选数删减成该 3 个数字。
2. 同理,当某 3 个数字仅出现在某行的某三个宫格候选数中时,就可以把这三个宫格的候选数删减成该 3 个数字。
3. 当然,当某 3 个数字仅出现在某个九宫格的某三个宫格候选数中时,就可以把这三个宫格的候选数删减成该 3
个数字。
利用「找出某 3
个数字仅出现在某行、某列或某一个九宫格的某三个宫格候选数中的情形,进而将这三个 宫格的候选数删减成该 3
个数字」的方法就叫做隐性三链数删减法(Hidden Triples)。
本法其实为隐性数对删除法的推广,而且还可以继续加以推广:
1. 隐性四链数删减法就是:「找出某 4 个数字仅出现在某行、某列或某一个九宫格的某四个宫格候选数中
的情形,进而将这四个宫格的候选数删减成该 4 个数字」的方法。
2. 隐性五链数删减法就是:「找出某 5 个数字仅出现在某行、某列或某一个九宫格的某五个宫格候选数中
的情形,进而将这五个宫格的候选数删减成该 5 个数字」的方法。
3. ......
如果愿意的话,你确实是可以这样推广的,只是,实用上是否有其应用的价值或空间呢?
隐性三链数删减法示例
隐性三链数删减法一共有 3
种状况:第一种发生在行、第二种是发生在列、第三种则发生在九宫格。<图 1>
就是 发生在列的例子了,其它的情况举例如下:

<图 2>
<图 2> 是隐性三链数删减发生在行的例子:图中第 4 行的数字
2、4、9 只出现在 (4, 4)、(5, 4)及(6, 4) 这三个宫格的候选数中,所以可以将三个宫格候选数中 2、4、9
以外的数字安全的删减掉,(4, 4)的候选数删减成2、4; (5, 4)的候选数删减成2、4、9;(6, 4)的候选数删减成
9;出现了唯一候选数啦!

<图 3>
<图 3>
是隐性三链数删减发生在九宫格的例子:图中中央九宫格的数字 2、5、9 只出现在 (5, 4)、(5, 6)及(6, 4)
这三个宫格的候选数中,所以可以将三个宫格候选数中 2、5、9 以外的数字安全的删减掉, (5, 4)的候选数删减成2、5、9;(5,
6)的候选数删减成2、5;(6, 4)的候选数删减成 9;出现了唯一候选数啦!

<图 4>
像 <图 1>~<图
3> 这样只经一次删减就出现下一个解的情况当然不错了,但有时可没法这样顺心,
<图 4> 就是一个例子。下一个解将出现在(5, 6)
这个宫格,你能找出该填入什么数字吗?
以目前所学到的方法,要解出下一个解,需要二个步骤:
1. 先看中左九宫格吧!由于只剩(5, 1)~(5, 3)这个区块尚未填入数字,所以可用区块删减法将 第 5
列其它区块候选数中的 1、3、4 全部删减掉,但实际上仅能删到(5, 4)及(5, 6)候选数的数字 4 而已。
2. 接下来请观察第 6 行! 由于数字 1、4、9 只出现在 (2, 6)、(8, 6)及(9, 6)
这三个宫格的候选数中 [因为(5, 6)的候选数在上一步骤中已被删减为5、8 了 ], 所以可用隐性三链数删减将三个宫格候选数中
1、4、9 以外的数字安全的删减掉, (2, 6)的候选数删减成1、4、9;(9, 6)的候选数没变;(8, 6)的候选数则由
2、4、5、8、9 删减成 4、9; 由于 5 被删减掉了,使得(5, 6) 出现了行隐性唯一候选数 5 啦!
fk:和隐形数对一样,隐形三链数也是最好在填写候选的时候进行处理,等到最后才去处理的话,并不容易找出来。当然这也要考验你本人的眼力了!!
数独的候选数法解题技巧──矩形顶点删减法
(X-Wing)
概说
遇到了高级、困难级的数独谜题,使得唯一候选数法和
隐性唯一候选数法黔驴技穷的时候,就是各种删减法上场的时机了。在各种的删减法中,哪一个要先用
是随个人之喜好的,并无限制。本页介绍的例子当然可用其它删减法完成解题,且本删减法成立的条件
和其它方法相比稍嫌繁杂,但为了介绍,在进行解题时还是要以矩形顶点删减法优先啰!

<图 1>
请看<图 1>的第 1 列及第 9 列,数字 8 都只出现在第
5、8 行的宫格候选数中;这时,数字 8 在此二列的 填入只有下列两种情形:
1. 第 1 列的数字 8 若填到 (1, 5) 中、则第 9 列的数字 8 就只能填到 (9, 8) 了。
2. 第 1 列的数字 8 若填到 (1, 8) 中、则第 9 列的数字 8 就只能填到 (9, 5) 了。
不论哪一种情况发生,都表示第 5 行及第 8 行的数字 8 已有归属了,所以 ( 2, 5 )~( 8, 5 ) 及 (
2, 8)~( 8, 8 ) 都不能再填入数字 8 了,可以毫不考虑的自它们的候选数中把数字 8 删减掉, 于是(3, 5)、(6,
5)和(3, 8)、(7, 8)这四个宫格候选数中的 8 都可被安全的删减掉;而当(6, 5)的候选数少了数字 8 后,将使得(6,
6)出现列隐性唯一候选数 8 ,于是 可用隐性唯一候选数法来填入下一个解了。
整理一下:
1. 当某个数字在某两列仅出现在相同的两行时,就可以把这两行其它宫格候选数中的该数字删减掉。
2. 同理,当某个数字在某两行仅出现在相同的两列时,就可以把这两列其它宫格候选数中的该数字删减掉。
利用「找出某个数字在某两列仅出现在相同两行的情形,进而将该数字自这两行其它宫格候选数中删减掉」;
或「找出某个数字在某两行仅出现在相同两列的情形,进而将该数字自这两列其它宫格候选数中删减掉」的方法
就叫做矩形顶点删减法(X-Wing)。因为本删减法的条件成立时,关键的数字 8
所处的宫格在数独方阵上看来,刚好就在一个矩形的顶点。
遇到了高级、困难级的数独谜题,使得唯一候选数法和
隐性唯一候选数法黔驴技穷的时候,虽然你可以优先使用矩形顶点删减法来寻找下一个解;但大部分的人在
使用删减法的优先级上,通常都会将矩形顶点删减法排在稍后一点,为什么要如此安排,在实际使用一段时间之后,
相信你自能体会了,但这个方法又是不可或缺的,如果不会运用本删减法,有很多高级的数独谜题就将无解了。
矩形顶点删减法示例
矩形顶点删减法只有 2 种状况:第一种的删减发生在行、第二种的删减发生在列。<图
1> 就是 删减发生在行的例子了,第二种的情况举例如下:

<图 2>
<图 2> 是矩形顶点删减发生在列的例子:图中第 2 行、第 8
行的数字 3 只出现在第 1 列及第 2 列, 所以数字 3 在第 2 行及第 8 行的填入只有下列两种情况:
1. 第 2 行的数字 3 若填到 (1, 2) 中、则第 8 行的数字 3 就只能填到 (2, 8) 了。
2. 第 2 行的数字 3 若填到 (2, 2) 中、则第 8 行的数字 3 就只能填到 (1, 8) 了。
不论下列哪一种情况发生,都表示第 1 列及第 2 列的数字 3 已有归属,这两列其它的宫格将不能再 填入数字 3
了,所以可以将数字 3 自(1, 3)、(1, 5)及(2, 1)、(2, 4)、(2, 5)的候选数中安全的 删减掉,而当(2,
4) 的候选数由 2、3、4、6 删减成 2、4、6 时;(3, 4)将出现行隐性唯一候选数 3 啦!

<图 3>
<图 3> 也是一个删减法综合运用的例子。在(1,
8)中将可找到下一个解,你能找出来吗?
1. 因为上中九宫格的数字 1 只发生在(2, 4)~(2, 6) 这一个区块,所以可以利用区块删减法 把(2,
7)~(2, 9)候选数中的数字 1 安全的删减掉。
2. 因为第 1 行及第 7 行的数字 1 只出现在第 4 列及第 9 列,所以可以利用矩形顶点删减法 把(4,
3)及(9, 6)、(9, 8)、(9, 9)候选数中的数字 1 安全的删减掉。
经过以上删减之后,(1, 8)出现行隐性唯一候选数 1 啦!
fk:这个方法我以前还真没注意到,不过就如同文章中所写的,这个方法的优先级一般会被排的比较低,光是去理解这个方法,就会发现,在实际应用的时候,这个方法是在太复杂了,比【大家来找茬】还要考验人的眼力!!
三链列删减法
(Swordfish)
三链列删减法是矩形顶点删减法的扩展,如果不清除矩形顶点删减法,可以参考矩形顶点删减法,以便于更容易理解本节内容。
利用“找出某个数字在某三列仅出现在相同三行的情形,进而将该数字自这三行其他宫格候选数中删减掉”;
或“找出某个数字在某三行仅出现在相同三列的情形,进而将该数字自这三列其他宫格候选数中删减掉”的方法
就叫做三链列删减法(Swordfish)。

如果数字“1”可能出现在B行、E行、G行的黄色宫格,则符合“某个数字在某三列仅出现在相同三行的情形”,符合三链列删减法的要求。

则红色宫格均不包含候选数“1”。

这时上图的一个变形。其中一行的“1”只能放在这一行的两个位置。 处理和上图一样,红色宫格均可以排除候选数“1”。

数字"6"在第2列,第6列,第8列。均出现在A,B,I行。其中在第6列仅出现B,I行,仍然符合三链列删减法的要求。

则红色宫格均可以排除候选数"6"
fk:这个方法是【矩形顶点删减法】的延续,可以在用【矩形顶点删减法】的时候一并处理。有一个挑战眼力的规则…
关键数删减法
在进入到解题后期,利用前面讲到的唯一候选数法、隐性唯一候选数法、 区块删减法、数对删减法、隐性数对删减法、
三链数删减法、隐性三链数删减法、矩形顶点删减法、
三链列删减法都无法有进展的时候,可以考虑使用关键数删减法。关键数删减法就是在后期找到一个数,这个数在行(或列,九宫格)仅出现两次的数字。我们假定这个数在其中一个宫格类,继续求解,如果发生错误,则确定我们的假设错误。如果继续求解仍然出现困难,不妨假设这个数在另外一个宫格,看能不能得到错误。这就是关键数删减法.
关键数删减法的本质是让我们一个个去测试,逐渐排除不可能的候选数,从而求解的过程。
这种解法就暂时不举例子了
fk:我必须承认这是我最讨厌的方法,基本没有几个游戏支持【分歧点】的设计,而如果通过手算来算的话,这种方法无疑更虐。
(全文完)
前一篇:数独的候选数法解题技巧(中)
后一篇:LOVE FIFTEEN