前n条最短路算法matlab源代码资料来源
这是Mitchell,Mount和Papadimitriou于1987年首次描述的用于三角形网格(三角表面)的测地线(最短路径)算法的实现,[1]进行了一些小的改进,扩展和简化。
该算法具有O(n
^
2
log
n)最坏情况下的时间复杂度,但实际上可以在合理的时间内处理百万个节点的网格。
有关快速概述,请参见[2]。
该算法的基本思想与Dijkstra的用于在加权图上找到最短路径的算法非常相似。
它包括两个步骤:
来自源的距离场在网格表面上的传播(缓慢)
追溯从目标点到最近源的最短路径(快速)
为了进行调试和比较,我还实现了两种近似算法
Dijkstra在图上由网格的顶点和边缘创建的最短路径
细分(在网格的每个边缘上放置N个附加顶点,直接连接属于同一面的所有顶点,在结果图上运行Dijkstra)细分算法的一个不错的特性是,当N
=
0时,它变为Dijkstra并计算出精确的距离当N->无穷大时。
输入网格表示为两个数组:顶点(每个顶点具有树坐标)和面(每个面表示为其顶点的索引)。
与算法的大多数通信是通过SurfacePoints(网格表面
2022-05-05 20:19:27
292KB
系统开源
1