【问题标题】:Finding the globally shortest path in non-degenerate trapezoidations在非退化梯形中寻找全局最短路径
【发布时间】:2011-05-22 17:28:03
【问题描述】:

我正在寻找一种有效的算法,它可以在具有多边形障碍物的二维空间中找到两点之间的全局最短路径。

源数据是由最多 10^4 个梯形组成的非退化垂直梯形(非退化意味着每个梯形的下边和上边各最多有 2 个相邻梯形)。

对梯形本身运行最短路径算法,然后使用漏斗算法并不能保证找到全局最短路径。

计算角顶点的可见性图可能会起作用,但我怀疑这可能会占用太多内存,因为该算法的要求是它可以在具有多个 (内存中最多 700) 个映射,但如果您认为这不是问题,请随时纠正我!

为了可视化数据的样子,我上传了一张小地图的三角剖分图,您可以点击图片以 SVG 格式查看。

.

【问题讨论】:

  • 最短路径由从边界点到边界点的直线段组成(除了从起点到终点的线段,如果它们不是边界点)。所以所有边界点的可见性图应该给你最短路径。
  • 是的,我在问题中考虑过这一点,但在我看来,这会占用相当多的内存。
  • 我开始明白这一点...有 10^4 个梯形,一个大约有 2*10^4 个点(每个点可以用 16 位整数表示,即 2 个字节)导致在最坏的情况下,4*10^8 边缘意味着 800 MB 仅用于 700 个地图之一......
  • 另一方面,可见性图上有一些永远不会被使用的边,例如在某些区域从一个边界到另一个边界的边(要更好地定义......)

标签: algorithm graph path-finding


【解决方案1】:

如果您使用

创建图表

1) 梯形除源点和目的点外所有顶点的顶点。

2) 这些顶点中的任意 2 个顶点之间的边,如果它们相对于彼此是视线并且边权重等于 2 个顶点之间的距离。

那么这个问题看起来就像是图问题中两点之间的最短距离,它有很多众所周知的解决方案(Dijkstra's Algorithm 等)

【讨论】:

  • A* 可能比 Dijkstra 更有效
猜你喜欢
  • 1970-01-01
  • 2021-07-05
  • 2012-10-24
  • 2012-04-08
  • 1970-01-01
  • 2013-10-07
  • 1970-01-01
  • 2013-04-03
  • 1970-01-01
相关资源
最近更新 更多