Question

code de pseudo qui je:

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;

D'après ma compréhension:

  • 1 ligne: exécute les temps de V-1
  • .
  • Ligne 2: Somme des degrés de tous les temps des sommets ... ..that est temps de 2E

Pour chaque ligne 2: Ligne 3 et la ligne 4 Prenez le temps de log E parce que nous ajoutons / suppression de tous les bords vers / depuis l'PQ un par un.

= au total time V-1+2E.logE = E.log E

Mais le livre dit qu'il est E.logV, pourriez-vous expliquer pourquoi?

Était-ce utile?

La solution

O (log (V)) et O (log (E)) sont les mêmes.

  • E est au plus V 2 .
  • log (V 2 ) = 2 * log (V)
  • qui est un O (log (v))

Autres conseils

  

pour tous les bords e (s, t) incident à s

Combien de bords un s de nœud peut avoir au plus
V-1 au plus. Ainsi, les opérations ont PQ O (logV) la complexité du temps.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top