Topological Sorting (Portuguese)

22
Ordenação Topológica Hudson C. Miranda Julho de 2013

description

A presentation of basic and simple concepts in topological sort in Brazilian Portuguese.

Transcript of Topological Sorting (Portuguese)

Page 1: Topological Sorting (Portuguese)

Ordenação Topológica

Hudson C. MirandaJulho de 2013

Page 2: Topological Sorting (Portuguese)

Conceitos necessários Definição Aplicações O algoritmo

Page 3: Topological Sorting (Portuguese)

Conceitos Necessários

Para entender a ideia da ordenação topológica, alguns conceitos devem ser explicados antes.

Page 4: Topological Sorting (Portuguese)

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.

Page 5: Topological Sorting (Portuguese)

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.

Page 6: Topological Sorting (Portuguese)

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.

Page 7: Topological Sorting (Portuguese)

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

Page 8: Topological Sorting (Portuguese)

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?

Page 9: Topological Sorting (Portuguese)

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.

Page 10: Topological Sorting (Portuguese)

Conceitos necessários DefiniçãoDefinição Aplicações O algoritmo

Page 11: Topological Sorting (Portuguese)

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.

Page 12: Topological Sorting (Portuguese)

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.

Page 13: Topological Sorting (Portuguese)

Ordenação Topológica - DefiniçãoExistem várias ordenações topológicas dado um

DAG:

Page 14: Topological Sorting (Portuguese)

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...

Page 15: Topological Sorting (Portuguese)

Conceitos necessários Definição AplicaçãoAplicação O algoritmo

Page 16: Topological Sorting (Portuguese)

Aplicações

Organizar ordem de tarefas: Cada vértice representa uma tarefa a ser executada e as arestas as dependências de cada tarefa.

Page 17: Topological Sorting (Portuguese)

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

Page 18: Topological Sorting (Portuguese)

Conceitos necessários Definição Aplicação O algoritmoO algoritmo

Page 19: Topological Sorting (Portuguese)

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.

Page 20: Topological Sorting (Portuguese)

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

Page 21: Topological Sorting (Portuguese)

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)

Page 22: Topological Sorting (Portuguese)

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