说,我有100分,想要绘制一个封闭曲线(我正在使用C#和图形),如下所示:
Graphics g = this.CreateGraphics();
Pen pen = new Pen(Color.Black, 2);
Point[] points = new Point[DrawingPoints];
for (int x = 0; x < DrawingPoints; x++)
{
int px = r.Next(0, MaxXSize);
int py = r.Next(0, MaxYSize);
Point p = new Point(px, py);
points[x] = p;
}
g.DrawClosedCurve(pen, points);
它们是连接点,因为它们进入点[]和线交叉 - 你不会得到一个坚实的数字。
是否有一种算法可以帮助我折腾积分以获得稳定的数字?下面是一张图片(尽可能地努力),以帮助想象我所要求的内容。
答案 0 :(得分:0)
那么,在O(n log n)时间内,您可以计算点的质心,并按照该质心的角度对它们进行排序,留下一个星形多边形。这很有效,但可能会过分夸大你的观点。
我认为你对TSP的2-OPT方法的结果感到高兴(描述here)。 2-OPT是最坏情况的指数但实际上是多项式时间。