【问题标题】:Shortest Path INSIDE a Polygon Algorithm/Pseudo Code多边形算法/伪代码内的最短路径
【发布时间】:2011-04-04 08:28:20
【问题描述】:

我有一个由 X,Y 点数组表示的多边形(在 PHP 中)。我希望找到点 A 和点 B 之间的多边形内的最短路径。实际上,我有一个任意区域,定义为一个简单的多边形,我希望知道通过的距离(例如,将其视为代表的多边形一条小径 - 我想估计这条小径有多长)。

寻找伪代码或一些关于从哪里开始的提示。除了一些关于三角测量和漏斗算法的难以理解的论文之外,我已经在互联网上搜索过,似乎运气不佳。

【问题讨论】:

  • 听起来像家庭作业...查找插入排序,谷歌上的合并排序
  • 为什么这个标签是java、php和c?
  • @Lawrence Cherone:这些排序算法与寻路有什么关系?
  • 问题的思路是一样的,都是关于优化的。用给定的单位/值进行排序的最短路线/最短时间。你真的不认为你的导师希望看到代码测量 1 点到另一个点?
  • 你的多边形有什么特殊的特征,还是一个完全一般的凹多边形?

标签: php algorithm polygon


【解决方案1】:

谷歌搜索通过多边形的最短路径会发现很多有用的链接。一个算法的一个很好的描述是found here(完整的带有动画算法的小程序)。许多算法是针对一个更复杂的问题——允许在多边形中存在孔的问题。对于简单多边形的情况,它们无需更改即可使用。 (实际上,您的问题可以被认为是寻找通过一般多边形的路径的特殊情况,其中所有孔(障碍物)与边缘共享一个点。)

我认为最好的方法是在由多边形顶点的可见性图加上起点和终点(如果它们还不是顶点)定义的空间中进行 A* 搜索。

【讨论】:

    【解决方案2】:

    一个简单的算法使用路径必须从反射顶点到反射顶点的事实(第一步和最后一步除外)。因此,使用所有反射顶点和起点和终点制作图形,并使用标准的最短路径算法找到最短路径。我有很短的 Mathematica 代码来完成这一切,很快就会在网站 demos.wolfram.com 上发布一个演示。如果你想要代码,请给我发消息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多