algorithm - 具有起点和终点问题的凸多边形的最短距离

标签 algorithm data-structures graph-algorithm

有人问我以下问题: 你有 N 个点,其中两个是“开始”和“退出” 您希望从“开始”开始,遍历所有其他节点,并在“退出”结束。如果由 N 个节点组成的多边形是凸的,那么最短路径(使用欧氏距离)是多少?这里有比蛮力更好的算法吗?

编辑1:

这是 2016 年 TAP(阿根廷编程竞赛)中提出的问题,今天向我提到了它。我怀疑这里一定有比使用凸性属性的蛮力算法更好的算法,否则他们不会在比赛中要求它。 N 的约束条件也是 N < 400,所以它不能用 O(n!) 解决方案来解决

编辑2:

一个有趣的案例是: 考虑一个非常狭长的矩形,其中点位于矩形的长边上,一个在另一个前面。 起点和导出位于这条“隧道”的两端 顺时针或逆时针转动,您最终会移动 2*L,其中 L 是矩形长边的大小。 在这里从头到尾做一个之字形是最佳的,因为你只需要通过 L 一次,然后从一侧到另一侧的一些小步骤。

最佳答案

这里有比蛮力更好的算法吗?

如果你认为这个问题与动态规划你可以得到一个解决方案 O(n^2) 可以解决约束 n < 400

这个链接有很好的解释,见问题B:https://caloventorendos.blogspot.com/2016/09/solucionario-tap-2016.html

关于algorithm - 具有起点和终点问题的凸多边形的最短距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53290319/

相关文章:

java - 在 LinkedList 中实现 AddAtIndex 方法

algorithm - Geohash 边界框搜索

algorithm - 在具有领导者的异步分布式系统中,我如何找到与领导者的距离

c++ - 两点之间网格中的最短路径。有一个陷阱

c++ - 我的编程面试题: Reverse a string and find the mode of an array

python - 用列表表示 boolean 表达式

python - 求二项式系数模质数,面试街头挑战

algorithm - 如何在一对节点之间的无向图中找到所有边缘不相交的等价路径?

algorithm - k表示聚类样本数据

java - 使用链表和数组构建邻接表图的性能差异巨大