Adloun

Vérifier qu'un graphe est biparti

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

Énoncé

Vérifier qu'un graphe est biparti.

Un graphe est biparti si l'on peut colorier ses sommets en deux couleurs de sorte que toute arête relie deux sommets de couleurs différentes. Écrire une fonction est_biparti(G).

Corrigé

On effectue un BFS en coloriant le sommet de départ en , puis chaque voisin avec la couleur opposée à la sienne. Si l'on découvre une arête entre deux sommets de même couleur, le graphe n'est pas biparti.


from collections import deque

def est_biparti(G):
    couleur = {}
    for depart in G:
        if depart in couleur:
            continue
        couleur[depart] = 0
        file = deque([depart])
        while file:
            u = file.popleft()
            for v in G[u]:
                if v not in couleur:
                    couleur[v] = 1 - couleur[u]
                    file.append(v)
                elif couleur[v] == couleur[u]:
                    return False
    return True

print(est_biparti({0: [1, 3], 1: [0, 2], 2: [1, 3], 3: [0, 2]}))  # True
print(est_biparti({0: [1, 2], 1: [0, 2], 2: [0, 1]}))             # False

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.