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