O documento discute ordenação topológica em grafos dirigidos acíclicos (DAGs). Explica conceitos como grafos dirigidos e DAGs, define ordenação topológica como uma sequência de vértices onde cada vértice vem antes dos vértices que dependem dele, e descreve um algoritmo de ordenação topológica baseado em busca em profundidade que imprime os vértices em ordem inversa.
4. Grafo Dirigido (ou Digrafo)
Um grafo é dirigido se toda aresta do grafo tiver
uma direção definida, ou seja, suas arestas não
são simétricas.
Para cada aresta existirão dois vértices
específicos: o de origem e o de destino.
5. Grafo Dirigido (ou Digrafo)
Um grafo é dirigido se toda aresta do grafo tiver
uma direção definida, ou seja, suas arestas não
são simétricas.
Para cada aresta existirão dois vértices
específicos: o de origemorigem e o de destino.destino.
6. Grafo Dirigido Acíclico
Um grafo é aciclico se não existe um caminho
que saia de um vertice e chegue nele mesmo.
Em grafos dirigidos, isso significa que não
existe um caminho de arestas em que um dado
vértice seja a origem e o destino desse
caminho.
7. Grafo Dirigido Acíclico
Um grafo é aciclico se não existe um caminho
que saia de um vertice e chegue nele mesmo.
Em grafos dirigidos, isso significa que não
existe um caminho de arestas em que um dado
vértice seja a origem e o destino desse
caminho.
DAG
8. Grafo Dirigido Acíclico
Grafos Dirigidos acíclicos (conhecidos como
DAG, de Direct Acyclic Graph) são estruturas
muito importantes em teoria dos grafos.
Muito utilizada para determinar graficamente
tarefas que exigem precedência de
execução(linhas de produção, disciplinas de um
curso, sprints de trabalhos, etc...).
Mas, dado um DAG, como podemos determinar
a ordem de precedência de todos os vértices do
grafo?
9. Grafo Dirigido Acíclico
Grafos Dirigidos acíclicos (conhecidos como
DAG, de Direct Acyclic Graph) são estruturas
muito importantes em teoria dos grafos.
Muito utilizada para determinar graficamente
tarefas que exigem precedência de
execução(linhas de produção, disciplinas de um
curso, sprints de trabalhos, etc...).
Mas, dado um DAG, como podemos determinar
a ordem de precedência de todos os vértices do
grafo? R:com a ordenação topológica.ordenação topológica.
11. Ordenação Topológica - Definição
Dado um grafo G=(V, E) dirigido e acíclico, e
sabendo que existe uma ordem de precedência
entre seus vértices, podemos dizer que existirá
um conjunto parcialmente ordenado (V, <) tal
que para qualquer v e w de V, v < w se e
somente se existir um caminho de v até w.
Porém, o operador “<” não significa que v seja
menor que w, mas sim que v vem antes de w.
12. Ordenação Topológica - Definição
Com a informação anterior, é facil ver que haverá
uma sequência de vértices v1, v2, …,vn de G
tal que v1<v2<...<vn. Essa sequência de
vértices será uma ordenação topológicaordenação topológica de G.
16. Aplicações
Organizar ordem de tarefas: Cada vértice
representa uma tarefa a ser executada e as
arestas as dependências de cada tarefa.
17. Aplicações
Organizar ordem de tarefas: Cada vértice
representa uma tarefa a ser executada e as
arestas as dependências de cada tarefa.
Depêndencia entre disciplinas: Os vértices
representam as disciplinas e as arestas suas
dependências
19. O algoritmo
Existem diversas variações do algoritmo para
encontrar uma ordenação topológica em um
DAG. O mais conhecido é uma variação do
DFS (busca em profundidade) que imprime os
vértices em ordem topológica invertida.
20. O algoritmo
procedimento Orden-Topo(G: Grafo)
Para Cada vértice v de G:
Marque v como não visitado
Para Cada vértice v de G:
Se v não foi visitado:
Busca-Prof-Orden-Topo(v)
fim
procedimento Busca-Prof-Orden-Topo(v: vértice)
Marque v como visitado
Para Cada vértice w adjacente a v:
Se w não foi visitado:
Busca-Prof-Orden-Topo(w)
Imprimir(v)
fim
21. O Algoritmo - Complexidade
Tendo em vista que o algoritmo anterior se utiliza
da busca em proundidade de um grafo, sua
complexidade será igual a do DFS(O(n)), já
que a impressão da lista de vértices é O(1)