【问题标题】:Travelling Salesman - approximation online software?旅行推销员 - 近似在线软件?
【发布时间】:2013-10-30 08:25:07
【问题描述】:

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

谢谢大家-

格言

【问题讨论】:

  • 到目前为止你研究了什么?

标签: genetic-algorithm heuristics np np-hard


【解决方案1】:

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

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

【讨论】:

  • 尽管在 SO 上只发布链接是不受欢迎的,但您的回答显然比我的要好。谢谢,学习了。
【解决方案2】:

我想你可以尝试一种贪婪的方法,选择一个任意点开始(如果没有指定起始点),然后在每一步中你走到离当前点最近的点。假设可以在恒定时间内计算点之间的距离,那么您可以在 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 距离(除非我弄错了)。

【讨论】:

  • 我推测如果这些点的间距相当均匀,这应该会产生良好的效果。
猜你喜欢
  • 1970-01-01
  • 2011-09-08
  • 2015-04-28
  • 2017-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-17
  • 2014-10-24
相关资源
最近更新 更多