Em um grafo não orientado todas as arestas são de árvore ou de retorno.
A algoritmo de busca em profundidade funciona igualmente bem para grafos direcionados.
Nesse caso, podem ocorrer arestas de avanço e de cruzamento.
O grafo é cíclico
Como o algoritmo de detção de ciclos é uma adaptação da busca em profundidade, é fácil perceber que a complexidade é a mesma daquele algoritmo
Um grafo direcionado sem ciclos (acíclico) é também chamado de DAG (directed acyclic graph).
Um DAG é diferente de uma árvore, pois um nó pode ter dois "pais".
Relembrando: Componentes fortemetne conectadas de um grafo G=(V,E) é um conjunto maximal de vertices C⊆V, de tal maneira que todo o vértice de C é alcançável de qualquer outro.
Como encontrar as componentes fortemetne conectadas de um grafo?
No grafo abaixo, se fizermos uma passada da busca em profundidade a partir de um nó amarelo, encontraremos a componente conexa amarela
Entretanto, se começarmos por qualquer nó azul (ou verde), a busca irá percorrer também os nós amarelos
Busca em profundidade pode encontrar componentes fortemente conexas em alguns casos.
Entretanto, em alguns casos mais de uma (ou eventualmente o grafo inteiro) componente pode ser percorrida em uma execução da busca em profundidade a partir de um certo nó.
Como podemos contornar esse problema?
Se "comprimirmos" os nós de uma componente conexa em um único nó, o grafo será um DAG
Lema: Seja C e C′ duas componentes distindas em um dígrafo G. Seja u,v∈C, e u’,v’∈C’. Se G contém um caminho u−u’, então G não pode conter o caminho v’v.
Prova: