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的弱关系

作者:零时四分_719b
链接:https://www.jianshu.com/p/9cd7e2e1d022
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

数独高阶技巧入门之七——AIC & Nice Loop的更多相关文章

  1. 数独高阶技巧入门之六——ALS

    ​在这个系列的第一篇(链及其简单应用)以及第四篇(简单异数链)中已经简单介绍过ALS结构的定义,即n格中存在n+1个不同的候选数 (双值格可视为特殊的ALS结构) .根据数独规则,在组成ALS的候选数 ...

  2. 数独高阶技巧入门之三——Fish

    术语Fish代表了一组工作原理相同的关于特定候选数的解题技巧(Fish技巧直接产生自数独规则——每个单元内的数字都不能重复),Fish家族成员包括“体型”从小到大的X-Wing.Swordfish. ...

  3. 数独高阶技巧之八——SDC

    在本系列的第四篇“简单异数链”中,向大家介绍了XY-Wing等一系列Wing类技巧,并提到可以用(拐弯的)数组的观念来理解这些结构,经过第六篇ALS的学习之后,大家回过头再去看Wing,应该可以发现相 ...

  4. 读《实战 GUI 产品的自动化测试》之:第四步,高阶技巧

    转自:http://www.ibm.com/developerworks/cn/rational/r-cn-guiautotesting4/ 定义测试控件库 本系列前几篇文章对 IBM 框架做了介绍, ...

  5. 高阶 CSS 技巧在复杂动效中的应用

    最近我在 CodePen 上看到了这样一个有意思的动画: 整个动画效果是在一个标签内,借助了 SVG PATH 实现.其核心在于对渐变(Gradient)的究极利用. 完整的代码你可以看看这里 -- ...

  6. 分享录制的正则表达式入门、高阶以及使用 .NET 实现网络爬虫视频教程

    我发布的「正则表达式入门以及高阶教程」,欢迎学习. 课程简介 正则表达式是软件开发必须掌握的一门语言,掌握后才能很好地理解到它的威力: 课程采用概念和实验操作 4/6 分隔,帮助大家理解概念后再使用大 ...

  7. 《前端之路》之 JavaScript 进阶技巧之高阶函数(下)

    目录 第二章 - 03: 前端 进阶技巧之高阶函数 一.防篡改对象 1-1:Configurable 和 Writable 1-2:Enumerable 1-3:get .set 2-1:不可扩展对象 ...

  8. Python入门篇-高阶函数

    Python入门篇-高阶函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.高级函数  1>.First Class Object 函数在Python中是一等公民 函数也 ...

  9. kotlin高阶函数实战&DSL入门

    传统函数演示: 这里以电视节目“非诚勿扰”为例,男人去从一大堆美女当中挑选出自己中意的对象,比如台上有24位妹子,其档案如下: 接下来第一个男嘉宾出场啦,如下: 下面用代码来实现一下,比较简单: 先定 ...

随机推荐

  1. Halcon算子之shape_trans,用于变换区域的形状

    函数原型:shape_trans(Region : RegionTrans : Type : ) *shape_trans*仍然是区域,smallest_rectangle1可以获得四个角的坐标 函数 ...

  2. leetcode674

    public class Solution { public int FindLengthOfLCIS(int[] nums) { var len = nums.Length; ) { return ...

  3. 「小程序JAVA实战」小程序模块页面引用(18)

    转自:https://idig8.com/2018/08/09/xiaochengxu-chuji-18/ 上一节,讲了模板的概念,其实小程序还提供了模块的概念.源码:https://github.c ...

  4. 太白老师 day06 编码 encode decode

    ASCII : 字母, 数字, 特殊字符 字符:1个字节 数字: 1个字节 Unicode: 万国码, 包含所有文字 创建之初 字符: 2个字节 中文: 2个字节 升级: 字符: 4个字节 中文 : ...

  5. WPF DataGrid 控件的运用

    WPF DataGrid 控件的运用 运行环境:Window7 64bit,.NetFramework4.61,C# 6.0: 编者:乌龙哈里 2017-02-23 参考: King Cobra 博客 ...

  6. Spring3.0+Hibernate+Atomikos集成构建JTA的分布式事务--解决多数据源跨库事务

    一.概念 分布式事务分布式事务是指事务的参与者.支持事务的服务器.资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上.简言之,同时操作多个数据库保持事务的统一,达到跨库事务的效果. JTA ...

  7. Lenovo SplitScreen联想分屏软件只能在联想电脑运行,如何破解

    1.正常安装软件,重启电脑. 2.打开安装目录 C:\Program Files\Lenovo\Lenovo SplitScreen\SplitScreen 找到 MachineChecker.dll ...

  8. Android 多分辨率多屏幕适配

    请参见文章:http://blog.csdn.net/jiangxinyu/article/details/8598046 文章描述非常清晰.

  9. git服务器搭建问题

    CentOS6.5本地搭建. 对于图形化的系统,可以联网,然后CTRL+ALT+F2可以切换到命令行,CTRL+ALT+F1可以切换回桌面图形化. 可以用SSH和FTP来连接服务器和传文件.   (1 ...

  10. css的优先级和权重问题 以及!important优先级

    一,前言: 刚加的css怎么没有渲染出来?浏览器中查看,发现是被其他的css给覆盖了,相信我们都曾遇到过这样的问题.那么浏览器是如何选择css标签的渲染顺序的呢?换句话说,css选择器的优先级是怎么规 ...