Ordenação Topológica

19
Luis Raphael Mareze Marcus Vinicius Lemos Chagas Mario Henrique Adaniya

description

Ordenação Topológica. Luis Raphael Mareze Marcus Vinicius Lemos Chagas Mario Henrique Adaniya. 1. 2. 1. 2. 5. 2. 1. 3. 5. 4. 3. 3. 2. 4. 4. 2. 3. 5. 5. 4. 5. 4. 2. 1. Estruturas de Dados. Matriz de adjacências Lista de adjacências. - PowerPoint PPT Presentation

Transcript of Ordenação Topológica

Page 1: Ordenação Topológica

Luis Raphael MarezeMarcus Vinicius Lemos Chagas

Mario Henrique Adaniya

Page 2: Ordenação Topológica

Estruturas de Dados Matriz de

adjacênciasLista de adjacências1 2 3 4 5

1 0 1 0 0 1

2 1 0 1 1 1

3 0 1 0 1 0

4 0 1 1 0 1

5 1 1 0 1 0

1

5 4

2

3

1 2 5

2 1 5 3 43 2 4

4 2 5 3

5 4 1 2

Page 3: Ordenação Topológica

Matriz de Adjacências X Listas de AdjacênciasTestar se aresta está no grafo.Determinar o grau de um vértice.Menos memória em grafos pequenos.Menos memória em grafos grandes.Inserção ou remoção de aresta.Atravessar o grafo.Melhor na maioria dos problemas.

Matriz de Adjacência

Listas de Adjacências

Matriz de Adjacência

Listas de Adjacências

Matriz de Adjacência

Listas de Adjacências

Listas de Adjacências

Page 4: Ordenação Topológica

Ordenação TopológicaOrigem do nome “Ordenação Topológica”O conceito matemático Topologia - do grego

topo que significa “formas” e logia conhecida em nossa língua por “estudo” - é considerado o “estudo das formas” o qual possui várias subdivisões.

A designação desse nome continua a mesma, mesmo porque já é, historicamente, um termo vastamente utilizado em diversas áreas e aplicações. Uma mudança não seria relevante para aspectos práticos.

Page 5: Ordenação Topológica

A ordenação topológica especifica, em grafos orientados (dirigidos) acíclicos, uma ordenação linear de seus nós (vértices). De forma geral, se um grafo G = (V, E) possui um arco que sai do vértice u e incide em um vértice v, então u deve vir antes de v no resultado da ordenação topológica.

Page 6: Ordenação Topológica
Page 7: Ordenação Topológica

Um outro detalhe a ser dito é que devemos visualizar se o grafo em que desejamos “ordenar topologicamente” possui ou não ciclos. No caso de ocorrência de ciclos podemos observar que a ordenação linear não pode ser executada. Isso se deve ao fato de que vários impasses são criados em decorrência desses ciclos.

Page 8: Ordenação Topológica

Impasse

Page 9: Ordenação Topológica

FormalmenteUm conceito formalmente correto, seria que

uma ordenação topológica de um grafo direcionado e acíclico (G=(V,E)) é uma enumeração (v1,..,vn)  do conjunto de vértices tal que

a < b   sempre que o par   vavb  for um arco. Nesse caso, é importante frisar que, conforme a

figura abaixo, consideramos o arco vavb como uma aresta saindo do vértice a e incidindo no

vértice b.

Page 10: Ordenação Topológica

Exemplo

Page 11: Ordenação Topológica

Um vértice que tem grau de entrada nulo pode também ser chamado de fonte. De maneira análoga, vértices com grau de saída nulo são considerados um sorvedouro ou ralo.

Podemos observar que embora evidente, é relevante destacar que, analogamente ao exemplo acima, todo grafo que admite uma ordenação topológica contem pelo menos uma fonte (primeiro vértice da enumeração) e um sorvedouro (último vértice da ordenação). 

Page 12: Ordenação Topológica

Fonte(s): ARalo(s): F, E, D, B

Page 13: Ordenação Topológica

Algoritmos O(n³)Os primeiros algoritmos de enumeração

topológica tinham como princípio os seguintes passos:

1º passo Calcular o grau de entrada/saída de todos os vértices.

2º passo Todos os vértices com menor grau de entrada são inseridos em uma lista (os primeiros a serem inseridos na lista são os com grau de entrada igual a zero)

3º passo São removidos do grafo os vértices inseridos na lista do passo anterior.

4º passo As arestas que saem destes vértices também são removidas.

5º passo Os outros vértices têm seus graus diminuídos. 6º passo Inicia-se o processo novamente até que o

conjunto de vértices do grafo esteja vazio.

Page 14: Ordenação Topológica

O momento crucial é a busca do vértice de grau de entrada zero (fonte). Se for usada uma matriz de adjacência, o tempo para procurar uma fonte é de O(n2). Como isso é repetido n vezes, o tempo total é em O(n3). Se for usada uma lista de adjacência, a situação melhora em algumas condições, como, por exemplo, em um grafo escasso (poucos nós). Em geral a complexidade será a mesma. O tempo de remoção e de visita das arestas não foi computado devido ao seu tempo linear O(1*n) que não afeta, consideravelmente, o tempo da execução.

Page 15: Ordenação Topológica

Algoritmos O(n)Um outro modo muito usado para a ordenação

topológica é utilizando o algoritmo de busca em profundidade em grafos (DFS). Esse modelo possui a mesma complexidade de um DFS, ou seja, tempo linear O(n), visto que a inserção dos vértices em uma lista é constante (O(1)).

Com o DFS temos uma enorme facilidade na implementação para encontrarmos ciclos indesejados, fator relevante, já que a ordenação topológica funciona somente em grafos acíclicos e dirigidos.

Page 16: Ordenação Topológica

Trabalhando com ciclos

Em algumas biografias existem até mesmo mudanças a fim de que a enumeração aceite a presença de ciclos e retorne a melhor ordem possível. Porém, esse conceito não deixa de fugir do foco principal da ordenação topológica, o qual não permite ciclos.

Page 17: Ordenação Topológica

Melhores ordenações com ciclos

A,B,C,E,F; B,A,C,E,F.

Page 18: Ordenação Topológica

AplicaçõesProblemas de ordenação topológica são comuns

na confecção de dicionários, bancos de dados, sistemas geográficos, metodologias de desenvolvimento de software, planilhas eletrônicas. Todos esses possuem forte dependência entre seus componentes, para tanto a ordenação topológica, como um algoritmo linear (em suas implementações com DFS) resolve em tempo satisfatório todas as necessidades desses “aplicativos”.

Page 19: Ordenação Topológica

Luis Raphael MarezeMarcus Vinicius Lemos Chagas

Mario Henrique Adaniya

http://web.sercomtel.com.br/marcusvlc