在假设停留在“道路”上的情况下寻找连接两个点的最短路径?

时间:2014-01-08 10:26:27

标签: algorithm computational-geometry

我搜索以下问题的名称(以及后来的算法;)):找到从点z0到ze的最短路径,例如路径停留在“道路”上。下图显示了更好的效果。道路由两个点X =(x1,...,xk)和Y =(y1,...,yn)的矢量定义。我们假设问题并不棘手(即路径X,Y不交叉,初始/终点在“道路”上等)。我们想要找到红线(定义为矢量)Z是连接z0和zend并且仅通过道路的最短路径。算法不需要很快。非常感谢任何提示!

enter image description here

更新:在评论之后我改变了图像,因为它显示错误的解决方案......:/

2 个答案:

答案 0 :(得分:2)

你绘制它的方式,你的道路是一个单调的多边形(也就是说,当你面向北方时,你左边总是Y,你右边是X)。一旦你对多边形进行了三角测量,就会有一个专门用于在单调三角剖分中找到最短路径的算法,称为“漏斗算法”。

对于单调的三角测量,Mark de Berg的 Computational Geometry 中的描述很棒,但如果不这样做,http://www.cs.ucf.edu/courses/cot5520/Triangul_monotone.ppt看起来相当不错。对于渠道算法,请尝试here

答案 1 :(得分:-1)

也许这是错误的答案,但我假设x和y坐标是道路的轮廓。如果是这样,为什么不这样做:

  1. 在道路中间画一条线(分开交通),
  2. 假设用户正在右侧行驶(或向左行驶至英国,澳大利亚或日本)。
  3. 假设有一条车道,则在右侧中间划一条线。
  4. 这条线是沿路行驶的距离。
  5. 如果这是一条道路,你看一下示例中的红线,那么驾驶员有时会在紧急车道或路边行驶,有时会在迎面而来的交通中行驶。