我使用的伪代码:
for all V vertices: visited[n]=0
pick any vertex r from graph and set visited[r]=1
For all edges e incident to r
PQ.insert()
while(PQ is not empty)//line 1
f=PQ.min()//f(r,s) is such that visited[s]=0
for all edges e(s,t) incident to s//line 2
if(visited[t]==0)
PQ.insert(e);//line 3
else
PQ.delete(e);//line 4
visited[s]=1;
end while;
根据我的理解:
- 第 1 行:执行
V-1
次数。 - 第 2 行:所有顶点的度数之和时间......即
2E
时间
对于第 2 行:第 3 行和第 4 行需要时间,因为我们正在逐一log E
添加/删除所有边缘。PQ
所以总计time
= V-1+2E.logE
=E.log E
但是书上说是这样E.logV
,你能解释一下为什么会这样吗?