L'algoritmo può essere descritto come segue:
Dato un grafo orientato con n vertici e m archi. È necessario rinumerare i suoi vertici in modo tale che ogni bordo conduca da un vertice con un numero inferiore a un vertice con uno più alto.
In altre parole, è necessario trovare una permutazione di vertici (ordine topologico) corrispondente all'ordine dato da tutti gli spigoli del grafo.
Useremo la ricerca in profondità (dfs(v))
Se aggiungiamo il nostro vertice all'inizio di una lista al momento dell'uscita da \(dfs(v)\) , allora alla fine in questo elenco ottieni un ordinamento topologico.
Pertanto, l'ordinamento topologico desiderato — questo è ordinato in ordine decrescente di orari di uscita.