我正在尝试实现Dijkstra的算法,以便找到网格中两个点之间的最短路径(x,y),但问题是我只能向上,向下,向右和向左移动。
我有一个ArrayList,包含我需要传递的点的x和ys以及网格上障碍点的另一个ArrayList,我正在尝试编写一个返回所需运动的ArrayList的函数为了完成所有的道路。
例如:1,1,1,2,3,4,1 .. 1左边是2,3是上,最后是4。
能否请您提供一些提示和/或示例。
答案 0 :(得分:2)
首先,要知道Dijkstra的算法传统上用于加权图。它仍然适用于单位边缘(所有重量1),但它可能不是您最有效的解决方案。
无论哪种方式,无论使用哪种算法,都需要将网格视为图形。为此,请创建一组边。如果没有超过"没有对角线的限制"然后你的边缘将是每个点与其上方,下方和旁边的邻居之间的连接。然后,您可以通过迭代图形上的边和点来操作图形。