“到现在为止,还没有高效的计算方法,能确定还原三阶魔方的最少步骤。”
“这在全世界都是个难题。”
确实。
和小胡子说的一样,李霖质疑了所谓‘最少步数’。
李霖可能不是针对他,说的也都是事实,但赵奕还是感觉很不爽。
没有高效的计算方法?
世界难题?
老子马上就给它破解掉!
……
赵奕带着破解难题的决心,又奢侈的使用了个科研币,花费两个小时时间,终于把判断筛选程序做了出来。
这是算法的核心。
能判断扭动是否会让魔方变得更混乱,就能摒弃掉很大一部分计算,完善算法的目的就在于此。
接下来的工作,就是让魔方做扭动。
立体的魔方有三种方向的扭动可能,每一个方向的可能为9次,总计就是27种可能(扭转180度也算作一步)。
第一步筛选程序要判断27次。
第二步做一个简单的剔除重复,也就是让第二步扭动后的魔方,不能和第一步扭动后或未进行扭动的魔方状态重复,直接就能排除五种可能。
每一个做判断的次数就只有22次。
然后继续、再继续。
这就是最普通的全覆盖计算办法,完全就是依靠计算机强大的性能,来推算魔方的还原步骤。
当然了。
计算量肯定是庞大的惊人,只要稍稍混乱一些的魔方,普通家用电脑的性能肯定是不够用的。
这时筛选程序就起作用了。
每一步利用筛选程序,都会筛掉很多的计算分支,而越是靠近魔方还原,让魔方变得更混乱的扭动就越多,往上乘的底数也就越来越小,直到最后一步只有一种能让魔方还原。
这大大减少了计算量。
但,还是不够。
魔方处在非常混乱的状态,需要的步数一旦超过18次,计算量依旧会是个天文数字。
赵奕用了个‘筛选排除对比法’。
针对魔方扭动的每一步,都会筛出让魔方更混乱的步骤,中间每个分支的一小步,都是筛选固定的22次,根据魔方越接近还原,使其变得更混乱的扭动就越多的原则,同代的筛选就可以做出对比,筛选数量少的分支,就可以直接暂停运行。
这样计算量再次大大降低。
赵奕粗略的估算了下,需要十五步还原的魔方,可能的筛选次数,最大也不超过三千万次。
当然。
具体还是要运行才知道。
赵奕随意吃了点东西,又加班了两个小时,一直到晚上十二点多,才终于写完了代码。
用了一个学习币补充精力,他的眼球中还是布满血丝。
算了!
还是明天再调试吧!
他正准备关电脑的时候,就看到企鹅多了个消息,是一个老年书生的头像。
打开一看。
来自“计算机技术交流群”的刘教授?
“刘教授?”