从点列表c ++的最佳路径

时间:2012-04-15 11:04:13

标签: c++ algorithm path euclidean-distance

我有这个要求: 我有一个点列表,每个点都有X,Y坐标。

我的目标是找到这些点之间的最佳路径(我必须使用所有点)。 例如:

A(xa,ya),B(xb,yb),C(xc,yc),D(xd,yd),E(x,y)  我使用两点之间的欧几里德距离的计算

我的最佳路径是例如:D,E,A,C,B

我该怎么做?

2 个答案:

答案 0 :(得分:3)

您正在描述一个NP-Hard问题,即Traveling Salesman Problem

这个问题有没有已知的多项式解,但有一些启发式算法,它们在多项式时间运行,但不能保证找到最佳路径。

如果您想要最佳 - 可能需要brute force search

答案 1 :(得分:0)

问题确实是NP-Hard,但是对于在欧几里德空间中有点并且使用欧几里德度量来测量距离的特殊情况,有多项式时间近似方案可以任意接近最优解。查看this论文(欧几里德旅行商问题的一种比较着名的近似算法)。