旅行推销员和最短的路径

时间:2015-05-16 19:29:51

标签: java algorithm optimization dijkstra traveling-salesman

我目前正在开展一个涉及旅行推销员和最短路径混合的项目。它如下:

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

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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