數獨基本演算法
『壹』 數獨演算法
給你數獨計算器:
http://blog.xunlei.com/web/category.html?uin=mianmiany1978&category_id=143
數獨游戲:
http://blog.xunlei.com/web/category.html?uin=mianmiany1978&category_id=174
數獨演算法:
http://www.puzzle8.com/suku/news.asp
數獨快速入門(上篇)
數獨快速入門(中篇)
數獨快速入門(下篇)
唯一解法
唯一候選數法
隱性三鏈數刪減法
隱性數對刪減法
三鏈列刪減法
區塊刪減法
矩形頂點刪減法
關鍵數刪減法
補充:
合格的數獨是只有唯一解。
而數獨有難易度的分類,找一份報紙注意刊登的數獨謎題是1星,還是5星。
在網路上,更分成容易題、進階題、難題、極難題、超難題....
一般都是依據需要運用的技巧,而技巧是區分難易的。
數獨不用猜測,解題全部是運用邏輯推理。
數獨不用電腦程序分析,就可以解的題目是直觀法數獨題。
而超難題是需要電腦分析,及把全盤標示可選數,那是可選數謎題。
沒有所謂解題通則。
1.直觀解(一般報紙、書籍)
直觀法技巧
直觀法技巧 01 (容易級) 唯一解
直觀法技巧 02 (容易級) 基本摒除
直觀法技巧 03 (進階級) 宮對行列摒除
直觀法技巧 04 (進階級) 行列對宮摒除
直觀法技巧 05 (進階級) 群組解法
直觀法技巧 06 (困難級) X-Wing摒除法01
直觀法技巧 06 (困難級) X-Wing摒除法02
直觀法技巧 07 (困難級) 數偶摒除法
http://hi..com/kiwy07/blog/item/181fc482a153f3bd6c8119ab.html
2.可選數(以程序自動生成可選數)
Last value in block, row or column
Hidden Single in block
Hidden Single in row or column
Direct Pointing
Direct Claiming
Direct Hidden Pair
Naked Single
Direct Hidden Triplet
Pointing
Claiming
Naked Pair, X-Wing, Hidden Pair
Naked Triplet, Swordfish, Hidden Triplet
XY-Wing, XYZ-Wing
Unique rectangles and loops
Naked Quad, Jellyfish, Hidden Quad
Bivalue Universal Graves
Aligned Pair Exclusion
Bidirectioal X-Cycles and Y-Cycles
Forcing X-Chains
Forcing Chains, Bidirectional Cycles
Nishio
Cell/Region Forcing Chains
Dynamic Forcing Chains
http://diuf.unifr.ch/people/juillera/Sudoku/FAQ.html
通則無法解的題
直觀難題
006589307
030602008
809703500
000891403
394265871
180374000
003026785
000458030
008037200
可選數極難題
970000000
003927000
008410709
300700400
060050070
007040003
105074900
000068507
786000042
不要把謎題解一次列出,而是找出下一步,及他的邏輯推理方法。
不要用猜測。
『貳』 請問如何隨機生成一個數獨
答:關於這個問題,
數獨(すうどく,Sūdoku)是一種運用紙、筆進行演算的邏輯游戲。玩家需要根據9×9盤面上的已知數字,推理出所有剩餘空格的數字,並滿足每一行、每一列、每一個粗線宮內的數字均含1-9,不重復。
如上圖所示,我需要一個簡單的原型,也就是按照一定規則組成的數獨表,通過一個隨機生成的Map(也就圖中所示的參照表),類似與翻譯似的經過兩次轉換,變成一個看似沒有規則但都繼承了原型表規律的新的數獨表。另外,值得一提的是,這兩衡襪次參照生成並不需要使用同一個Map。
缺陷:這個演算法其實只能算是「偽演算法」,因為他並沒有真正的生成一個隨機的數獨表,只是一種表象上
『叄』 數獨問題'高級數獨沒有更快捷的解答方式嗎
計算機演算法簡介
本文所討論的演算法是一種通用演算法,雖然不能說是最快的演算法,但卻可以求解所有的數獨游戲。
演算法准備:
1、一個可能性:表示某個格子可能填寫的數字。
2、可能性數目:表示某個格子可能性的數量。為0表示已經確定。
3、區域標志:表示某個格子所在區域(小九宮)的ID,所有區域標志都是預定義的。
4、確定數量:表示所有數字已經確定的格子的數量,為81時則表示已經找到解。
5、整個九宮格用三個矩陣表示:可能性矩陣,數目矩陣,區域標志矩陣
演算法的基本思想:
步驟1、將所有未確定的格子的可能性定義為0xFFFF(即所有數字都可能),可能數目為9。
步驟2、尋找所有確定的格子A(可能數目為0),在所有與A同行、同列和同區域的未確定的格子的可能性中減去與A相同的可能性。例如:A確定為9,則與A同行、同列和同區域(區域標志相同)的未確定的格子的可能性與0xFEFF按位與(除去可能性9),並將其可能性數目減少。
在除去可能性的過程中如果發現某個格子B的可能性數目由1減小為0,說明B和A只能取相同的數字,這可能是題目本身無解引起,也肯能是由於步驟3中搜索方向不對引起的,可認為此方向的搜索無解,退出這一方向的搜索。定義這個檢查為唯一性檢查。
步驟3、尋找所有未確定格子中可能性數目最少的格子M,如果M的可能性數目為1,則確定M:將M的可能性數目定義為0,並把確定數量加1,如果此時確定數量達到81,則報告找到解,否則,在所有與M同行、同列和同區域的未確定的格子的可能性中減去與M相同的可能性,並進行唯一性檢查。然後重復步驟3。
如果M的可能性大於1,則把M假設為所有M的可能性,分多個方向進行搜索,在每一個搜索方向重復步驟3(這個可以用遞歸來實現)。
演算法性能
本演算法可以在50毫秒以內求解任意有解的數獨游戲。