# 有技巧名的强制链

## 归并强制链（Merged Forcing Chains） <a href="#merged-forcing-chains" id="merged-forcing-chains"></a>

可以看到，前面在假设过程之中，我们用到的思路都是在假设某一个节点为真或假时候引发矛盾。下面我们来看强制链在合并后产生的删数效果。

<figure><img src="/files/DzeaG0TOtHmDHxhbFTQf" alt="" width="375"><figcaption><p>归并强制链</p></figcaption></figure>

如图所示。这个链的表示如下：

```
7r23c2:
  9r23c2-9r1c1
  (7-9)r9c2=9r9c7-9r1c7
7r3c5:
  (7-9)r1c5
```

之前我们介绍的强制链都是从一个节点出发的。这次我们从多个不同节点出发看看能不能推理。比如这个题，我们可以看到， 终点三个分支都指向同一个区域的三个同一个数字的摆放位置，这一点保留了下来；但是起点完全不一样。之前的起点还保留了同一个节点作为初始假设，这次倒好，直接都不一样了。

这是否能推理呢？答案是可以的。这里干脆我们把删数也作为节点纳入到链里，但是分开看。比如这个题，我们先看 `r3c1(7)` 这个候选数。

假设把他视为一个普通节点来看的话，那么它的下一个节点可以是 `r23c2(7)` 或者 `r3c5(7)`。因为之后的推理是强链关系出去的，所以我们这里添加的应该是一条弱链关系。换言之，我们应假设 `r3c1(7)` 纳入时的状态是假设它为真。那么，纳入后，可以看到这个链就退化为了一个很普通的区域强制链，并得到最终 `r1` 所有填 9 的位置全部为假，引发了矛盾。所以，这个假设不成立。

对于 `r3c3(7)` 而言，好像天助我也一般，它也可以纳入到强制链之中，并接入刚才完全相同的这两个节点，并仍然可以得到同样的矛盾。所以，这样一口气强制链就可以删两个数。

明白了吧。这种强制链仍然是普通的区域强制链或者单元格强制链，只不过我们把开始的节点稍微延后了一步：因为强制链的删数一般只有一个，所以我们延后了节点后，每个分支对应的起点发生了变化。那么他们就可以用类似普通链里“头尾删交集”的效果找出除了延后之前的那个节点以外，还可以纳入的节点都有哪些。然后一并删除。我们把这个过程称为**归并强制链**（Merged Forcing Chains），即把分支延后后归并得到多个删数的强制链逻辑。它提供了一个找多个删数的强制链的视角。

我们再来看一个例子。

<figure><img src="/files/s1b22M8uyUYfmGDirStD" alt="" width="375"><figcaption><p>归并强制链，另一个例子</p></figcaption></figure>

如图所示，这条链的表示如下：

```
7r9c5:
  (7-4)r7c4=(4-6)r1c4
  (7-6)r7c4
6r9c1:
  6r5c1-6r5c4
  6r5c1-6r5c456=9r5c45-9r5c7=9r1c7-(9=2)r2c8-2r3c8=(2-6)r3c4
```

这个题有四个分支，并归并为两个部分。

## 鳍链（Finned Chain） <a href="#finned-chain" id="finned-chain"></a>

### 基本推理 <a href="#reasoning-of-finned-chain" id="reasoning-of-finned-chain"></a>

试想一下，如果强制链的分支里有一个分支起步就是夭折的，这种链会有删数吗？

<figure><img src="/files/FVu4xa1vH2AXV2U1uWdu" alt="" width="375"><figcaption><p>鳍链</p></figcaption></figure>

如图所示。假设我们先忽略掉 `r1c5(4)`，我们就可以看到一个完整的链（准确来说，叫区块不连续环）：

```
4r4c6=6r3c6-(6=1)r1c5-1r3c46=1r3c9-1r2c7=(1-3)r6c7=3r6c5
```

然后就有了这样的删数。但是，看起来似乎多出来的 `r1c5(4)` 也并不会影响链的删数，因为这个多出来的数填到格子里，也可以删掉 `r6c5(4)`。所以，按鱼鳍的思路看这个数的话，它具有如下的两个情况：

* 如果 `r1c5(4)` 为假，则链成立，删数是 `r6c5(4)`；
* 如果 `r1c5(4)` 为真，则删除行列宫其余位置的 4，也包含 `r6c5(4)`。

所以，这个题的结论是 `r6c5 <> 4`。

可以看到，这是一个普通的链，外加了一个“鱼鳍”。我们把这种链称为**鳍链**（Finned Chain）。

我们再来看一个例子。

<figure><img src="/files/mCdtwLYDH04Ch4uzN30I" alt="" width="375"><figcaption><p>鳍链。另一个例子</p></figcaption></figure>

如图所示。这个例子也自己看吧。这个例子用了两个鱼鳍，假设方式是一样的，先假设鱼鳍都不存在，然后引出链；然后假设鱼鳍存在，于是按鱼鳍存在的位置删，最终交集删数。

### 这也叫强制链？ <a href="#is-it-a-forcing-chains" id="is-it-a-forcing-chains"></a>

你可能会问，这是强制链吗？是的，虽然看起来像是鱼鳍和普通链的结合，但如果你把鱼鳍视为一个独立的分支，并把其中任意一个强链关系拆解为一组可以用于删数的分支的话，那它就会变为强制链的视角。比如这个题，对于 `b9` 而言，一共有 4 处可以填 5 的位置。那么按照强制链的视角，讨论 5 的全部填数位置，其中两个分支（鱼鳍）将因为假设为真导致直接构成删数；剩下两个分支，就是图中连接为强链关系的 `r7c8(5)` 和 `r8c7(5)` 了。把它俩拆开，然后形成两个分支最终仍然可以到达 `r1c9(5)` 的地方。因此，它其实是可以转为强制链的视角的（尽管这非常没有必要）。

那么至此我们就把强制链的内容介绍完了。


---

# 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/chain-theory/10-forcing-chains/02-named-forcing-chains.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.
