魯班鎖計(jì)算機(jī)分析的算法解析.二_第1頁
魯班鎖計(jì)算機(jī)分析的算法解析.二_第2頁
魯班鎖計(jì)算機(jī)分析的算法解析.二_第3頁
魯班鎖計(jì)算機(jī)分析的算法解析.二_第4頁
魯班鎖計(jì)算機(jī)分析的算法解析.二_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

魯班鎖計(jì)算機(jī)分析的算法解析 .二.進(jìn)入整個(gè)分析程序的核心部分——拆卸程序:拆卸程序是整個(gè)魯班鎖計(jì)算機(jī)分析程序的核心部分,它的主要思路是優(yōu)先考慮拆出一根柱。當(dāng)待拆的柱組拆出一根柱(或1組柱)時(shí),下一步還是試拆一根柱。以下是我根據(jù)我在《魯班鎖結(jié)構(gòu)分析法》用的思路做的拆卸程序的邏輯過程:1.1開始拆卸,運(yùn)行6柱組拆一柱的子程序,可拆出1柱,則進(jìn)行步驟1.2運(yùn)行5柱組拆一柱的子程序;如任意1柱都不可拆出,則進(jìn)行步驟2.1運(yùn)行6柱組拆一個(gè)2柱組的子程序。1.2運(yùn)行5柱組拆一柱的子程序,可拆出1柱,則進(jìn)行步驟1.3運(yùn)行4柱組拆一柱的子程序;如任意1柱都不可拆出,則進(jìn)行步驟2.2運(yùn)行5柱組拆一個(gè)2柱組的子程序。1.3運(yùn)行4柱組拆一柱的子程序,可拆出1柱,則進(jìn)行步驟1.4運(yùn)行3柱組拆一柱的子程序;如任意1柱都不可拆出,則進(jìn)行步驟2.3運(yùn)行4柱組拆一個(gè)2柱組的子程序。1.4運(yùn)行3柱組拆一柱的子程序,可拆出1柱,則此編碼表示的鎖有解(為5+1的拼合方式),拆卸程序結(jié)束,進(jìn)入整個(gè)程序的下一步;如任意1柱都不可拆出,則此編碼表示的結(jié)構(gòu)無解(為3柱的死疙瘩),拆卸也程序結(jié)束,同樣進(jìn)入整個(gè)程序的下一步;。2.1運(yùn)行6柱組拆一個(gè)2柱組的子程序。可拆出1個(gè)2柱組,則進(jìn)行步驟2.4運(yùn)行4柱組拆一柱的子程序;如任意一個(gè)2柱組都不可拆出,則進(jìn)行步驟3.1運(yùn)行6柱組分成2個(gè)3柱組的子程序2.2運(yùn)行5柱組拆一個(gè)2柱組的子程序。??刹鸪?個(gè)2柱組,則進(jìn)行步驟2.5運(yùn)行3柱組拆一柱的子程序;如任意一個(gè) 2柱組都不可拆出,則此編碼表示的結(jié)構(gòu)無解(為 5柱的死疙瘩),拆卸程序結(jié)束,進(jìn)入整個(gè)程序的下一步。2.3。運(yùn)行4柱組拆一個(gè) 2柱組的子程序。??刹鸪?個(gè)2柱組,則此編碼表示的鎖有解(2+2+1+1的拼合方式),拆卸程序結(jié)束,進(jìn)入整個(gè)程序的下一步;如任意一個(gè)2柱組都不可拆出,則此編碼表示的結(jié)構(gòu)無解 (為4柱的死疙瘩),拆卸程序結(jié)束,進(jìn)入整個(gè)程序的下一步。2.4運(yùn)行4柱組拆一柱的子程序,可拆出1柱,則進(jìn)行步驟2.6一柱的子程序;如任意1柱都不可拆出,則進(jìn)行步驟2.7運(yùn)行

運(yùn)行3柱組拆4柱組拆一個(gè) 2柱組的子程序。2.5運(yùn)行3柱組拆一柱的子程序,可拆出1柱,則此編碼表示的鎖有解(為3+2+1的拼合方式),拆卸程序結(jié)束,進(jìn)入整個(gè)程序的下一步;如任意1柱都不可拆出,則此編碼表示的結(jié)構(gòu)無解(為3柱的死疙瘩),拆卸也程序結(jié)束,同樣進(jìn)入整個(gè)程序的下一步;。2.6運(yùn)行3柱組拆一柱的子程序,可拆出1柱,則此編碼表示的鎖有解(為4+2的拼合方式),拆卸程序結(jié)束,進(jìn)入整個(gè)程序的下一步;如任意1柱都不可拆出,則此編碼表示的結(jié)構(gòu)無解(為3柱的死疙瘩),拆卸也程序結(jié)束,同樣進(jìn)入整個(gè)程序的下一步;。2.7 。運(yùn)行4柱組拆一個(gè) 2柱組的子程序。可拆出 1個(gè)2柱組,則此編碼表示的鎖有解(2+2+2的拼合方式),拆卸程序結(jié)束,進(jìn)入整個(gè)程序的下一步;如任意一個(gè)2柱組都不可拆出,則此編碼表示的結(jié)構(gòu)無解 (為4柱的死疙瘩),拆卸程序結(jié)束,進(jìn)入整個(gè)程序的下一步。3.1運(yùn)行6柱組分成2個(gè)3柱組的子程序。如果不能分成 2個(gè)3柱組,則此編碼表示的結(jié)構(gòu)無解(為6柱的死疙瘩),拆卸程序結(jié)束,進(jìn)入整個(gè)程序的下一步。如果可以分成 2個(gè)3柱組,則進(jìn)入步驟 3.2 :對2個(gè)3柱組各自進(jìn)行 3柱組拆一柱的子程序。3.2對2個(gè)

3柱組各自進(jìn)行

3柱組拆一柱的子程序。只要有

1個(gè)三柱組不能拆出任意一柱,則此編碼表示的結(jié)構(gòu)無解(為 3的死疙瘩),拆卸程序結(jié)束,進(jìn)入整個(gè)程序的下一步;如果2個(gè)三柱組都可以拆出1根柱,則則此編碼表示的鎖有解(3+3方式),拆卸程序結(jié)束,進(jìn)入整個(gè)程序的下一步;這個(gè)拆卸程序只有1個(gè)入口,出口有12個(gè)。其中7個(gè)出口是以無解結(jié)束,5個(gè)出口是以有解結(jié)束。圖三是上述過程的流程圖。雖然不太規(guī)范,但是它對拆卸程序的流程應(yīng)該表達(dá)清楚了。圖三拆卸程序完成,下面進(jìn)入環(huán)節(jié)四。四. 拆卸分析后的數(shù)據(jù)處理,這個(gè)環(huán)節(jié)很簡單。就是對有解和無解兩種情況分別做不同的處理。對結(jié)果是無解的處理;將這個(gè)編碼所代表的結(jié)構(gòu)的在所有不同位置時(shí)的不同編碼和它們鏡象結(jié)構(gòu)的不同編碼全部放到“已處理數(shù)據(jù)”數(shù)據(jù)庫中。接著進(jìn)行下一步:令I(lǐng)=I+1,處理下一個(gè)編碼:與“已處理數(shù)據(jù)”數(shù)據(jù)庫中的數(shù)據(jù)比對;判斷程序是否運(yùn)行完畢;返回環(huán)節(jié)二,進(jìn)入斷柱判斷程序。對結(jié)果是有解的處理;與對結(jié)果是無解的處理基本相同。只是增加了一項(xiàng)工作:將此編碼和它的鏡象結(jié)構(gòu)的不同編碼放到“有解結(jié)構(gòu)”的數(shù)據(jù)庫中,等待輸出。(如果它的鏡象結(jié)構(gòu)的12個(gè)編碼中,有與此編碼相同的,則只將此編碼一個(gè)放到“有解結(jié)構(gòu)”的數(shù)據(jù)庫中)五.環(huán)節(jié)五:對全部有解數(shù)據(jù)綜合分析整理。這可以是分析程序以外的工作。對于6柱實(shí)心鎖的分析程序 SCIAM,有解的的結(jié)果是 119979個(gè)。從這119979個(gè)結(jié)果中篩選出6柱實(shí)心鎖的有用柱369個(gè)應(yīng)該是必須做的。其余就沒有什么強(qiáng)制要求了。到這里關(guān)于 6柱實(shí)心鎖的分析程序 SCIAM的算法解析就算完成了。再次說明:我是計(jì)算機(jī)的程序盲。 以上說法中如有不規(guī)范或錯(cuò)誤之處, 歡迎批評。對于其它三類鎖的三個(gè)程序: 1.用可鋸柱,內(nèi)部無孔的 JRM;2. 用可鋸柱,內(nèi)部有孔的 NOTC;3.用普通柱,內(nèi)部有孔的 HB6。簡述如下:1. 用可鋸柱,內(nèi)部無孔的 JRM:可以比較簡單得到,只是在 6柱實(shí)心鎖的分析程序SCIAM的對有序的數(shù)組的編碼進(jìn)行斷柱判斷的環(huán)節(jié)后,增加一個(gè)可鋸柱判斷的小程序,“是”,則進(jìn)入下一步拆卸程序;“否”,則處理下一個(gè)編碼。用普通柱,內(nèi)部有孔的HB6:這是卡特的《魯班鎖(孔明鎖)的計(jì)算機(jī)分析法》所闡述的程序。它與在6柱實(shí)心鎖的分析程序SCIAM主要區(qū)別是:①要處理的有序數(shù)組的不同 .為了表示活動塊的空缺,引入虛擬的 0#柱。如果一個(gè)活動塊空缺,那它就屬于虛擬的 0#柱。這樣,每一個(gè)活動塊可以屬于的柱就成了表二。表二原來的32位,2進(jìn)制和3進(jìn)制混合的有序數(shù)組 。就變成了 32位,3進(jìn)制和4進(jìn)制混合的有序數(shù)組。新的有序數(shù)組的不同的編碼數(shù)是324*48=個(gè)不同的數(shù)。它的第一個(gè)數(shù)是: 00000000000000000000000000000000;它的最后一個(gè)數(shù)依然是: 33334444445555556646645665666666。需要處理的編碼約是 6柱實(shí)心鎖編碼的 16.8萬倍。由此可知,HB6程序包含了 SCIAM程序。②整個(gè)分析程序的核心部分——拆卸程序也將復(fù)雜很多。 6柱實(shí)心鎖的拆解,絕大部分是只要柱(或柱組)可以移動,就可以拆出;只有極少的結(jié)構(gòu)要先移動1根柱,才可以拆出另一根柱。而有孔鎖會經(jīng)常出現(xiàn)要多次的移動柱(或柱組)才可以拆出一根柱。③由于有解的編碼也會多很多,同時(shí)會出現(xiàn)很多很多的垃圾解,例如有孔但難度系數(shù)依然是1的鎖。所以對可以進(jìn)入“有解結(jié)構(gòu)”的數(shù)據(jù)庫也會進(jìn)行篩選。當(dāng)然這個(gè)篩選條件沒有限定原則。3.用可鋸柱,內(nèi)部有孔的NOTC:同樣可以比較簡單得到,還是在6柱有孔鎖的分析程序HB6中對有序的數(shù)組的編碼進(jìn)行斷柱判斷的環(huán)節(jié)后,增加一個(gè)可鋸柱判斷的小程序,“是”,則進(jìn)入下一步拆卸程序;“否”,則處理下一個(gè)編碼。綜合以上對4個(gè)程序的分析,我以為HB6程序包含了其它三個(gè)程序。而用可鋸柱,內(nèi)部無孔的JRM的程序是用來檢測HB6程序是否正確的試運(yùn)行用品。因?yàn)镴RM的程序運(yùn)行時(shí)間最短??ㄌ氐摹遏敯噫i(孔明鎖)的計(jì)算機(jī)分析法》中還介紹了一些鎖,不過用的是LL碼》,要讀者自己轉(zhuǎn)換。說明關(guān)于鎖的對稱的11種情況的11個(gè)鎖。如下:各種對稱類型的裝配示例:1353550350430022511304430602236360725000Bill'sBafflingBurr2MA545411354105202211364106202264640417777BasisforsouvenirpuzzleofIPP142MB353555155433222211114436626664640001111Notchable2R555555155435525561111432222666660001111Notchable,Type1PartialSolution3R0505000000300402110004300422066601732255NotchableLevel-54MA555555355435545511311432242266660001111Notchable4MB555555355432242211311436646666660001111Notchable4R543511355435542211366436642236640000000OneofonlyFour4RAssemblies6MB353555105433222211114436026664640201111Notchable8MB555511355435542211366436642266660000000Only8MBAssembly24MB555511300430042211300430042266660800000Only24MBAssembly還原著 11個(gè)鎖,對《魯班鎖(孔明鎖)的計(jì)算機(jī)分析法》中極難理解的關(guān)于對稱的描述有很大的幫助。以下是18個(gè)難度系數(shù)為 10的鎖,有拆解碼,可以照碼還原。1.555411330403002200334400602006064010C12A-1AAAA672541282.050511315400022200300402042266364010811A-27A00270141253.545511331403500200300403002266665010610A-1A000388202214.053511300420440000304420622236061013C11A-16AAA138130145.350511035402042001134402220036061010610A-1A0008950346.35051103540204206113440222003606101069A-1A0003011187.54551135403020221036402000066466601189A-34A00134198.545000304033502511314020022264661013C9A-145AA4022379.545000304023502511314033002264664012C9A-145AA38114510.545005304033502511314020222264661191487A-15A00212211.5450053040235055113140330222646635912C7A-159AA712712.5054111000322422110014320422606036015C9A-146AA2092313.505411100032242211001432040060603013C11A-146AA52353014.5454110000302422110014322422606068016C9A-144AA112773515.50541110003224221100143224226060139016C8A-146AA1041916.54551135143202220036040002226060101069A-1A00046261617.545511311432022211360400022260604901067A-1A00040131818.505011314435202200311400022260604013C10A-1AAAA17612320------------------------------------------------------------拆解碼Move1Move2Move3Move4Move5Move6Move7Move8Move91.112*1F6*2F4*3141F12113152141F23*2.112*211*1F5*2141222F41152F13136*3.112*211*31451143F52112*211*315*2F2331251F23F52133F1465.112313111*1F23*3F6*2113252F11F1*6.1123131F23*3F6111*2113252F11F17.1143141F13E61113F46115*1F2*21368.11463251E2*2F353E51125*213*1F62136*9.11463251E2#2F353E5115#213#1F6#2136*10.11463251F22F353E51152131F262F14511.11463251F22F353E5115213#1F6#2136*12.116212461212F2461F62E4*1152F25*3125*13.116212461212F2461F62E4*1152F5*312*14.11621246121#2F2461F6#2F41152E245*3125*15.11621246121#2F2461F6#2F41152F2453125*16.1162F31E22131F6211*2F4*115213617.1162F3#1E2213#1F62F41152136*3F6*18.1162F351E22151125213*1F62F245*3F1*以下是13個(gè)所謂“名聲顯赫”的鎖,有《LL碼》,拆解碼,要還原它還要?jiǎng)有┠X筋。幾個(gè)“名聲顯赫”的鎖:(LLFormatofRotatedAssembly)6-PieceBurrPuzzleNameLHLvsLTypAsmSolPmMSStAp50541131042042220633042002226466Bill'sBafflingBurr675-1500024105515154551131143202226031140002226060ThePistonPuzzle679-39000101099111155550130540004551133440602226060Love'sDozen69C-3C0001549031C118254545133402222221133400004226466Diff.atLength10&12A55-33350

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論