Luis Raphael Mareze Marcus Vinicius Lemos Chagas Mario Henrique Adaniya.

19
Luis Raphael Mareze Marcus Vinicius Lemos Chagas Mario Henrique Adaniya

Transcript of Luis Raphael Mareze Marcus Vinicius Lemos Chagas Mario Henrique Adaniya.

Page 1: Luis Raphael Mareze Marcus Vinicius Lemos Chagas Mario Henrique Adaniya.

Luis Raphael MarezeMarcus Vinicius Lemos Chagas

Mario Henrique Adaniya

Page 2: Luis Raphael Mareze Marcus Vinicius Lemos Chagas Mario Henrique Adaniya.

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: Luis Raphael Mareze Marcus Vinicius Lemos Chagas Mario Henrique Adaniya.

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: Luis Raphael Mareze Marcus Vinicius Lemos Chagas Mario Henrique Adaniya.

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: Luis Raphael Mareze Marcus Vinicius Lemos Chagas Mario Henrique Adaniya.

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: Luis Raphael Mareze Marcus Vinicius Lemos Chagas Mario Henrique Adaniya.
Page 7: Luis Raphael Mareze Marcus Vinicius Lemos Chagas Mario Henrique Adaniya.

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: Luis Raphael Mareze Marcus Vinicius Lemos Chagas Mario Henrique Adaniya.

Impasse

Page 9: Luis Raphael Mareze Marcus Vinicius Lemos Chagas Mario Henrique Adaniya.

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: Luis Raphael Mareze Marcus Vinicius Lemos Chagas Mario Henrique Adaniya.

Exemplo

Page 11: Luis Raphael Mareze Marcus Vinicius Lemos Chagas Mario Henrique Adaniya.

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: Luis Raphael Mareze Marcus Vinicius Lemos Chagas Mario Henrique Adaniya.

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

Page 13: Luis Raphael Mareze Marcus Vinicius Lemos Chagas Mario Henrique Adaniya.

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: Luis Raphael Mareze Marcus Vinicius Lemos Chagas Mario Henrique Adaniya.

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: Luis Raphael Mareze Marcus Vinicius Lemos Chagas Mario Henrique Adaniya.

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: Luis Raphael Mareze Marcus Vinicius Lemos Chagas Mario Henrique Adaniya.

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: Luis Raphael Mareze Marcus Vinicius Lemos Chagas Mario Henrique Adaniya.

Melhores ordenações com ciclos

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

Page 18: Luis Raphael Mareze Marcus Vinicius Lemos Chagas Mario Henrique Adaniya.

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: Luis Raphael Mareze Marcus Vinicius Lemos Chagas Mario Henrique Adaniya.

Luis Raphael MarezeMarcus Vinicius Lemos Chagas

Mario Henrique Adaniya

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