Sudoku Flow
數獨百科全書 · 數學與電腦運算

電腦如何解數獨

更新日期:2026-10-05

回溯法

解題程式會在空格中嘗試填入一個符合規則的數字,然後繼續。如果所有數字都無法導向解答,就撤銷先前的選擇,改試另一個。優先選擇可填數字最少的格子,往往能大幅縮短搜尋過程。

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

精確覆蓋與舞蹈鏈

數獨可以改寫為精確覆蓋問題:選出一組數字填入位置,使每個格子,以及每一列、每一欄與每一宮中的每個數字,都恰好被覆蓋一次。在2000年11月的一篇論文中,唐納德・高德納介紹了舞蹈鏈,這是一種有效率地執行其回溯演算法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 製作。