您现在的位置:主页 > www.86939.com >

数独方法及技巧(小图)

发布日期:2019-10-08 20:28   来源:未知   阅读:

  数独方法及技巧(小图)_三年级数学_数学_小学教育_教育专区。数独技巧(Sudoku Strategies) 数独快速入门(上篇) 数独快速入门(中篇) 数独快速入门(下篇) 数独快速入门(上篇) 数独快速入门(上篇) 范例一: 范例一: 在左边第一个九宫格

  数独技巧(Sudoku Strategies) 数独快速入门(上篇) 数独快速入门(中篇) 数独快速入门(下篇) 数独快速入门(上篇) 数独快速入门(上篇) 范例一: 范例一: 在左边第一个九宫格里,哪格可以放数字1, 先看到再第一列和第二列里已经有了数字1, 所以很明显了,除了棕色格子之外,上面两列格子已经不能放1了。 范例二: 范例二: 换个进阶范例来看看, 已知第一列和第二列不能放1,但仅就第三列而言,2的旁边似乎都可以放1的样子, 1 但再看看被颜色标示的第三行, 看到第三行有1之后,就知道棕色格子应该放1。 范例三: 范例三: 来个更进阶点的,想想左上角第一个九宫格里,哪一格可以放1, 再看 先看看前两列,应该不能放1, 2 看被颜色标示的第二行与第三行,又是不能放1, 很显然的,就只有棕色格子能放1。 范例四: 范例四: 再看看这个重要范例,想想左上角第一个九宫格里,哪格可以放1, 先看看被颜色标示的第二列, 3 再看看被颜色标示的第二行, 经过分析后可知1要放在这棕色格子。 范例五: 范例五: 换个轻松点的范例, 看看第一列,数字有哪些, 显而易见的就是缺1。 数独快速入门(中篇) 数独快速入门(中篇) 范例一: 范例一: 看看这个比上篇难的,想想1能放在哪里呢, 4 被颜色标示起来的第一列和第一行已经不能放1了, 就左上角的九宫格而言,在红色标示区域似乎是可以摆1的, 但在这里而言,似乎无法决定1放在两格红色区域的哪一格, 所以,可以先看看邻近的九宫格,发现到棕色格子能放1喔,这时候就不用怀疑马 上写下1。 范例二: 范例二: 看看这个有技术性的,想想1能放在哪里, 看到黄色的第一列已经有1,所以不能再放1了, 5 就中央的九宫格而言, 合理的推论,1一定是在第二列中央红色三格的其 中之一了, 既然知道第二列的情况,再考虑黄色区域后, 那么可以先确定右方九宫格的1必然放在这棕色格子。 范例三: 范例三: 由上篇的概念再进阶,考虑这上面三个九宫格,看看能否决定1的位置, 黄色标示的第三行已先被排除, 就第一个九宫格而言,1一定在红色区域, 6 就黄色标示区域来看,已不能再放1了, 这时可以马上先决定右上九宫格里的棕色格子是能放1的啦。 范例四: 范例四: 看到这左上方九宫格的第一列,就可以马上知道缺了哪两个数字, 是不是已经看出红色格子不是1就是9了, 但是又看到第二行有1,所以很轻松知道左上棕色格子一定是1, 接下来9就确定在红色格子了。 7 范例五: 范例五: 先看看这第一列, 左上方的九宫格里,第一列绝对有1、8、9, 再考虑到第一行黄色区域,看到有8和9, 这下就可确定1绝对放在左上角的棕色格子。 数独快速入门(下篇) 数独快速入门(下篇) 范例一: 范例一: 来看看这个高级进阶例子,可以先把眼光放在第一列和第一行, 8 看到在黄色区域里都有2和3,所以此黄色区域已经不能再放2和3了, 这时可以考虑到左上九宫格里的红色格子能放2和3, 再看到第一列和第三列的黄色区域,这黄色区域里已经不能放1, 在左上九宫格里, 能放1的只有红色与棕色格子, 但红色格子将会被2和 3所占据,所以能确定棕色格子必然为1。 范例二: 范例二: 看看左上方九宫格里,能否由些微线 首先,看到第一列后先排除5、6、7,又因左上方九宫格里有2、3、 4,再排除这三个数字,这下,在左上方九宫格的第一列,只剩下1、8、9可以填,然后,又看到第一 行有8和9,所以,棕色格子必然不会是8和9,那么,就只剩下1可以填入啦! ? ? 直观法(Direct Elimination Techniques) 候选数法(Candidates Elimination Techniques) 直观法(Direct 直观法(Direct Elimination Techniques) 经常在报章杂志上看到的数独谜题,一般就算再难都可以用直观法 直观法来解决。它不需要象候选数法 直观法 (Candidates Elimination Techniques)那样在每个空白的单元格中用铅笔填上一大堆候选数。你只要有 相对锐利的眼光和一定的逻辑分析能力,就可以准确地把空余的数字逐个填出来。实际上,直观法 直观法就是对 直观法 数独游戏规则的充分利用。虽然它并不如候选数法(Candidates Elimination Techniques)那样强大,但 通常要想体会解决数独谜题的乐趣,使用直观法 直观法却是不二之选。 直观法 直观法(Direct Techniques)具有以下的特点 具有以下的特点: 直观法(Direct Elimination Techniques)具有以下的特点: 轻松上手。 即便是数独新手,在拿到谜题的一刹那,就可以用直观法 直观法来解题了。 直观法 无需辅助。 在纸上解题时一般只需要一支钢笔就可以。因为是通过推理和逻辑分析来确定哪个格填 哪个数,或是哪个数填在哪个格里,所以基本不需要猜测。 容易掌握。 对于直观法(Direct Elimination Techniques) 直观法(Direct Techniques)中应用的各种算法,可以很快掌握并应用 直观法 于实际中。 相对简单。比起候选数法(Candidates Elimination Techniques),它的算法相对比较简单,当然能 解决的谜题的复杂度也相对要低。 在直观法(Direct Techniques)中 常用的算法包括: 在直观法(Direct Elimination Techniques)中,常用的算法包括: 1.单元唯一法 2.单元排除法 3.区块排除法 4.唯一余数法 5.组合排除法 6.矩形排除法 ( ( ( ( ( ( Sole Position Technique ) Basic Elimination Technique ) Block Elimination Technique ) Sole Number Technique ) Combination Elimination Technique) Rectangle Elimination Technique) 1.单元唯一法 1.单元唯一法 ( Sole Position Technique ) 这应该算是直观法中最简单的方法了。基本上只需要看谜题,推理分析一概都用不上,这是因为要使 用它所需满足的条件十分明显。同样,也正是因为它简单,所以只能处理很简单的谜题,或是在处理较复 杂谜题的后期才用得上。 我们先来看一个例子: 10 在上图中,观察行 B,可以看到除了[B3]外,其他所有的单元格中都已有了数字,根据数独游戏的规 则,即每行,列或区块中不能有重复的数字,则[B3]中能填入的数字只能是行 B 中所未出现过的,也就是 数字 3。所以可以毫不犹豫地在[B3]中填入 3。 这就是单元唯一法在 单元唯一法在行中的应用。这里的单元(Unit, or group),指的是行,列或区块。所以有三种 单元唯一法在 情况: 当某行有 8 个单元格中已有数字,或 当某列有 8 个单元格中已有数字,或 当某区块有 8 个单元格中已有数字。 无论是哪种情况,我们都可以很快地在该行,列或区块剩余的空格中填入该单元还未出现过的数字。 下面是单元唯一法 单元唯一法在列中的应用: 单元唯一法 在第 7 列中,只有[F7]未填入数字,且这一列中数字 8 还未出现过。所以[F7] = 8。 在区块中也是一样: 11 在起始于[D7]的区块中,只有[E7]还未填入数字,且这个区块中数字 5 还未出现过,所以可以马上在 [E7]中填入 5。 单元唯一法在解题初期应用的几率并不高,而在解题后期,随着越来越多的单元格填上了数字,使得 单元唯一法 应用这一方法的条件也逐渐得以满足。 2.单元排除法 2.单元排除法 ( Basic Elimination Technique ) 单元排除法是直观法中最常用的方法, 也是在平常解决数独谜题时使用最频繁的方法。 使用得当的话, 单元排除法 甚至可以单独处理中等难度的谜题。 使用单元排除法 单元排除法的目的就是要在某一单元(即行,列或区块)中找到能填入某一数字的唯一位置,换 单元排除法 句话说,就是把单元中其他的空白位置都排除掉。它对应于候选数法中的隐式唯一法。 那么要如何排除其余的空格呢?当然还是不能忘了游戏规则,即行,列或区块中不能有重复的数字。 从另一个角度来理解,就是 如果某行中已经有了某一数字,则该行中的其他位置不可能再出现这一数字。 如果某列中已经有了某一数字,则该列中的其他位置不可能再出现这一数字。 如果某区块中已经有了某一数字,则该区块中的其他位置不可能再出现这一数字。 单纯理解上面的规则还是不足以解题,但是在实践中这些规则却可以交叉使用。在实际解题过程中, 应用最多也最方便的是对区块的单元排除法 单元排除法,我们可以先看下面这个例子: 单元排除法 12 对于起始于[D1]的区块,其未填数字的空格有 6 个之多,如果不使用单元排除法 单元排除法,是很难为这一区块 单元排除法 填入任何数字的。这时我们就可以利用行,列及区块的相互关系,即一个单元格既在某一行上,也同时在 某一列上以及某一区块中的这种关系来解题。 观察数字 9 在谜题中的位置,可以看到它出现在[B2],[A4],[C7],[D8],[I1]和[H9]。而这些位 置中,只有[B2],[D8]和[I1]与起始于[D1]的区块有关联。因为[I1]=9,它所在的第 1 列上的其他单元格 中不可能再出现 9, 而区块中的[D1]和[F1]正好也在第 1 列上, 所以这两个单元格填入 9 的可能性被排除。 同理,因为[B2]=9,它所在的第 2 列中的其他单元格不可能再填入 9,而区块中的[D2]和[E2]也正好在第 2 列上,因此,这两个单元格填入 9 的可能性也被排除掉了。再看行 D,因为[D8]=9,所以该行上的[D1], [D2]和[D3]也不可能再填入 9,而这些单元格正好也在起始于[D1]的区块中。所以,这个区块中能填入数 字 9 的位置就只剩下了[E3],这样就通过排除法找到了答案,即[E3]=9。 下面再看一个在行中使用单元排除法 单元排除法的例子: 单元排除法 在谜题中观察数字 4 和行 H,在行 H 有 5 个空单元格无法确定数字,但是[C3]位置上的 4 使得其所在 的第 3 列中的其他单元格上不能再出现 4,所以[H3]不能填入 4。[I4]上的 4 使得其所在的区块中也不能 再填入 4,它帮助行 H 排除了两个单元格[H4]和[H6],而第 8 列上的[E8]中的数字 4 使得同样位于这一列 上的[H8]也排除了填入 4 的可能。这样,行 H 中能填入 4 的位置就只剩下[H9]了。 在列中也可以使用单元排除法 单元排除法: 单元排除法 13 在第 7 列中,我们试图确定能填入数字 1 的位置。在行 B 中,数字 1 已经出现在[B2]上,所以[B7]不 可能再填入数字 1 了。而位于[D8]的数字 1 也使得[F7]排除了填入数字 1 的可能,因为它们位于同一区块 中。这样,第 7 列上就只有[A7]能填入数字 1 了。 通过上面的示例,可以看到,要对区块使用单元排除法 单元排除法,需要观察与该区块相交的行和列。要对行使 单元排除法 用单元排除法 单元排除法,需要观察与该行相交的区块和列。要对列使用单元排除法 单元排除法,需要观察与该列相交的区块和 单元排除法 单元排除法 行。 在实际解题过程中,行,列和区块之间的关系并不象上面这些图中所示的那么明显,所以需要一定的 眼力和细心观察。一般来说,先看哪个数字在谜题中出现得最多,就从哪个数字开始下手,找到还未填入 这个数字的单元(行,列或区块) ,利用已填入该数字的单元格与单元之间的关系,看能不能排除一些不 可能填入该数字的位置,直到剩下唯一的位置。如果害怕搞不清已经处理过哪些数字的线 开始,从左上角的区块开始一直检查到右下角的区块,看能不能在这些区块中应用单元排除法 单元排除法。然后测试 单元排除法 数字 2,以此类推。 单元排除法是应用得最多的直观法,虽然在实践中经常会因为粗心而漏掉很多使用这一方法的机会, 单元排除法 但只要勤加练习,就可以运用自如。 3.区块排除法 3.区块排除法 ( Block Elimination Technique ) 区块排除法是直观法中进阶的技法。虽然它的应用范围不如单元排除法那样广泛,但用它可能找到用 区块排除法 单元排除法无法找到的解。有时在遇到困难无法继续时,只要用一次区块排除法 区块排除法,接下去解题就会势如破 区块排除法 竹了。 区块排除法实际上是利用区块与行或列之间的关系来实现的,这一点与单元排除法颇为相似。然而, 区块排除法 它实际上是一种模糊排除法,也就是说,它并不象单元排除法那样利用谜题中现有的确定数字对行,列或 区块进行排除,而是在不确定数字的具体位置的情况下进行排除的。这句话听起来似乎不好理解,让我们 先从一个例子入手,看看区块排除法 区块排除法是怎么应用的。 区块排除法 对于上面这个谜题,用基本的单元排除法或是单元唯一法都无法再找到解。这时可以尝试使用区块排 区块排 除法。 除法 我们先从填入数字最多的区块着手,也就是起始于[G4]的区块,该区块中只有[H6]和[I5]为空,且剩 余数字 1 和 2 还未填入。这样,我们可以想办法确定这两个数字的位置。 观察全局, 可以看到[D2]=2, 根据单元排除法, 它所在的第 2 列上不能再出现数字 2, 所以[H2]和[I2] 将不能填入 2,这使得起始于[G1]的区块中数字 2 可能出现的位置仅剩下[I1]和[I3],见下图: 14 虽然我们无法确定 2 在起始于[G1]的区块中的确定位置,但幸运的是,能填入 2 的位置正好都在行 I 上,也就是说,无论 2 在[I1]还是在[I3],行 I 的其他单元格中将不可能再出现数字 2,所以可以毫不犹 豫地排除在[I5]填入 2 的可能性,这样,对于起始于[G4]的区块而言,能填入数字 2 的位置就只剩下[H6] 了。所以[H6]=2。接下来,当然毫无疑问,利用单元唯一法,在[I5]填入数字 1。 先小结一下上面的求解方法:解题时,实际上是在对目标区块(主区块)有影响的区块(辅助区块) 中应用单元单元排除法,使辅助区块满足某些条件并能参与对主区块的数字排除。 实际应用中,可能出现下面四种情况: 当某数字在某个区块中可填入的位置正好都在同一行上,因为该区块中必须要有该数字,所以这一行 中不在该区块内的单元格上将不能再出现该数字。 当某数字在某个区块中可填入的位置正好都在同一列上,因为该区块中必须要有该数字,所以这一列 中不在该区块内的单元格上将不能再出现该数字。 当某数字在某行中可填入的位置正好都在同一区块上,因为该行中必须要有该数字,所以该区块中不 在该行内的单元格上将不能再出现该数字。 当某数字在某列中可填入的位置正好都在同一区块上,因为该列中必须要有该数字,所以该区块中不 在该列内的单元格上将不能再出现该数字。 其中 1,2 两种情况相对常见,也比较容易判断。上面的示例就是第 1 种情况。下面我们会看到第 2 种情况的例子: 15 虽然在起始于[A7]的区块中,未填入数字的空单元格多达 4 个,但我们还是可以轻松地确定数字 5 的 位置。这是因为在起始于[G7]的区块中,我们欣喜地发现数字 5 可能出现的位置正好都在第 8 列上,这时 5 的确切位置已经不重要了, 因为它已经满足了上面介绍的第 2 种情况的条件, 因此可以参与对起始于[A7] 的区块进行数字排除了。在它的影响下,[A8]和[B8]中填入数字 5 的可能性已经不存在,因为它们都在第 8 列上。这样,在起始于[A7]的区块中,数字 5 能填入的位置只剩下[A9]和[C9]了。这时,我们再利用单 元排除法,通过[A4]位置上的数字 5 再消除其所在行 A 上的[A9],最终得到能填入 5 的唯一位置[C9]。 下面看几个比较少见的例子 在行 C 上,数字 3 的位置可以通过下面的方法来确定: 先看行 B,利用单元排除法,通过[H2]和[F3]位置上的 3 进行列排除,得到行 B 中能填入 3 的位置为 [B4]和[B5]。碰巧的是,这两个单元格都在起始于[A4]的区块中,这时已经满足了上述情况 3 的条件。利 用单元排除法的区块排除,则行 C 上的[C4]和[C5]都不能再填入 3;再加上[F3]的列排除的共同努力,最 终确定数字 3 在行 C 上的唯一位置就是[C1]。 第 4 种情况的例子如下: 在这个示例中,只是使用单元排除法和单元唯一法到这一步就继续不下去了。要想求得数字 8 在第 6 列的位置,就必须要借助区块排除法。先看第 4 列,通过位于[C3]和[I8]的数字 8 的行排除,使 8 在第 4 列可能填入的位置只剩下[D4]和[F4],而这两个单元格正好都在起始于[D4]的区块中。因为第 4 列不能没 有数字 8,而数字 8 如果填在区块中的其他位置(如[D6],[E6]或[F6])时将迫使[D4]和[F4]上不能再填 16 入 8,这样会导致第 4 列没有数字 8。因此,第 6 列中的[D6],[E6]和[F6]能填入数字 8 的可能性被排除。 这样第 6 列中就只剩下[B6]能填入 8 了。 实际解题过程中,还会碰到比较复杂的情况,看下面的谜题: 你能确定数字 3 在起始于[A1]的区块中的位置吗?先看位于[C5]的数字 3, 它不仅排除了同一行中[C1] 和[C3]中填入 3 的可能性,也同时排除了同一行中[C8]和[C9]填入 3 的可能性,这使得在起始于[A7]的区 块中,能填入 3 的位置只剩下[B8]和[B9],见下图: 利用区块排除法 区块排除法,在起始于[A7]的区块中,无论 3 在[B8]还是[B9],行 B 中的其他位置都不能再填入 区块排除法 3,所以[B1],[B2]和[B3]都被排除。于是,在起始于[A1]的区块中,能填入 3 的位置仅剩下[A1]和[A2] 了。但至此我们还无法确定 3 的准确位置,这时我们还要借助于其他的辅助区块来进一步排除。 17 观察起始于[D1]的区块,利用[D7]位置上的 3 排除同一行的[D1],以及用[G3]位置上的 3 排除同一列 的[E3]和[F3],使区块中可能填入 3 的位置只余[E2]和[F2],刚好这两个位置都在第 2 列中,符合上面介 绍的第 2 种情况,于是可以把[A2]也排除掉。最后,我们就可以很肯定地在[A1]中填入数字 3 了。 这个例子同时使用了多个辅助区块同时参与排除。在实际使用中虽然这种情况并不常见,但却也不少 见。关键在于如何能正确识别并恰当应用区块排除法 区块排除法。相信通过大量的练习并勤于分析思考,这种方法就 区块排除法 可以运用自如,得心应手。 下面是其他的一些例子,可以帮助更好地理解并掌握这种技法: 18 4.唯一余数法 4.唯一余数法 ( Sole Number Technique ) 唯一余数法是直观法中较不常用的方法。虽然它很容易被理解,所以说明这个方法不需要很大篇辐, 唯一余数法 然而在实践中,却不易看出能够使用这个方法的条件是否得以满足,从而使这个方法的应用受到限制。 与单元唯一法相比,唯一余数法 唯一余数法是确定某个单元格能填什么数的方法,而单元唯一法是确定某个数能填在 唯一余数法 哪个单元格的方法。另外,应用单元唯一法的条件十分简单,几乎一目了然。 与候选数法相比,唯一余数法 唯一余数法相当于显式唯一法。虽然显式唯一法是候选数法中最简单且应用最容易 唯一余数法 的方法,但在 直观法中却正好相反。 先看一个例子: 19 对于单元格[G9]应该填入什么数字,就算你把前面介绍的所有直观技法都用上,也不得而知。然而, 我们通过观察它所在的行,列和区块,可以发现除了数字 2 以外,1 到 9 中其他的数字都出现了,其中行 G 中包含了 7,6,9,5,3 和 8,第 9 列中包含了数字 5,8,7 和 1,起始于[G7]的单元格中包含了 3,8, 4,7,5 和 1。这样,如果[G9]不填入数字 2,就一定会违反游戏“行,列或区块不能出现重复数字”的规 则。所以[G9]中的数字一定是 2 总结一下,就是如果某一单元格所在的行,列及区块中共出现了 8 个不同的数字,那么该单元格可以 确定地填入还未出现过的数字。 怎么样,很简单吧,但在实践中却不那么容易识别。看下面的谜题: 你能看出来对哪个单元格应用唯一余数法 唯一余数法吗? 唯一余数法 还有这个谜题: 20 答案分别是[E6]=9 和[I7]=9。 一般来说,只有在使用基本的排除方法都失效的情况下,才试着使用这个方法来解题。 5.组合排除法 5.组合排除法 ( Combination Elimination Technique) 组合排除法和区块排除法一样, 都是直观法中进阶的技法, 但它的应用范围要更小一点。 一般情况下, 组合排除法 基本没有机会用到这种方法解题,所以要找到相应的例子也都很困难。当然,如果你希望优先以这个技法 来解题的话,还是能碰到很多能符合使用组合排除法条件的情况。 组合排除法,顾名思义,要考虑到某种组合。这里的组合既包括区块与区块的组合,也包括单元格与 组合排除法 单元格的组合,利用组合的关联与排斥的关系而进行某种排除。它也是一种模糊排除法,同样是在不确定 数字的具体位置的情况下进行排除的。下面先看一个例子: 对于上面这个谜题,你能确定数字 6 在起始于[G4]的区块中的位置吗? 要想获得正确的答案初看起来有些困难。因为虽然在[G9]和[H3]已经存在了两个 6,但是利用它们只 能行排除区块中的[G4]和[H6]两个单元格,千里马买码高手论坛,还是无法确定 6 到底是在[I4]还是在[I5]中。这时候,组合排 组合排 除法就派上用场了。 除法 现在撇开起始于[G4]的区块,先看它上面的两个区块,即起始于[A4]和[D4]的区块。这几个区块的共 21 同特点是占有同样的几列,也就是第 4 列至第 6 列,因此它们之间的数字会相互直接影响。 对于起始于[A4]的区块,利用[A1]处已有的数字 6 进行行排除,可以得到这个区块中可能填入 6 的位 置只剩下两个:[B5]和[C6]。 对于起始于[D4]的区块,利用[E7]处已有的数字 6 进行行排除,可以得到 这个区块中可能填入 6 的位置也剩下两个:[F5]和[F6]。 这时,我们仍无法确定 6 在这两个区块中的确切位置。但不妨对可能出现的情况作一下分析: 假设在起始于[A4]的区块中,[B5]=6,则同一区块中的[C6]必不为 6,而且[B5]还将列排除[F5],这 样在起始于[D4]的区块中,只有[F6]=6。 假设在起始于[A4]的区块中,[C6]=6,则同一区块中的[B5]必不为 6,而且[C6]还将列排除[F6],这 样在起始于[D4]的区块中,只有[F5]=6。 简单地说,只有两种可能:[B5]=6 且[F6]=6,或者[C6]=6 且[F5]=6。决不会再出现其他的情况。但 无论是其中哪一种情况,第 5 列和第 6 列都会有确定的 6 出现在这两个区块中,也就是说,第 5 列和第 6 列的其他位置不可能再出现数字 6。这样,原本无法肯定的 6 在起始于[G4]区块中的位置,一下子就变得 明确了。 利用起始于[A4]和[D4]的区块对起始于[G4]的区块进行列排除,可以把[I5]排除掉,这样,就只剩下 [I4]可以填入 6 了。 小结一下,组合排除法的要满足的条件如下: 如果在横向并行的两个区块中,某个数字可能填入的位置正好都分别占据相同的两行,则这两行可以 22 被用来对横向并行的另一区块做行排除。 如果在纵向并行的两个区块中,某个数字可能填入的位置正好都分别占据相同的两列,则这两列可以 被用来对纵向并行的另一区块做列排除。 让我们再看一个例子: 要想确定数字 1 在起始于[D4]的单元格中的位置,我们将设法借助于其横向上相邻两个区块的帮助。 利用[I2]的列排除,我们可以把起始于[D1]的区块中的[E2]和[F2]排除掉,这样,这个区块中能填入 1 的位置剩下[D1],[D3]和[E1]。 利用[H7]的列排除,可以把起始于[D7]的区块中的[E7]和[F7]排除掉, 再利用[A9]的列排除, 可以把这个区块中[E9]和[F9]排除掉, 这样, 这个区块中能填入 1 的位置只剩下[D8] 和[E8]。 虽然在起始于[D1]的区块中,能填入 1 的位置多达 3 个,但是它们正好只分布在行 D 和行 E 上,而且 在起始于[D7]的区块中能填入 1 的位置所占据的也是这两行。最终 1 的位置只可能有三种情况:[D1]=1 且 [E8]=1;或者[D3]=1 且[E8]=1;或者[E1]=1 且[D8]=1。无论是哪种情况,行 D 和行 E 都会有确定的 1 出 现在这两个区块中,也就是说,这两行的其他位置不会再出现 1。于是, 23 借助于这两个区块的行排除,我们可以把起始于[D4]的区块中的[D4]和[D6]排除掉,再利用[G4]位置 的列排除,最终确定 1 的位置在[F6]。 下面是其他一些使用组合排除法 组合排除法的例子: 组合排除法 24 在实践中,组合排除法 组合排除法的实际应用机会不如区块排除法多。但是,掌握这一技法无疑可以大大提高求 组合排除法 解谜题的灵活性,从而增加解题的乐趣。 6.矩形排除法 6.矩形排除法 ( Rectangle Elimination Technique) 矩形排除法虽然浅显易懂,但一般在实际解题的时候应用得却比较少。这是因为即使谜题中存在满足 矩形排除法 使用这一方法的情况,也很难直接看出来。然而,相对组合排除法而言,在解题过程中倒是能有更多的机 会用上矩形排除法 矩形排除法。下面先看一个例子: 矩形排除法 对于这个谜题,如果不用矩形排除法 矩形排除法是无法继续下去的。我们将通过讲解这种技法,从而找到数字 8 矩形排除法 在起始于[G1]的区块中的位置。乍看之下,好象一筹莫展。因为[B2]和[E3]上的 8 只能列排除左下角这个 区块中的[G2], [H2],[G3]和[I3]这 4 个单元格,这时仍剩下两个单元格[G1]和[H1]无法确定。 让我们先来留意一下第 6 列, 这一列中暂时没有 8, 那么 8 可能会填入哪几个单元格中呢?首先, [B2] 中的 8 行排除了[B6],而[E3]和[F4]中的 8 又分别行排除了[E6]和[F6]。这样,能填入 8 的位置就只剩下 [C6]和[I6]了。见下图: 25 同样, 对于第 9 列, 由于[F4]的行排除, [F9]不可能填 8, 所以这一列能填入 8 的位置也就只剩下[C9] 和[I9]了。 凑巧的是,这两列中能填入 8 的位置都在同样的两行上,即行 C 和行 I。这时就为我们应用矩形排除 法创造了前提条件。 如果第 6 列中[C6]=8,那么[I6]和[C9]一定不能是 8。而第 9 列这时就只剩下[I9]能填入 8 了; 又或者如果第 6 列中[I6]=8,那么[C6]和[I9]一定不能是 8,而第 9 列就只剩下[C9]能填入 8 了。 不可能再有第 3 种情况。所以,要么[C6]=8 且[I9]=8,要么[I6]=8 且[C9]=8。但无论是哪种情况, 不难发现,行 C 和行 I 都已填入了 8,所以这两行的其他位置不可能再填入 8。我们正好可以利用这一点 来进行排除。 观察起始于[G1]的区块,我们已经知道现在只剩下[G1]和[I1]两个单元格无法确定了,通过上面的分 析,利用矩形排除法 矩形排除法排除位于行 I 上的[I1],就可以确定数字 8 一定在[G1]上。 矩形排除法 总结一下,使用矩形排除法 矩形排除法的条件如下: 矩形排除法 如果一个数字在某两行中能填入的位置正好在同样的两列中,则这两列的其他的单元格中将不可能再 出现这个数字; 如果一个数字在某两列中能填入的位置正好在同样的两行中,则这两行的其他的单元格中将不可能再 出现这个数字。 26 让我们再来看一个例子: 做到这一步时,不用矩形排除法的话恐怕是走投无路了。这次还是要在起始于[G1]的区块中找到数字 4 的位置。但我们无法确定 4 究竟在[G2]还是[G3]呢? 先要找找看有没有满足矩形排除法条件的情况存在。观察行 B,在这一行中,由于[C5]的区块排除, [B4]和[B5]都不能为 4,再加上[H8]列排除了[B8],这样行 B 中能填入 4 的位置包括[B1]和[B3]。 再看行 F,由于[D6]的列排除,使得[F6]不能填 4,所以行 F 中能填入 4 的位置只有[F1]和[F3]。 幸运的是,行 B 和行 F 中能填入 4 的位置正好都位于同样的两列上,即第 1 列和第 3 列。根据上面矩 形排除法的规则,第 1 列和第 3 列中不在行 B 和行 F 上的单元格中不能填入 4,所以[G3]不能为 4。这样, 起始于[G1]的区块中就只有[G2]能填入 4 了。 下面是应用矩形排除法的其他一些例子,希望可以帮助大家快速掌握这种方法: 27 矩形排除法可以说是直观法中最困难的技法,因为当前的谜题即使满足应用这一方法的条件,也实在 矩形排除法 太难发现了。一般情况下,尽量先使用其他相对简单的直观法。如果最后连矩形排除法 矩形排除法都用上还是无法解 矩形排除法 题,你可能就需要尝试候选数删减法了。 28 候选数法(Candidates Elimination Techniques) 候选数法(Candidates 对于解决数独谜题,最常使用的方法就是直观法和候选数法 候选数法。在谜题相对简单时,直观法可以取得相 候选数法 当好的效果。 但是如果谜题比较复杂, 直观法的效果就十分有限, 即使通过试探性填数也不一定能够解题, 而这时候选数法 候选数法却可以很好地发挥作用。在对数独谜题求解的电脑程序的设计上,候选数法 候选数法也因为高效易 候选数法 候选数法 实现而被广泛应用。 如果用候选数法 候选数法来解题,必须首先准备一张如下图所示的候选数栅格表: 候选数法 初始化时,每个单元格中都包含了 1 至 9 所有的数字,它表示该单元格中在解题时还可以选择填入的 数字。很明显,不在候选数中的数字是不能够填入该单元格中的。如果某一单元格中已填入一个确定的数 字,则根据数独游戏的规则,即该单元格所在行,列及区块中都不能再出现这个数字,则该数字应从这些 单元格中的候选数字中去除。对于下面的这个谜题: 每填入一个数字时,都要将该单元格中的候选数全部删除,同时扫描其所在行,列和区块,看它们所 覆盖的单元格上的候选数中有无该数字: 29 如果有,就把该数字从候选数中删除: 同理,填入谜题中其他的初始数字,并删除这些数字各自所在行,列和区块候选数中的该数字,可以 得到下面的候选数栅格表: 30 注意,填入数字的顺序与最终的候选数栅格表无关。 这时,我们发现每个单元格中的候选数已经比最初少了许多,真是一个令人兴奋的开始。随后,我们 将辅以各种候选数删减技巧,进一步减少候选数的个数,当某单元格中只剩下唯一的候选数时,该单元格 就得到了它的唯一解。细心的朋友已经发现,在上面的候选数栅格表中,单元格[I1]中已经剩下唯一候选 数 1,这时我们就可以通过显式唯一法来解题了。 在候选数删减法 候选数删减法中,常用的算法包括: 候选数删减法 1.显式唯一法 (Naked Single) 2.隐式唯一法 (Hidden Single) 3.区块删减法 (Intersection Removal) 4.显式数对法 (Naked Pair) 5.显式三数集法 (Naked Triplet) 6.显式四数集法 (Naked Quad) 7.隐式数对法 (Hidden Pair) 8.隐式三数集法 (Hidden Triplet) 9.隐式四数集法 (Hidden Quad) 10.矩形对角线法 (X-wing) 11.XY 形态匹配法(XY-wing) 12.XYZ 形态匹配法(XYZ-wing) 13.三链数删减法 (Swordfish) 14.WXYZ 形态匹配法(WXYZ-wing) 1. 显式唯一法 (Naked Single) 这是候选数删减法中最简单的一种方法,就是扫描候选数栅格表,如果哪个单元格中只剩下一个候选 数,就可应用显式唯一法 显式唯一法,在该单元格中填入这个数字,并在相应行,列和区块的候选数中删除该数字。 显式唯一法 在下面的图中: 单元格[I1]有唯一的候选数 1,则毫无疑问地把数字 1 填入该单元格中,并扫描其所在行,列和区块 的候选数中有无数字 1: 31 如果有,则把 1 从这些单元格的候选数中删除: 显式唯一法虽然简单,但却是最有效的候选数删减法之一;尤其在谜题相对简单时,有时单单使用显 显 显式唯一法 式唯一法就可以解题。 式唯一法 2. 隐式唯一法 (Hidden Single) 见文知义,隐式唯一法 隐式唯一法也是唯一候选数法的一种, 但它肯定不如显式唯一法那样显而易见。 我们知道, 隐式唯一法 如果某一个单元格中只有一个候选数字,这时可以毫不犹豫地填入它;但是有没有这种情况,即使某个单 元格中有不止一个候选数字,我们也可以轻易地推断出这个单元格的正确解答呢? 考虑下面的情况: 32 在第 7 列中,单元格[B7]中虽然有多个候选数,但观察整列后我们发现,只有这个单元格中有数字 6。 根据数独游戏的规则,每一列中都必须要有从 1 到 9 的所有数字,而同时 6 却只能出现在这个单元格中, 所以很显然[B7]=6。当然,别忘了把 6 从[B7]所在的行,列和区块中删除。 同样,在下图中: 观察行 B 后我们发现,只有单元格[B8]中含有数字 7。同理,[B8]是该行中唯一可以填入数字 7 的单 元格,所以[B8]=7。另外,我们还要扫描相应行,列和区块,删除其中的候选数 7。 当然,这种隐藏的唯一候选数也可能躲在区块中,看下图: 33 对于起始于[A1]的区块而言,数字 8 只出现在单元格[A2]的候选数中,所以[A2]=8。从相应行,列和 区块,删除其中的候选数 8。 隐式唯一法是显式唯一法的有力补充,很多稍复杂的题都可以在这两种方法的交替使用下得以解决。 隐式唯一法 3. 区块删减法 (Intersection Removal) 应用显式唯一法和隐式唯一法只能解决简单的谜题,遇到稍复杂的谜题,还是要靠其他的方法。区块 区块 删减法也是比较常用的方法,它的目的是尽量删减候选数,而不一定要生成某一单元格的唯一解(当然, 删减法 产生唯一解更好) 区块删减法 。区块删减法 区块删减法是利用区块中的候选数和行或列上的候选数之间的交互影响而实现的一种 删减方法,它分为两种情况: 区块对行或列的影响 观察下图: 可以看到在起始于[A7]的区块中,数字 9 只出现在[A9]和[C9]的候选数中,更巧的是,[A9]和[C9]正 好都在同一列上,即第 9 列。这时就可以应用区块删减法了。具体地说,在起始于[A7]的区块中,数字 9 只能填在[A9]或是[C9]中,又因为这两个单元格都在第 9 列上,所以无论数字 9 填在哪个单元格中,第 9 34 列的其他单元格中都不能再填数字 9,所以要把 9 从它们的候选数中删除。在上图中,位于第 9 列的单元 格[E9]中的候选数 9 将被删除。 下图说明的是区块对行的影响: 在起始于[G1]的区块中,只有[H2]和[H3]可以填入数字 3,而这两个单元格正好都在行 H 中。同样的 道理,在这个区块中无论数字 3 填入[H2]还是[H3],行 H 中的其他单元格中都不可能再填入 3,所以在单 元格[H4],[H6]和[H7]的候选数中的 3 将被删除。 行或列对区块的影响 与“区块对行或列的影响”相近但却不同, “行或列对区块的影响”着重于先对行或列进行分析。 观察下图: 在第 5 列中,8 只出现在[D5]和[F5]的候选数中;也就是说,第 5 列中的数字 8 只能填入这两个单元 格其中的一个。碰巧的是,这两个单元格正好都位于起始于[D4]的区块中,结果使得这一区块中的数字 8 也不能填入区块的其他单元格中,所以[D4],[E4],[E6]和[F6]的候选数中的 8 将被删除。 同样,下图说明了行对区块的影响: 35 在行 E 中,只有[E5]和[E6]能填入数字 6,而这两个单元格又刚好都在起始于[D4]的区块中,所以该 区块中的其他单元格内不能再填入数字 6,即 6 将从单元格[D5]和[F5]的候选数中删除。 总结一下区块删减法的条件,就是 在某一区块中,当所有可能出现某个数字的单元格都位于同一行时,就可以把这个数字从该行的其他 单元格的候选数中删除。 在某一区块中,当所有可能出现某个数字的单元格都位于同一列时,就可以把这个数字从该列的其他 单元格的候选数中删除。 在某一行(列)中,当所有可能出现某个数字的单元格都位于同一区块中时,就可以把这个数字从该 区块的其他单元格的候选数中删除。 虽然区块删减法 区块删减法应用比较广泛,但是还是要先给大家泼盆冷水。因为在很多时候,即使满足了区块删 区块删减法 减的条件,也可能会发生没有候选数可以删减的情况,让人空欢喜一场。其实,这个问题对其他稍复杂的 方法都是普遍存在的。 4. 显式数对法 (Naked Pair) 显式数对法在很多谜题中都可以得到应用,它的条件比较容易满足,而且显而易见。 显式数对法 先看下图: 在行 E 中,[E2]和[E8]中候选数只有两个,且都是 2 和 3,即构成一个{2, 3}的数对。这使得该行中 36 其他单元格中不能再出现 2 或 3。为什么呢,因为假设[E2]=2,则[E8]一定要填 3;反之,假设[E2]=3, 则[E8]则一定填 2,不会再出现其他的情况。所以 2 和 3 必然不能成为该行中其他单元格的候选数。这样, [E3],[E4]和[E5]的候选数中都不能再有 2 和 3。 对于列也是这样: 在第 3 列中,数对{6, 8}只出现且都出现在[A3]和[H3]中,所以其他单元格里都不能再有这两个数字。 这样,[C3]的候选数中将删除 6 和 8,而[F3]的候选数中将删除 8。 同样,别忘了还有区块: 观察起始于[G4]的区块,可以发现[G5]和[I4]中含有数对{2, 4},这样,该区块中其他的单元格里都 不能再有数字 2 和 4,这次受影响的有 4 个单元格,分别是[G4],[H4],[I5]和[I6]。 总结一下显式数对 显式数对的条件,也就是,在一个行,列或区块中,如果有两个单元格都包含且只包含相同的两 显式数对 个候选数,则这两个候选数字不能再出现在该行,列或区块的其他单元格的候选数中。 5. 显式三数集法 (Naked Triplet) 显式三数集法并不如显式数对法那样常见,但它们的原理却很相似。显式数对法要求同样的 2 个数字 显式三数集法 37 都出现在某行,列或区块的 2 个单元格中,且这 2 个单元格的候选数不能包含其他的数字。同样,显式三 显式三 数集法要求的是 3 个数字要出现在 3 个位于同一行,列或区块的单元格中,且这 3 个单元格的候选数中不 数集法 能包含其他数字。但不同的是,显式三数集法 显式三数集法不要求每个单元格中都要包含这 3 个数字。例如,对于数字 显式三数集法 集{2,4,5},如果在某行,列或区块中有 3 个单元格的候选数分别为下面几种情况时,都可应用显式三数 显式三数 集法,即 3 个单元格的候选数集可以分别为: 集法 {2, 4, 5} {2, 4, 5} {2, 4, 5},或 {2, 4} {4, 5} {2, 5},或 {2, 4, 5} {2, 5} {4, 5},或 {2, 4, 5} {4, 5} {2, 4, 5},或 ...... 也就是说,要形成显式三数集 显式三数集,则必须要有 3 个在同一行,列或区块中的单元格,每个单元格中至少 显式三数集 要有 2 个候选数,且它们的所有候选数字也正好都是一个三数集的子集。由于这个三数集中的 3 个数字正 好可以分别填入这 3 个单元格中,所以该行,列或区块中其他的单元格中不可能再填入这 3 个数字。 但要注意的是,下面的这种情况不是显式三数集 显式三数集: 显式三数集 {2, 4, 5} {2, 4} {2, 4} 其中{2, 4}和{2, 4}可应用显式数对法,所以第一个候选数集{2, 4, 5}将只能剩下候选数5,这时 就可应用显式唯一法了。 看下图: 在行 D 中,[D1],[D7]和[D8]中分别包含候选数集{3, 5, 9},{3, 5, 9}和{5, 9},根据上面的知识, 可以判断出这是一个显式三数集 显式三数集,因此数字 3,5 和 9 不可能再出现在行内其他的单元格中,所以[D4]和 显式三数集 [D6]的候选数中的 3,5 和 9 将被删除。 下面是列中的显式三数集 显式三数集的例子: 显式三数集 38 在第 2 列中,[G2],[H2]和[I2]中分别包含候选数集{2, 6},{2, 5}和{2, 5, 6},所以数字 2,5 和 6 只能在这三个单元格中分别填入,而不可能填入到该列的其他单元格中,因此[A2],[B2]和[E2]的候选 数中的 2,5 和 6 将被删除。 细心的朋友可能还发现, [G2], [H2]和[I2]不仅都在第 2 列中, 而且又恰好都在起始于[G1]的区块中, 对于数字 5,已经符合区块删减法的条件,可惜的是,第 2 列中其他单元格的候选数中都没有 5 可以删减。 同样,显式三数集 显式三数集还有在区块中的可能: 显式三数集 在起始于[D7]的区块中,[D8] ,[D9]和[E9]中分别包含了候选数集{4, 9},{4, 8, 9}和{8, 9},这 样区块中其他的单元格中不能再填入数字 4,8 和 9,可以删减的单元格是[E7]和[E8]。 39 6. 显式四数集法 (Naked Quad) 显式四数集法比较少见,如果你已经对显式三数集法比较了解,则对显式四数集法 显式四数集法也会很快掌握。 显式四数集法 显式四数集法 先举个例子,对于数字集{1, 2, 4, 5},如果在某行,列或区块中有 4 个单元格的候选数分别为下面几种 情况时,都可应用显式四数集法 显式四数集法,即 4 个单元格的候选数集可以分别为: 显式四数集法 {1, 2, 4, 5} {1, 2, 4, 5} {1, 2, 4, 5} {1, 2, 4, 5},或 {1, 2, 4} {1, 4, 5} {2, 5} {1, 2},或 {1, 2, 4, 5} {2, 5} {2, 4, 5} {1, 2, 4, 5},或 {2, 5} {4, 5} {1, 2, 5} {1, 2, 4},或 {1, 2, 5} {1, 2, 4, 5} {1, 2, 4, 5} {2, 4},或 ...... 这样的组合情况可以很多。也就是说,要形成显式四数集 显式四数集,则必须要有 4 个在同一行,列或区块中的 显式四数集 单元格,每个单元格中至少要有 2 个候选数,且它们的所有候选数字也正好都是一个四数集的子集。由于 这个四数集中的 4 个数字正好可以分别填入这 4 个单元格中,所以该行,列或区块中其他的单元格中不可 能再填入这 4 个数字。 但要注意的是,下面的这种情况不是显式四数集 显式四数集: 显式四数集 {1, 2, 4, 5} {2, 4} {2, 5} {2, 4, 5} 其中{2, 4} {2, 5}和{2, 4, 5}可应用显式三数集法,所以第一个候选数集{1, 2, 4, 5}将只能剩下 候选数 1,这时就可应用显式唯一法了。 看下图: 很明显,在行 D 中,[D1],[D4],[D6]和[D8]中分别包含了候选数集{3, 5, 6},{2, 5, 6},{2, 5, 6}和{3, 5, 6},即分别都是四数集{2, 3, 5, 6}的子集。这样在行 D 中,数字 2,3,5 和 6 就只能填入 这 4 个单元格中,所以[D3]和[D7]的候选数中将不能包含这几个数字。 下面是显式四数集 显式四数集在列中的例子: 显式四数集 40 在第 9 列中,[C9],[D9],[E9]和[G9]中分别包含了候选数集{1, 7, 8},{1, 8},{6, 7, 8}和{6, 7, 8},即分别都是四数集{1, 6, 7, 8}的子集。这样数字 1,6,7 和 8 就不能填入该列中除这四个单元格之 外的单元格中,所以[A9]和[B9]的候选数中将不能出现这四个数字。 同样,显式四数集 显式四数集也可以出现在区块中: 显式四数集 在起始于[A7]的区块中,[B9],[C7],[C8]和[C9]中分别包含了候选数集{6, 7},{1, 6, 8},{7, 8} 和{1, 6, 7, 8},即它们分别都是四数集{1, 6, 7, 8}的子集。这样,数字 1,6,7 和 8 就不能填入该区 块中除这四个单元格之外的单元格中,所以[A7]和[A8]的候选数中将不能出现这四个数字。 当然,掌握了显式四数集法 显式四数集法,我们同样可以演绎出显式五数集法 显式六数集法 显式五数集法,显式六数集法 显式四数集法 显式五数集法 显式六数集法等,但因为显式四数集法 显式四数集法 出现的几率已经较小,所以我们不指望推演出的更多方法能在解决数独谜题上带给我们有效的帮助。 41 7. 隐式数对法 (Hidden Pair) 对比显式数对法,隐式数对法 隐式数对法也需要在同一行,列或区块中寻找两个单元格,而这两个单元格上都包 隐式数对法 含有一个数对(两个数字) ,且这个数对不会出现在该行,列或区块的其他单元格上。然而,应用隐式数 隐式数 对法却要困难得多,因为它与显式数对法不同的是,包含有数对的单元格的候选数中可能还包含有其他的 对法 数字。 先看下图: 可以看到,在行 A 中,数对{3, 6}只出现在[A4]和[A8]的候选数中,也就是说,数字 3 和 6 不可能再 出现在该行的其他单元格中,这是因为这两个单元格中必然只能填入 3 和 6,否则该行将缺少这两个数字。 这样,如果[A4]=3,则[A8]=6;反之,如果[A4]=6,则[A8]=3,不会再有其他的情况。所以我们可以放心 地把其他的数字从这两个单元格的候选数中删除。 下面是隐式数对 隐式数对在列中的例子: 隐式数对 在第 1 列中,数对{2, 9}只出现在[G1]和[I1]的候选数中,这样就符合了上面所述的隐式数对的条件, 所以可以很安全地把其他数字从这两个单元格的候选数中删除,使这两个单元格中只保留了显式数对{2, 9}。 42 在区块中也是如此: 在起始于[D4]的区块中,数对{2, 8}只出现在[E6]和[F6]的候选数中,所以这两个单元格上其他的候 选数将被删除,而只保留了数对{2, 8}。 总结一下,隐式数对 隐式数对的条件是,在同一行,列或区块中,如果一个数对(两个数字)正好只出现且都 隐式数对 出现在两个单元格中,则这两个单元格的候选数中的其他数字可以被删除。 隐式数对不象显式数对法那么容易发现,所以在解题时需要相对的耐心和细心。与显式数对法不同的 隐式数对 是,隐式数对法 隐式数对法只影响出现隐式数对的单元格,而不影响其所在行,列或区块的其他单元格,这是因为这 隐式数对法 些其他的单元格中都不包含有这个数对。 但通过隐式数对法 隐式数对法删减了候选数后, 隐式数对将转化为显式数对, 隐式数对法 隐式数对 可能会为其他的行,列或区块应用各种候选数删减法创造条件。 8. 隐式三数集法 (Hidden Triplet) 与隐式数对法类似,这次需要 3 个数字和 3 个单元格。即当某个 3 个数字只出现在某行,列或区块的 3 个单元格中,且每个单元格中至少包含有其中的 2 个数字时,则可以把其他数字从这 3 个单元格的候选 数中删除。与显式三数集法类似,举例来说,对于三数集{2, 4, 5},如果某行,列或区块中的三个单元 格的候选数集依次为以下情况时,都符合隐式三数集 隐式三数集的条件: 隐式三数集 {2, 4, {2, 4} {4, 5} {1, 2, ...... 5, 8} {1, {2, 3, 5} {2, 5, 8} 5} {2, 4, 2, 4, 5} {2, 3, 4, 5, 9},或 {4, 5, 7},或 {1, 2, 3, 4, 5},或 8} {4, 5, 9},或 具体分析先看下图: 43 在行 H 中,三数集{5, 8, 9}中的任何数字都只出现在[H1],[H3]和[H5]的候选数中,其中[H1]包含 了数字 5 和 9;[H3]包含了数字 8 和 9;而[H5]中包含了数字 5 和 8。这说明数字 5,8 和 9 只能填入这三 个单元格中,所以其他候选数不能出现在这三个单元格中。因此数字 1 和 3 将从[H1]的候选数中删除,而 数字 3 和 4 将从[H3]的候选数中删除。 下面是隐式三数集 隐式三数集在列中的例子: 隐式三数集 在第 7 列中,三数集{3, 7, 9}中的任何数字都只出现在[F7],[G7]和[H7]的候选数中,其中[F7]包 含了数字 3 和 7;[G7]包含了数字 3 和 9,而[H7]包含了数字 3,7 和 9。这样,就符合了隐式三数集法 隐式三数集法的 隐式三数集法 基本条件,不在这个三数集内的数字将从这三个单元格的候选数中删除。 隐式三数集还有可能发生在区块内: 隐式三数集 44 在起始于[G7]的区块中,三数集{3,6,7}中的任何数字都只出现在[G8],[G9]和[H8]的候选数中,其 中[G8]包含了数字 3,6 和 7;[G9]包含了数字 3 和 7,而[H8]包含了数字 3 和 6。这样,就符合了隐式三 隐式三 数集法的基本条件,不在这个三数集内的数字将从这三个单元格的候选数中删除。 数集法 隐式三数集法属于难度比较高的方法,在处理一般谜题时较少碰到。隐式三数集法 隐式三数集法只影响包含隐式三 隐式三数集法 隐式三数集法 隐式三 数集的三个单元格,与隐式数对法相似,删减的结果是把隐式三数集 隐式三数集转换为显式三数集,并可能为使用其 数集 隐式三数集 他的候选数删减法创造条件。 9. 隐式四数集法 (Hidden Quad) 这是一个极少用到的方法,因为它的条件比较难以满足。与隐式三数集法类似,这次需要 4 个数字和 4 个单元格。即当某个 4 个数字只出现在某行,列或区块的 4 个单元格中,且每个单元格中至少包含有其 中的 2 个数字时,则可以把其他数字从这 4 个单元格的候选数中删除。与显式四数集法类似,举例来说, 对于四数集{1, 2, 4, 5},如果某行,列或区块中的四个单元格的候选数集依次为以下情况时,都符合隐 隐 式四数集的条件: 式四数集 {1, 2, 3, 4, 5} {1, 2, 4, 5, 8} {1, 2, 4, 5} {1, 2, 4, 5, 9},或 {1, 2, 4} {1, 5, 8} {2, 3, 5} {4, 5, 7},或 {4, 5} {1, 2, 4, 6} {2, 5, 8} {1, 2, 3, 4, 5},或 {1, 2, 3, 5} {1, 5} {2, 4, 8} {4, 5, 9},或 ...... 象这样的组合可能会有很多。 具体分析先看下图: 45 在行 A 中,四数集{2, 4, 8, 9}中的任何数字都只出现在[A4],[A6],[A7]和[A8]的候选数中,其中 [A4]包含了数字 2 和 4;[A6]包含了数字 2,4 和 8;[A7]包含了数字 4 和 9,而[A8]包含了数字 2,8 和 9。 这样,就符合了隐式四数集法 隐式四数集法的基本条件,不在这个四数集内的数字将从这四个单元格的候选数中删除。 隐式四数集法 当然,我们也可以看到,即使不用隐式四数集法 隐式四数集法,由于[A3]和[A5]形成了明显的显式数对,同样也可 隐式四数集法 这里, 我们为了讲解隐式四数集法 所以优先使用该方法。 隐式四数集法, 用显式数对法对该行其他单元格候选数的删减。 隐式四数集法 这也说明能应用这种方法的机会很少,因为经过很多较简单方法对候选数进行多番删减以后,已经较难满 足隐式四数集 隐式四数集的基本条件。 隐式四数集 同样,下面的谜题,我们本来可以用显式数对法来解决,但这里暂时优先使用隐式四数集法 隐式四数集法: 隐式四数集法 在第 6 列中,四数集{1, 4, 8, 9}中的任何数字都只出现在[A6],[D6],[E6]和[I6]的候选数中,其 中[A6]包含了数字 1 和4;[D6]包含了数字 1,8 和 9;[E6]包含了数字 4 和 9,而[I6]包含了数字 8 和 9。 这样,就符合了隐式四数集法 隐式四数集法的基本条件,不在这个四数集内的数字将从这四个单元格的候选数中删除。 隐式四数集法 当然,在区块中也可应用隐式四数集法 隐式四数集法,因为鲜少有这样的例子,且与上面介绍的行与列中的隐式四 隐式四数集法 隐式四 数集类似,所以这里不再举例。 数集 隐式四数集法只影响包含隐式四数集 隐式四数集的四个单元格,与隐式数对法相似,删减的结果是把隐式四数集 隐式四数集法 隐式四数集 隐式四数集 转换成显式四数集,并可能为使用其他的候选数删减法创造条件。这个方法一般在解决较为复杂的谜题时 才有可能用到。 46 10. (X矩形对角线法 (X-wing) 矩形对角线法是比较高级的谜题解法,应用的机会比较少,但对于有些复杂的谜题也可以有效地删减 矩形对角线法 候选数。 先观察下图 在行 B 和行 G 中,数字 7 都正好出现两次,且都位于第 2 列和第 7 列上;也就是说,在行 B 和行 G 中, 数字 7 不是填入第 2 列,就是填入第 7 列。 而如果在行 B 中,[B2]=7,则对于行 G,[G2]就不能是 7,这是因为[G2]和[B2]在同一列上,这样[G7] 就一定是 7。 反之,如果在行 B 中,[B7]=7,则对于行 G,[G7]就不能是 7,7 只能在[G2]。 简单地说,只可能有两种情况:[B2]=7 且[G7]=7;或者[B7]=7 且[G2]=7。 但无论是哪种情况,第 2 列和第 7 列中都肯定会出现数字 7,所以这两列中其他的单元格中就不可能 再有 7。这样,就可以把 7 从其他的单元格的候选数中删除了,所以第 2 列中的[A2]以及第 7 列中的[C7], [D7]和[E7]的候选数中将不会再有 7。 总结一下,如果一个数字正好出现且只出现在某两行的相同的两列上,则这个数字就可以从这两列上 其他的单元格的候选数中删除。 当然,同样的情形也会出现在列中,也就是说,如果一个数字正好出现且只出现在某两列的相同的两 行上,则这个数字就可以从这两行上的其他单元格的候选数中删除。例如: 47 可以看到,在第 1 列和第 7 列上,数字 9 出现且只出现在行 C 和行 G 上,也就是说,在第 1 列中,要 么[C1]=9,要么[G1]=9;而对于第 7 列,要么[C7]=9,要么[G7]=9。而对于这两列只有两种情况,[C1]=9 且[G7]=9;或者[C7]=9 且[G1]=9。无论是上述哪种情况,行 C 和行 G 上都会有数字 9 出现,则这两行上其 他的单元格中不能再有 9。所以行 C 上的[C4]和[C5]以及行 G 上的[G2]和[G5]候选数中的 9 将被删除。 矩形对角线法不可能出现在区块中。 矩形对角线. 的: 形态匹配法(XY-wing) XY 形态匹配法(XY-wing) 形态匹配法虽然是一个高级的数独技巧,但是应用的机会却还挺多的。先看看 XY 形态 形态究竟是怎样 XY 形态 上图所示是四个相邻的(也可不相邻)区块。XY,XZ 和 YZ 分别表示只有两个候选数的单元格,但它 们的候选数部分重叠。可以看到,不管 XY 最后取什么值,星号所示的位置不可能是 Z 值。这是因为: 如果 XY 取 X 值,则与其同行的 XZ 只能取 Z 值,这样星号所示单元格就不能为 Z 值。 如果 XY 取 Y 值,则与其同列的 YZ 只能取 Z 值,而星号所示的单元格同样不能是 Z 值。 于是,就可以把 Z 值从星号所示的单元格中去除。下面是一个实例: 48 上图中,单元格[F3]是 XY,[F6]是 XZ,[I3]是 YZ,这三个单元格分别位于不同的区块中。其中 X 是 3,Y 是 9,Z 是 5。根据我们上面的分析,在单元格[I6]中的候选数 5 将被删除。 形态的第二种表现方式如下: XY 形态 这时,XY 和 YZ 同在一个区块但不同行中,而 XZ 和 XY 在同一行,但在不同区块中。同样,所有打星 号的单元格中不能是 Z 值。这是因为: 如果 XY=X,则 XZ=Z。那么 XZ 所在的行和区块中就不能再出现 Z; 如果 XY=Y,则 YZ=Z。那么 YZ 所在的行和区块中就不能再出现 Z。 这种情况比第一种 XY 形态 形态更为常见,看下面这个实例: 在上图中,单元格[D7]是 XY,[D2]是 XZ,[E8]是 YZ,XY 和 YZ 在同一区块中,而 XZ 在横向的另一区 块中。其中 X=4,Y=9,Z=7。根据上面的分析,则[E2]和[D8]中的候选数 7 将被删除。 49 当然还会出现第二种 XY 形态 形态的变形,即 XY 和 YZ 在同一区块但不同列中,而 XY 和 XZ 在同一列的不 同区块中: 分析方法与之前一样,结果是打星号的单元格中不能出现候选数 Z。例: 在上图中,单元格[I8]是 XY,[B8]是 XZ,[G9]是 YZ,XY 和 YZ 在同一区块中,而 XZ 在纵向的另一区 块中。其中 X=3,Y=2,Z=6。根据上面的分析,则[A9],[B9],[C9]和[H8]中的候选数 7 将被删除。 下面是其他的一些应用 XY 形态匹配法 形态匹配法的例子: 50 12. 形态匹配法(XYZ-wing) XYZ 形态匹配法(XYZ-wing) 形态匹配法很象 XY 形态匹配法,但不同的是,这次有一个单元格包含 3 个候选数。典型的 XYZ XYZ 形态匹配法 形态如下: 形态 其中,XYZ 表示该单元格有三个候选数,它与 YZ 在同一区块但不同列中,而与 XZ 在同一列但不同区 块中。如果满足这样的条件,则星号所示的单元格中一定不能包含候选数 Z。这是因为: 51 如果 XYZ=X,则 YZ 必然为 Z。那么在同一区块中的星号所示的单元格自然就不能为 Z。 如果 XYZ=Y,则 XZ 必然为 Z。那么与 XZ 同一列的星号所示的单元格自然也就不能为 Z。 如果 XYZ=Z,则与它同一区块的星号所在的单元格肯定不能是 Z。 这样,我们就实现了对星号所在的单元格中候选数的删减。看一个例子: 在上图中,[D5]=XYZ,[D6]=YZ,[B5]=XZ。[D5]和[D6]在同一区块中,[D5]和[B5]在同一列中。其中, X=9,Y=7,Z=6。根据上面的分析,单元格[F5]中将不能含有候选数 6。 当然,XYZ 形态 XYZ 形态也有横向的变形: 分析的方法与之前一致,结果是把候选数 Z 从星号所示的单元格中删除。例: 在上图中,[B2]=XYZ,[C3]=YZ,[B9]=XZ。[B2]和[C3]在同一区块中,[B2]和[B9]在同一行中。其中,X=2, Y=5,Z=4。根据上面的分析,单元格[B1]中将不能含有候选数 4。 52 下面是其他的一些实例,可以帮助快速掌握这一技法: 13. 三链数删减法 (Swordfish) 能够应用三链数删减法 三链数删减法的场合真是太少了,下面的例子是在经历无数次尝试后才找到的。这个方法是 三链数删减法 X 形态匹配法的一种扩展。这次要考虑的是 3 行和 3 列,而不是 2 行和 2 列。 先看下图: 53 观察数字 9,在第 1 列,9 只出现在[A1]和[E1],在第 4 列,9 只出现在[E4]和[I4],而在第 5 列,9 只出现在[A5]和[I5];也就是说,对于第 1 列,第 4 列和第 5 列而言,数字 9 在每列只出现两次,且一共 只出现在 3 行上,即行 A,行 E 和行 I。 现在我们把数字 9 在这几列中所有可能的位置都列举出来: 对于第 1 列,假设[A1]=9,则行 A 中[A5]必不为 9,所以对于第 5 列,只可能[I5]=9,这时行 I 中[I4] 不能为 9,则对于第 4 列,只有[E4]=9。 对于第 1 列,假设[E1]=9,则行 E 中[E4]必不为 9,所以对于第 4 列,只可能[I4]=9,这时行 I 中[I5]不 能是 9,则在第 5 列中,只有[A5]=9。 所以在这个例子中,只会有两种可能,就是 9 要么同时出现在[A1],[E4]和[I5]中,要么同时出现在 [A5],[E1]和[I4]中。 无论是哪种可能,行 A,行 E 和行 I 中都会有 9 出现,则这三行中的其他单元格上将不能再出现 9。 所以[A6]和[E2]候选数中的 9 将被删除。 总结一下,如果某个数字在某三列中只出现在相同的三行中,则这个数字将从这三行上其他的候选数 中删除。 同样,如果某个数字在某三行中只出现在相同的三列中,则这个数字也将从这三列上其他的候选数中 删除。例如 在这个示例中,数字 6 在行 C,行 F 和行 H 的位置只在第 5 列,第 7 列和第 8 列上。这样就满足了使 用三链数删减法 三链数删减法的条件。结果是把数字 6 从第 7 列的[G7]和[I7]中,以及从第 8 列的[G8]中删除。 三链数删减法 54 三链数删减法不可能出现在区块中。 三链数删减法 14.WXYZ 形态匹配法(WXYZ-wing) 14.WXYZ 形态匹配法(WXYZ-wing) 形态匹配法是更加进阶的形态匹配法, 但它将涉及到一个单元格包含 4 个候选数的情况。 典型的 WXYZ 形态匹配法 形态如下: WXYZ 形态 其中 WXYZ 表示拥有 4 个候选数的单元格,它与 WZ 在同一区块但不同列中,而与 XZ 和 YZ 在不同区块 但在同一列中。满足了这样的形态后,星号所示的单元格中将不能含有候选数 Z。这是因为: 如果 WXYZ=W,则 WZ 必为 Z,而同一区块中的星号所示的单元格中必然不能填入 Z。 如果 WXYZ=X,则 XZ 必为 Z,而同一列中的星号所示的单元格中不可能再填 Z。 如果 WXYZ=Y,则 YZ 必为 Z,而同一列中的星号所示的单元格中不可能再填 Z。 如果 WXYZ=Z,则同一区块中的星号所示的单元格中不能再为 Z。 所以无论 WXYZ 填什么,星号所示的单元格都不能填入 Z。看一个实例: 在上图中,[A8]=WXYZ,[A9]=WZ,[F8]=XZ,[G8]=YZ。[A8]和[A9]在同一区块中,而[A8]和[F8]及[G8] 在同一列中。其中,W=2,X=4,Y=6,Z=5。于是,根据上述分析,[B8]中的候选数 5 将被删除。 当然也存在 WXYZ 形态 形态的其他变形: 分析方法也同上。这时,星号所示的单元格为与 WXYZ 在同一区块及同一行的单元格,它们将不能填 入候选数 Z。再看一个例子: 55 在上图中,[G3]=WXYZ,[I1]=WZ,[G5]=XZ,[G7]=YZ。[G3]和[I1]在同一区块中,而[G3]和[G5]及[G7] 在同一行中。其中,W=2,X=3,Y=7,Z=1。于是,根据上述分析,[G2]中的候选数 1 将被删除。 下面是其他的一些例子: 56

上一篇:数独小游戏
下一篇:没有了