Topological Sorting (Portuguese)
-
Upload
hudson-miranda -
Category
Education
-
view
217 -
download
1
description
Transcript of Topological Sorting (Portuguese)
Ordenação Topológica
Hudson C. MirandaJulho de 2013
Conceitos necessários Definição Aplicações O algoritmo
Conceitos Necessários
Para entender a ideia da ordenação topológica, alguns conceitos devem ser explicados antes.
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.
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.
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.
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
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?
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.
Conceitos necessários DefiniçãoDefinição Aplicações O algoritmo
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.
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.
Ordenação Topológica - DefiniçãoExistem várias ordenações topológicas dado um
DAG:
Ordenação Topológica - DefiniçãoExistem várias ordenações topológicas dado um
DAG: {7, 5, 3, 11, 8, 2, 9, 10} – Esquerda para
direita, cima para baixo.
{3, 5, 7, 8, 11, 2, 9, 10} – Vértice de menor número disponível primeiro.
{7, 5, 11, 3, 10, 8, 9, 2} – Vertíce de maior número disponível primeiro.
Entre outras...
Conceitos necessários Definição AplicaçãoAplicação O algoritmo
Aplicações
Organizar ordem de tarefas: Cada vértice representa uma tarefa a ser executada e as arestas as dependências de cada tarefa.
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
Conceitos necessários Definição Aplicação O algoritmoO algoritmo
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.
O algoritmoprocedimento 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
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)
Obrigado!
Referências:http://www.professeurs.polymtl.ca/michel.gagnon/Disciplinas/Bac/Grafos/Busca/busca.html#Ord
http://wiki.icmc.usp.br/images/9/93/Alg2_05.Grafos_ordenacaotopologica.pdf
http://www.cos.ufrj.br/~marroquim/grafos/slides/aula_8.pdf
https://www.cs.washington.edu/education/courses/326/03wi/lectures/RaoLect20.pdf
http://www.ime.usp.br/~pf/algoritmos_para_grafos/aulas/toposorting.html
http://paginas.fe.up.pt/~rossetti/rrwiki/lib/exe/fetch.php?media=teaching:1011:cal:05_1.grafos1_b.pdf
http://w3.ualg.pt/~hshah/algoritmos/aula4/aula4.htm
http://www.comp.ita.br/~mamc/folhetos/3.pdf
http://web.sercomtel.com.br/marcusvlc/
http://www.youtube.com/watch?v=AfSk24UTFS8