Псевдокод, который я использовал:
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
, не могли бы вы объяснить, почему это так?