準備好了嗎?

開始玩數獨!

強制網 Forcing Nets

極限經典 + 殺手第 37 步,共 38 步閱讀約 1 分鐘

強制網是最後一種仍屬純邏輯的技巧。你依序取一個格子的每個候選數,把它的後果推到底,找出所有分支都同意的結論。凡是它們都同意的就必定為真,因為其中一個候選數就是真正的值。整個過程不必猜測:你只是檢查所有的情況,而不是只看一種。

這個模式是什麼

鏈只沿著單一條推論線前進。網則為起點格或起點區域的每個選項各走一條這樣的線,而在一般情況下,一條線還能再分岔:一個結論可能同時需要兩個先前的推論,例如「這格是 4、那格是 9,所以這一宮的 7 只剩一個位置」。檢查所有選項,讓網比鏈更強,也更費時。

起點有兩種,結論也有兩種:

起點你要追蹤它證明
有 k 個候選數的格子每個候選數一條分支所有分支共有的任何結論
在一個區域中有 k 個位置的數字每個位置一條分支所有分支共有的任何結論

如果每條分支都得出同一個填入,那個填入就是真的。如果每條分支都刪去同一個候選數,那個候選數就是假的。而如果單一分支遇到矛盾(同一區域有兩個相同數字,或某格無數字可填),那麼光憑這一點,這個候選數就是假的,不需要其他分支。

什麼時候該找它

只有在所有更便宜的方法都失敗之後:唯一數、鎖定集、魚形、翼形、鏈與近鎖定集。網很費力追蹤、又容易出錯,所以它是刻意採用的最後一步邏輯,而不是習慣。選一個有兩個候選數、周圍有很多雙候選數格的起點格;分支會保持簡短,整件事也就能驗證。

一步一步怎麼做

  1. 更新所有筆記。建立在過期候選數上的網什麼也證明不了。
  2. 選一個有兩個候選數的格子,或在某區域中有兩個位置的數字。
  3. 假設第一個選項,只寫下真正被強制的填入。
  4. 把它完全復原,再對第二個選項做同樣的事。
  5. 比較各分支。保留它們共有的任何填入或排除。
  6. 如果某條分支自相矛盾,立刻捨棄那個候選數。

實例說明

從一個格子開始

  1. 較簡單的技巧都用完了。看 H1,它只能是 1、5 或 7。

  2. H1 必為 1、5 或 7。依序試每個數字,觀察 C1 的 7。

  3. 分支 1:H1 = 7。C1 與 H1 同在第 1 行,所以不能是 7。

  4. 分支 2:H1 = 1。那麼 A1 不能是 1,所以 A1 是 7,C1 不能是 7(同樣因為第 1 行)。

  5. 分支 3:H1 = 5。E1 失去 5(第 1 行),所以 F3 是宮 4 中 5 唯一的位置。

    F3 = 5 時,F8 是 F 列中 8 唯一的位置。那麼 C8 不能是 8,所以 C1 是 C 列中唯一的 8。

    C1 = 8,所以 C1 不是 7。

  6. 試填的數字已清除。3 個分支都得出 C1 不是 7。

    從 C1 排除 7,因為 H1 的每個數字都排除了它。

較簡單的技巧都用完了。看 H1,它只能是 1、5 或 7。

H1 是 ,目標是 C1 的 7。依序追蹤 H1 的每個值:

  • H1 = 7:C1 與 H1 同在第 1 行,所以它不是 7。
  • H1 = 1:A1 不能是 1,所以 A1 是 7,同樣因為同行,C1 不是 7。
  • H1 = 5:E1 失去 5,所以 F3 是第 4 宮唯一的 5。接著 F8 是 F 列唯一的 8,C8 不能是 8,C1 是 C 列剩下唯一的 8。C1 = 8,所以 C1 不是 7。

3 條分支都以 C1 不是 7 作結,所以 C1 刪去 7。你始終不知道 H1 是什麼:分支完成了任務就被丟掉。

從區域中的一個數字開始

  1. 較簡單的技巧都用完了。看宮 7 的 7。

  2. 宮 7 需要一個 7,只能填在 G2、H2 或 J3。依序試每個位置,觀察 A2 的 7。

  3. 分支 1 和 2:若 7 在 G2 或 H2,A2 不能是 7,因為這 3 格都在第 2 行。

  4. 分支 3:J3 = 7。那麼 J3 不是 5,A3 成為第 3 行中 5 唯一的位置。

    A3 = 5 時,A2 是 A 列中 1 唯一的位置。A2 = 1,所以不是 7。

  5. 試填的數字已清除。無論宮 7 把 7 放在哪裡,A2 都沒有 7。

    從 A2 排除 7。

較簡單的技巧都用完了。看宮 7 的 7。

第 7 宮需要一個 7,只能放在 G2、H2 或 J3。目標是 A2 的 7:

  • 7 在 G2 或 H2:A2 與這兩格同在第 2 行,所以它不是 7。
  • 7 在 J3:J3 就不是 5,所以 A3 是第 3 行唯一的 5。A3 = 5 時,A2 是 A 列唯一的 1,所以 A2 = 1,不是 7。

無論第 7 宮把 7 放在哪裡,A2 都不會是 7,所以 A2 要刪去它。

在這兩個盤面中,每條分支都得到同一個結果,這就是整個論證。真正的網還可以在分支內部再分岔,那時一個結論可能同時需要兩個先前的推論。

常見錯誤

  • 開始下一條分支時,把上一條分支的標記留在盤面上。每條分支都必須從同樣未動過的局面開始。
  • 跟著「大概」走,而不是被強制的填入。只有唯一數與鎖定的排除可以寫下。
  • 漏掉起點格的某個候選數。少走一條分支,一致的結論就毫無價值。
  • 把某條分支的矛盾,當成其他分支結論的證明。

在哪裡會遇到

強制網正是我們最難的盤面所要求的。預期在傳奇數獨中遇到它,而且是在試過 3D Medusa 之類的鏈技巧之後。凡是網能解開的,原則上也有更短的技巧能解開。網是你找不到那個更短技巧時才用的方法。