找回密码
 人工审核注册

QQ登录

只需一步,快速开始

查看: 9701|回复: 19

[数独专区] 显隐式法大全

  [复制链接]

UID
726
经验
9428 点
B币
4322 个
原创
4 篇
创作值
0 点
分享值
0 分
推理积分
11 分
发表于 2010-6-9 09:53:14 | 显示全部楼层 |阅读模式

加入一起搜索真相

您需要 登录 才可以下载或查看,没有账号?人工审核注册

×
本帖最后由 ⊿轶舍人 于 2010-6-9 11:35 编辑


显式四数集法 (Naked Quad)

隐式数对法类似,这次需要3个数字和3个单元格。即当某个3个数字只出现在某行,列或区块的3个单元格中,且每个单元格中至少包含有其中的2个数字时,则可以把其他数字从这3个单元格的候选数中删除。与显式三数集法类似,举例来说,对于三数集{2, 4, 5},如果某行,列或区块中的三个单元格的候选数集依次为以下情况时,都符合隐式三数集的条件:

{2, 4, 5, 8} {1, 2, 4, 5} {2, 3, 4, 5, 9},或
{2, 4} {2, 3, 5} {4, 5, 7},或
{4, 5} {2, 5, 8} {1, 2, 3, 4, 5},或
{1, 2, 5} {2, 4, 8} {4, 5, 9},或
......


具体分析先看下图:

ht001.gif

在行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]的候选数中删除。

下面是隐式三数集在列中的例子:
ht002.gif

在第7列中,三数集{3, 7, 9}中的任何数字都只出现在[F7],[G7]和[H7]的候选数中,其中[F7]包含了数字3和7;[G7]包含了数字3和9,而[H7]包含了数字3,7和9。这样,就符合了隐式三数集法的基本条件,不在这个三数集内的数字将从这三个单元格的候选数中删除。

隐式三数集还有可能发生在区块内:
ht003.gif

在起始于[G7]的区块中,三数集{3,6,7}中的任何数字都只出现在[G8],[G9]和[H8]的候选数中,其中[G8]包含了数字3,6和7;[G9]包含了数字3和7,而[H8]包含了数字3和6。这样,就符合了隐式三数集法的基本条件,不在这个三数集内的数字将从这三个单元格的候选数中删除。
隐式三数集法属于难度比较高的方法,在处理一般谜题时较少碰到。隐式三数集法只影响包含隐式三数集的三个单元格,与隐式数对法相似,删减的结果是把隐式三数集转换为显式三数集,并可能为使用其他的候选数删减法创造条件。

UID
726
经验
9428 点
B币
4322 个
原创
4 篇
创作值
0 点
分享值
0 分
推理积分
11 分
 楼主| 发表于 2010-6-9 09:54:00 | 显示全部楼层

隐式数对法

本帖最后由 ⊿轶舍人 于 2010-6-9 10:12 编辑

对比显式数对法隐式数对法也需要在同一行,列或区块中寻找两个单元格,而这两个单元格上都包含有一个数对(两个数字),且这个数对不会出现在该行,列或区块的其他单元格上。然而,应用隐式数对法却要困难得多,因为它与显式数对法不同的是,包含有数对的单元格的候选数中可能还包含有其他的数字。

先看下图:
hp001.gif

可以看到,在行A中,数对{3, 6}只出现在[A4]和[A8]的候选数中,也就是说,数字3和6不可能再出现在该行的其他单元格中,这是因为这两个单元格中必然只能填入3和6,否则该行将缺少这两个数字。这样,如果[A4]=3,则[A8]=6;反之,如果[A4]=6,则[A8]=3,不会再有其他的情况。所以我们可以放心地把其他的数字从这两个单元格的候选数中删除。

下面是隐式数对在列中的例子:
hp002.gif

在第1列中,数对{2, 9}只出现在[G1]和[I1]的候选数中,这样就符合了上面所述的隐式数对的条件,所以可以很安全地把其他数字从这两个单元格的候选数中删除,使这两个单元格中只保留了显式数对{2, 9}。

在区块中也是如此:
hp003.gif

在起始于[D4]的区块中,数对{2, 8}只出现在[E6]和[F6]的候选数中,所以这两个单元格上其他的候选数将被删除,而只保留了数对{2, 8}。
总结一下,隐式数对的条件是,在同一行,列或区块中,如果一个数对(两个数字)正好只出现且都出现在两个单元格中,则这两个单元格的候选数中的其他数字可以被删除。
隐式数对不象显式数对法那么容易发现,所以在解题时需要相对的耐心和细心。与显式数对法不同的是,隐式数对法只影响出现隐式数对的单元格,而不影响其所在行,列或区块的其他单元格,这是因为这些其他的单元格中都不包含有这个数对。但通过隐式数对法删减了候选数后,隐式数对将转化为显式数对,可能会为其他的行,列或区块应用各种候选数删减法创造条件。
回复 反对

使用道具 举报

UID
726
经验
9428 点
B币
4322 个
原创
4 篇
创作值
0 点
分享值
0 分
推理积分
11 分
 楼主| 发表于 2010-6-9 11:04:21 | 显示全部楼层

显式唯一法 (Naked Single)

本帖最后由 ⊿轶舍人 于 2010-6-9 11:15 编辑

这是候选数删减法中最简单的一种方法,就是扫描候选数栅格表,如果哪个单元格中只剩下一个候选数,就可应用显式唯一法,在该单元格中填入这个数字,并在相应行,列和区块的候选数中删除该数字。

在下面的图中:
ns001.gif

单元格[I1]有唯一的候选数1,则毫无疑问地把数字1填入该单元格中,并扫描其所在行,列和区块的候选数中有无数字1:
ns002.gif

如果有,则把1从这些单元格的候选数中删除:
ns003.gif

显式唯一法虽然简单,但却是最有效的候选数删减法之一;尤其在谜题相对简单时,有时单单使用显式唯一法就可以解题。
回复 反对

使用道具 举报

UID
726
经验
9428 点
B币
4322 个
原创
4 篇
创作值
0 点
分享值
0 分
推理积分
11 分
 楼主| 发表于 2010-6-9 11:05:08 | 显示全部楼层

隐式唯一法 (Hidden Single)

本帖最后由 ⊿轶舍人 于 2010-6-9 11:14 编辑

见文知义,隐式唯一法也是唯一候选数法的一种,但它肯定不如显式唯一法那样显而易见。我们知道,如果某一个单元格中只有一个候选数字,这时可以毫不犹豫地填入它;但是有没有这种情况,即使某个单元格中有不止一个候选数字,我们也可以轻易地推断出这个单元格的正确解答呢?

考虑下面的情况:
hs001.gif

在第7列中,单元格[B7]中虽然有多个候选数,但观察整列后我们发现,只有这个单元格中有数字6。根据数独游戏的规则,每一列中都必须要有从1到9的所有数字,而同时6却只能出现在这个单元格中,所以很显然[B7]=6。当然,别忘了把6从[B7]所在的行,列和区块中删除。

同样,在下图中:
hs002.gif

观察行B后我们发现,只有单元格[B8]中含有数字7。同理,[B8]是该行中唯一可以填入数字7的单元格,所以[B8]=7。另外,我们还要扫描相应行,列和区块,删除其中的候选数7。

当然,这种隐藏的唯一候选数也可能躲在区块中,看下图:
hs003.gif

对于起始于[A1]的区块而言,数字8只出现在单元格[A2]的候选数中,所以[A2]=8。从相应行,列和区块,删除其中的候选数8。
隐式唯一法显式唯一法的有力补充,很多稍复杂的题都可以在这两种方法的交替使用下得以解决。
回复 反对

使用道具 举报

UID
726
经验
9428 点
B币
4322 个
原创
4 篇
创作值
0 点
分享值
0 分
推理积分
11 分
 楼主| 发表于 2010-6-9 11:05:56 | 显示全部楼层

显式数对法 (Naked Pair)

本帖最后由 ⊿轶舍人 于 2010-6-9 11:13 编辑

显式数对法在很多谜题中都可以得到应用,它的条件比较容易满足,而且显而易见。

先看下图:
np001.gif

在行E中,[E2]和[E8]中候选数只有两个,且都是2和3,即构成一个{2, 3}的数对。这使得该行中其他单元格中不能再出现2或3。为什么呢,因为假设[E2]=2,则[E8]一定要填3;反之,假设[E2]=3,则[E8]则一定填2,不会再出现其他的情况。所以2和3必然不能成为该行中其他单元格的候选数。这样,[E3],[E4]和[E5]的候选数中都不能再有2和3。

对于列也是这样:
np002.gif

在第3列中,数对{6, 8}只出现且都出现在[A3]和[H3]中,所以其他单元格里都不能再有这两个数字。这样,[C3]的候选数中将删除6和8,而[F3]的候选数中将删除8。

同样,别忘了还有区块:
np003.gif

观察起始于[G4]的区块,可以发现[G5]和[I4]中含有数对{2, 4},这样,该区块中其他的单元格里都不能再有数字2和4,这次受影响的有4个单元格,分别是[G4],[H4],[I5]和[I6]。
总结一下显式数对的条件,也就是,在一个行,列或区块中,如果有两个单元格都包含且只包含相同的两个候选数,则这两个候选数字不能再出现在该行,列或区块的其他单元格的候选数中。
回复 反对

使用道具 举报

UID
726
经验
9428 点
B币
4322 个
原创
4 篇
创作值
0 点
分享值
0 分
推理积分
11 分
 楼主| 发表于 2010-6-9 11:06:45 | 显示全部楼层

显式三数集法 (Naked Triplet)

本帖最后由 ⊿轶舍人 于 2010-6-9 11:11 编辑

显式三数集法并不如显式数对法那样常见,但它们的原理却很相似。显式数对法要求同样的2个数字都出现在某行,列或区块的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,这时就可应用显式唯一法了。

看下图:
nt001.gif

在行D中,[D1],[D7]和[D8]中分别包含候选数集{3, 5, 9},{3, 5, 9}和{5, 9},根据上面的知识,可以判断出这是一个显式三数集,因此数字3,5和9不可能再出现在行内其他的单元格中,所以[D4]和[D6]的候选数中的3,5和9将被删除。

下面是列中的显式三数集的例子:
nt002.gif

在第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可以删减。
同样,显式三数集还有在区块中的可能:
nt003.gif

在起始于[D7]的区块中,[D8],[D9]和[E9]中分别包含了候选数集{4, 9},{4, 8, 9}和{8, 9},这样区块中其他的单元格中不能再填入数字4,8和9,可以删减的单元格是[E7]和[E8]。
回复 反对

使用道具 举报

UID
726
经验
9428 点
B币
4322 个
原创
4 篇
创作值
0 点
分享值
0 分
推理积分
11 分
 楼主| 发表于 2010-6-9 11:36:52 | 显示全部楼层

隐式三数集法 (Hidden Triplet)

本帖最后由 ⊿轶舍人 于 2010-6-9 11:39 编辑

隐式数对法类似,这次需要3个数字和3个单元格。即当某个3个数字只出现在某行,列或区块的3个单元格中,且每个单元格中至少包含有其中的2个数字时,则可以把其他数字从这3个单元格的候选数中删除。与显式三数集法类似,举例来说,对于三数集{2, 4, 5},如果某行,列或区块中的三个单元格的候选数集依次为以下情况时,都符合隐式三数集的条件:

{2, 4, 5, 8} {1, 2, 4, 5} {2, 3, 4, 5, 9},或
{2, 4} {2, 3, 5} {4, 5, 7},或
{4, 5} {2, 5, 8} {1, 2, 3, 4, 5},或
{1, 2, 5} {2, 4, 8} {4, 5, 9},或
......


具体分析先看下图:
ht001.gif

在行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]的候选数中删除。

下面是隐式三数集在列中的例子:
ht002.gif

在第7列中,三数集{3, 7, 9}中的任何数字都只出现在[F7],[G7]和[H7]的候选数中,其中[F7]包含了数字3和7;[G7]包含了数字3和9,而[H7]包含了数字3,7和9。这样,就符合了隐式三数集法的基本条件,不在这个三数集内的数字将从这三个单元格的候选数中删除。

隐式三数集还有可能发生在区块内:
ht003.gif

在起始于[G7]的区块中,三数集{3,6,7}中的任何数字都只出现在[G8],[G9]和[H8]的候选数中,其中[G8]包含了数字3,6和7;[G9]包含了数字3和7,而[H8]包含了数字3和6。这样,就符合了隐式三数集法的基本条件,不在这个三数集内的数字将从这三个单元格的候选数中删除。
隐式三数集法属于难度比较高的方法,在处理一般谜题时较少碰到。隐式三数集法只影响包含隐式三数集的三个单元格,与隐式数对法相似,删减的结果是把隐式三数集转换为显式三数集,并可能为使用其他的候选数删减法创造条件。
回复 反对

使用道具 举报

UID
726
经验
9428 点
B币
4322 个
原创
4 篇
创作值
0 点
分享值
0 分
推理积分
11 分
 楼主| 发表于 2010-6-9 11:37:37 | 显示全部楼层

隐式四数集法 (Hidden Quad)

本帖最后由 ⊿轶舍人 于 2010-6-9 11:38 编辑

这是一个极少用到的方法,因为它的条件比较难以满足。与隐式三数集法类似,这次需要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},或
......

象这样的组合可能会有很多。

具体分析先看下图:
chq001.gif

在行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]形成了明显的显式数对,同样也可用显式数对法对该行其他单元格候选数的删减。这里,我们为了讲解隐式四数集法,所以优先使用该方法。这也说明能应用这种方法的机会很少,因为经过很多较简单方法对候选数进行多番删减以后,已经较难满足隐式四数集的基本条件。
同样,下面的谜题,我们本来可以用显式数对法来解决,但这里暂时优先使用隐式四数集法
chq002.gif

在第6列中,四数集{1, 4, 8, 9}中的任何数字都只出现在[A6],[D6],[E6]和[I6]的候选数中,其中[A6]包含了数字1和4;[D6]包含了数字1,8和9;[E6]包含了数字4和9,而[I6]包含了数字8和9。这样,就符合了隐式四数集法的基本条件,不在这个四数集内的数字将从这四个单元格的候选数中删除。
当然,在区块中也可应用隐式四数集法,因为鲜少有这样的例子,且与上面介绍的行与列中的隐式四数集类似,所以这里不再举例。
隐式四数集法只影响包含隐式四数集的四个单元格,与隐式数对法相似,删减的结果是把隐式四数集转换成显式四数集,并可能为使用其他的候选数删减法创造条件。这个方法一般在解决较为复杂的谜题时才有可能用到。
回复 反对

使用道具 举报

推理玩彤、

UID
740
经验
6310 点
B币
382 个
原创
2 篇
创作值
1 点
分享值
0 分
推理积分
0 分
发表于 2010-6-29 15:58:28 | 显示全部楼层
我头昏了  数独也太麻烦了 我只管填我知道的  其他的我就不管了
愿有一天、我能在你面前笑得不分朝夕。
回复 反对

使用道具 举报

UID
882
经验
57 点
B币
14 个
原创
0 篇
创作值
0 点
分享值
0 分
推理积分
0 分
发表于 2010-7-18 15:27:42 | 显示全部楼层 来自 湖北省武汉市 电信
…………………………晕了
回复 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 人工审核注册

本版积分规则

Archiver|微推理|小黑屋|Baker Street推理缘地|推理书库

GMT+8, 2024-4-28 14:00 , Processed in 0.180336 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表