Adloun

Compter les composantes connexes

Exercice de TD · niveau 2 · NSI (terminale), chapitre 4 — Les graphes

Énoncé

Compter les composantes connexes.

Écrire une fonction nb_composantes(G) qui renvoie le nombre de composantes connexes d'un graphe non orienté.

Corrigé

On lance un parcours à partir de chaque sommet non encore visité ; chaque parcours révèle une composante entière.


def nb_composantes(G):
    visites = set()
    nb = 0

    def explorer(depart):
        pile = [depart]
        while pile:
            u = pile.pop()
            if u not in visites:
                visites.add(u)
                for v in G[u]:
                    if v not in visites:
                        pile.append(v)

    for sommet in G:
        if sommet not in visites:
            nb += 1
            explorer(sommet)
    return nb

G = {0: [1], 1: [0, 2], 2: [1], 3: [4], 4: [3]}
print(nb_composantes(G))   # 2

La complexité est : chaque sommet et chaque lien sont traités une seule fois au total.

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.