Ordenação Topológica

Download Report

Transcript Ordenação Topológica

Luis Raphael Mareze
Marcus Vinicius Lemos Chagas
Mario Henrique Adaniya
Estruturas de Dados
 Matriz de adjacências
 Lista de adjacências
1 2 3 4 5
1
2
3
4
5
1
2
3
4
5
0
1
12
02
4
0
1
2
1
0
1
1
1
05
5
14
05
1
1
0
0
1
1
0
1
1
3
1
30
2
1
0
4
1
2
3
5
4
Matriz de Adjacências X Listas de
Adjacências
 Testar se aresta está no grafo.
Matriz de Adjacência
 Determinar o grau de um vértice.
Listas de Adjacências
 Menos memória em grafos pequenos.
Listas de Adjacências
 Menos memória em grafos grandes.
Matriz de Adjacência
 Inserção ou remoção de aresta.
Matriz de Adjacência
 Atravessar o grafo.
Listas de Adjacências
 Melhor na maioria dos problemas.
Listas de Adjacências
Ordenação Topológica
 Origem 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.
 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.
 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.
Impasse
Formalmente
 Um 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.
Exemplo
 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).
Fonte(s): A
Ralo(s): F, E, D, B
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.
 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.
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.
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.
Melhores ordenações com ciclos
A,B,C,E,F; B,A,C,E,F.
Aplicações
 Problemas 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”.
Luis Raphael Mareze
Marcus Vinicius Lemos Chagas
Mario Henrique Adaniya
http://web.sercomtel.com.br/marcusvlc