Sudoku Flow
數獨百科 · 數學與電腦

電腦如何解數獨

更新於2026-10-05

回溯法

求解程式在一個空格中嘗試填入一個合法數字,然後繼續。如果沒有任何數字能得出解答,就撤銷先前的某個選擇,改試另一個。先選擇可填數字最少的格子,往往能大大縮短搜尋過程。

資料來源: Wikipedia: Sudoku solving algorithms, Peter Norvig: Solving Every Sudoku Puzzle

精確覆蓋與舞蹈鏈

數獨可以改寫成精確覆蓋問題:選出一組填法,使每個格子,以及每一行、每一列和每一宮中的每個數字,都恰好被覆蓋一次。高德納在2000年11月的一篇論文中描述了舞蹈鏈(Dancing Links),這是執行其回溯式 X 演算法的一種高效方法;將它應用於數獨的精確覆蓋模型,便能迅速找出一道謎題的所有解。

資料來源: Wikipedia: Sudoku solving algorithms, Knuth, Dancing links (arXiv cs/0011047, 2000)

隨機搜尋

有些程式會先隨機填滿網格,再調換數字以減少衝突的數目,所用方法包括模擬退火或遺傳演算法。這些方法曾作為替代途徑受到研究;成效如何,取決於程式和謎題本身。

資料來源: Wikipedia: Sudoku solving algorithms

像人一樣思考的求解器

提示引擎的任務不同:不只是找出答案,而是展示一個人能跟着做的下一步。我們應用程式的引擎按固定次序嘗試各種人類技巧,從最簡單的(例如隱性唯一數)到最困難的(例如鏈和幾乎鎖定集),並採用第一個能填出數字的技巧;較難的技巧則是透過先排除候選數來運作。它在一道謎題中用到的最難技巧,決定了該謎題在應用程式中的等級。

資料來源: 每個數獨難度等級,要你懂甚麼

另見

Related articles

資料來源

所有文章 →

數獨應用程式圖示

想玩更多這類盤面?

我們也製作了一款數獨應用程式,支援 iPhone、iPad、Mac 和 Android。程式內完全沒有廣告,可以離線使用;你要求提示時,它會教你用哪種技巧,而不只是幫你填上一個數字。

Sudoku Flow 由 Rubigo Games 製作,也就是本網站推介的數獨應用程式的開發者。