带起点和出口问题的凸多边形的最短距离



有人问我以下问题:你有N个点,其中两个是"起点"one_answers"出口"您希望从"开始"开始,遍历其他每个节点,并在"退出"结束。如果N个节点形成的多边形是凸的,那么最短路径(使用欧几里得距离(是什么?这里有比暴力更好的算法吗?

第1版:

这是2016年TAP(阿根廷编程比赛(中提出的一个问题,今天我提到了这个问题。我怀疑这里一定有一个比brueforce更好的算法使用凸性,否则他们不会在竞争中要求它。此外,对于N的约束是N<400,所以它不能用O(n!(溶液解决

第2版:

一个有趣的案例是:考虑一个非常长又窄的矩形,其中点在矩形的长边上,一个在另一个前面。起点和出口位于"隧道"的两端顺时针或逆时针旋转,最终会移动2*L,其中L是矩形长边的大小。从开始到结束做一个Z字形是最好的,因为你只需要通过一次L,然后从一边到另一边走一些小步。

这里有比暴力更好的算法吗

如果你认为这个问题与动态编程有关,你可以得到一个解决方案O(n^2(,它可以解决约束n<400

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

最新更新