触摸方格中每块瓷砖的最短路径是什么?

时间:2014-12-04 22:14:31

标签: algorithm

假设蚂蚁被放置在棋盘的(0,0)位置上。那只蚂蚁想要穿过棋盘上的每一块瓷砖,而走路时,它至少可以这样做。它必须遵循什么样的道路?是否有公式F(i)返回该路径上ith磁贴的位置?

编辑:根据要求,我尝试了以下内容:

  1. 我尝试使用Google搜索关键字,例如"最短路径","方格网中的最短路径",但无法找到任何相关内容。

  2. 然后,我在方格中下载,配置并使用了旅行商问题解算器。显然,解决方案并不令人满意,但我可以深入了解问题。我的结果有一个例子: enter image description here

  3. 然后我直观地推测答案可能就像希尔伯特曲线:enter image description here。我用Google搜索并在IRC编程频道上询问,但我找不到任何实际证据,这比螺旋和类似物更好,也不能证明这是最好的解决方案。

  4. 编辑2:进一步澄清: 蚂蚁可以对角移动。距离是指由路径定义的线的欧氏长度。

2 个答案:

答案 0 :(得分:3)

走直线,左边是棋盘边缘,直到你要么碰到国际象棋棋盘的边缘,要么是你以前去过的棋盘。如果你这样做,那就采取正确的行动。

或其他一千种明显的模式。

任何需要63步的路径都是最小的,与其他路径一样好。

答案 1 :(得分:1)

这取决于您是否考虑了每个方格的宽度,还是仅仅是一个双数组问题?

如果我们正在谈论双阵列问题f(x,y),那么答案就是没有最小路径,因为蚂蚁需要前往每个方格f(x,y)= x * y,所以f(8,8)= 64。

如果我们开始考虑瓷砖本身的宽度,那么答案会有所不同,因为我们可以使用一些策略来获得最少的行进距离(例如从中心开始,通过网格分隔符和以大致螺旋模式行走r = xy ^(theta))。