新浪科技

数独进阶:鱼结构解析

ZOL中关村在线

关注

鱼是一种类似于数组但又有所区别的结构。其基本逻辑是:当n个数字a恰好填入且只能填入n行n列时,这一结构才会稳定形成。一旦结构成立,在结构以外的区域就不能再填入该数字a,否则会导致结构内部无法完整填入而出现矛盾。构成鱼结构的关键行或列被称为定义域,整个鱼结构所覆盖的所有单元格称为鱼身,而结构成立后可以排除数字的区域则称为删除域。若定义域是行,则删除域对应为列,反之亦然。本篇主要介绍标准鱼的构造方式,不涉及宫内删数的情况,这部分内容将在后续扩展中讨论。

鱼和数组一样具有规格之分,也存在互补的配对。当涉及两行两列时,称为X-Wing(又称二阶鱼、二链列),三行三列的结构被称为剑鱼,四行四列的则称为水母。更高阶的结构较为罕见,因此不再赘述。

-------

图1展示了一个X-Wing结构的示例。可以看到,在第6行中,数字1只能填入r6c6和r6c9两个位置;而在第8行中,数字1也只能填入r8c6和r8c9这两个位置。这四个格子恰好分布在第6列和第9列之中。由此可以推断,在这两个列中,除了这四个位置之外,其他单元格都不能再填入数字1,否则将导致某一行中无法放置数字1。从共轭对或区块的角度来看,无论数字1出现在第6行的哪一个候选格,都会使得第8行只能在对应的另一个格子中为真,因此在第6列和第9列中,除了这四个格子之外,其他位置都不能填入数字1。在这个结构中,第6行和第8行是定义域,r6c6、r6c9、r8c6、r8c9四个格子构成了鱼身结构,而第6列和第9列则为删除域,删除格即为这两个列中不属于鱼身的其他单元格。

------

图2展示了剑鱼结构的一个实例,定义域为r689,鱼身由r69c86、r89c8及r689c9的单元格组成,删除域为c689。观察可知,在r689中,数字1可填入的位置恰好分布在三行三列之中。

-------

图3展示了水母结构的一个实例,其定义域为c3679列,涉及鱼身格子包括r3c379、r4c67、r6c39和r9c36,删除域为r3469行。观察可知,在c3679列中,数字1可填入的位置恰好仅分布在四行四列之内。

-------

图4是对图3中水母结构的补充。当我们将定义域从行改为列后,在r158中可以发现一个剑鱼结构(绿色格子),它正好与原图中的水母相对应。在去掉删数格中与数字1相关提示的交叉格后,可以看出两者所删除的格子完全相同。

----

由于篇幅限制,关于鱼的其他变形形式,如鳍鱼、残缺鱼、孪生鱼等内容,建议自行查阅相关教材深入学习。至此,进阶篇的内容已结束。对于更高难度的题目中涉及的技巧,如xr、ar、ul、环等结构,我只会在高难度篇中进行简要介绍,其他内容还需大家自行投入时间和精力去研究掌握。

加载中...