假设我们在平面中得到了几个不相交的简单多边形,并且在每个多边形之外有两个点和t。欧几里德最短路径问题是计算从s到t不与任何多边形内部相交的欧几里德最短路径。为了具体起见,让我们假设s和t的坐标以及每个多边形顶点的坐标是整数。
这个问题可以在多项式时间内解决吗?
当然,大多数计算几何体会立即回答是:John Hershberger和Subhash Suri描述了一种算法,该算法可在时间内计算欧几里得最短路径,并且此时间范围在代数计算树模型中是最佳的。不幸的是,Hershberger和Suri的算法(以及此之前和之后的几乎所有相关算法)似乎都需要从严格的意义上讲精确的实数算法。
如果所有内部顶点都是障碍顶点,则将其称为有效多边形路径;每条欧几里德最短路径均有效。任何有效路径的长度都是整数的平方根之和。因此,比较两个有效路径的长度需要比较两个平方根之和,我们不知道如何在多项式时间内进行。
此外,将平方根和问题的任意实例简化为等效的欧几里德最短路径问题似乎是完全合理的。
那么:是否有多项式时间算法来计算欧几里得最短路径?还是NP问题很难?或平方根总和很难?或者是其他东西?
一些注意事项:
使用标准漏斗算法,至少在给定多边形三角剖分的情况下,可以在时间内计算一个多边形内部(或外部)的最短路径,而不会出现任何奇怪的数值问题。
实际上,浮点算术足以计算最短至浮点精度的路径。我只对确切问题的复杂性感兴趣。
约翰·坎尼(John Canny)和约翰·里夫(John Reif)证明了3维空间中的相应问题是NP困难的(道德上是因为最短路径的数量可能成倍增加)。 崔俊,、尤根·塞伦和叶建庚描述了多项式时间近似方案。
Simon Kahan和Jack Snoeyink考虑了有关简单多边形中最小链接路径的相关问题的类似问题。