​在这个系列的第一篇(链及其简单应用)以及第四篇(简单异数链)中已经简单介绍过ALS结构的定义,即n格中存在n+1个不同的候选数 (双值格可视为特殊的ALS结构) 。根据数独规则,在组成ALS的候选数中,必然有且只有一个为假,显然这些候选数各自的数字集两两互为强关系(不可同假,必有一真)。单独的ALS结构不能用来解决问题,但是如果将ALS作为节点把链或者数个ALS联结起来,就有可能利用ALS中各候选数字集互为强关系的特性构成链实现有效的删减,在一些复杂的盘势中起到解题的作用。

需要注意的是,在利用ALS解题的过程中,必须时刻牢记将ALS中的候选数字集作为整体看待。

 
图1-ALS

​图1中除去双值格外,存在ALS结构R2C28{135},B6{289},C3的{3456}数组可视需要灵活拆分为{346}、{3456}2组ALS结构。

一、RCC(Restricted Common Candidate)

要将两个ALS-A和B联结起来,需要用到严格共享候选数RCC。该候选数必须在ALS-A、ALS-B中都有出现,且只能出现在同一个Unit中 (该Unit用来连接两个ALS,可称之为联结单元,为了保证RCC与所在ALS中的其他候选数集构成强关系,联结单元以外的ALS中不能出现该候选数。)

 
图2-RCC01

上图中,存在3组ALS,分别是ALS-A=R1{3678},ALS-B=B2{356}和ALS-C=C6{2567},其中ALS-A、B在B2有RCC=6;ALS-A、C在C6有RCC6;ALS-B、C则不存在RCC( ALS-C在B2外存在6)。

我们可以看到,ALS-A、B的两个RCC 6同处于B2,两者互为弱关系,不能同真,必有一假,而取假值的RCC所在的ALS会从n格n+1个候选数变为n格n个候选数,这样AlmostLocked Sets就去掉了“Almost”变成了Locked Sets,据此可以对它所在Unit其他位置进行相应删减。

在本例中,若R2C5的6为假,则ALS-B变为{35}的数组,可删去图3左大九宫格黄色格中的3;若R1C6的6为假,则ALS-A变为{378}的数组,可删去图3右大九宫格黄色格中的3。我们可以看到,不管哪个6为假,图中“/”所在格内的3都会被删去。

 
图3-RCC02

​二、ALS-XZ

(一)Singly Linked ALS-XZ

我们把上述例子中的删减技巧称为Singly Linked ALS-XZ,具体规则为:若两个ALS可以通过一组RCC(X)联结起来,且两个ALS中除RCC外还有相同的候选数Z,则可删去这两个ALS中Z共同作用格内的其他Z。再来看两个例子:

 
图4-AXZ01

​图4中ALS-A=R1C67{679},ALS-B=R3C289{6789},RCC=6(X),两个ALS中除RCC 6之外,还有相同的候选数7(Z),故可删去两个ALS中7共同作用格亦即R3C56中的7。

 
图5-AXZ02

​图5中ALS-A=B4{34568},ALS-B=B7{378},RCC=3(X),Z=8,可删去两个ALS中8共同作用格即R789C3中的8。

(二)Doubly Linked ALS-XZ

图4、5两例都是两个ALS由一组RCC联结起来的情况,如果存在两组RCC的话,情况就会变得非常有趣。

 
图6-DAXZ01

图6的盘势就是如此,R3的ALS-A={1258}和R9的ALS-B={128}可以通过两组RCC 1和2联结起来。我们在前文曾提到,同组RCC之间互为弱关系,不能同真,取假值的RCC所在的待定数组会去掉待定变成数组。在本例中,如图7所示, 若绿格中的RCC 2取假值,则ALS-A就会变成{158}数组,进而导致紫格中的RCC 1只能为假,使ALS-B变成{28}数组;若绿格中的RCC 1取假值,则ALS-A就会变成{258}数组,进而导致紫格中的RCC 2只能为假,使ALS-B变成{18}数组。

 
图7-DAXZ02

​显然,不管两组RCC中的哪个取假值,最终结果都会导致两个ALS变成Locked Sets(绿{158}紫{28}或绿{258}紫{18},绿色格中的{58}和紫色格{8}可对所在单元其他格进行摈除),可各自删去Locked Sets所在Unit除RCC之外的相关候选数(本例中是R3C3的5和R9C8的8)。此外,若同组RCC同时为假(比如绿格和紫格中的1为假),就会导致另一组RCC同时为真,这种情况不可能出现,故同组RCC之间必须有一个为真,由此可删去同组RCC所在Unit的相关候选数(R5C2的1和R25C9的2)。

至此我们可以给出Doubly Linked ALS-XZ的具体规则:若两个ALS可由两组RCC X1,X2联结,则这两个ALS中除RCC之外的候选数可分别对该ALS所在Unit的其他格进行摈除,同时,两组RCC可分别对该组所在Uint其他格进行摈除。

我们再来看两个例子。

 
图8-DAXZ03

​本例中ALS-A=R2C239 {2479},ALS-B=R4C23 {124},X=2,4。根据规则可删去:

1、R2其他位置的7、9(红色);

2、B4和R4其他位置的1(红色);

3、C2其他位置的2以及C3其他位置的4(红色)。

 
图9-DAXZ04

​本例中ALS-A=R23C4 {467},ALS-B=R2C23,R3C23 {14678}, X=4,6(注意ALS-B中的6虽然出现了两次,但因为都位于R2,仍是有效的RCC)。根据规则可删去:

1、C4以及B2其他位置的7(红色);

2、B1其他位置的1、7、8以及C2其他位置的1(ALS-B中的1都位于C2,这两个1必有一个成立)(红色);

3、R2其他位置的6和R3其他位置的4(红色)。

三、ALS-XY-Wing

前文介绍的AlS-XZ是两个ALS-A、B籍由RCC X联结以实现删减的情况,可记为z-A-x-B-z,如果将中间的x替换为一个分别和A、B两组ALS都有RCC的ALS-C,ALS-XZ的删减规则依然可以适用,这种情形可记为z-A-x-C-y-B-z(ALS-C中与A、B分别联结的两个RCC不能相同,大家可以思考下,为什么会有这样的要求)。来看实例:

 
图10-AXY01

​图10盘势中,ALS-A=R7C156 {3678}(绿色),ALS-B=R579C8 {2389}(橙色),ALS-C=R9C34 {179}(紫色),X,Y=7,9, Z=3。ALS-C中的7与绿色A中的7是一组RCC,ALS=C中的9与橙色B中的9是另一组RCC,ALS-A、B中相同的候选数3和8,但只有3存在共同作用格,可删去R7C7的3(红色)。

 
图11-AXY02

图11盘势中ALS-A=R1C78 {247},ALS-B=R25C4 {679},ALS-C=R259C9 {3467}, X,Y=4,6, Z=7,可删去R1C4中的7(红色)。

四、ALS Chain

ALS Chian也可称为ALS-XY-Chain,是ALS-XY-Wing的扩展,如果存在多个可以利用RCC联结起来的ALS,且首尾两个ALS中存在相同的候选数,则这两个ALS中的相同候选数集可对其共同作用格内的候选数进行摈除。ALS Chain的删数逻辑从本质上来说依然是链,其工作原理是:利用ALS内候选数集的特性,构造出一个强弱相间且首尾两端为强关系的数链来实现对相关候选数的删减

来看实例:

 
图12-ACH01

图12盘势中,R1C4789的ALS{24569}与R8C4的ALS{56}通过RCC 5取得联结,ALS{56}与R58C3的ALS{256}通过RCC 6取得联结(双值格亦可看做ALS),ALS{256}与B1的ALS{23469}通过RCC 2取得联结,ALS{24569}与ALS{23469}中除去RCC 2外还存在共同候选数4、6、9,其中6、9数字集有共同作用格,可删去共同作用格内的候选数6、9(红色)。

本例亦可用链来解释,如图12中所示,红色实线箭头表示强链,虚线箭头表示弱链, ALS{24569}中的2、4、6、9数字集分别与5构成强关系;ALS {256}中的6与2的数字集构成强关系;ALS{23469}中的3、4、6、9数字集分别与2构成强关系,最终形成强弱交替的一条异数链,从而实现了对相应候选数的删减。

 
图13-ACH02

图13的盘势则是将利用双值格完成了ALS Chain的联结:R2的ALS{23567}(绿色框)通过RCC 7与R2C7的ALS{37}联结;R2C7的ALS{37}通过RCC 3与R7C7的ALS{37}联结;R7C7的ALS{37}通过RCC 7与B8的ALS{237}联结,ALS{23567}与ALS{237}中,除RCC 7外,还存在共同候选数2、3,其中3的数字集存在共同作用格,可删去相应位置的候选数3(红色)。

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

数独高阶技巧入门之六——ALS的更多相关文章

  1. 数独高阶技巧入门之七——AIC & Nice Loop

    AIC(交替推理链,Alternate Inference Chain) 在简单异数链一文中我们介绍过XY-Chain技法,AIC可以看作是XY-Chain的扩展.有别于XY-Chain仅局限于双值格 ...

  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. rails 网站跨域

    7down voteaccepted gem install rack-cors Or in your Gemfile: gem 'rack-cors', :require => 'rack/c ...

  2. (转) Linux下Setuid命令!

    在Linux系统中每个普通用户都可以更改自己的密码,这是合理的设置. 问题是:用户的信息保存在文件/etc/passwd中,用户的密码保存在文件/etc/shadow中,也就是说用户更改自己密码时是修 ...

  3. spring中的通配符

    一.加载路径中的通配符:?(匹配单个字符),*(匹配除/外任意字符).**/(匹配任意多个目录) classpath:app-Beans.xml 说明:无通配符,必须完全匹配 classpath:Ap ...

  4. Sqoop 1.99.6 安装和使用

        安装   1.安装准备工作:   下载的sqoop安装包 http://mirrors.hust.edu.cn/apache/sqoop/1.99.6/sqoop-1.99.6.tar.gz ...

  5. centos7的vsftpd的安装和配置

    安装vsftpd的服务器相关软件 安装vsftpd服务器和客户端 sudo yum install ftp vsftpd 安装一个加密工具 sudo yum install libdb-utils.x ...

  6. Kafka核心概念(转)

    转自:https://blog.csdn.net/liyiming2017/article/details/82805479 1.Kafka集群结构 实际上kafka的结构图是有些区别的,现在我们看下 ...

  7. Windows 10 归档、对于一些问题的解决与软件推荐

    I'm a Windows Insider 最近加入了 Windows Insider 计划,主要目的还是为了体验一下马上(7.29)就要发售的 Windows 10 操作系统. 先简要介绍下 Win ...

  8. shell编程之sed语法

    首先插播条广告:  想要进一个文件夹去 看下面有那些文件 必须对这个文件夹有执行权限. sed p  打印对应的行  2p 打印第二行. -n  只输出经过sed 命令处理的行 看图吧 不太会擅长言语 ...

  9. CS4.1 RPM打包函数分析

    shell举例说明:脚本名称叫test.sh 入参三个: 1 2 3运行test.sh 1 2 3后$*为"1 2 3"(一起被引号包住)$@为"1" &quo ...

  10. spring之IOC容器创建对象

    1.术语了解 1.1组件/框架设计 侵入式设计 引入了框架,对现有的类的结构有影响:即需要实现或继承某些特定类. 例如: Struts框架非侵入式设计 引入了框架,对现有的类结构没有影响. 例如:Hi ...