苏德科(高级)

页面正在制作中
此页面内容正在完善中,建议您暂时不要阅读此页面的内容。我们会尽快完成更新,为您提供更好的阅读体验。

什么是苏德科

苏德科(Sue de Coq)是一种高级的解题技巧,它是基于显集(Naked Set)的一种扩展。

苏德科技巧的名称源自其发现者的名字,Sue de Coq。苏德科技巧是一种高级技巧,通常适用于困难的数独谜题。

一般定义

  1. 有两个区域R1R_1R2R_2,以及未填格子集 C1C_1, C2C_2C3C_3,且它们中的候选数集合分别 S1S_1, S2S_2S3S_3
  2. 其中,C1(R1R2)C_1 \subseteq (R_1 \setminus R_2)C10C_1 \ne 0
  3. C2(R2R1)C_2 \subseteq (R_2 \setminus R_1)C20C_2 \ne 0
  4. C3(R1R2)C_3 \subseteq (R_1 \cap R_2)C30C_3 \ne 0
  5. S1S2S3=0S_1 \cap S_2 \cap S_3 = 0
  6. 设等级 l=C1+C2+C3l = |C_1| + |C_2| + |C_3|
  7. S1S3+S2S3=S2S3+S1S3=l|S_1 \cup S_3| + |S_2 \setminus S_3| = |S_2 \cup S_3| + |S_1 \setminus S_3| = l,则称 C1C_1, C2C_2C3C_3 组成一个苏德科。
  8. R1(C1C3)R_1 \setminus (C_1 \cup C_3) 中可以消除这些候选数:S1S3(S2S3)S_1 \cup S_3 \setminus (S_2 \cap S_3)R2(C2C3)R_2 \setminus (C_2 \cup C_3) 中可以消除这些候选数:S2S3(S1S3)S_2 \cup S_3 \setminus (S_1 \cap S_3)

以上条件看起来很长很复杂。实际上就是在列出C1C3C_1 \cup C_3 以及 C2C3C_2 \cup C_3 形成显集的条件。详见下面的证明

例子

光看上面的条件可能比较费解,我们来看几个例子。

证明

实际上这里的核心就是要证明C1C3C_1 \cup C_3 是显集 (当然,C2C3C_2 \cup C_3 也是显集,但是证明略过)。

C2C_2C3C_3的共同候选数是S2S3S_2 \cap S_3

因为S1S2S3=0S_1 \cap S_2 \cap S_3 = 0

所以,这些候选数不出现在C1C_1

C2C_2 中至少要填多少个S2S3S_2 \cap S_3中的数字呢? 这个数量是:

C2S2S3|C_2| - |S_2 \setminus S_3|

所以,C2C_2 中填写的数字至少可以消掉C2S2S3|C_2| - |S_2 \setminus S_3|C3C_3中的候选数(因为C2C_2C3C_3在同一个区域中)

而这些候选数又没有出现在C1C_1中,所以,这些候选数就不出现在C1C3C_1 \cup C_3

也就是说,C1C3C_1 \cup C_3中的候选数的数量等于:

S1S3(C2S2S3)=(S1S3+S2S3)C2=lC2=C1+C3|S_1 \cup S_3| - (|C_2| - |S_2 \setminus S_3|) = (|S_1 \cup S_3| + |S_2 \setminus S_3|) - |C_2| = l - |C_2| = |C_1| + |C_3|

所以,C1C3C_1 \cup C_3 是显集。

虽然我们知道这个是显集,但是显集的候选数有些是不能确定的(因为我们不知道C2C_2消掉了哪些)。我们可以确定显集中一定有的候选数是:

S1S3(S2S3)S_1 \cup S_3 \setminus (S_2 \cap S_3)

简单的理解,就是不可能被C2C_2消掉的候选数。

所以R1R_1在显集之外的格子中,也就是R1(C1C3)R_1 \setminus (C_1 \cup C_3)中的S1S3(S2S3)S_1 \cup S_3 \setminus (S_2 \cap S_3)可以消除。

同理,C2C3C_2 \cup C_3是显集,且R2(C2C3)R_2 \setminus (C_2 \cup C_3) 中的 S2S3(S1S3)S_2 \cup S_3 \setminus (S_1 \cap S_3) 可以消除。