Прочетох тъз тема преди няколко дена и не спирам да мисля по въпроса... за жалост не измислям много.

Първото което ми дойде на акъла беше това, което demond е описал, т.е. решаване чрез рекурсия и елминации. След време ми дойдоха още идеи за алгоритми.. но за жалост не могат генерират всички възможни комбинации(което ми е целта

)
Алгоритъм първи: Кодиране
Като за начало имаме готова въведена sudoku таблица. Нека я наречем базова таблица. След това правим масив(да кажем) в който за всяко число - въвеждаме ново число(ем не съм добър в обясненията)... ето пример.
CODE
const code: Array[1..9] of byte = (9, 8, 7, 6, 5, 4, 3, 2, 1);
Идеята е да се кодира всеки един блок(квадратче с число) от базовата таблица според зададения масив с кодове. Получената таблица, след като се кодира базовата е винаги валидна(стига данните в масива да са валидни). Работейки по този начин, алгоритъма може да генерира до 9!(девет факториел) валидни sudoku таблици(което е доста далеч от всичките възможни

).
Алгоритъм втори: Разместване(тък също имаме базова таблица)
По ено време забелязах, че като се разместят редовете в таблицата - валидността и не се променя. Естествено ако се разместват в границите на решетките(т.е ред първи може да се размества само с ред втори и трети, а ред четвърти - само с пети и шести). Освен това, колоните също могат така.

А още освен туй редовете от решетки могат да се разместват с други редове от решетки. И отвново -> същото важи и за колоните от решетки.
Възможните комбинации, които генерира този алгоритъм са 6^3*6^3*6^2 = 6^8. Което също е далеч от всичките възможни.
Не съм сигурен, но мисля, че ако се съчетаят двата алгоритма ще генерира много еднакви резултати.
А всъщност дори не знам и колко са всичките възможни резултати.. Бях направил една програмка да ги проброи. Като си лягах една вечер я пуснах, и на сутринта гледам беше стигнала до 500 и нещо милиона... След туй я напрайх да брои таблиците, без да променя първия ред(което би трябвало да намали вариантите със 9 факториел), и пак като са сабудих беше на 500 и нещо милиона ... накрая са отказах да ги броя.