数独的候选数法解题技巧 ──三链列删减法 (Swordfish) 概说 遇到了高级、困难级的数独谜题,使得唯一候选数法和 隐性唯一候选数法黔驴技穷的时候,就是各种删减法上场的时机了。在各种的删减法中,哪一个要先用 是随个人之喜好的,并无限制。本页介绍的例子当然可用其它删减法完成解题,且本删减法成立的条件 和其它方法相比稍嫌繁杂,但为了介绍,在进行解题时还是要以三链列删减法优先啰! <图 1> 请看<图 1>第 1、4、6 列的数字 5 ,都只出现在第 1、5、8 行的宫格候选数中;这时 三链列删减法的条件已成立了!这表示第 1 行、第 5 行及第 8 行的数字 5 将只能被填到第 1 、4、6 列了,因为:第 1 列的数字 5 只出现在(1, 1)及(1, 8),所以数字 5 只能填到这两个宫格; 1. 先假设第 1 列的数字 5 将被填到(1, 1),第 1 行就不能再填数字 5 了,所以第 4 列 的数字 5 只好填到(4, 5),第 6 列的数字 5 只好填到(6, 8); 2. 另外,假设第 1 列的数字 5 将被填到(1, 8),第 8 行就不能再填数字 5 了,所以第 6 列的数字 5 只好填到(6, 1)或(6, 5); 1. 如果第 6 列的数字 5 填到(6, 1),第 4 列的数字 5 就要填到(4, 5); 2. 如果第 6 列的数字 5 填到(6, 5),第 4 列的数字 5 就要填到(4, 1); 不论哪一种情况发生,第 1、5、8 行的数字 5 一定要填在第 1、4、6 列的交点,别的宫格已不能再使用 数字 5 来填入了,所以若其它宫格的候选数中还有数字 5,全部是多余无用的, 可以毫不考虑的把它们删减掉。于是(5, 1)、(5, 5)、(9, 5)和(1, 8)、(2, 8)这五个宫格候选数中的 5 都可被安全的删减掉;其中(9, 5)的候选数少了数字 5,将使得(9, 4)出现列隐性唯一候选数 5 ,于是 可用隐性唯一候选数法来填入下一个解了。 整理一下: 1. 当某个数字在某三列仅出现在相同的三行时,就可以把这三行其它宫格候选数中的该数字删减掉。 2. 同理,当某个数字在某三行仅出现在相同的三列时,就可以把这三列其它宫格候选数中的该数字删减掉。 利用「找出某个数字在某三列仅出现在相同三行的情形,进而将该数字自这三行其它宫格候选数中删减掉」; 或「找出某个数字在某三行仅出现在相同三列的情形,进而将该数字自这三列其它宫格候选数中删减掉」的方法 就叫做三链列删减法(Swordfish)。 本删减法其实是矩形顶点删减法的推广,如果你愿意的话,还可以继续推广: 1. 四链列删减法:利用「找出某个数字在某四列仅出现在相同四行的情形,进而将该数字自这四行其它宫格 候选数中删减掉」;或「找出某个数字在某四行仅出现在相同四列的情形,进而将该数字自这四列其它 宫格候选数中删减掉」的方法 2. 五链列删减法:利用「找出某个数字在某五列仅出现在相同五行的情形,进而将该数字自这五行其它宫格 候选数中删减掉」;或「找出某个数字在某五行仅出现在相同五列的情形,进而将该数字自这五列其它 宫格候选数中删减掉」的方法 3. 六链列删减法:...... 不过如果真的这样做,实际应用时,能够用上的机率大概不多就是了。 遇到了高级、困难级的数独谜题,使得唯一候选数法和 隐性唯一候选数法黔驴技穷的时候,虽然你可以优先使用三链列删减法来寻找下一个解;但大部分的人在 使用删减法的优先级上,通常都会将三链列删减法排在稍后一点,为什么要如此安排,在实际使用一段时间之后, 相信你自能体会了,但这个方法又是不可或缺的,如果不会运用本删减法,有很多高级的数独谜题就将无解了。 三链列删减法示例 三链列删减法只有 2 种状况:第一种的删减发生在行、第二种的删减发生在列。<图 1> 就是 删减发生在行的例子了,第二种的情况举例如下: <图 2> <图 2> 是三链列删减发生在列的例子:图中第 3、5、8 行的数字 2 只出现在第 3、4、5 列, 所以可以将数字 2 自(4, 6)、(5, 6)的候选数中安全的删减掉,其中(5, 6) 的候选数由 2、5 删减成 5 时,出现唯一候选数啦! (责任编辑:admin) |