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
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

转载于:https://www.cnblogs.com/asdyzh/p/10144980.html

数独高阶技巧入门之七——AIC Nice Loop相关推荐

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

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

  2. 数独高阶技巧入门之二:简单的单数链结构——双强链

    ​如果在数独盘势中,我们找到关于某个候选数的两条强链,且这两条强链的一侧在同一单元(行.列.宫)内,称为base,另一侧有共同作用格,称为cover.根据前篇<链及其简单应用>中的定义,b ...

  3. 数独高阶技巧入门之四:简单异数链

    一.XY-Wing 图1 XY-Wing01 ​图1中,R2绿色三个双值格构成三链数,则在该行中X.Y.Z三个数字只能存在于绿色三格中.如果我们把三链数构成的直线掰弯,比如掰成像下图中的两种情况, Y ...

  4. python get函数 i_Python高阶技巧,你 GET了吗?

    原标题:Python高阶技巧,你 GET了吗? Python 是一种美丽的语言,它简单易用却非常强大.但你真的会用 Python 的所有功能吗? 下面是 Python 的 5 种高级特征,以及它们的用 ...

  5. golang 分析调试高阶技巧

    layout: post title: "golang 调试高阶技巧" date: 2020-6-03 1:44:09 +0800 categories: golang GC 垃圾 ...

  6. Word论文必备的高阶技巧

    之前写论文,大部分绘图之类都是用visio,ppt,ps.后来发现word绘图能力也足够达到论文的需求,不仅如此,还能有很多很有用的操作.于是.总结了一下.供以后使用.另有一篇word有关的简单排版技 ...

  7. 【强化学习高阶技巧】Experience Replay经验回报

    强化学习相关的高阶技巧Experience Replay经验回报的介绍.此处笔记根据B站课程,王树森老师的强化学习记录而来.10.经验回放 Experience Replay (价值学习高级技巧 1_ ...

  8. 函数传参string_JavaScript 高阶函数入门浅析

    原文:https://www.freecodecamp.org/news/a-quick-intro-to-higher-order-functions-in-javascript-1a014f89c ...

  9. 专业之路:13条PS高阶技巧

    1.更清晰的圆 当画一些较小的形状时,锐度非常重要,怎样让图像没有锯齿感呢?有时候圆角和圆形的绘制过程中,经常会出现这种问题.Isaac Grant的这条建议能帮助你解决这个问题,非常简单但有效的办法 ...

最新文章

  1. 基于图文界面的蓝牙扫描工具btscanner
  2. python中模块的__all__属性解读
  3. Jetson nano刷好机之后需要做的准备工作
  4. ❤️Java面试高频词《多线程》(建议收藏)❤️
  5. ASP.NET MVC 使用dataTable(3)--更多选项参考
  6. 修改Imdict做自己的分词器
  7. Java 技术书籍大全
  8. java动图_马上学会!教你一个快速制作GIF动图的方法!
  9. Python语言程序设计基础-题库
  10. VISUAL STUDIO INSTALLER下载速度过慢的解决办法
  11. TF卡文件系统变RAW怎样解决
  12. 设备冗余技术——链路聚合
  13. 计算机usb无法使用,Win7系统电脑USB接口无法使用解决方案
  14. 内存数据网格IMDG简单介绍
  15. linux键盘背光指令,在Linux下开启背光Led键盘的背光
  16. .net rar zip压缩包解压
  17. 崩坏3区号+86_86的区号是代表中国!那82是代表哪个国家?
  18. 12306火车余票查询
  19. 异常 | ARM _data_abort 异常处理流程
  20. 自动化来袭,程序员是否正在走向另一个泡沫?

热门文章

  1. 使用采购管理系统,真的能有效降低企业采购成本吗?
  2. 关于小花生书有会的解密过程
  3. 我的世界服务器修改原版血量,我的世界服务器MythicMobs插件教程技能编写血量限制与触发几率...
  4. 永洪报表工具_报表工具对比选型系列用例——排名及跨行组统计
  5. python合并excel工作簿_Python pandas实现excel工作表合并功能详解
  6. 微信中如何做到访问app的下载链接直接跳到默认浏览器去执行下载
  7. 微信小程序:实现悬浮返回和分享按钮
  8. goolge浏览器插件
  9. LoadRunner中将中文转换为URL编码类型的方法
  10. delphi mysql 三层_Delphi XE 10 跨平台三层数据库应用 datasnap