毛刺、毛边的由来历史和翻译
Naming & History of Kraken Logic
最后更新于
Naming & History of Kraken Logic
最后更新于
前面我们已经充分介绍了毛刺和毛边的使用方式和参考用例。还是按老规矩,我个人习惯提及一些关于历史由来和翻译的补充信息,防止遗忘。
我个人觉得这个毛刺和毛边的思想虽然并不带有新的数独技巧的知识点信息,但它更多展示了一种思维,可以灵活使用毛刺和毛边的推理思路。如果你非要强制性去看完整的链结构,实际上毛刺和毛边也是可以转化的,换言之,它可以将毛刺真和假的两种情况,将两头以强弱关系接入和归并,最终合并成一条链。但是有些时候,看一条链要么逻辑存在冗余,要么就是非常不便于理解,要么就是有些合并之后甚至会产生动态链和动态环的情况(尤其是用作删数判别尤为复杂)。比如合并之后可能会存在“一个候选数和一个融合待定数组结构成强链关系,然后它的删数和融合待定数组则又形成弱链关系”这样的特殊强弱关系。
这种用法非常神奇,但也为我们对链的完整理解而言造成了干扰。我在初学这个技巧的时候是按照合并为整条链的思路去学的,这导致了我走了很多弯路。包括早期一版的 PDF 格式的教程文档里其实也可以看出我对这个技巧的理解也只是停留在完整链路思维上。毛刺和毛边的思想本质是将一些复杂的链路逻辑拆解视图,从一个拆成两个,降低动态链等思路的复杂程度,方便理解的同时还提供了一个方便的视角。
这个思路早在 2014 年就有人提出。在中国大陆,这个年代还比较盛行一个叫做贴吧的论坛。截止我写完这篇内容,已经过去了 11 年的历史。
一位叫做 borescoper(本人则自称自己为“探长”)的网友在贴吧里发布了一篇名为“拓展思路:不完美连续环和不完美SDC(连续环+1,SDC+1)”的帖子,其中将连续环和融合待定数组技巧的“附加部件”(就是毛刺)作了一个描述和延伸,使其发挥链的作用。因为这个技巧在帖子里称为毛刺,因此这种思路也就沿用了毛刺的这种说法。
作者本人倒是比较低调,在时隔一年之后,发布了毛边的思路,将毛刺的多情况设定分类为强链关系/弱链关系和同假/同真状态,将四个排列组合的情况一下简化为了两个,解决了复杂的找寻逻辑。
毛刺:
毛边:
尽管时代变迁,尽管数独技巧越来越多(截止写这篇内容都已经 300 多种数独技巧了,哪怕除去各种技巧只是叫法不同但用法相同的子类型,算下来也有个几十上百种),但毛刺和毛边的思想确实是“经久不衰”。
顺带一说。请你记住这个名字,这个名字以后还会再次出现多次。
这个技巧的命名分两部分:中文和英文。其中文的名称就叫毛刺和毛边思想,所以问题主要出在英文这一块。
最开始的 1.0 版本,我将其翻译为“+1 technique”和“+2 technique”,即结构上多出一个或者两个候选数。包括作者本人其实也是在最开始毛刺的描述内容里这么说的。我个人觉得是因为学习了国外的数独叫法(全双值格致死解法 + n,即 BUG + n 这种说法)。不过这个说法有个问题是,由于 +1 和 +2 只是单纯利用了候选数的多出来的数量来辨识使用情况,这并不完全等价于毛刺和毛边思维。尤其是毛刺,多个毛刺仍然可以在不用毛边的情况下解释,所以无法正确解释出中文毛刺的说法。所以后来就更新了一版说法。
进入到 2.0 版本后,我将这个技巧翻译为“burr technique”和“bi-burr technique”,其中 burr 的中文意思就是“毛刺”,就是真正的毛刺的那个英文对应词。也就是说,我使用了直译来翻译这个技巧名称。这本身并没有什么问题,因为一些固有概念使用直译的形式有些时候往往可以代表一种独特的理念。虽然这是英语,我们应该考虑老外对这个技巧学习的心情,所以翻译的时候应该尽量采用意译,但架不住这个技巧它确实不太好去翻译它,所以使用了 burr 直接称呼毛刺。同时,我使用 burr 的过去分词 burred 称呼其代指的毛刺结构,如毛刺数对(Burred Subset)。这个说法几乎没有问题,但还是有点小毛病,也就是 bi-burr。毛边是使用搭桥的形式在呈现强弱关系的核心思路,而 bi-burr 仍然是数数,两个叫 bi-burr、三个叫 tri-burr、四个叫 quadra-burr,凡是涉及到数数的行为,就已经脱离了毛边使用强链弱链关系搭建推理流程的思维了,所以这一个版本的 bi-burr 的说法被取消了。
转到 3.0 版本,也就是现在的这个版本。教程采用了更稳妥的翻译,即使用了一个超纲的说法:kraken。对于 kraken 这个单词而言,它在数独技巧里还真有来头。它专门指代鱼这个数独技巧里,鱼的鱼鳍无法直接作用到删数上,而必须加入链的思路。这则和我们这里毛刺加入链的思路如出一辙。都不能说如出一辙了,简直就是一模一样。但是,这个说法有两个问题:一来是超纲了(还没解释过呢,就先用了);二来是怎么用一个单词区分出毛刺和毛边两个用法。我给出的答案是,将毛刺翻译为“Kraken Burr”,而毛边则翻译为“Kraken Link”,即加入一个新的单词 burr 和 link 区分。另外,burr 也可以使用 fin 来代指,即之前的鱼鳍的概念。fin 这个叫法早在鱼的板块里就说过了,它代指的就是鱼上面多了那么一坨影响结构成立的东西。虽然鱼鳍并非涉及添加额外的强制链,但概念和理念是一样的,因此这里我个人认为 kraken fin 和 kraken burr 应该更贴切一些,而且两种说法都 OK,本教程采用这个叫法;另外 link 对应了英文里强链 strong link 和弱链 weak link 的叫法,因此看到 kraken link 就应该知道是多出来的一坨东西造成的 link 规则。
总之,本教程在经过语义变迁和个人的反复理解后,找到了一个我个人比较满意的答案。
为了严格对技巧的术语词区分开来,也避免叠加语义导致术语表达不严谨,而因为它的思路和鱼鳍完全一样,所以本教程严格按照是否添加强制链删数来区分他们:
鱼鳍:如果鱼鳍为真时可直接删数,且不需要借助任何额外候选数(构成强制链),就称为鱼鳍;
毛刺:如果鱼鳍为真时不可直接删数,需要借助任意额外候选数(构成强制链),就称为毛刺。
显然,这种规定下,不管是借助了单个的候选数,还是借助了一组候选数形成的结构(如毛刺为真时删除一个候选数,进而产生一个数对可删目标候选数),我们都称为毛刺。