web-dev-qa-db-fra.com

Complexité temporelle de l'algorithme de Kruskal?

Je calcule la complexité temporelle de l'algorithme kruskal comme ceci (voir l'algorithme dans l'image jointe)

T(n) = O(1) + O(V) + O(E log E) + O(V log V)
     = O(E log E) + O(V log V)
as |E| >= |V| - 1
T(n) = E log E + E log E
     = E log E

L'algorithme CLRS:

enter image description here

Est-ce correct ou je fais quelque chose de mal s'il vous plaît dites-le.

9
Sonali

Kruskal est O (E log E); votre dérivation est juste. Vous pouvez aussi dire O (E log V) parce que E <= V * V, donc log (E) <= 2 log (V) (je ne sais pas pourquoi je me souviens de ça, à part ça, je pense qu'un prof a mis ça sur un examen à un moment donné ...)

10
Bandrami

Depuis | V | > | E | +1, nous préférons une limite supérieure étroite avec V termes plutôt que E.

    |E| <= |V|²   
.   log |E| < log |V|²   
.   log |E| < 2 log |V| 
.   running time of MST-KRUSKAL is: O(E log V)
4
MOHIT KUMAR

Désolé pour la réponse tardive.
Le temps d’exécution de l’algorithme Kruskal est O (E log E) et non O (E log V).

En tant que, les bords doivent être triés en premier et il faut O (E log E) où il domine le temps d'exécution pour vérifier si le Edge en considération est un Edge sûr ou non qui prendrait O (E log V). Et | E | > | V | ((cas où le graphique est déjà une arborescence)), il est donc prudent de supposer que le temps d'exécution est O (E log E)

1
letsBeePolite

lignes 5 à 9, la complexité est O (E).

  1. O(E)
  2. O(1)
  3. O(1)
  4. O(1)
  5. O(1)

jusqu'à la ligne 5, vous avez correctement calculé la complexité. Enfin, le facteur dominant ici est O (E lg E). Donc, la complexité est O (E lg E)

0
Syed Ibna Zubayear