如何在2D数组中找到具有多个端点的最短路径?

我是Amuquadoh

我有一个程序可以创建一个类似于以下内容的2D数组:

X X X X X X X B X X
B X X X X X X X X X
B X X X X X X X X X
X X X X X X X B X X
X X X X X O B X X X
B X X X X X B X X X
X X X X X X X X X X
X X X X X X X X X X

X =可以自由漫游的空白空间

B =无法自由漫游的受阻区域

O =被移动的物体

我想帮助您弄清楚如何找到到达任何终点的最短路径。通常,我会使用Dijkstra算法,但是要考虑多个点而不是1点。该对象的重点是边缘,我想在那里找到最短的路径。

杰森·罗尔(Jason Roell)

Lee的算法:http : //en.wikipedia.org/wiki/Lee_algorithm

本质上是BF搜索,下面是一个示例:http : //www.oop.rwth-aachen.de/documents/oop-2007/sss-oop-2007.pdf

要有效实施,请签出:更改FloodFill-Algorithm以获得两个数据点的Voronoi领土?-当我说标记时,请用您来自+ 1的位置上的数字标记。

例如,如果您有一个网格,其中* =障碍物,则可以向上,向下,向左和向右移动,并且从S开始,必须转到D,并且0 =自由位置:

S 0 0 0
* * 0 *
* 0 0 *
0 0 * *
* 0 0 D

您将S放入队列中,然后“扩展”它:

S 1 0 0
* * 0 *
* 0 0 *
0 0 * *
* 0 0 D

然后扩展其所有邻居:

S 1 2 0
* * 0 *
* 0 0 *
0 0 * *
* 0 0 D

和所有这些邻居的邻居:

S 1 2 3
* * 3 *
* 0 0 *
0 0 * *
* 0 0 D

依此类推,最终您将获得:

S 1 2 3
* * 3 *
* 5 4 *
7 6 * *
* 7 8 9

因此,从S到D的距离为9。运行时间为O(NM),其中N =行数,M =列数。我认为这是最容易在网格上实现的算法,并且在实践中也非常有效。它应该比经典的dijkstra更快,但是如果使用堆实现dijkstra可能会获胜。

对任何起点和端点执行此操作,然后选择您所用整数最小的端点。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在2D数组中找到具有多个端点的最短路径?

来自分类Dev

如何在Neo4j中找到具有多个节点和多个关系的最短路径

来自分类Dev

如何在带有检查点的迷宫中找到最短路径?

来自分类Dev

如何在具有轮廓的Numpy 2D数组中找到形状?

来自分类Dev

如何在有向图中线性时间的边权重为0或1的最短路径中找到最短路径?

来自分类Dev

从 JavaScript 中的对象数组中找到最短路径

来自分类Dev

如何使用 BFS 在迷宫中找到最短路径?

来自分类Dev

如何在这种迷宫中找到最短路径

来自分类Dev

如何在Neo4j中找到跳数最少的最短路径?

来自分类Dev

如何在networkx python中找到最短路径长度等于某个数字的节点?

来自分类Dev

如何在不搜索的情况下在networkx中找到最短路径?

来自分类Dev

在2D数组中找到最短的方法

来自分类Dev

在加权图中找到最短路径

来自分类Dev

在传单中找到最短路径

来自分类Dev

在图算法中找到最短路径

来自分类Dev

如何在Swift中找到2d数组中所有元素的总和?

来自分类Dev

如何使用Dijkstra算法找到具有顶点约束的最短路径

来自分类Dev

如何在neo4j中的有向图上找到节点之间的最短路径?

来自分类Dev

如何在线性时间内在无向图中找到不同的最短路径的数量?

来自分类Dev

在具有正整数的2D矩阵中的路径中找到最大和

来自分类Dev

如何在2D数组中找到1D数组

来自分类Dev

在有向加权图中找到两个节点之间的最短路径

来自分类Dev

您如何从代表火车路线的列表集合中找到最短路径?

来自分类Dev

如何使用加权图在序言中找到最短路径

来自分类Dev

从X,Y坐标中找到最短路径(开始≠结束)

来自分类Dev

在图中找到N条最短路径

来自分类Dev

如何在具有字典的数组中找到indexOfObject

来自分类Dev

如何在Python中的2d数组中找到值的索引?

来自分类Dev

如何在python中找到2D数组的关键点?

Related 相关文章

  1. 1

    如何在2D数组中找到具有多个端点的最短路径?

  2. 2

    如何在Neo4j中找到具有多个节点和多个关系的最短路径

  3. 3

    如何在带有检查点的迷宫中找到最短路径?

  4. 4

    如何在具有轮廓的Numpy 2D数组中找到形状?

  5. 5

    如何在有向图中线性时间的边权重为0或1的最短路径中找到最短路径?

  6. 6

    从 JavaScript 中的对象数组中找到最短路径

  7. 7

    如何使用 BFS 在迷宫中找到最短路径?

  8. 8

    如何在这种迷宫中找到最短路径

  9. 9

    如何在Neo4j中找到跳数最少的最短路径?

  10. 10

    如何在networkx python中找到最短路径长度等于某个数字的节点?

  11. 11

    如何在不搜索的情况下在networkx中找到最短路径?

  12. 12

    在2D数组中找到最短的方法

  13. 13

    在加权图中找到最短路径

  14. 14

    在传单中找到最短路径

  15. 15

    在图算法中找到最短路径

  16. 16

    如何在Swift中找到2d数组中所有元素的总和?

  17. 17

    如何使用Dijkstra算法找到具有顶点约束的最短路径

  18. 18

    如何在neo4j中的有向图上找到节点之间的最短路径?

  19. 19

    如何在线性时间内在无向图中找到不同的最短路径的数量?

  20. 20

    在具有正整数的2D矩阵中的路径中找到最大和

  21. 21

    如何在2D数组中找到1D数组

  22. 22

    在有向加权图中找到两个节点之间的最短路径

  23. 23

    您如何从代表火车路线的列表集合中找到最短路径?

  24. 24

    如何使用加权图在序言中找到最短路径

  25. 25

    从X,Y坐标中找到最短路径(开始≠结束)

  26. 26

    在图中找到N条最短路径

  27. 27

    如何在具有字典的数组中找到indexOfObject

  28. 28

    如何在Python中的2d数组中找到值的索引?

  29. 29

    如何在python中找到2D数组的关键点?

热门标签

归档