Parcours d’un graphe en profondeur d'abord : (Pseudo-code)
Principe
Si le sommet n'est pas déjà visités: on ajoute le sommet au trajet.
Pour chaque voisin du sommet: Si le voisin n'est pas déjà dans le trajet : on relance un nouveau parcours à partir de ce sommet.
On retourne le trajet.
Pour tester cet algorithme, il est plus simple de d'impléter un graphe exemple sous la forme d'une liste des voisins.
Text Only
VARIABLES
graph: un graphe (liste des voisins)
depart : noeud
voisin : noeud
DEBUT
dfs(graph, depart, visites = None) :
SI visites est None :
visites ← liste vide
FIN SI
Ajouter depart à visites
POUR chaque voisin de depart :
SI voisin n est pas visité :
dfs(graph, voisin, visites)
FIN SI
FIN POUR
Renvoyer visites
FIN
🐍 Script Python
def pfs(graph, depart, visited=None):
if visited==None:
visited = []
visited.append(depart)
for v in graph[depart]:
if v not in visited:
pfs(graph, v, visited)
return visited
ma_liste = {'A': ['B', 'C'],
'B': ['A', 'D', 'E'],
'C': ['A', 'D'],
'D': ['B', 'C', 'E'],
'E': ['B', 'D', 'F', 'G'],
'F': ['E', 'G'],
'G': ['E', 'F', 'H'],
'H': ['G']}
print(pfs(ma_liste, 'E'))
print(bfs(ma_liste, 'E'))