Adloun

Tester l'existence d'un chemin

Application directe du cours · niveau 1 (application) · NSI (terminale), chapitre 4 — Les graphes

Énoncé

Tester l'existence d'un chemin.

Écrire une fonction existe_chemin(G, u, v) qui renvoie True s'il existe un chemin entre et dans le graphe, False sinon.

Corrigé

Il suffit de lancer un parcours (BFS ou DFS) à partir de et de vérifier si est atteint.


from collections import deque

def existe_chemin(G, u, v):
    if u == v:
        return True
    visites = {u}
    file = deque([u])
    while file:
        courant = file.popleft()
        for voisin in G[courant]:
            if voisin == v:
                return True
            if voisin not in visites:
                visites.add(voisin)
                file.append(voisin)
    return False

G = {0: [1], 1: [0, 2], 2: [1], 3: [4], 4: [3]}
print(existe_chemin(G, 0, 2))   # True
print(existe_chemin(G, 0, 3))   # False (composantes distinctes)

La complexité est .

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.