我有一个无方向图,每条边的权重为1.图可能有周期。我需要在图中找到最长的路径(每个节点出现一次)。路径的长度是节点的数量。任何简单有效的解决方案?谢谢!
答案 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个小时来完成此操作的执行查询。