“到現在為止,還沒有高效的計算方法,能確定還原三階魔方的最少步驟。”
“這在全世界都是個難題。”
確實。
和小胡子說的一樣,李霖質疑了所謂‘最少步數’。
李霖可能不是針對他,說的也都是事實,但趙奕還是感覺很不爽。
沒有高效的計算方法?
世界難題?
老子馬上就給它破解掉!
……
趙奕帶著破解難題的決心,又奢侈的使用了個科研幣,花費兩個小時時間,終于把判斷篩選程序做了出來。
這是算法的核心。
能判斷扭動是否會讓魔方變得更混亂,就能摒棄掉很大一部分計算,完善算法的目的就在于此。
接下來的工作,就是讓魔方做扭動。
立體的魔方有三種方向的扭動可能,每一個方向的可能為9次,總計就是27種可能(扭轉180度也算作一步)。
第一步篩選程序要判斷27次。
第二步做一個簡單的剔除重復,也就是讓第二步扭動后的魔方,不能和第一步扭動后或未進行扭動的魔方狀態重復,直接就能排除五種可能。
每一個做判斷的次數就只有22次。
然后繼續、再繼續。
這就是最普通的全覆蓋計算辦法,完全就是依靠計算機強大的性能,來推算魔方的還原步驟。
當然了。
計算量肯定是龐大的驚人,只要稍稍混亂一些的魔方,普通家用電腦的性能肯定是不夠用的。
這時篩選程序就起作用了。
每一步利用篩選程序,都會篩掉很多的計算分支,而越是靠近魔方還原,讓魔方變得更混亂的扭動就越多,往上乘的底數也就越來越小,直到最后一步只有一種能讓魔方還原。
這大大減少了計算量。
但,還是不夠。
魔方處在非常混亂的狀態,需要的步數一旦超過18次,計算量依舊會是個天文數字。
趙奕用了個‘篩選排除對比法’。
針對魔方扭動的每一步,都會篩出讓魔方更混亂的步驟,中間每個分支的一小步,都是篩選固定的22次,根據魔方越接近還原,使其變得更混亂的扭動就越多的原則,同代的篩選就可以做出對比,篩選數量少的分支,就可以直接暫停運行。
這樣計算量再次大大降低。
趙奕粗略的估算了下,需要十五步還原的魔方,可能的篩選次數,最大也不超過三千萬次。
當然。
具體還是要運行才知道。
趙奕隨意吃了點東西,又加班了兩個小時,一直到晚上十二點多,才終于寫完了代碼。
用了一個學習幣補充精力,他的眼球中還是布滿血絲。
算了!
還是明天再調試吧!
他正準備關電腦的時候,就看到企鵝多了個消息,是一個老年書生的頭像。
打開一看。
來自“計算機技術交流群”的劉教授?
“劉教授?”