数独高阶技巧入门之七——AIC & Nice Loop
请熟练掌握本系列第一、二、四、六篇中介绍的内容后再进行本篇的阅读,以免造成身心不适!!!
AIC(交替推理链,Alternate Inference Chain)
在简单异数链一文中我们介绍过XY-Chain技法,AIC可以看作是XY-Chain的扩展。有别于XY-Chain仅局限于双值格,AIC籍由各种强弱关系的灵活运用,极大化的丰富了链类解题方法。
Alternate Inference Chain Type 1
AIC 根据首尾两端点候选数的异同可分为两种类型,我们将首尾数字相同的称为AIC1,下图就是一个AIC1的实例。
图1-AIC1图1中,实线代表强链,虚线代表弱链(下同)。我们可以看到,虽然本例中的链行进过程中候选数一直在发生变化(由双值格、多值格内候选数强弱关系的灵活运用实现),但候选数间始终保持着强弱交替,最终首尾两个相同候选数5之间形成强关系,可以删去两端点共同作用格内的5。
Alternate Inference Chain Type 2
AIC1的首尾数字相同,还有一类AIC的首尾两端点数字不同,但因为两端的候选数可以彼此在对方单元格内看到自己,我们得以据此对相关候选数进行删除,可将之称为AIC2。
图2-AIC2图2中,链的两端点分别为4和8,彼此都可以在对方格内看到自己。简单推理就可以发现,红框中的4、8互为强关系,不管哪个成立,红圈的4、8都会被删去。由此可得出AIC2的删除规则:互为强关系的两端点候选数可对对方格内的自己进行摈除。
是不是感觉很简单?AIC的工作原理的确很好理解,但是要达到熟练运用的程度并不容易,这需要敏锐的观察力以及大量的针对练习,随后我会针对本篇的内容提供一些练习题供大家进行训练。
Nice Loop
Continuous Nice Loops (AIC Loops)
先引入一个概念“Nice Loop”,在简单异数链一文中曾介绍过XY-Cycle的结构,我们把这类从某格出发并最终回到出发格的链路称为Nice Loop。若构成Nice Loop的每个候选数都可以首尾相连且保持强弱交替,则可将之称为Continuous Nice Loops(连续环,此前介绍过的X-Wing和XY-Cycle都是简单的连续环,如果AIC能够首尾相连则会构成AIC Loops,属于较复杂的连续环)。
下图即是一个AIC连续环,与XY-Cycle一样,断开任意一条虚线(弱链),都会构成一条强始强终的数链,弱链断开处两端的候选数互为强关系,可对其共同作用格进行摈除(弱链出现在多值格内部,可删除该格内其他候选数,如本例中r78c1中的35)。
图3-CNL01图4中在格内进行的删减更多,大家可以仔细体会一下。
图4-CNL02我们将构成连续环的每个单元格视作节点,观察各节点间的联结情况(大家需要注意,寻找环时分为两个层次,第一层首先是单元格之间的关系,第二层才是单元格内候选数间的关系),会发现:
1、若某节点通过两条强链与其他节点联结,该节点单元格内联结两条强链的候选数必然相异;
2、若某节点通过两条弱链与其他节点联结,该节点必为双值格且两个候选数分别联结一条弱链;
3、若某节点通过一条强链和一条弱链与其他节点联结,该节点内联结这两条链的为同一候选数。
(熟练掌握之前内容的话,就会马上明白,以上3点是连续环成立的必然要求。)
Discontinuous Nice Loop
如果环链的某个节点不符合上述3点的要求,亦即不能满足强弱交替的规则,就会构成Discontinuous Nice Loop(不连续环)。
图5-DNL01图5中是一个不连续环的实例,本例中的环以7的弱链从r1c8出发,最终以5的强链回到该格,我们将这条弱始强终的链简化为 A—B==C 进行推理:若A为真,则B为假(弱链不能同真);若B为假,则C为真(强链不能同假)。即A为真时,C必为真。回到本例中,假设r1c8=7,以此为前提,最终会推导出的结论是r1c8=5,即在同一个格内,有两个候选数同时成立,显然这种情况是违反数独规则的,由此我们可以判定之前假设的前提为假,并得出结论r1c8≠7。经过以上的归缪,可得出不连续环的一个删减规则:若某节点通过一条强链和一条弱链与其他节点联结,且该节点内联结这两条链的不是同一候选数,则联结弱链的候选数应被删去。
图6-DNL02上图是另一种情况的不连续环,本例中的环以4的强链从r8c2出发,最终又以4的强链回到r8c2格。我们假设这个格内存在起点和终点两个4,则这两个4互为强关系,不能同假。若假设起点r8c2≠4,由此前提会推导出终点r8c2=4的结论,产生矛盾,故该前提为假,r8c2=4。经过反证后我们可以得出不连续环的第二个删减规则:若某节点通过两条强链与其他节点联结,且该节点单元格内联结两条强链的是同一候选数,则该候选数为真,可删去单元格内其他候选数。
图7-DNL03图7是第三种情况的不连续环,本例中的环以1的弱链从r6c1格出发,最终又以1的弱链回到r6c1格,我们仿上例进行推理:假设r6c1格存在起点和终点两个1,这两个1互为弱关系不能同真,则由r6c1=1的前提,会推导出r6c1≠1的结论,产生矛盾,可知该前提为假,r6c1≠1。至此我们可以得出不连续环的第三个删减规则:若某节点通过两条弱链与其他节点联结,且该节点单元格内联结两条弱链的是同一候选数,则该候选数为假。
Grouped Nice Loop/AIC
在之前的文章(简单的单数链结构——双强链)里曾介绍过利用打包分组(Group)来寻找双强链的方法,这一技巧在Nice Loop和AIC中同样适用。在面对一些复杂的局面时,灵活的运用Group在行列宫制造出新的强弱关系,会让解题思路豁然开朗。
图8-GDNL上图中,利用将第2宫c4两个8(绿色圈内)打包后分别形成的与r1c5的强关系和r5c4的弱关系,以及第7宫c3两个2(绿色圈内)打包后分别形成的与r5c3的弱关系和r7c1的强关系可以找到一条不连续环,最终在r7c1中填入2。
图9-GCNL图9实例中,分别将第8宫r9和c4的两个2打包后,可找到一条连续环,从而实现大量的删数。
图10-GAIC1
图12-GAIC2图11、12分别是AIC1、2的例子,大家仔细体会一下。
Group Nodes and ALS
除了使用单纯的Group做为节点联结Loop和AIC外,我们可以将思路继续发散,利用ALS候选数集间的关系,将之嵌入Loop和AIC中来解决问题。
图13-GDNLALS本例就是将ALS作为节点的一个应用,r8存在ALS{256},在这个ALS中,2和打包起来的两个5之间为强关系,巧妙利用这一关系构造出一个非连续环,可以删除r8c2格内的5。
图14-GCNLALS眼尖的朋友已经发现,图14和图9是同一个盘势。本例利用r6的ALS{238}中2和打包的两个3的强关系,以及第8宫打包的两组2(绿色圈内),构造出一个连续环,实现了对更多候选数的删减,其中候选数1、2、3(红色)的删除很好理解(弱链两端点为强关系),但第5宫和r6中红色的8为何也被删除?
这是由连续环的特性所决定的。之前的内容中多次介绍过,连续环中断开任意一条弱链后,断开处两端点互为强关系。但是,连续环的另外一个特性大家可能没有注意到:断开任意一条强链后,断开处两端点互为弱关系,亦即连续环中的任意一条链都同时兼具强弱两种属性——两端点间是矛盾关系,不能同真,亦不能同假,必然一真一假。回到本例中,r6的ALS{238}中,2和group(3)不管哪一个成立,都会导致对方不成立,从而使ALS{238}变成(28)或者(38)的数对,则group(8)在任何情况下都成立,据此可对第5宫和r6中红色的8进行摈除。
图15-GAITALS上图是之前在微博上单独发过的一个利用ALS联结AIT2的实例,本例关键点在于c6列ALS{147}(黄框)中7和group(4)的强关系,以及group(4)和R4C6的4的弱关系。