百科问答小站 logo
百科问答小站 font logo



能否通过计算机找到适合速拧的魔方解法? 第1页

  

user avatar   cs0x7f 网友的相关建议: 
      

我先回答第一个问题:我们能不能通过计算机去算出完成CFOP最好的策略,从而避免复杂,难观察的F2L,减少转体的数量,同时做好多组F2L等等。

对于某一个特定的状态,应该是可以的,但使用计算机搜索的结果很可能导致解法很奇怪。以CFOP为例,很可能在cross阶段为了后面的“流畅性”,选用了某一个很长的cross公式,比如10或11步,而且顺手性也会较差。但使用了软件“精心挑选”的cross公式后,你惊奇地发现后面的F2L,OLL异常流畅地完成了,并且还跳P了。也就是说,软件确实可以通过搜索,在还原的初期就预判到后面可能碰到的不利情况,从而在还原的初期就有意识的避开这些情况,或选择对后期更有利的解法,即便这会导致cross的步数多一些。

但很显然,这样的算法并不适用于人类。这主要是因为我们并不能像计算机一样预判地那么厉害。当然通过预判来避免不利情况出现的这个思路在速拧的应用还是比较常见的。例如很多单手玩家都会有意识的在做最后一组F2L的时候预判一下顶层是否会出现“点”的情况,从而改变最后一个块的插入方式,等等。但受限于人脑的推理能力,在15秒的观察时间,即使是世界顶尖选手至多也就预判到第二组F2L这样的水平,而且这还只是预判,并没有尝试避开不利情况。至于想往后预判OLL甚至PLL几乎不可能。而这对于计算机却轻而易举。

当然以上分析仅针对速拧,如果是最少步这类有相对充足的思考和尝试时间的,人类也能在一定程度上模仿计算机的这种预判。这一点你可以直接去围观各种最少步比赛中茫茫多的OP连跳就知道了。

总结一下:对于某个给定的速拧算法(如CFOP或桥式),计算机确实可以给出一个很惊人的、巧妙避开各种不利情况的解法,但这是基于计算机强大的推理和预判能力。对于人类速拧,由于观察时间有限且推理能力不足,很难模仿。



关于第二个问题:能否从中得出普适的一些规律?

我个人认为很困难。首先根据前面的回答,人类几乎无法做到“全预判”,所以几乎不可能直接模仿计算机的行为。那么有没有可能根据计算机给出的解法,尝试在一定程度上找出解法与状态的关系呢?我个人观点也是很困难。当我们在分析cross的时候,我们其实并不关注其他块的位置、方向等信息。也就是说其他块对我们来说其实是“灰色”的。

但如果不利用这部分信息,计算机的预判也是不可能的,这就是一组矛盾了。于是,找出解法和状态之间规律的尝试很可能变成Xcross,Multi-slot,ZBF2L等现有“预判”技术,很难产生其他新东西。




  

相关话题

  要设计一段C++程序将这组数按要求重新排序时,有哪些好的算法? 
  Metropolis 蒙特卡罗方法、动力学蒙特卡罗方法、分子动力学方法这三种模拟方法有何特点与差异? 
  你写过哪些比较酷的十行以内的 Matlab 代码? 
  你写过什么有趣的程序? 
  参加ICPC国际编程竞赛的大学生到底有多厉害,在校生该如何准备? 
  我们高中数学为什么不重视算法?高中学的数列,三角函数,求导,圆锥曲线相关问题的解法和算法有什么关系? 
  算法源于大数据,而大数据源于我们每一个人,那我们是不是应该拥有主导数据的权利? 
  程序员应该如何学习算法? 
  一堆n维空间的由m个点组成的点集,m大于n,我们只知道它们之间的距离,能否判断所在空间的维数? 
  MIT 猎豹机器人算法有多复杂?中国是否能研发出这种机器人? 

前一个讨论
近年中国的曲艺界是不是衰落了?
下一个讨论
有哪些影响世界的快餐?





© 2024-12-18 - tinynew.org. All Rights Reserved.
© 2024-12-18 - tinynew.org. 保留所有权利