【发布时间】:2013-10-22 13:11:05
【问题描述】:
在作业期间,我想找到给定长度的最长圆形路径。 使用下图作为示例。我们想找到给定长度的最长可能的圆形路径。
例如对于长度 3,最长的圆形路径是 DBED 或 EDBE。
我建议使用修改版的 Dijkstra 作为一种查找最长路径的方法。 区别在于:
不是 min 而是在每一步中搜索最大值。
当步长为 1 时,算法停止并返回起点,并将到最后一点的距离添加到总路径长度。
以每个节点为起点。
我已经检查了 6 个节点和最长 5 个节点的算法并且它有效,但我无法检查它是否适用于像 100 这样更大的数字。
我的教授说 Dijkstra 不是您要寻找的那个问题,并且找到哈密顿回路的算法会更有效。我相信他是对的,正如Dijkstra's algorthm modification 的许多人指出的那样,Dijkstra 的算法无法找到最长的路径。
但是,尽管 Dijkstra 确实不是我要找的;上述情况是一个非常特殊的情况,因为所有节点都已连接,并且修改后的版本会检查每个点作为起始点以及给定长度的圆形路径。
最后,我的问题是为什么修改后的版本找不到正确的解决方案,只有这个特殊情况。
【问题讨论】:
-
Dijkstra 的 max 而不是 min 将如何工作? Dijkstra 的重要不变量是您可以将顶点添加到已访问顶点的子集,因为您知道绕道不会给您带来更短的路径。在您的示例中,从 A 开始,您将哪个邻居节点添加到访问的顶点集?它们都不会产生最长的路径。
-
首先,“循环路径”是什么意思?你可以多次访问一个顶点吗?
-
每个输入图都有全对全连接吗?
-
@AndyG 是的,每个输入路径都有所有连接。
-
澄清我认为@ColonelPanic 的问题:给定路径可以包含循环吗?那 BEDBED 是路径长度为 6 的有效猜测吗?
标签: algorithm