O algoritmo pode ser descrito da seguinte forma:
Dado um grafo direcionado com n vértices e m arestas. É necessário renumerar seus vértices de forma que cada aresta conduza de um vértice com um número menor para um vértice com um número maior.
Em outras palavras, é necessário encontrar uma permutação de vértices (ordem topológica) correspondente à ordem dada por todas as arestas do grafo.
Usaremos a pesquisa em profundidade (dfs(v))
Se adicionarmos nosso vértice ao início de uma lista no momento da saída de \(dfs(v)\) , então no final nesta lista você obtém uma classificação topológica.
Assim, a ordenação topológica desejada — isso é classificado em ordem decrescente de horários de saída.