数独·唯一性技巧(Uniqueness)-1

2023-10-08 20:59

本文主要是介绍数独·唯一性技巧(Uniqueness)-1,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

唯一性技巧基于这样一个事实——各类出版物上发布的数独题目都只有唯一解。事实上,绝大多数数独玩家有这样的共识:即合格的数独题目解应该是唯一的。因此,为了保证题目合格、有效,出题者在制作题目时,会将一些虽然不违反数独规则,但会导致题目出现双解或多解的特殊结构加以处理。而唯一性技巧可以视为针对这种“处理”的逆向工程,由于这类技巧并非由数独规则导出,在解题过程中可否适用一直存在着大量的争议。尽管如此,由于唯一性技巧易于发现,许多时候可以让你在复杂的局面中直捣黄龙,一举突破卡点,还是建议大家能够充分掌握这类技巧。但要提醒大家,在使用唯一性技巧时一定要注意盘面是否满足技巧的成立条件。

唯一矩形(Unique Rectangle)

我们将类似图1这样存在于两宫(一定要牢记,必须是两宫,4宫不属于唯一矩形,不能使用这类技巧),由4个相同的双值格组成的2行X2列的矩形称为唯一矩形。显然,6、8互换后会形成两个符合数独规则的终盘,题目存在双解,这样的题目是不合格的,出题者一定会避免出现这样的局面。

图1 UR

Unique Rectangle Type 1

图2中,若把r2c2的3拿去,即假设R2C2≠3,会发生什么?

图2 UR1-1

没错,若R2C2≠3,就会形成一个由候选数8、9组成的唯一矩形,导致题目双解,与题目解应该唯一矛盾,故可得R2C2=3。我们把这种可能形成UR的4格中的1格多出来额外候选数X的结构称为UR1,基于解的唯一,多出来的额外候选数X应该被填入所在格内(也可表述为,可删去该格中X之外的数字)。

图3 UR1-2

图3是另一个UR1的例子,为了避免出现UR,R9C6必须填入1。

Unique Rectangle Type 2

如果在可能形成UR的四格中,同侧的两格都多出来一个相同的候选数X,如图4,该怎么办?

图4 UR2-1

大家可以先思考一下,本例在什么样的情况下会出现UR。显然,如果R78C9中的两个8都不成立,即R78C9≠8,会出现UR结构。为了避免这种情况发生,R78C9中的8必须要成立一个,不能同假,不管哪个8成立,都可删去两个8所在单元其他格中的8(本例是R9C9中的8)。我们将此类结构称为UR2,再来看一个UR2的例子。

图5 UR2-2

为了避免出现UR,R8C56中的7必须要成立一个,可删去R8C56所在的R8和B8其他位置的7。

Unique Rectangle Type 3

UR2中,同侧两格多出来的候选数是相同的,当多出来的候选数不同时又该如何?

图6 UR3-1

如图6,R46C8中分别多出了(46)和(69)两组数字,经过前面的学习,大家应该可以很快得出结论:1、这两组数字中的4、6、9,至少会有1个成立;2、如果将R46C8打包起来看作一格,就会和R12C8形成一个(469)的显性三链数对(Triplet),据此可对数对所在单元的其他格进行相应摈除。我们将这种额外候选数可以和所在单元其他格内的数字组成数对的结构称为UR3。

图7 UR3-2

图7也是一个UR3的实例,与图6稍有不同,本例中构成的是(13)的显性数队(Pair),因数对所处的位置不同(B4和R6),删除的范围也不同。

Unique Rectangle Type 4

再来看一个例子,图8盘势中R3C79和R6C79构成了类似UR3的结构,易知为了避免出现UR结构,R3C79中额外的候选数(25)至少需要成立1个,但是R3中不存在(25)双值格和R3C79中的(25)构成数对,无法直接删数,至此似乎无从下手。不要着急,现在把视线从额外的候选数移回可能构成UR结构的候选数6和7。观察盘势可以发现,R3中,候选数6只存在于可能形成成UR结构的两个格中,也就是说R3C79两格中的6互为矛盾关系,必然是1真1假,而前边已经分析过,这两格中的2和5也至少需要成立一个,那么显然,R3C79中的候选数7就没有了生存空间,应被删去。

图8 UR4-1

若候选A、B可能构成UR结构,有额外的候选数出现在同侧(行列)可能形成UR结构的两格中,且候选数A在该侧也仅能出现在这两格中,则应删去这两格中的候选数B。我们将这种结构称为UR4。图9是另一个UR4的例子。

图9 UR4-2

另外,图9中还同时存在UR3结构,额外候选数3、9和B9中R9C7的(39)构成数对,可以删去R7C9中的9。

Unique Rectangle Type 5

UR5是UR2结构的变种,UR2中,多出来的相同的候选数X是出现在同侧两格中,而UR5中,X是出现在对角两格或三格中,如图10,R7C58和R8C58四格可能形成UR结构,同时R7C8和R8C7中存在额外候选数1,显然为了避免形成UR结构,这两个1至少需要成立一个,它们之间是强关系,可删去共同作用格R7C4中的1。

图10 UR5-1

图11也是个UR5的应用,本例中,有三个格存在额外候选数6,可删去这3个6共同作用格R8C7中的6。

图11 UR5-2

Unique Rectangle Type 6

UR5是UR2的变种,UR6则是UR4的变种,我们来看实例。

图12 UR6-1

图12中R4C34和R5C34四格可能形成2、5的UR结构,R4C3和R5C4对角两格中有额外的候选数1和3,候选数5只存在于UR四格中(四格所在的行列其余位置均不曾出现5),形成一个X-Wing的结构。此时,

1、为避免出现UR结构,R4C3和R5C4中的1、3至少要有一个成立;

2、四格中对角的两组5必然是同真同假的关系。

显然,要满足条件1,R4C3和R5C4中的5就只能同假,可删去有额外候选数的这两格中的5。

图13 UR6-2

图13是另一个UR6的例子,具体删数过程不再赘述。



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

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

这篇关于数独·唯一性技巧(Uniqueness)-1的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/167943

相关文章

qt5cored.dll报错怎么解决? 电脑qt5cored.dll文件丢失修复技巧

《qt5cored.dll报错怎么解决?电脑qt5cored.dll文件丢失修复技巧》在进行软件安装或运行程序时,有时会遇到由于找不到qt5core.dll,无法继续执行代码,这个问题可能是由于该文... 遇到qt5cored.dll文件错误时,可能会导致基于 Qt 开发的应用程序无法正常运行或启动。这种错

mtu设置多少网速最快? 路由器MTU设置最佳网速的技巧

《mtu设置多少网速最快?路由器MTU设置最佳网速的技巧》mtu设置多少网速最快?想要通过设置路由器mtu获得最佳网速,该怎么设置呢?下面我们就来看看路由器MTU设置最佳网速的技巧... 答:1500 MTU值指的是在网络传输中数据包的最大值,合理的设置MTU 值可以让网络更快!mtu设置可以优化不同的网

MySQL JSON 查询中的对象与数组技巧及查询示例

《MySQLJSON查询中的对象与数组技巧及查询示例》MySQL中JSON对象和JSON数组查询的详细介绍及带有WHERE条件的查询示例,本文给大家介绍的非常详细,mysqljson查询示例相关知... 目录jsON 对象查询1. JSON_CONTAINS2. JSON_EXTRACT3. JSON_TA

Spring @RequestMapping 注解及使用技巧详解

《Spring@RequestMapping注解及使用技巧详解》@RequestMapping是SpringMVC中定义请求映射规则的核心注解,用于将HTTP请求映射到Controller处理方法... 目录一、核心作用二、关键参数说明三、快捷组合注解四、动态路径参数(@PathVariable)五、匹配请

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹

Mac备忘录怎么导出/备份和云同步? Mac备忘录使用技巧

《Mac备忘录怎么导出/备份和云同步?Mac备忘录使用技巧》备忘录作为iOS里简单而又不可或缺的一个系统应用,上手容易,可以满足我们日常生活中各种记录的需求,今天我们就来看看Mac备忘录的导出、... 「备忘录」是 MAC 上的一款常用应用,它可以帮助我们捕捉灵感、记录待办事项或保存重要信息。为了便于在不同

电脑蓝牙连不上怎么办? 5 招教你轻松修复Mac蓝牙连接问题的技巧

《电脑蓝牙连不上怎么办?5招教你轻松修复Mac蓝牙连接问题的技巧》蓝牙连接问题是一些Mac用户经常遇到的常见问题之一,在本文章中,我们将提供一些有用的提示和技巧,帮助您解决可能出现的蓝牙连接问... 蓝牙作为一种流行的无线技术,已经成为我们连接各种设备的重要工具。在 MAC 上,你可以根据自己的需求,轻松地

Python处理大量Excel文件的十个技巧分享

《Python处理大量Excel文件的十个技巧分享》每天被大量Excel文件折磨的你看过来!这是一份Python程序员整理的实用技巧,不说废话,直接上干货,文章通过代码示例讲解的非常详细,需要的朋友可... 目录一、批量读取多个Excel文件二、选择性读取工作表和列三、自动调整格式和样式四、智能数据清洗五、

如何关闭Mac的Safari通知? 3招教你关闭Safari浏览器网站通知的技巧

《如何关闭Mac的Safari通知?3招教你关闭Safari浏览器网站通知的技巧》当我们在使用Mac电脑专注做一件事情的时候,总是会被一些消息推送通知所打扰,这时候,我们就希望关闭这些烦人的Mac通... Safari 浏览器的「通知」功能本意是为了方便用户及时获取最新资讯,但很容易被一些网站滥用,导致我们

电脑提示Winmm.dll缺失怎么办? Winmm.dll文件丢失的多种修复技巧

《电脑提示Winmm.dll缺失怎么办?Winmm.dll文件丢失的多种修复技巧》有时电脑会出现无法启动程序,因为计算机中丢失winmm.dll的情况,其实,winmm.dll丢失是一个比较常见的问... 在大部分情况下出现我们运行或安装软件,游戏出现提示丢失某些DLL文件或OCX文件的原因可能是原始安装包