Détermination de la présence d'un cycle - Exemple 2
Algorithme
def parcours_rec_cycle(g, s, d):
if d[s] == "gris":
return True
if d[s] == "noir":
return False
d[s] = "gris"
for voisin in g.liste_voisins(s):
if parcours_rec_cycle(g, voisin, d):
return True
d[s] = "noir"
return False
Déroulement détaillé sur un exemple
Graphe
On recherche les cycles à partir du sommet ①.
from classeGraphe import *
# Construction de l'objet Graphe g2
g2 = Graphe()
g2.ajout_sommet(1)
g2.ajout_sommet(2)
g2.ajout_sommet(3)
g2.ajout_sommet(4)
g2.ajout_sommet(5)
g2.ajout_arc(1, 2)
g2.ajout_arc(1, 5)
g2.ajout_arc(2, 3)
g2.ajout_arc(3, 4)
g2.ajout_arc(4, 2)
g2.ajout_arc(5, 3)
# Dictionnaire avec tous les sommets étiquetés en "Blanc"
d_blanc = {1: "blanc", 2: "blanc", 3: "blanc", 4: "blanc", 5: "blanc"}
# Choix du sommet de départ
s2 = 1
# Lancement de la recherche d'un cycle
resultat = parcours_rec_cycle(g2, s2, d_blanc)
Déroulement détaillé