数独高级技巧_数独高阶技巧

数独高级技巧_数独高阶技巧链(Chain)是数独高阶技巧的核心,所有数独盘势都可以通过各种或简单或复杂的链来解出答案。链的本质是命题之间的关系,在解数独时,每个填数的步骤都可表现为在『A格中填入1』、『B格中填入2』这样非真即

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

链(Chain)是数独高阶技巧的核心,所有数独盘势都可以通过各种或简单或复杂的链来解出答案。链的本质是命题之间的关系,在解数独时,每个填数的步骤都可表现为在『A格中填入1』、『B格中填入2』这样非真即假的直言命题形式,如果条件不充足,命题真假不能判定,我们把数独中这种命题之间的真假关系称之为链。用链解题的逻辑在于,籍由命题真假值的推导,根据链两端点命题的真假来判断其共同作用格内候选数的真假。

强关系(Strong Links)和弱关系(Weak Links)

链可分为强链与弱链,分别由强关系和弱关系构成,定义如下:

强关系——对应矛盾关系和下反对关系,两个命题不可同假,必有一真(下反对关系可以同真);

弱关系——对应矛盾关系和上反对关系,两个命题不可同真,必有一假(上反对关系可以同假)。

 

 
数独高级技巧_数独高阶技巧

图1-矛盾关系

​图1小九宫格中,数字A只可能出现在R1C1和R3C3两个格中。根据数独规则,数字1-9在每个Unit(行Row、列Column、宫Box)中均需出现且仅出现1次,易知两个A之间为矛盾关系,两者不可同假,必为一真一假,可作出判断:(1)若 R1C1≠A,则R3C3=A,两个A之间为强关系,构成强链,记作R1C1{A}==R3C3{A};(2)若R1C1=1,则R3C3≠1,两个A之间为弱关系,构成弱链,记作R1C1{1}—R3C3{1}。

 
数独高级技巧_数独高阶技巧

图2-上反对关系

​再看一个例子,图2中,数字A仅能出现在三个格中,根据数独规则,可知必有一个A为真,其余两个为假,则三个A两两之间不能同真,为上反对关系,可作出以下判断:(1)若R1C1=A,则R2C2、R3C3≠A;(2)若R2C2=A,则R1C1、R3C3≠A;(3)若R3C3=A,则R1C1、R2C2≠A。

在本例中,存在三条弱链,分别是R1C1{A}—R2C2{A}, R1C1{A}—R3C3{A}, R2C2{A}—R3C3{A}。

在以上两例中,可以看到,当某单元内特定候选数仅存在于两个格中时,两格中的该候选数是矛盾关系,二者之间既构成强链也构成弱链。而当该候选数存在于三个及以上格中时,两两之间是上反对关系,构成弱链。

 
数独高级技巧_数独高阶技巧

图3-矛盾关系、上反对关系

强弱关系并不只局限于同一候选数,在图3九宫格中,R1C1中仅存在候选数A、B,R3C3中仅存在候选数A、B、C。如前两例,我们可知,R1C1格中的A和B为矛盾关系,二者之间即是强链也是弱链,R3C3中的A、B、C两两之间为上反对关系,构成弱链。

 
数独高级技巧_数独高阶技巧

图4-下反对关系、ALS

图4是复杂一点的情况,R1C1、R23C2三格中共有{1234}四个候选数(这种n格中有n+1个候选数的结构称为ALS——Almost Locked Set),根据数独规则,可知这四个候选数中有且只有一个为假,由强弱链定义易知1、2、3和4之间,两两互为强链。与前述矛盾关系的例子不同,本例{1234}中必有三个为真,则其两两之间为下反对关系,可以同真,不能构成弱链。

链是如何工作的

以上我们对强弱链有了基本的了解,接下来我们把链连接起来看看会发生什么。首先是强弱强链,A==BC==D,我们根据强弱链的定义,画出真值表(只保留有效推导)

 
数独高级技巧_数独高阶技巧

图5-强弱强链真值表

由图5可以看到,不论A取真值还是假值,在链的起点A和终点D中至少有一真,即A与D之间为强关系。我们仅考虑A为假的情况(若其为真,则已经可以用来删数),当A为假时,由于A、B、C、D由强弱链交替连接,推导如下:(1)若A为假,根据强链定义B只能为真;(2)若B为真,根据弱链定义C只能为假;(3)若C为假,根据强链定义D只能为真。

可见这种情况下只存在有一种有效推导形式,即A假D真,显然,只要保证以强链始以强链终,  即使将这条链不断延长下去仍可得出同样结论:若起点为假则终点必然为真。综上可知,强弱强链的两端点互为强关系,必有一个为真。

我们再来看弱强弱链的推导。A—B==C—D,真值表如下:

 
数独高级技巧_数独高阶技巧

图6-弱强弱链真值表

可见A与D中至少有一假,二者互为弱关系。将其不断延长,结果仍会是这样,推导过程不再赘述。这种情况不能直接用来删减A、D共同作用格的候选数。

 
数独高级技巧_数独高阶技巧

图7-强强强链真值表

如果将三条强链连接又会如何呢?A==B==C==D,从图7真值表中可以看到,链的两端点A和D一真一假、全真全假都有可能,也没有删减效果。

由以上推导我们可以总结,在数独解题过程中,链的工作模式是,找到数独盘势中的强链,用弱链将之连接,在此过程中保证强弱交替,以强链始以强链终,则链的两端点互为强关系,必有一真,若其存在共同作用格,则可对共同作用格内的相应候选数进行删减。

链的简单应用

来看一个例子,在图8的盘势中,可以找到一条从R1C4到R4C6的5的链(实线代表强链,虚线代表弱链,R1C4{5}==R1C9{5} — R4C9{5}==R4C6{5}),这条链强弱交替,且以强链始以强链终,可知R1C4的5与R4C6的5互为强关系,必有一个成立,不管哪个成立都可以删去R1C4、R4C6共同作用格(绿色区域)里的5。推导过程如右:(1)若 R1C4=5,则R2C6、R5C4≠5;(2)若R1C4≠5 → R1C9=5 → R4C9≠ 5 → R4C6=5,则 R2C6、R5C4≠5。

 
数独高级技巧_数独高阶技巧

图8-Skyscraper

ps:上图中的结构称为摩天楼(Skyscraper),是双强链(强弱强链)的一种基础应用。

再看一个稍微复杂点的例子,在图9盘势中,可以找到一条从R4C6到R6C1的6的链(实线箭头代表强链,虚线代表弱链),可知R4C6与R6C1中的6互为强关系,必有一个成立,故可删去R4C6与R6C1共同作用格(绿色区域)内的6。大家可自行推导以加强对链的掌握。

 
数独高级技巧_数独高阶技巧

图9-异数链

作者:零时四分_719b

链接:https://www.jianshu.com/p/4c794e9969c3

來源:简书

简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/167874.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • SQL Server配置管理器没有任何项目

    SQL Server配置管理器没有任何项目今天安装了SQL2017后,连接数据库发现报sql错误2,想着是MSSQLSERVER服务没开,就去配置管理器打开,但是发现新安装的sql,显示没有任何项目辗转查了好久才发现导致的原因是:安装sql过程中,添加实例为当前系统用户,但是之后我修改过系统的计算机名称,导致原实例MSSQLSERVER不识别,所以不显示也不识别。解决方法有:(选择其中一种执行即可)(1)把计算机的名称

  • Java的几个版本

    Java的几个版本一、JavaSE(JavaPlatform,StandardEdition)JavaSE以前称为J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的Java应用程序。JavaSE包含了支持 JavaWeb服务开发的类,并为JavaPlatform,EnterpriseEdition(JavaEE)提供基础。二、JavaEE(JavaPlatform,EnterpriseEdition) 这个版本以前称为J2EE。企业版本帮助开发和部署可移植

  • 单源最短路径算法[通俗易懂]

    单源最短路径算法[通俗易懂]最短路径问题:如果从图中某一顶点(称为源点)到达另一顶点(称为终点)的路径可能不止一条,如何找到一条路径使得沿此路径上各边上的权值总和达到最小。当然这只是最基础的应用,关于单源最短路径还有很多变体:1.单源最短路径2.单目的地最短路径3.单节点对最短路径4.所有节点对最短路径最短路径定义:路径p=的权是指组成p的所有边的权值之和从u到v的最短路径的权为

  • springMVC执行流程及原理

    springMVC执行流程及原理spring的MVC执行原理1.springmvc将所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责对请求进行真正的处理工作。2.DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller.3.DispatcherServlet请请求提交到目标Controller4.Controller进行

  • Git和Github使用说明

    1.安装官网地址:https://git-scm.com/downloads我这里使用的是gitversion2.19.1.windows.1,全程傻瓜式安装,点下一步即可,可以把命令模式和

    2021年12月30日
  • linux中查看网卡型号的命令[通俗易懂]

    linux中查看网卡型号的命令[通俗易懂]linux中查看网卡型号的命令

    2022年10月18日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号