Algorithme de Kruskal
Maths/Description
In : un graphe connexe pondéré
Out : un arbre sous-tendant de poids minimum
Init : On définit l'ensemble trié des arêtes pondérées venant de ainsi que
Loop : Tant que :
- (on retire la première arête de l'ensemble trié )
- Si est sans cycle, alors (une condition équivalente est : Si l'arête relie 2 arbres distincts alors...)
Implémentation Python
# Cette fonction admet l'existance de certaines
# méthodes et classes qui permettent de rendre
# le code plus lisible.
def kruskal(graph, rPrime):
graph.sortByWeight()
for edge in graph.edges():
weight, u, v = edge
if hasCycle(rPrime.union(edge)) == false:
rPrime = rPrime.union(edge)
return rPrime
Complexité
Spatiale :
Temporelle : dépend surtout de l'algorithme de triage mais dans le meilleur des cas :
Preuve de validité
Todo