寻找长路

时间:2013-07-12 18:44:33

标签: algorithm graph

我有一个1000000节点的稀疏未加权有向图,我想找到长度为5的所有简单路径。我知道很少有简单的长度为5的路径(可能只有一个)。

我从http://en.wikipedia.org/wiki/Longest_path_problem看到,确定图表是否有长度为k的路径的参数化复杂度是O(2 ^ kn poly(n,k)))虽然我不知道这些方法是否会也解决了我的问题。不幸的是,我发现的所有方法看起来都非常复杂,似乎没有实现。

有人可以用或多或少简单的单词解释一个快速的解决方案,然后我可以实现吗?

1 个答案:

答案 0 :(得分:2)

我为“最长路径”写了implementation of the Color-Coding method。然而,它仅用大约10000个顶点的图形进行测试;此外,它可能找不到所有大小为5的路径(它旨在找到一小组有趣的路径)。我或许可以根据你的目的进行调整,如果你有兴趣,请给我留言。

编辑:颜色编码的想法是用5种颜色随机地为图形的顶点着色。希望我们正在寻找的路径的5个顶点都接收不同的颜色。如果这是真的,我们可以通过动态编程找到它。当然,概率仅为0.0384;但如果我们重复整个过程,例如500次,只有3 * 10 ^ -9的机会,我们错过了它。这只是基本方案,有很多技巧可以加速它。