# 毛刺的基本推理

## 毛刺的概念 <a href="#concept-of-burr" id="concept-of-burr"></a>

<figure><img src="/files/g7Jy18m3INWil8xwI3Yk" alt="" width="375"><figcaption><p>毛刺数组</p></figcaption></figure>

如图所示。假设我们忽略 `r3c9(7)` 这个候选数，当它不存在的话，那么 `r3c789` 三个单元格将只有 2、5、6 三种候选数，构成显性三数组（严格来说是死锁三数组），于是，`b3` 和 `r3` 上其余位置的 2、5、6 均可删除，就像是图上这样的删数。

但是很明显我们不能这么做，因为 `r3c9(7)` 的客观存在导致我们无法将删数当成真的结果。这可怎么办呢？没事，我们就按鱼鳍的类似逻辑去思考这个数。

倘若它不存在（为假），则有数组删数；但如果它为真的话，那么我们不妨就用一下强制链的思维去看别的地方有没有结论。

<figure><img src="/files/lFjIjL1deHm78XtV2YdE" alt="" width="375"><figcaption><p>毛刺 XY-Wing</p></figcaption></figure>

然后，就真的被我们逮着了：如果 `r3c9(7)` 为真，则 `r6c9(7)` 为假，于是对于 `r34c8` 和 `r6c9` 三个单元格而言，XY-Wing 结构就成立了，删数是 `r23c9(6)`。

那么，结合两个配图我们可以看到，数组成立时候的删数和 XY-Wing 成立时候的删数均包含 `r2c9(6)`，因此，这个题的结论就是 `r2c9 <> 6` 了。

可以从这个例子里看到，我们稍微借助了一下鱼鳍的概念，将 `r3c9(7)` 这个候选数视为鱼鳍分情况讨论了一下，然后发现两种情况均可删除同样的位置，于是删数便成立。我们把这种鱼鳍的类似用法，放在强制链里推导的思维称为**毛刺**（Kraken Burr、Burr 或 Kraken Fin）。

## 以毛刺冠名的技巧不区分主次关系 <a href="#there-is-no-primary-and-secondary-relation-on-naming-of-kraken-patterns" id="there-is-no-primary-and-secondary-relation-on-naming-of-kraken-patterns"></a>

对于这个用法而言，`r3c9(7)` 是作为数组的毛刺存在。不过我们也可以把这个链倒过来看：从 XY-Wing 出发，发现 `r6c9(7)` 是结构的毛刺。它为真的时候会引发 `r3c9(7)` 为假，于是数组成立。从这个视角里可以看出，毛刺的使用是不怎么区分先后关系的，它更像是链里正反都可以推理的效果，所以毛刺结构具体跟什么技巧所绑定命名，其实都可以。比如这个题你叫它毛刺数组是可以的；你叫它毛刺 XY-Wing 也是可以的。

不知道你还记不记得，早在链里我们就用过了毛刺的说法——毛刺数组链。在那个时候，它因为刚好是数组里多了那么一坨的东西，本身因为不影响链的直推逻辑，所以毛刺在那个时候还只是一个名称而已；对于现在，毛刺可能就不那么直观了，它不一定能作为一个单独的链在使用，它必须讨论真假性进行删数的寻找。

## 多个毛刺 <a href="#multiple-burrs" id="multiple-burrs"></a>

我们再来看一个例子。

<figure><img src="/files/G4jWXacKBpn1GMsd8oq1" alt="" width="375"><figcaption><p>毛刺拓展矩形</p></figcaption></figure>

如图所示，这是一个毛刺拓展矩形，有三个毛刺：`r23c1(9)` 和 `r3c4(9)`。我们直接讨论他们的真假性。如果三个毛刺全为假，则会有图上的这样的画法。链表示如下：

```
4r3c6=(4-1)r23c4=1r3c8-(1=9)r3c9
```

这里用到了一个区块弱链关系 `(4-1)r23c4`，原因是同真之后，数字 2 无法成功填入 `b2` 导致矛盾。所以这是一个很正常的不连续环，记住这是当毛刺为假时构成的不连续环。

那么，三个毛刺如果至少有一个为真呢？我们也有链可以用，不过我们稍微需要把毛刺拆一下，分个组。很显然 `r3c4(9)` 和删数 `r3c6(9)` 同在一个宫里，所以它为真的情况可以直接视为鱼鳍直接删数，就不用参与链的讨论；当然，`r3c1(9)` 因为和删数同行，所以也可以不考虑。但是，左边的 `r2c1(9)` 就不行了，这个确实跟删数没有直接关系。

那么我们不妨就这么分组。如果 `r3c14(9)` 这两个毛刺为假，而 `r2c1(9)` 为真时，我们有这个强制链：

<figure><img src="/files/NMdhlIZxTFnEE2VwvdIc" alt="" width="375"><figcaption><p>毛刺 r2c1(9) 为真的讨论</p></figcaption></figure>

如图所示。我们有这么一个强制链。假设 `r2c1(9)` 为真时，可以得到 `r46c1(9)` 为假的逻辑。所以这两个单元格会构成关于 4 和 5 的显性数对。为了确保 `r46c16(45)` 不会出现唯一矩形的矛盾，由于 `r46c6(5)` 是共轭对，所以必须让 `r3c6(4)` 此时为真，以规避数字 4 也为共轭对直接出现矛盾。所以可以得到 `r3c6(4)` 为真的结果。

也就是说，如果 `r2c1(9)` 毛刺为真，我们可以得到 `r3c6(4)` 为真的结论，这恰好也可以删除 `r3c6(9)`。

然后就还剩下一种情况了，即 `r3c14(9)` 这两个毛刺至少有一个为真。这两个的话，因为刚好和 `r3c6(9)` 删数同在一个行里，所以它俩但凡有一个为真都可以直接删。

所以，我们经过三轮的讨论，最终可以得到 `r3c6 <> 9` 的结论。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://sudoku.kazusa.tech/construction/03-kraken-logic/01-reasoning-of-burr.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
