无向图解中的最长路径(边权重= 1)?

时间:2015-02-10 17:45:05

标签: graph longest-path undirected-graph

我有一个无方向图,每条边的权重为1.图可能有周期。我需要在图中找到最长的路径(每个节点出现一次)。路径的长度是节点的数量。任何简单有效的解决方案?谢谢!

2 个答案:

答案 0 :(得分:1)

根据http://en.wikipedia.org/wiki/Longest_path_problem,找到最长的路径是NP难的。因此,除非P = NP,否则对于大型实例来说,它被认为是一个难以解决的问题。与找到最短路径相反,BFS算法是线性的。

答案 1 :(得分:0)

我有类似的情况,但我的节点有限,数量小于50.

我在SQL数据库表(from,to和length列)中对其进行建模,并尝试查找两个给定节点之间的每条路径,并计算路径长度以确定最长路径。

在SQL Server上,我构建了一个SQL递归CTE查询来定义最长路径。请参阅参考文档中的find the longest path文章

请注意,即使有50个节点,查询也计算了从起始节点到结束节点的70多个可能路径,而没有将同一节点传递两次,并且我的开发计算机上的SQL Server引擎花费了大约2个小时来完成此操作的执行查询。