数独高阶技巧入门之二:简单的单数链结构——双强链
如果在数独盘势中,我们找到关于某个候选数的两条强链,且这两条强链的一侧在同一单元(行、列、宫)内,称为base,另一侧有共同作用格,称为cover。根据前篇《链及其简单应用》中的定义,base侧两端点之间不是矛盾关系就是上反对关系,它们之间必然可以是弱链。很明显这是个典型的强弱强链,其两端互为强关系,必有一真,据此可以删去cover侧两端点共同作用格内的候选数。我们将这种简单的单数链结构称之为双强链,双强链结构主要包括摩天楼(Skyscraper)、双线风筝(2-String Kite)、多宝鱼(Turbot Fish)、空矩形(Empty Rectangle)。
摩天楼(Skyscraper)

如图1,当数字A分别在某两行、列只能出现在两个可能的位置(这样就保证了数字A在该行、列的两个候选数构成强链),且其中一侧处于同一列、行(base)时,则可删去另一侧(cover)两个端点共同作用格(黄色区域)内的数字A。来看下图的实例。

在图2中,数字1在C6、C9列只能出现在两个位置,且R5C6和R5C9同处于R5行(base),显然这是个典型的强弱强链(R1C6==R5C6 — R5C9==R3C9),cover侧R1C6和R3C9之间为强关系,必有一真,可以删去它们共同作用格内的数字1(红色)。
上例是数字A在两列中只出现于两个位置的摩天楼结构,我们再看一个位于两行的摩天楼。图3中数字4在R2、R8中只出现在两个位置,R2C1和R8C1同处于C1列(base),可删去cover侧R2C5与R8C4共同作用格内的候选数4(红色)。

双线风筝(2-String Kite)

当数字A在一行、一列均只能出现在2个可能位置(保证是强链),且该行和列的一个端点同处于同一宫(base),则可以删除另两个端点(cover)的共同作用格(黄色区域)内的候选数A。来看实例:

图5中R8和C7中的5只能出现在两个位置,且R8C9的5和C7R9的5同处于B9宫(base),我们可以形象的把同处一宫的部分看作风筝的躯干,另一侧的两端点(cover)看作风筝的两翼,显然风筝的两翼R8C4和R2C7之间为强关系(R8C4==R8C9 — R9C7==R2C7),可删去它们共同作用格内的候选数5(红色)。
再来看一个例子,图中R6、C2的9构成2-String Kite结构,B4宫中R6C1与C2R4的9为base,可删去cover侧R6C6、C2R7共同作用格内的候选数9(红色)。

多宝鱼(Turbot Fish)

摩天楼、双线风筝结构分别是数字A在某两行(列)或是某行和某列只出现在两个位置的情况,而多宝鱼结构则是数字A在一行(列)和一宫中只能出现在2个可能的位置,且行(列)的一个端点和宫的一个端点位于同一行(列)(base),则可以删除另两两个端点(cover)共同作用格的候选数A。

图8中,C1列和B8宫中的6均只能出现在两个位置,且C1R9和C6R9同处于R9行(base),显然另一侧(cover)两端点R6C1 与R7C4之间为强关系,可删去其共同作用格(红色)内的6。图9的例子大家可自行推导。

空矩形(Empty Rectangle)

空矩形实际上是多宝鱼结构的延伸。如果数字A在某宫(图10中的B9、B7)中的橙色矩形区域(这是空矩形得名的由来)不能存在,可以直观的看到,它只能出现在该宫的蓝色区域,且必然是一行一列的交叉。如果在蓝色区域的行和列中,A均只出现在一个位置,此时若在该宫之外存在某行、列数字A的强链,且其一端点与宫中的数字A的一端点同处于一行(列),显然这是个典型的多宝鱼结构,可相应删去cover侧共同作用格的候选数。但是蓝色区域行、列内的数字A不只1个时,该怎么办?
对强弱关系掌握比较好的朋友可能已经想到了解决方法——将分处于行、列中的候选数打包起来分成两组(group),用整体思维来解决这种情况,如下图:

我们将蓝色区域内base侧的A(红框内)打包为一组,将其余的A(粉框内)打包为另一组,由于该宫其它位置不能出现A,显然这两组A之间为矛盾关系,可以构成强链。而红框内的三个A则和base侧的另一个A构成弱关系,这样就形成了经典的强弱强链,可删去黄色区域内的候选数A。
提供两个例子供大家自行推导揣摩。

图13中的橙色区域依然是空矩形。
