數獨中的劍魚技巧
什麼是劍魚?
劍魚是一種魚形技巧,將 X-Wing 的兩行或兩列結構擴展到三個基礎單位。針對某個候選數,三行中的每一行最多只能有三個候選位置,而且這些位置都必須落在相同的三列中。按列觀察時,只需交換行和列的角色。
這三行稱為基礎行,三列稱為覆蓋列。在三條基礎行中,該候選數必然以某種順序佔據這三條覆蓋列,因此可以從覆蓋列中、基礎行以外的其他格子刪除該候選數。
如何按行尋找劍魚
- 選擇一個候選數。
- 找出三行,在每行中該候選數有兩個或三個候選位置。
- 檢查這些候選位置是否全部包含在相同的三列中。
- 從這三列中基礎行以外的其他格子刪除該候選數。
每一行可以只使用三列中的兩列。關鍵是所有候選位置合起來必須正好落在三列覆蓋範圍內,不要刪除三條基礎行自身九個位置中的候選數。
為什麼可以排除候選數?
假設候選數7只分布在三行中,合起來只出現在第2、5、8列。三行必須分別在這三列中的某一列放置7,而每列只能有一個7。因此,三個7作為整體必然佔據這三列,雖然具體順序尚未確定。
所以第2、5、8列中其他行的格子都不能再包含7,因為這三列必須從三條基礎行中得到各自的7。
劍魚與 X-Wing
X-Wing 使用兩條基礎行和兩條覆蓋列;劍魚使用三條基礎行和三條覆蓋列,並允許每條基礎行有兩個或三個候選位置。劍魚不要求四個角組成完整矩形,因此通常更難發現。
劍魚常見誤區
- 一個劍魚只能圍繞同一個候選數展開。
- 候選位置必須包含在三條覆蓋單位中,不能只是大致接近。
- 基礎行中存在其他候選數並不會自動破壞劍魚,只需關注選定數字。
- 只能從基礎行以外的覆蓋單位中排除候選數。
劍魚適用於所有數獨嗎?
適用。劍魚是一種通用的數獨邏輯結構,不依賴某個固定數字。通常在完成單數、數組和交叉排除後更容易發現。由於它需要準確的候選數標記,完整填寫 Notes 會更便於核對。