旅行推销员启发式

时间:2016-12-02 03:27:38

标签: c++ vector linked-list traveling-salesman

我目前的想法是: 从点0开始并将其与最近点连接。对于所有剩余节点,将其插入所有可能的位置并保持成本最低的配置。

所以我从第0点开始。最靠近第0点的节点是第1点。

所以我现在有0-> 1 - > 0

对于第2点(以及所有剩余的节点),我将检查新节点可能位于的所有可能性:

2 - > 0 - > 1 - > 2

0 - > 2 - > 1 - > 0

0 - > 1→ 2 - > 0

从这里我发现

0 - > 1 - > 2 - > 0具有最小的欧氏距离,因此这是我将保留的配置。

我会继续将这个逻辑用于我的其余节点。

在c ++中有一种简单的方法可以实现吗?我目前的想法可能是链接列表是一个好主意,但我希望能够使用向量,如果可能的话。有没有人知道如何处理这个问题?

1 个答案:

答案 0 :(得分:0)

您是否考虑过使用有向图然后实现dijkstra算法。在有向图中,dijkstra算法将为您提供从起始节点到图中所有其他节点的最短路径,而不仅仅是您想要的几个节点。