La résolution du problème passant par la garantie qu'il n'y a aucun circuit, il est nécessaire de disposer d'un algorithme permettant de les retrouver dans la trace d'exécution. Il est possible de procéder ainsi[4] :
On remarque qu'il peut y avoir plusieurs occurrences d'un même sommet dans ou dans
.
La ligne
ajoute
dans
même s'il s'y trouve déjà. La ligne
n'enlève qu'une
occurrence de
de
. Par contre, l'instruction
n'ajoute
dans
que s'il
ne s'y trouve déjà, et l'instruction de la ligne
élimine le seul
de
s'il
s'y trouve.
Le principe de cet algorithme est le suivant : on marque un sommet
si tous ses prédécesseurs sont marqués, les sommets non
marquables sont impliqués dans un circuit.