NSI (terminale) · Chapitre 4 · Exercice de TD
Vérifier qu'un graphe est biparti
Les graphes · niveau 3 (difficile)
É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 .
100 % gratuit
Essaie le suivant avec le tuteur
- L'exercice suivant avec le tuteur, sans compte : il guide pas à pas, sans donner la réponse
- 8 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le podcast et la vidéo du chapitre : 2 minutes d'écoute sans compte
Sans compte : le cours, le premier QCM, 2 minutes de podcast et de vidéo et un exercice avec le tuteur. Pour tout le reste : inscription gratuite en 30 secondes, sans carte bancaire.