在2D数组

时间:2016-11-06 12:27:16

标签: algorithm multidimensional-array graph traversal

所以我得到了这项任务,我不知道该怎么做。我得到了一个2D阵列,禁止访问某些单元格。然后我需要遍历整个阵列选择最长的路线而不进入禁用的单元格。我也不能“回去”再转一圈,遍历应该总是“向前”。输出应该是访问的单元格数和正确的顺序。算法应该是可扩展的,至少对于具有100x100个单元的阵列。下面是一张显示任务的图片。

enter image description here

如上图所示,实际上只有两种解决方案:沿着边缘然后沿着一个单元格向下然后再向上,就像示例一样。或者它可能只是沿着完整的边缘。访问过的单元格的数量应该保持不变; 12。

现在我已经搜索了很多,发现了许多变化,据我所知,我应该能够使用Djikstras,Bellman-Ford,A *算法或某种Depth / Breadth-first图遍历。但是我完全陷入困境,不知道从哪里开始。

1 个答案:

答案 0 :(得分:1)

这个问题非常难以解决,如A. Itai, C. Papadimitriou, J. Szwarcfiter, Hamiltonian paths in grid graphs所示。因此,不存在精确的多项式时间算法。

在实践中,现代Constraint Solvers应该可以解决你的大小问题。可以在Constraint Problem找到有关如何为Q. Pham, Y. Deville, Solving the Longest Simple Path Problem with Constraint-Based Techniques进行最长路径搜索的方法的审核。