Você está na página 1de 35

O Problema de Ordenação Topológica Resolvendo Ordenação Topológica com o DFS

Aula 6 - Ordenação Topológica


COENCOM0097 - Grafos

Prof. Dr. Nicolas Martins

Instituto de Engenharia e Desenvolvimento Sustentável (IEDS)


Universidade da Integração Internacional da Lusofonia Afro-Brasileira (UNILAB)

Martins, N. IEDS-UNILAB
Algoritmos em Grafos
O Problema de Ordenação Topológica Resolvendo Ordenação Topológica com o DFS

Sumário

1 O Problema de Ordenação Topológica

2 Resolvendo Ordenação Topológica com o DFS

Martins, N. IEDS-UNILAB
Algoritmos em Grafos
O Problema de Ordenação Topológica Resolvendo Ordenação Topológica com o DFS

Grafos Direcionados Acı́clicos(DAGs)

DAG
Um digrafo D = (V , A) é um DAG se D não possui um ciclo
direcionado como subgrafo.

Martins, N. IEDS-UNILAB
Algoritmos em Grafos
O Problema de Ordenação Topológica Resolvendo Ordenação Topológica com o DFS

Grafos Direcionados Acı́clicos(DAGs)

DAG
Um digrafo D = (V , A) é um DAG se D não possui um ciclo
direcionado como subgrafo.

Martins, N. IEDS-UNILAB
Algoritmos em Grafos
O Problema de Ordenação Topológica Resolvendo Ordenação Topológica com o DFS

O Problema de Ordenação Topológica

Ordenação Topológica

Martins, N. IEDS-UNILAB
Algoritmos em Grafos
O Problema de Ordenação Topológica Resolvendo Ordenação Topológica com o DFS

O Problema de Ordenação Topológica

Ordenação Topológica
Entrada: Um digrafo D = (V , A);

Martins, N. IEDS-UNILAB
Algoritmos em Grafos
O Problema de Ordenação Topológica Resolvendo Ordenação Topológica com o DFS

O Problema de Ordenação Topológica

Ordenação Topológica
Entrada: Um digrafo D = (V , A);
Questão: Apresente uma ordem v1 , v2 , v3 , . . . , v|V | tal que
para todo arco (vi , vj ) tenhamos que i < j.

Martins, N. IEDS-UNILAB
Algoritmos em Grafos
O Problema de Ordenação Topológica Resolvendo Ordenação Topológica com o DFS

Ordenação Topológica em DAGs

Pergunta
Se D não for um DAG, é possı́vel obter uma ordenação topológica
dos vértices de um digrafo D?

Martins, N. IEDS-UNILAB
Algoritmos em Grafos
O Problema de Ordenação Topológica Resolvendo Ordenação Topológica com o DFS

Ordenação Topológica em DAGs

Pergunta
Se D não for um DAG, é possı́vel obter uma ordenação topológica
dos vértices de um digrafo D?

Se D não for um DAG, então D possui um ciclo direcionado


v1 , v2 , . . . , vk ;

Martins, N. IEDS-UNILAB
Algoritmos em Grafos
O Problema de Ordenação Topológica Resolvendo Ordenação Topológica com o DFS

Ordenação Topológica em DAGs

Pergunta
Se D não for um DAG, é possı́vel obter uma ordenação topológica
dos vértices de um digrafo D?

Se D não for um DAG, então D possui um ciclo direcionado


v1 , v2 , . . . , vk ;
Assim em qualquer ordenação topológica de D terı́amos que
vi teria que preceder vi+1 ;

Martins, N. IEDS-UNILAB
Algoritmos em Grafos
O Problema de Ordenação Topológica Resolvendo Ordenação Topológica com o DFS

Ordenação Topológica em DAGs

Pergunta
Se D não for um DAG, é possı́vel obter uma ordenação topológica
dos vértices de um digrafo D?

Se D não for um DAG, então D possui um ciclo direcionado


v1 , v2 , . . . , vk ;
Assim em qualquer ordenação topológica de D terı́amos que
vi teria que preceder vi+1 ;
Por transitividade, v1 deveria preceder vk ;

Martins, N. IEDS-UNILAB
Algoritmos em Grafos
O Problema de Ordenação Topológica Resolvendo Ordenação Topológica com o DFS

Ordenação Topológica em DAGs

Pergunta
Se D não for um DAG, é possı́vel obter uma ordenação topológica
dos vértices de um digrafo D?

Se D não for um DAG, então D possui um ciclo direcionado


v1 , v2 , . . . , vk ;
Assim em qualquer ordenação topológica de D terı́amos que
vi teria que preceder vi+1 ;
Por transitividade, v1 deveria preceder vk ;
Isso é uma contradição com a existência do arco (vk , v1 ).

Martins, N. IEDS-UNILAB
Algoritmos em Grafos
O Problema de Ordenação Topológica Resolvendo Ordenação Topológica com o DFS

Aplicações de Ordenação Topológica

O Problema de Ordenação Topológica pode ser usado para


modelar várias aplicações, por exemplo:

Martins, N. IEDS-UNILAB
Algoritmos em Grafos
O Problema de Ordenação Topológica Resolvendo Ordenação Topológica com o DFS

Aplicações de Ordenação Topológica

O Problema de Ordenação Topológica pode ser usado para


modelar várias aplicações, por exemplo:
Detecção de Deadlocks

Martins, N. IEDS-UNILAB
Algoritmos em Grafos
O Problema de Ordenação Topológica Resolvendo Ordenação Topológica com o DFS

Aplicações de Ordenação Topológica

O Problema de Ordenação Topológica pode ser usado para


modelar várias aplicações, por exemplo:
Detecção de Deadlocks
Resolução de dependencias

Martins, N. IEDS-UNILAB
Algoritmos em Grafos
O Problema de Ordenação Topológica Resolvendo Ordenação Topológica com o DFS

Aplicações de Ordenação Topológica

O Problema de Ordenação Topológica pode ser usado para


modelar várias aplicações, por exemplo:
Detecção de Deadlocks
Resolução de dependencias
Organização de cadeias de produção

Martins, N. IEDS-UNILAB
Algoritmos em Grafos
O Problema de Ordenação Topológica Resolvendo Ordenação Topológica com o DFS

Aplicações de Ordenação Topológica

O Problema de Ordenação Topológica pode ser usado para


modelar várias aplicações, por exemplo:
Detecção de Deadlocks
Resolução de dependencias
Organização de cadeias de produção
Problema de Agendamento de Cursos

Martins, N. IEDS-UNILAB
Algoritmos em Grafos
O Problema de Ordenação Topológica Resolvendo Ordenação Topológica com o DFS

Aplicações de Ordenação Topológica

Martins, N. IEDS-UNILAB
Algoritmos em Grafos
O Problema de Ordenação Topológica Resolvendo Ordenação Topológica com o DFS

Como você resolveria?

Martins, N. IEDS-UNILAB
Algoritmos em Grafos
O Problema de Ordenação Topológica Resolvendo Ordenação Topológica com o DFS

Como você resolveria?

Dica: Use o DFS!

Martins, N. IEDS-UNILAB
Algoritmos em Grafos
O Problema de Ordenação Topológica Resolvendo Ordenação Topológica com o DFS

Como você resolveria?

Dica: Use o DFS!


Como podemos adaptar o DFS para resolver o problema de
Ordenação Topológica?

Martins, N. IEDS-UNILAB
Algoritmos em Grafos
O Problema de Ordenação Topológica Resolvendo Ordenação Topológica com o DFS

Adaptando DFS

Figure: Fonte: Introduction to


Algorithms (3rd Edition). T. H. Figure: Fonte: Introduction to
Cormen et al. Algorithms (3rd Edition). T. H.
Cormen et al.

Martins, N. IEDS-UNILAB
Algoritmos em Grafos
O Problema de Ordenação Topológica Resolvendo Ordenação Topológica com o DFS

Executando o DFS sem modificações em um DAG

Execute o DFS no grafo de preparação do jantar!

Martins, N. IEDS-UNILAB
Algoritmos em Grafos
O Problema de Ordenação Topológica Resolvendo Ordenação Topológica com o DFS

Executando o DFS sem modificações em um DAG

Execute o DFS no grafo de preparação do jantar!

O que você observa que pode ser usado para resolver o


problema de Ordenação Topológica?

Martins, N. IEDS-UNILAB
Algoritmos em Grafos
O Problema de Ordenação Topológica Resolvendo Ordenação Topológica com o DFS

Modificando o DFS

Uma ordenação topológica dos vértices pode ser armazenada


em uma lista encadeada dos mesmos;

Martins, N. IEDS-UNILAB
Algoritmos em Grafos
O Problema de Ordenação Topológica Resolvendo Ordenação Topológica com o DFS

Modificando o DFS

Uma ordenação topológica dos vértices pode ser armazenada


em uma lista encadeada dos mesmos;
Nesta lista os vértices devem ser armazenados na ordem
inversa em que foram finalizados;

Martins, N. IEDS-UNILAB
Algoritmos em Grafos
O Problema de Ordenação Topológica Resolvendo Ordenação Topológica com o DFS

Modificando o DFS

Uma ordenação topológica dos vértices pode ser armazenada


em uma lista encadeada dos mesmos;
Nesta lista os vértices devem ser armazenados na ordem
inversa em que foram finalizados;
Para obter uma lista com estas propriedades, basta que a cada
vértice finalizado ele seja inserido no inı́cio da lista.

Martins, N. IEDS-UNILAB
Algoritmos em Grafos
O Problema de Ordenação Topológica Resolvendo Ordenação Topológica com o DFS

Arestas de Volta em DAGs


Teorema
Um digrafo D é um DAG se, e somente se, qualquer execução do
DFS em D não encontra arco de retorno.

Martins, N. IEDS-UNILAB
Algoritmos em Grafos
O Problema de Ordenação Topológica Resolvendo Ordenação Topológica com o DFS

Arestas de Volta em DAGs


Teorema
Um digrafo D é um DAG se, e somente se, qualquer execução do
DFS em D não encontra arco de retorno.
⇒ Suponha uma execução do DFS que encontra um arco de
retorno u, v em um DAG D. Logo, u é descendente de v ,
portanto o caminho de v para u com o arco (u, v ) formam um
ciclo direcionado.

Martins, N. IEDS-UNILAB
Algoritmos em Grafos
O Problema de Ordenação Topológica Resolvendo Ordenação Topológica com o DFS

Arestas de Volta em DAGs


Teorema
Um digrafo D é um DAG se, e somente se, qualquer execução do
DFS em D não encontra arco de retorno.
⇒ Suponha uma execução do DFS que encontra um arco de
retorno u, v em um DAG D. Logo, u é descendente de v ,
portanto o caminho de v para u com o arco (u, v ) formam um
ciclo direcionado.
⇐ Suponha agora que D possui um ciclo v1 , v2 , . . . , vk . Sem
perda de generalidade, seja v1 o primeiro vértice deste ciclo a
ser descoberto por uma execução do DFS. Pelo Teorema dos
Caminhos Brancos vk será descendente de v1 nesta execução
do DFS (Por quê?). Logo o arco (vk , v1 ) do ciclo é um arco
de retorno.
Martins, N. IEDS-UNILAB
Algoritmos em Grafos
O Problema de Ordenação Topológica Resolvendo Ordenação Topológica com o DFS

Corretude do Algoritmo

Teorema
A modificação sugerida para o DFS produz uma ordenação
topológica de qualquer DAG D.

Martins, N. IEDS-UNILAB
Algoritmos em Grafos
O Problema de Ordenação Topológica Resolvendo Ordenação Topológica com o DFS

Corretude do Algoritmo

Teorema
A modificação sugerida para o DFS produz uma ordenação
topológica de qualquer DAG D.

Basta mostrar que para qualquer arco (u, v ) explorado durante


a execução do DFS tenhamos que v .f < u.f . (Por quê?)

Martins, N. IEDS-UNILAB
Algoritmos em Grafos
O Problema de Ordenação Topológica Resolvendo Ordenação Topológica com o DFS

Corretude do Algoritmo

Teorema
A modificação sugerida para o DFS produz uma ordenação
topológica de qualquer DAG D.

Basta mostrar que para qualquer arco (u, v ) explorado durante


a execução do DFS tenhamos que v .f < u.f . (Por quê?)
Se v for cinza, (u, v ) é um arco de retorno o que não pode
ocorrer pelo teorema anterior;

Martins, N. IEDS-UNILAB
Algoritmos em Grafos
O Problema de Ordenação Topológica Resolvendo Ordenação Topológica com o DFS

Corretude do Algoritmo

Teorema
A modificação sugerida para o DFS produz uma ordenação
topológica de qualquer DAG D.

Basta mostrar que para qualquer arco (u, v ) explorado durante


a execução do DFS tenhamos que v .f < u.f . (Por quê?)
Se v for cinza, (u, v ) é um arco de retorno o que não pode
ocorrer pelo teorema anterior;
Se v for branco, temos que v .d > u.d, logo v .f < u.f .

Martins, N. IEDS-UNILAB
Algoritmos em Grafos
O Problema de Ordenação Topológica Resolvendo Ordenação Topológica com o DFS

Corretude do Algoritmo

Teorema
A modificação sugerida para o DFS produz uma ordenação
topológica de qualquer DAG D.

Basta mostrar que para qualquer arco (u, v ) explorado durante


a execução do DFS tenhamos que v .f < u.f . (Por quê?)
Se v for cinza, (u, v ) é um arco de retorno o que não pode
ocorrer pelo teorema anterior;
Se v for branco, temos que v .d > u.d, logo v .f < u.f .
Se v for preto, então v já foi finalizado e portanto v .f < u.f .

Martins, N. IEDS-UNILAB
Algoritmos em Grafos

Você também pode gostar