使用O(log(N)(N + M)进行图搜索

时间:2014-11-06 01:44:11

标签: search graph big-o

首先解释一下:我正在java中实现一个包管理器模拟器,即一个只输出正确的东西但实际上没有安装任何东西的包管理器。问题是我需要搜索每个包及其所有依赖项,以查看它们是否都已正确安装。我被告知有可能得到最坏情况下的运行时间等于log(N)(N + M),其中N是包的数量,M是依赖的数量。我相信它是某种BFS实现需要完成,可能只是对每个包和它的依赖项做一个BFS,所以如果我找到一个已通过其他包的依赖关系检查的包,它将跳过。然而,在我看来,似乎没有正确的最坏情况下的运行时间。

有没有人知道如何获得正确的运行时间?

1 个答案:

答案 0 :(得分:0)

我认为这可以通过拓扑排序来完成,并且通常通过捎带DFS而不是BFS来完成。它的线性时间为O(M + N)。