運行!
篩選程序編好以后,已經(jīng)調(diào)試運行好了,他主要調(diào)試的是后續(xù)程序,以及看看整體運行情況。
近五千行代碼運行,錯誤還是比較多的。
哪怕是有《聯(lián)絡(luò)率》輔助,光是輸入錯誤就找到二十幾處,一個符號打錯了,都會導(dǎo)致程序出現(xiàn)巨大問題。
調(diào)試、修改!
再調(diào)試、再修改!
兩個多小時以后,程序終于成功運轉(zhuǎn)了一次。
趙毅輸入了幾種魔方初始狀態(tài),都得到了想象中的結(jié)果。
他主要注意是運轉(zhuǎn)速度。
其中有一組數(shù)據(jù)輸入后,cpu瞬間達到最大功效,電腦似乎是卡住了,過了三、四秒以后才得到結(jié)果。
他干脆在篩選程序中,加上了一個計數(shù)項nn,每一次篩選程序運行,計數(shù)項都會增加一點。
隨后他分別輸入了兩種,十五步能還原的魔方狀態(tài)。
程序運行一秒左右,就得到了結(jié)果。
結(jié)果沒問題。
nn得到了不同的數(shù)值,一個是36211,一個是67091。
“這么少?”
趙奕感到驚訝。
哪怕對篩選方法有信心,他也沒有想到第二步的篩選對比,竟然會刷下如此龐大的數(shù)據(jù)。
想想也對。
篩選對比刷下了計算需求最多、最無用的部分,繼續(xù)運行的部分則淘汰了更多讓魔方變得混亂的步驟。
計算量是以指數(shù)形式遞增的。
篩選讓指數(shù)的底變得更小,到了十步以內(nèi)都會變成以千、百為單位的增加,增加的量都可以忽略不計。
“如果是最復(fù)雜的情況,篩選次數(shù)也能達到千萬,甚至億級?”
趙奕想著。
那種數(shù)據(jù)其實也并不多。
普通家用電腦依舊能解決,只不過需要的運算時間更長一些,或許是幾十秒,或許是一分鐘、幾分鐘、十幾分鐘。
哪怕上升到以小時為單位的程度,也已經(jīng)是相當了不起的。
現(xiàn)在世界公認三階魔方的計算,只能用超級計算機才可以,家用電腦的性能實在差太多了。
程序設(shè)計出來,剩下就是優(yōu)化了。
趙奕做了個輸入優(yōu)化。
之前為了方便進入設(shè)計主題,輸入端需要六個界面的五十四種顏色,實際上,只輸入三個面,就足以確定整個魔方。