给定长度n的模式下,求解最长非无限路径的下一步方案问询
给定长度n的模式下,求解最长非无限路径的下一步方案问询
首先先明确问题场景:想象一个整数网格,机器人从(0,0)出发,遵循一个会永久重复的转向模式——我们把左转记为1,右转记为-1,直行(不转向)记为0。每一步机器人先执行模式中的转向指令,再向前移动1单位;但如果移动后的坐标是它已经去过的位置,就会跳过这次移动,保持当前朝向不变,直接进入下一个步骤。
我们的目标是找到能让机器人走得最远然后终止的模式(避免进入无限循环),这里的“最远”指的是机器人移动的总距离,而非覆盖的区域面积。
长度1-3的最优模式比较容易推导,我就把推导过程留给感兴趣的人自行探索了。目前我已经找到了长度4-9的最长路径对应的模式:
- 长度4:
[1, 1, -1, 0] - 长度5:
[1, -1, 0, -1, 0] - 长度6:
[0, 0, 1, -1, 0, -1] - 长度7:
[0, 0, 0, 1, -1, 0, -1] - 长度8:
[0, 0, 0, 0, 1, -1, 0, -1] - 长度9:
[0, 1, 1, 0, 0, 0, -1, 1, 0]
现在我的核心疑问是:对于任意给定的模式长度n,寻找最长非无限路径的下一步该怎么做?
我自己尝试过几种方向,但都遇到了瓶颈:
- 判断模式是否终止:我不确定是否存在通用的判定方法。比如模式
[0, 0, -1, 1, 0, 0, -1, 0, 1, 1, -1, -1],我既不知道它会在3000步后终止,还是会无限循环,而且我对这类问题的理论基础了解不足,没法彻底搞清楚这个问题。 - 关联忙碌海狸问题:我尝试把这个问题和忙碌海狸联系起来,但完全搞不懂背后的数学原理,读了几篇相关论文也像看天书一样。
- 暴力枚举法:我试过暴力遍历所有可能的模式,但计算量实在太大——每个长度n的模式有
3^n种,而且我还要验证每个模式到最长已知路径长度的1.5倍(相当于4.5^n量级的计算量);同时为了确认模式是否终止,我会把模式运行到最长已知路径长度的5倍(最近处理长度9的模式时,我运行到了3000步),如果还没终止就默认它不会停。
另外我还发现一个有意思的点:长度5到8的模式有明显的延续性,但长度9的模式完全打破了这个规律,这也让我更难找到通用的推导方向。
备注:内容来源于stack exchange,提问作者William C.
相关产品推荐
相关产品推荐

