此题第一热门话题是解法。我先说我的结论:格子布方法是本题的一个完美的通解。完成所需要的步数较少都不算什么了,关键是此方法能解决这个题型的任何阶数。
由于王宇轩的思路是完全基于三阶九宫,如果题目是4,5,7阶就彻底失效了,所以其实是一个一定条件下的巧解,或者说特定条件下的解。假如此题是7阶,有可能比赛结果就是反过来的一边倒。
~~~~~~~~
我们先做一个技术细节的铺垫:能交换和如何交换。
假设我们有一个九宫格,如下在每个格标注数字。
123
456
789
问题是:是否存在能交换其中任意两个格子中的数字并且保持其他不变的方法。答案是确定的:存在。
我们先把问题简化到如何交换7和8并且保持其他不变,也就是要从上面的九宫图得到如下结果:
123
456
879
实现的过程叙述太麻烦了。在论坛上一个标题为"李悦超那个方法到底有效吗"的帖子中,版友"qwepoi-"给出了一个9步完成的通解过程。我检查过没有问题,而且我认为应该是最优解。有兴趣的朋友可以去参考他的过程。
https://tieba.baidu.com/p/8229409008在下面这段话的叙述中,交换的定义是交换指定两个数字的位置并且保持其他不变。
如果7和8的位置可以交换,那么镜像一下,8和9的位置也可以交换。所以7,8,9之间都可以交换。旋转一下,九宫四个边都可以旋转到789的位置,所以任何边上三个数字都可以交换。
任何两边上的数字可以通过跟拐角数字交换从而完成不同边上数字的交换。
至此,九宫四周一圈八个数字中任意两个都可以交换。如果需要跟中心数字交换,比如5和8。就先把要放在中心的数字8转到中心,然后又是周围八个数字随便换直到满足要求。
所以这个技术上的结论就是九宫内任意两个格内的东西都能交换位置并且保持其他不变。
事实上这是一个此题中能解决最"坏"情况的最强的结论。因为实际中九宫里一般都不是正好九种不同的鼎共存。如果有相同的鼎,实现交换的难度就降低了。
至此铺垫的准备工作完成。
~~~~~~~~
毫无疑问王宇轩在现场想出来的解法几乎成了实际比赛的决定性因素。
三阶幻方算是基本常识知识了。金庸老爷子写的射雕英雄传里面郭靖带着受伤的黄蓉遭遇瑛姑的情节里就有关于三阶幻方的解法。另外比较有意思的是解放战争中东野的步兵班九人的突击战术是三三制,貌似摆了个九宫,印象颇深。当然这跟幻方无关,扯远了。
解决一个复杂问题的常规办法就是能否化简和逼近的问题。
此题里,如果只考虑行的方向,当你完成了8行,那么最后一行一定是满足题意的;同样如果只考虑列的方向,完成8列以后剩下的一列一定也是满足题意的。也就是说我们可以完成部分正确,而剩下的还依然是正确的。也就是说适当的解决了部分以后,就更加逼近答案。
这里跟第八季那个顶级难度的一触即发做个对比就能看出不同。在一触即发中,如果你完成其他部分只剩下最后一层或者最后一面,能不能满足题意完全看剩下什么,就是运气,而且几乎肯定是不能满足题意的。也就是说你不能通过解决部分去逼近最终的答案,必须始终整体考虑。
既然可以化简和逼近,又必须兼顾行列,而且还要给每个部分的内部调整留出可实现的空间,总体又是9X9,所以很自然想到拆成9个3X3。
相当于本来9行9列9种鼎,分割成9个3行3列3种鼎。
王宇轩能想到这个方法可能还有一个原因是:他是计算机系的。
他应该学过图论,另外计算机系的基本功是数据结构。编程中都是反复调用构建好的数据结构。而被调用的数据结构往往是原来问题简化并且重复调用就能解决问题。构建3X3的九宫就是一个朴素自然的想法了。
格子布是此题的彻底的通解。不知道备战间里谁想到的这个解法。我看到这个题目的时候直觉就想化简成3x3看看。而这个格子布的想法真的让我拍案称奇,更难得的是这还是现场想出来的。
格子布是一个整体考虑的解题思想。此题难点在于行列同时要满足要求。小朋友陈帝霖最后出场无奈的尝试硬干很快就出现无法都顾及到的情况。而格子布是把本来需要同时操心行列问题改成了只操心斜线,相当于降低了维度。把一个二维问题变成了一维问题,给一个技巧型问题找到了程序化的解法。
下面要具体分析解法的优缺点,分析选手的表现以及背后可以预料到的真相。之后还会分析复活投票。
我内容和观点跟现在流行的的观点看法差别非常大,敬请期待。明天再写。
如果还有疑问和看法跟我之前提到的焦点不同,欢迎提出,我可以在完成剩下的部分的时候一并写入。谢谢。