Python 在平面上给定一组具有坐标的点,求周长最大的简单多边形

Python 在平面上给定一组具有坐标的点,求周长最大的简单多边形,python,math,geometry,Python,Math,Geometry,多边形必须由所有n个点组成。可以保证任意三个点不共线。现在,我只能想出蛮力算法。我想知道是否有其他方法来解决这个问题。点集的体积可以大到10^5。 欢迎任何意见:)这个问题看起来像是旅行推销员问题的一个版本。基本上,如果你有一组N平面点p1,p2,…,pN,你可以认为它们构成了一个图的顶点,并且在它们之间的任意两个pi pj有一条边(解释为一条直线段)连接着这两个点,因此它是一个N点的完全连通图(从组合的角度来看,它相当于N维辛)。此外,可以在该图的每条边上指定一个权重,权重是它连接的两点之间的

多边形必须由所有n个点组成。可以保证任意三个点不共线。现在,我只能想出蛮力算法。我想知道是否有其他方法来解决这个问题。点集的体积可以大到10^5。
欢迎任何意见:)

这个问题看起来像是旅行推销员问题的一个版本。基本上,如果你有一组
N
平面点
p1,p2,…,pN
,你可以认为它们构成了一个图的顶点,并且在它们之间的任意两个
pi pj
有一条边(解释为一条直线段)连接着这两个点,因此它是一个
N
点的完全连通图(从组合的角度来看,它相当于
N
维辛)。此外,可以在该图的每条边上指定一个权重,权重是它连接的两点之间的距离(即连接两点的直线段的长度)现在,我们的目标是找到一个哈密顿循环路径,它最大化它所包含的边上的权重之和。除此之外,还有一个进一步的限制,循环路径必须是一个简单的平面循环,所以你必须放弃你得到的任何自相交解


我相信这是一个很难解决的问题,所以也许可以从维基百科开始:检查其中提到的一些精确、启发式和近似算法。

请发布您尝试过的代码。