當前位置: 華文星空 > 知識

該數獨,還有什麽辦法不需要假設的?

2021-06-13知識

首先先澄清一點,並不是所有的數獨都能找到有邏輯的解法,有一些到最後只能一個一個數碼去試。當然隨著數獨的更進一步的研究說不定可以研究出更加高明的解法把每個數獨都解開,然而在今天我們還沒有找到全部的這些解法。

不過,一般像題主這種在數獨遊戲軟件中找到的題目都是設計成可以使用有邏輯的解法解出來的。

這裏推薦一個網站:SudokuWiki,作者研究數獨多年,總結了很多數獨的演算法,並且也制作了一個線上數獨分析器,直觀的展示可以哪一種演算法,來刪除哪一個待定數碼。本答案中所有的截圖都來自於這個分析器。

目前題主的情況是這樣的:

首先,我們找到了一個用X-Wing可以刪除的數碼:

仔細觀察黃色高亮的這4個格子,其中每一格裏都出現了數碼5。

那麽如果5出現在其中的一個位置,比如左上角C1,那麽5就不會出現在和它同一行或同一列的右上角C5和左下角J1。那麽5就只能出現在右下角J5(因為第5列中5只能出現在C5和J5中)。反之同理,如果5出現在右上角C5,那麽肯定有另外一個5出現在左下角J1。換句話來說這個數碼5會 在對角線的兩格成對出現

那麽,和這幾個黃色格子同行同列的其他格子中絕對不會出現5,這些5都是可以刪除的,比如綠色高亮格子裏的那個5。

由於這個黃色格子構成了兩個對角線,也就是一個X形,所以這個演算法稱之為X-Wing。

SudokuWiki中也提供了X-Wing演算法的詳細解釋,可以參見:

用X-Wing演算法刪除了一個5之後,我們並沒有得到什麽特別有用的線索,所以我們繼續觀察這個數獨:

我們找到了另外一個可以用WXYZ Wing演算法可以刪除的數碼:

仔細觀察這4個高亮的格子,這4個格子中每個都只有兩個數碼,其中黃色高亮的兩個格子包含數碼6,而除去這兩個數碼6以外的另外兩個數碼9和3,在同一列中唯一一個可能出現的其他位置用棕色標註(第二列的9和第三列的3),這兩個棕色標註的格子又出現在了同一行,並且其中的另外一個數碼1只可能在同一行的這兩個棕色格子中出現。

這四個數碼6,3,1,9就構成了一個路徑,如果路徑中任意一個數碼確定了,那麽其他所有數碼都會確定。

我們分情況看一下:

  • 如果黃色格子E2是6,那麽棕色格子D2必然為9,那麽D3必然為1,那麽黃色格子J3必然為3。
  • 如果黃色格子E2不是6,那麽E2就是9,那麽棕色格子D2必然為1,那麽D3必然為3,那麽黃色格子J3必然為6。
  • 也就是說6 必然出現在這兩個黃色格子的其中一個上

    那麽觀察G2這個格子,這個格子中有備選數碼6。然而這個格子與黃色格子E2在同一列,與黃色格子J3在同一個九宮格。如果黃色格子E2和J3中必然有一個6的話,6就必然不會出現在G2裏,G2中的備選數碼6可以刪除。

    這種演算法被稱之為WXYZ Wing,其中WXYZ代表這個路徑中有4個不同的數碼參與,比如這道題中的6,3,1,9。如果我們用中文轉譯的話,可以管這種演算法叫「四數路徑」。

    想要對這個演算法有更加深入的了解,可以參見SudokuWiki中WXYZ Wing的頁面:

    刪除了G2中的待定數碼6,我們就可以解出G2是5:

    之後問題也就迎刃而解了。

    最終答案是這樣的: