0

在分配期间,我想找到给定长度的最长圆形路径。使用下图作为示例。我们想找到给定长度的最长可能的圆形路径。

在此处输入图像描述

例如,对于长度 3,最长的圆形路径是 DBED 或 EDBE。

我提出了一种查找最长路径的方法,即 Dijkstra 的修改版本。区别在于:

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

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

  3. 以每个节点为起点进行。

我已经检查了 6 个节点和长度最多为 5 个节点的算法并且它有效,但我无法检查它是否适用于像 100 这样的更大数字。

我的教授说 Dijkstra 不是您要寻找的那个问题,并且找到哈密顿电路的算法会更有效。我相信他是对的,正如Dijkstra 的算法修改人们指出的那样,在很多线程中,Dijkstra 的算法无法找到最长的路径。

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

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

4

1 回答 1

0

dijkstra 算法仅找到 2 个点之间的最短路径,因此它可以跳过顶点。一个哈密顿循环只访问每个顶点一次并且是一个循环。在欧拉路径中,您可能会通过一个顶点两次。

于 2013-10-22T13:22:42.773 回答