特殊DFS的时间复杂度

时间:2013-12-11 14:31:34

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

已知DFS时间复杂度为O(|V|+|E|)。 假设每个顶点v具有正权重w(v)。我想改变DFS算法,这样当我们“挖掘”我们需要添加到空堆栈的顶点时,我们将添加最加权的顶点。

施加意味着 - 当堆栈为空时我们需要选择一个顶点来开始\ contiue with。 (抱歉是非正式的)

例如: 如果我们有这个有向图:

A->B->C D->E F->G->H

w(D)>w(A)>w(F),图表上的这个新DFS将遍历此顺序:

D E A B C F G H

我建议的新DFS的时间复杂度是多少?

2 个答案:

答案 0 :(得分:1)

选择下一个顶点时,需要对当前顶点的输出边进行排序。在所有顶点上,您需要对总共|E|个元素进行排序,这会增加您的复杂性O(|E|log|E|)

答案 1 :(得分:0)

您只需在开头对所有顶点进行排序,然后按顺序执行dfs。

所以这是VlogV + E.

我不明白为什么我们必须在上面的答案中排序'外向边'。