在加权有向图中使用DFS查找两个节点之间的所有路径

时间:2016-04-26 15:22:33

标签: algorithm graph graph-algorithm graph-theory depth-first-search

我有定向加权 G ,其中权重是转换的持续时间。

我使用带有修改的DFS在两个顶点之间编写了所有路径搜索算法:搜索继续进行,直到路径的总权重(其部分的权重之和)将小于某个值。

我的代码在小图中工作,但在大图中(| V | = 1800,| E | = 50870)它会冻结。

{{1}}

1 个答案:

答案 0 :(得分:1)

您的代码似乎是正确的(特别是因为它适用于小图表)。

问题是节点之间可能有很多路径。对于完全连接的图形,路径数量大约为N!这很多。由于你需要所有这些程序,所以你的程序会很慢(特别是如果你用完RAM而需要将东西交换到磁盘上)。

如果限制最大总重量,就像你在代码中所做的一样,假设所有权重都是1,你仍然以O(重量)运行,我假设你设置的值很大,因为图表很大。

你需要弄清楚你是否真的需要所有这些路径。

如果您正在寻找最短路径,请使用Dijkstra或其他东西来寻找最短路径。