Circuit Eulérien
Pseudo code
Pré-requis
Pour que l'algorithme soit applicable, il faut que le graphe soit connexe et que tous les degrés des noeuds soient pairs. On supposera la parité contrôlé dès la lecture des données ; quant à la connexité, on peut la vérifier avec un DFS, ou contrôler que tous les noeuds apparaissent dans le circuit résultant.
Données
On suppose que tous les M arcs sont numérotés de 0 à (M - 1). On créé un tableau de booléen global arcLibre initialisé à VRAI.
En sortie, on considère une pile Circuit qui comportera la liste des noeuds du circuit, dans l'ordre de parcours.
Algorithme
ConstruireCircuit(noeud n)
Pour chaque voisin v de n
Soit a l'arc (n, v) de numéro k
Si arcLibre[k]
arcLibre[k] = FAUX
ConstruireCircuit(v)
Circuit.empiler(n)
Nuances
Dans le cas d'une matrice d'adjacence, on peut stocker le nombre d'arcs entre deux noeuds et le décrémenter à chaque appel, en lieu et place du tableau de booléens arcLibre.