在作业期间,我想找到给定长度的最长圆形路径。 使用下面的图像作为示例。我们想要找到给定长度的最长圆形路径。
e.g。对于长度3,最长的圆形路径是DBED或EDBE。
我提出了一种方法来找到Dijkstra的修改版本的最长路径。 不同之处是:
而不是min在每一步中搜索最大值。
当步长为1时,算法停止并返回起点并添加从最后一个点到总路径长度的距离。
以每个节点为出发点。
我已经检查了6个节点的算法,长度达到5个并且它工作正常,但我无法检查它是否适用于像100这样的较大数字。
我的教授说Dijkstra不是你想要的那个问题,找到汉密尔顿电路的算法会更有效。我相信他是正确的,因为Dijkstra's algorthm modification人们指出Dijkstra的算法无法找到最长的路径。
但Dijkstra确实不是我想要的;上面的情况是一个非常特殊的情况,因为所有节点都是连接的,修改后的版本检查每个点作为起始点,也检查给定长度的圆形路径。
最后,我的问题是为什么修改后的版本找不到合适的解决方案,只有这个特殊情况。
答案 0 :(得分:0)
dijkstra算法只找到2个点之间的最短路径,并且这样做可以跳过顶点。哈密顿循环只访问每个顶点一次并且是一个循环。在Euler路径中,您可以传递两次顶点。