Professional Documents
Culture Documents
Trabalho Computacional
ALGORITMO DE KRUSKAL
Algoritmo polinomial para gerao de uma rvore Geradora Mnima de um grafo conexo
Agenda
1. rvores, rvores Geradoras, rvores Geradoras Mnimas e seus pesos 2. O problema da rvore Geradora Mnima 3. O algoritmo de Kruskal
6. Complexidade do algoritmo
7. Resultados obtidos 8. Concluso
Algoritmo de Kruskal
rvore
O que ?
Na teoria dos grafos, uma rvore nada mais do que um tipo especial de grafo:
Uma rvore
Algoritmo de Kruskal
rvore Geradora
O que ?
Uma rvore dita geradora se ela interliga (direta ou indiretamente) todos os ns do grafo.
Algoritmo de Kruskal
Vale frisar..
Localizar uma AGM s possvel em grafos valorados, ou seja, com pesos nas arestas.
Algoritmo de Kruskal
O problema da AGM
O problema da rvore Geradora Mnima AGM consiste em encontrar, dado um grafo com arestas valoradas, uma estrutura de conexo (rvore) em que todos os ns (geradora) se conectem (direta ou indiretamente) uns aos outros. Essa estrutura deve possuir o menor peso possvel, onde o peso dado pela soma dos pesos das arestas escolhidas (mnima).
Como resolver?
Opo 1 Difcil! formar todas as rvores geradoras possveis e escolher a de menor peso O matemtico Arthur Caley provou que um grafo com N ns possui NN-2 rvores geradoras diferentes.
N=4, 16 rvores
Opo 2 Melhor
Algoritmo de Kruskal
Algoritmo de Kruskal
O algoritmo de Kruskal
Histria
Este algoritmo apareceu pela primeira vez no jornal Proceedings of the American Mathematical Society, em 1956, e foi escrito por Joseph Bernard Kruskal, Jr.
Objetivo
Resolver o problema de AGM para grafos conexos.
Para grafos desconexos encontra a Floresta Geradora Mnima.
Funcionamento
1. L todas as arestas 2. Ordena em ordem crescente 3. Seleciona cada aresta na ordem 1. Verifica: 1. Se forma ciclo, descarta 2. Seno adiciona arvore
Algoritmo de Kruskal
Programa exemplo
Algoritmo de Kruskal
Estrutura de dados
Estruturas de dados utilizadas
Matriz de Adjacncia com pesos Lista de Arestas Algoritmo implementado utilizando Conjuntos Disjuntos
Algoritmo de Kruskal
Matriz de Adjacncia
Arestas nulas representadas com 999 Alocado somente metade da matriz Sem ordenao!
Lista de Arestas
No representa arestas inexistentes No consegue representar grafos desconexos
1 2 7 4 3 10 4 5 2
V1 : 1 V2 : 2 Custo : 5
Algoritmo de Kruskal
V1 : 1 V2 : 5 Custo : 7
V1 : 1 V2 : 3 Custo : 2
V1 : 3 V2 : 2 Custo : 4
V1 : 3 V2 : 5 Custo : 10
Conjuntos Disjuntos
Conjuntos de objetos conectados Objetos Conjuntos Disjuntos Find Union
Algoritmo de Kruskal
Find: Retornar o id do n Union: Para mesclar conjuntos contendo p e q, muda-se todas as entradas com id[p] para id[q]
Algoritmo de Kruskal
Algoritmo de Kruskal
Algoritmo de Kruskal
Algoritmo de Kruskal
Implementao Complexidade
Make Sets Ordenao Find's + Union's
Estrutura Matriz
Lista
Quick-Union QU+heursticas
O(V)
O(V)
O(n+Lg n)
O(n)
Algoritmo de Kruskal
Implementao
Linguagem
C
Testes
Grafos Esparsos
Densos
Completos Nmero de Vrtices variando de 50 a 2000 (de 50 em 50)
Algoritmo de Kruskal
Algoritmo de Kruskal
Algoritmo de Kruskal
Algoritmo de Kruskal
Exemplo
Ex:Problema realmente grande
109 vrtices e 1010 arestas
Aplicao das heursticas reduz o tempo de 3000 anos para 1 minuto em relao ao Quick-Find
Fonte: http://www.cs.princeton.edu/~rs/AlgsDS07/01UnionFind.pdf
Algoritmo de Kruskal
Concluso
Ordenao tem efeito muito importante
Algoritmo de Kruskal
Obrigado!
Dvidas / Perguntas?
Algoritmo de Kruskal