【问题标题】:Travelling Salesman and shortest path旅行推销员和最短路径
【发布时间】:2015-05-16 19:29:51
【问题描述】:

我目前正在从事一个涉及旅行商和最短路径的项目。如下:

给定一组 9 个顶点,所有顶点都在 2 个空间 (x,y) 中具有正坐标,其中 x 和 y 是正实数。然后我被要求计算旅行推销员可以走的最短路径,并遍历所有点。本质上,该图只是具有坐标的节点的集合,我必须安排边,以便从节点 1 到节点 9 之间存在连接,这是可能的最短连接。假设我已经访问了开始节点1(x1,y1),并且需要访问每个节点一次且仅一次。我将在 (x9,y9) 指定的节点 9 上结束。

我正在用Java编写程序,虽然教授说程序可以用任何语言编写。

我首先编写了一个节点类,它代表每个节点,并具有分别代表 x 和 y 坐标的字段 x,y。但是,我完全不知道如何执行优化。

我将非常感谢任何有关此问题的帮助。

非常感谢,我很高兴成为这个社区的一员!

【问题讨论】:

标签: java algorithm optimization dijkstra traveling-salesman


【解决方案1】:

欧几里得 TSP 仍然是 NP-hard,所以只要为你想要的通用 TSP 选择任何算法;对于 9 个顶点,蛮力解决方案比较 7 个中间顶点的 7! = 5040 排列(因为根据问题描述,您从 1 开始并以 9 结束),因此您需要做的就是生成{2,...,8} 的所有排列,然后检查这些路径的长度。

如果您想要一些花哨的东西,请选择 Held、Karp 和 Bellman 的动态编程方法,您可以在 lots of places online 中阅读,所以我不会发布它是如何工作的。

【讨论】:

    猜你喜欢
    • 2011-12-07
    • 2017-05-21
    • 1970-01-01
    • 2015-06-22
    • 1970-01-01
    • 1970-01-01
    • 2011-09-08
    • 2015-04-28
    • 2017-11-11
    相关资源
    最近更新 更多