具有开始和退出问题的凸多边形的最短距离

时间:2018-11-13 22:14:44

标签: algorithm data-structures graph-algorithm

有人问我以下问题: 您有N个点,其中两个是“开始”和“退出” 您想从“开始”开始,经过每个其他节点,然后在“出口”结束。如果由N个节点形成的多边形是凸的,最短路径(使用欧几里得距离)是什么?这里有没有比蛮力更好的算法?

edit1:

这是2016年在TAP(阿根廷编程竞赛)中提出的一个问题,今天已被提及。我怀疑这里必须使用凸性属性,而不是蛮力算法,否则他们不会在比赛中问它。而且N的约束条件是N <400,因此用O(n!)解决方案无法解决

edit2:

一个有趣的案例是: 考虑一个非常长且窄的矩形,其中的点在矩形的长边上,一个在另一个的前面。 起点和出口在此“隧道”的相对两端 顺时针或逆时针旋转,您最终将经过2 * L,其中L是矩形长边的大小。 在这里从头到尾进行锯齿形调整是最佳选择,因为您只需经历一次L,然后从一侧到另一侧走一些小步。

1 个答案:

答案 0 :(得分:0)

在这里,有没有比蛮力更好的算法?

如果您认为动态编程存在此问题,则可以获得解决方案 O(n ^ 2),该解决方案可以解决约束 n < 400

此链接有一个很好的说明,请参阅问题B:https://caloventorendos.blogspot.com/2016/09/solucionario-tap-2016.html