Topological Sorting (Portuguese)

Preview:

DESCRIPTION

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

Citation preview

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