连接所有节点时查找给定长度的最长圆形路径

时间:2013-10-22 13:11:05

标签: algorithm

在作业期间,我想找到给定长度的最长圆形路径。 使用下面的图像作为示例。我们想要找到给定长度的最长圆形路径。

enter image description here

e.g。对于长度3,最长的圆形路径是DBED或EDBE。

我提出了一种方法来找到Dijkstra的修改版本的最长路径。 不同之处是:

  1. 而不是min在每一步中搜索最大值。

  2. 当步长为1时,算法停止并返回起点并添加从最后一个点到总路径长度的距离。

  3. 以每个节点为出发点。

  4. 我已经检查了6个节点的算法,长度达到5个并且它工作正常,但我无法检查它是否适用于像100这样的较大数字。

    我的教授说Dijkstra不是你想要的那个问题,找到汉密尔顿电路的算法会更有效。我相信他是正确的,因为Dijkstra's algorthm modification人们指出Dijkstra的算法无法找到最长的路径。

    但Dijkstra确实不是我想要的;上面的情况是一个非常特殊的情况,因为所有节点都是连接的,修改后的版本检查每个点作为起始点,也检查给定长度的圆形路径。

    最后,我的问题是为什么修改后的版本找不到合适的解决方案,只有这个特殊情况。

1 个答案:

答案 0 :(得分:0)

dijkstra算法只找到2个点之间的最短路径,并且这样做可以跳过顶点。哈密​​顿循环只访问每个顶点一次并且是一个循环。在Euler路径中,您可以传递两次顶点。