旅行推销员 - 近似在线软件?

时间:2013-10-21 17:52:27

标签: genetic-algorithm heuristics np np-hard

你们中的任何人都会知道一个解决方案,即使是对旅行商问题产生平庸的解决方案。我有3个人打算去31个目的地......我不知道该怎么办?

感谢所有人 -

马克西姆

2 个答案:

答案 0 :(得分:3)

有几个选项,包括:Nearest NeighborChristofidesLin–Kernighan

如果这些失败,您可以随时使用专家的code(学术研究人员免费)。

答案 1 :(得分:0)

我想你可以尝试贪婪的方法,选择一个任意点来开始(如果没有指定起点),然后在每一步你前往最近点到你当前的点。假设点之间的距离可以在恒定时间内计算,那么您可以在O(n ^ 2)时间内找到路径。

为了澄清,以下伪代码应该有所帮助(我暂时没有写过这种东西,所以我希望这很清楚)

Name: GreedyPath(C, p)
Input: C - a non-empty collection of points to visit
       p - a starting point in C
Output: S - a sequence of points covering C
Algorithm:
  Remove p from C
  If C is empty
    Return the sequence containing only p
  Else
    Let p1 be the closest point to p in C
    Let S = GreedyPath(C, p1)
    Append p to the start of S
    Return S

显然,耗时的部分是每次都找到最接近p的点,但对于n点,这应该只需要n(n-1)/2距离计算(除非我弄错了)。< / p>