小灰的数独迷你课堂第十讲——fish的观察法

更新时间2021/5/61222 浏览攻略
前言:前面fish的例子看似没什么,但是事实上fish有大量的变异版,而且你想想看高阶鱼存在的条件必然是有很多候选数。。。如果你真的遇到了可以使用fish的情况,你会找半天找不到。(大佬无视)而且我这里针对的情况是标准数独,没有各种辅助,没有高亮提示,连候选数都是自己标。你再想想,fish好找吗?我水平一般,三阶还可能,四阶很难。因此,我查了查如果观察fish。(不是在动物鉴赏课。。。)这里我会比较详细,啰嗦的解释。。。因为可能依然会有人看不明白。
需要说明。。。这个方法一开始可能更慢,用熟了就快了,大佬一分钟以内就可以。(咱们一般玩家真不可能做这些高难度题很快的)另外,此方法对于已经比较熟练观察法的玩家有效,如果一开始就候选数法(开辅助),估计帮助不大。
此篇所使用的方法非原创,主体思想原作者是谁我也不知道。。。
附上原链接,这是某人的笔记。
TapTap
首先,你看看这里有没有鱼。。。我是觉得有点乱。
我们的观察方法就是通过1到9逐个查找的方式来搜索是否这个数有普通链列和鳍链列结构。
TapTap
为了解释这个逻辑,我们从1开始。首先我们把盘面里所有的1都圈出来,一共是7个。然后我们要找出一个矩形区域,这个矩形区域是任意的,随便你怎么选其中的单元格位置,只要它是一个矩形,而且我们的矩形涉及的所有单元格以及所处行列下都没有确定值1即可,且还要求矩形的所有单元格里不能有候选数1。不过,我们需要把矩形找到后,把矩形的信息代入这个公式:
NAIN = 9 - (矩形行数 + 矩形列数)
如果这个所谓的NAIN等于我们要找的这个数字出现的总个数的时候(此处指的是数字1的总个数),我们就可以称为该数存在鱼结构,并且鱼身就产生在矩形所在的行列上,而删数,则产生在矩形所在行列以外的其它任何位置上,并且,矩形所占行数和列数的较小者就是这个鱼结构的规格。
对照例子给的图。我们要找的矩形必须是涉及一行一列的,因为带入公式,1的总个数是7个,而9 - 2 = 7,所以矩形行数加矩形列数必须是2才行,而一行一列代入公式:1 + 1 = 2,故需要找一行一列的矩形,也就是找一个单元格。而显然,从这个定理里,我们说过矩形行数和列数的较小者是鱼的规格,所以一行一列要是真能出现,说明鱼结构的规格是1,这在鱼里显然是不可能的(因为鱼的规格至少为2。当然了,如果你在找鱼结构之前,没有发现题上还存在“残留”的行列排除的话,那么按照这个定理去找东西,而且要是真的找到了,那么它就对应这个行列排除)。
试想一下,假如我们已经找全了当前盘面下给出的所有1的排除,说明我们连矩形规格的情况都不存在了,所以肯定不可能有1的鱼。所以我们继续找数字2。
数字2一共有三个确定值,这意味着,要想让NAIN值是3,就必须满足9 - 3 = 6,所以矩形一般需要找的是两行四列、三行三列和四行两列的,并且矩形所在的行列和矩形本身都不能含有数字2和任何的候选数2。实际上,你可以仔细寻找一下这种矩形,这个矩形你是找不到的,因为怎么找,始终都会包含一个候选数2的单元格。所以2看似也没有鱼结构,那么我们去看数字3。
数字3也是一样。数一下确定值个数:2个,所以公式9 - 7 = 2,我们需要找矩形行数和列数总和为7的结构(例如三行四列)。比如我给出一个错误示范:
TapTap
(我用绿色表示确定值,这里就是3.蓝色表示找到的矩形。顺便说下。。。这里矩形可不是要全连在一起形成一个标准矩形。。。红色表示候选数可以删掉格,即fish的有效作用格)
例如这个例子就是错误的寻找方式。虽然这个矩形区域恰好是四行三列,代入公式是正确的(9 - (4 + 3) = 2),但是在矩形所在的行列里包含数字3的确定值,即此处的c5上。所以矩形是无效的,我们只得重新找。
遗憾的是,数字3确实没有我们想要的结构,所以只能去找数字4。
数字4的寻找我们就省略了,我们直接来看数字5(因为我可以明确地告诉你的是,数字5确实存在,而数字4不存在普通鱼,为了讲解不啰嗦,我们就跳过寻找过程了,逻辑和方式和上面的找1、2、3的方式完全是类似的)。
首先,我们发现全盘只有一个数字5的确定值,那么根据要求,我们需要寻找的是9 - 1 = 8的情况,即行数和列数之和要为8的矩形(比如四行四列)。只要我们能找到一个四行四列的区域,且这个矩形不包含候选数5或5的确定值,且涉及的行列也是的话,那么根据定理,我们就可以立马得到数字5存在一个普通的四链列结构。实际上,确实存在,如图所示。
TapTap
你说你不会找?我。。。那我比原例子再详细的说说。。。
TapTap
首先,把所有满足条件的格都标上。(不在确定值5的同行同列,格里没有候选数5)我们知道我们要找的是一个4*4矩形(4阶鱼)那么我们先看有标颜色最少的行列(最多也行)比如c1,观察c1标亮的所有格所在行,即r158,先看多的。r8有6个,很明显有问题,因为我们要找的是4*4。而r1也有5个,r5虽然有4个,但是c9明显有问题才3个。所有大概率这列不应该存在。同理c9也是。
TapTap
删掉c19,现在还看最少的。(你按最多也一样)r259j就只有2个(虽然fish是可以有残缺的,但是此方法找的格必然是标准的4*4)所以删掉。
TapTap
现在已经很清晰了吧。。。c36只有2格,删完了就出来了。
TapTap
(虽然我为了解释清楚打了好多字。。。但是正常不会这么麻烦)
可以看到这此时寻找的区域是四行四列的,并且单元格以及所处行列的任意位置都不包含数字5的确定值,而且矩形涉及的每一个单元格都是确定值(根本不包含候选数5),所以这个矩形是合格的。那么,我们根据定理可以得到,数字5存在一个四链列,且四链列产生在矩形所处行列上,而删数则产生在矩形行列都“扫”不到的地方。
TapTap
绿色表示fish的位置,红色表示可以删除的候选数5.
这是一个很普通的四阶fish(Jellyfish),而且结构的删数确实也都产生于矩形“扫”不到的地方。而且我们还可以从公式里得到一点:如果确定值有6个及其以上的时候,根据公式,我们需要找矩形行数和列数和为3的情况,但此时即使存在鱼,规格也是1,所以不符合要求。所以我们可以下结论:存在鱼结构的数字在全盘的确定值不能超过5个。5个就是极限情况,即只能出现二阶鱼(X-Wing)。
这种观察角度好就好在它基本上不关心候选数情况(很少关注候选数,也就是在找矩形的时候,矩形里不含该候选数的格子),这样我们只要去找不是5的数字,然后画个矩形就OK了,实际上这种观察很简单,而且效率很高,一般而言,如果经常找鱼结构的话,有经验了,寻找大概一分钟就能把1到9里所有数字都看一遍,而且能马上分辨出哪些数字有鱼结构,哪些数字没有。
你有可能觉得我花了这么长时间好像说的东西没啥用。可能你是候选数法做多了,或者观察法用得少。这个策略在纸上做数独是很好用的。(意思就是辅助功能没有)手机上也可以先截图再操作。脑子好就脑中画。
总结一下,我们要找的矩形要满足如下规则:
1.矩形的单元格里不能包含任何的该数的确定值;
2.矩形涉及的单元格里不能存在有含有该数的候选数情况的单元格;
3.矩形所属行列上的任意单元格都不含有该数的确定值;
4.用9去减矩形的行数,再减列数为NAIN值,该值必须等于该数字的总确定值个数。
要是满足上述的所有要求的矩形,那么矩形就是合格的,且鱼结构存在。
我们来说一下,为什么前面的这些要求可以让我们快速找到鱼。答案其实很简单。虽说我们找的是确定值,而且还跟数字5没关系,但是我们可以认真地发现,5的鱼出现在这个矩形的所在行或所在列上。比如上面这个图,5是在矩形的所在行r1368。那为什么会这样呢?
你仔细看全盘的确定值5,你就可以发现,5最多只能排除到c8,而这个矩形占据了一共4列。鱼的结构是n*n的,也就意味着结构会有4列,盘面一共是9列,抛开4列,还剩5列,再把前文5可以排除掉的c8除掉,刚好就剩下4列可以摆放一条鱼了。
所以,这就是为什么我们旁敲侧击地完成了对鱼的观察。鱼我们如果通过候选数来找的话,往往都是很困难的;但我们提供了这个视角后,鱼的寻找就会变得比较简单了。
习题1:
TapTap
找fish
习题2:
TapTap
一样。
就这样。另外。。。不是我不想提供4阶fish的例子。。。太难生成了!!!电脑生成半天没一个。。。有变形的不过先算了。
答案见回复,附上总集篇链接。
15
8
3