Skip to content

算法Algorithm

可见图与多边形障碍最短路

Visibility graph shortest path

证明欧氏避障最短路只在多边形角点转弯,再把连续路径问题精确化为带几何可见边的图最短路。

形式陈述 ​

在带标准 Euclidean 内积的实平面上,有有限个两两不相交的简单多边形障碍,以及自由区域中的起点 s、终点 t。禁止进入障碍内部,允许接触其边界,路径长度取 Euclidean 弧长。机器人在本页是一个点。怎样从无穷多条连续曲线里选出最短的一条?

建立可见图:顶点是 s,t 和所有障碍顶点;若闭线段 uv 完全位于自由区域,就加入无向边 uv,权为 ‖u−v‖2。使用有向图的最短路接口时,把每条无向可见边换成两条反向、同权的弧;非负几何长度保证这一转换保留两点最短值。这里“没有与边界发生严格交叉”只是必要检查之一,不能代替线段自由性,例如连接凸障碍两个不相邻角点的内部对角线没有穿出边界,却显然不可走。

可见图中的最短路径恰好给出平面自由区域中的最短路径。若再有一个简单多边形作为外墙,只需同时要求可见线段留在外墙的闭区域中;同样的角点结论仍成立。与一般图最短路不同,关键工作在于证明这张有限图没有漏掉连续问题的最优解。

直觉

把一根细绳绕过障碍拉紧。没有碰到障碍的位置不可能保留弯折,因为两点之间的直线更短。落在一条障碍边中间的弯折也不是必要的:附近自由空间是一个半平面,仍可把两小段替成更短的直段。真正卡住绳子的只能是障碍角点。

严格说,取路径上一段没有障碍角点的局部区域。若它在自由内部,这里有一个小圆盘;若贴着边内部,则有一个自由半圆盘。两者均凸,把局部折线换成弦不离开自由空间。三角不等式说明,非共线折弯会严格缩短。因此最短路除了沿边界直行外,只能在角点改变方向。

每个相邻转弯点之间的直段可见,故一条连续最短路也是可见图中的路径。反过来,每条图边都经过自由性检查,图路径一定合法。两个最优值分别不大于对方,从而相等。对于有可行路的有限多边形环境,可以限制在某条已知可行路长度给出的有界区域内,利用有界长度曲线的紧性取得最短路;结论不是只对一个未必达到的下确界成立。

连续最短路的有限可见图证书
例子与边界

取 s=(0,0),t=(8,0),两个矩形障碍为

O1=[2,3]×[−3,1],O2=[5,6]×[−1,3].

直达线段穿过两个障碍,不可加入图。第一块上方与第二块下方之间存在一条斜向通道。可见图的最短路径是

(0,0)→(2,1)→(3,1)→(5,−1)→(6,−1)→(8,0),

长度

25+2+22≈9.30056.

其中两条水平边沿障碍边界行走,必须保留;把“接触任何边都算碰撞”作为统一规则,就会错误删除这份最优解。若任务真的要求严格正安全间距,应该先膨胀障碍或改变自由空间,而不是在一个允许贴边的模型中临时删边。

路线也不能根据每个障碍单独选择“较近的一侧”。绕第一块的方向会改变到第二块的到达方向;可见图让所有角点选择一起参加最短路比较。按原始图边长排序贪心连线并不保存最优子结构。

怎样核验一条擦边线段 ​

一般位置下,可检查所有障碍边的严格交叉,再检查候选线段端点附近是否进入障碍,或用适当的内部点测试处理穿过障碍的弦。判断相交的符号来自方向测试,分类内部/边界则使用点内判定。

为使共线和多顶点接触也可审计,本单元的参考检查更直接:把候选线段与所有边界的交点写成参数 0≤τ≤1,连同共线边的端点一起排序。在每两个相邻参数之间取一个中点;边界没有在该区间内被穿过,所以整个开子段的内外类型不变。每段都在自由区域中,线段才可见。这能正确处理“穿过一个顶点后进入障碍”以及沿一条边滑行的区别。

推论与应用

设障碍总顶点数为 n,单次完整可见性判断成本为 Cvis(n)。枚举所有顶点对需要 O(n2Cvis(n)),最多保存 O(n2) 条边。随后使用Dijkstra 算法;稠密矩阵实现为 O(n2),二叉堆实现为 O((n+E)log⁡n)。

在明确的一般位置合约下,逐边检查可做 Cvis=O(n),得到常见的 O(n3) 朴素建图界。上述分段参考检查有 O(n) 个测试区间,每次点内分类再扫 O(n) 条边,因此采用的是 O(n2) 可见性上界、O(n4) 建图上界。它是独立核验器,不冒称已经实现更快的旋转扫描可见图算法。

对于无孔房间,可以先三角剖分,再用漏斗算法避开整张二次大小可见图。有限面积机器人则先通过Minkowski 和把碰撞转成参考点的禁区;转动机器人还增加姿态维度,不能继续只用本页二维点图。

参考资料
  • Mark de Berg 等,Computational Geometry: Algorithms and Applications,第 3 版,2008,§15.1–15.2,点机器人最短路、可见图与构建算法。课程原书
  • Dave Mount,CMSC 754 讲义,Lecture 31: Shortest Paths and Visibility Graphs,角点折线结构及图归约。
关系图谱14 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系