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:
Est-ce correct ou je fais quelque chose de mal s'il vous plaît dites-le.
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é ...)
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)
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)
lignes 5 à 9, la complexité est O (E).
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)