El algoritmo se puede describir de la siguiente manera:
Dado un grafo dirigido con n vértices y m aristas. Se requiere renumerar sus vértices de tal manera que cada arista conduzca desde un vértice con un número más bajo a un vértice con uno más alto.
Es decir, se requiere encontrar una permutación de vértices (orden topológico) correspondiente al orden dado por todas las aristas del grafo.
Usaremos la búsqueda en profundidad (dfs(v))
Si agregamos nuestro vértice al comienzo de una lista al momento de salir de \(dfs(v)\) , entonces al final en esta lista obtienes una ordenación topológica.
Por lo tanto, la ordenación topológica deseada — esto se ordena en orden descendente de tiempos de salida.