A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

ALGORITMO DE KRUSKAL Algoritmo polinomial para geração de uma Árvore Geradora Mínima de um grafo conexo Hilio Holz Ramon M. Ramos Professora: Maria Claudia.

Apresentações semelhantes


Apresentação em tema: "ALGORITMO DE KRUSKAL Algoritmo polinomial para geração de uma Árvore Geradora Mínima de um grafo conexo Hilio Holz Ramon M. Ramos Professora: Maria Claudia."— Transcrição da apresentação:

1 ALGORITMO DE KRUSKAL Algoritmo polinomial para geração de uma Árvore Geradora Mínima de um grafo conexo Hilio Holz Ramon M. Ramos Professora: Maria Claudia Silva Boeres Teoria dos Grafos Trabalho Computacional

2 Hilio Holz e Ramon M. Ramos Algoritmo de Kruskal Agenda 1.Árvores, Árvores Geradoras, Árvores Geradoras Mínimas e seus pesos 2.O problema da Árvore Geradora Mínima 3.O algoritmo de Kruskal 4.Estruturas de dados utilizadas 5.Implementações realizadas 6.Complexidade do algoritmo 7.Resultados obtidos 8.Conclusão

3 Hilio Holz e Ramon M. Ramos Algoritmo de Kruskal Árvore O que é? Na teoria dos grafos, uma árvore nada mais é do que um tipo especial de grafo: Uma árvoreUm grafo comum com ciclos Árvores são grafos em que não existem ciclos!

4 Hilio Holz e Ramon M. Ramos Algoritmo de Kruskal Árvore Geradora O que é? Uma árvore é dita geradora se ela interliga (direta ou indiretamente) todos os nós do grafo.

5 Hilio Holz e Ramon M. Ramos Algoritmo de Kruskal Árvore Geradora Mínima – AGM O que é? Uma Árvore Geradora Mínima - AGM, ou Minimum Spanning Tree - MST, de um grafo com pesos nas arestas (grafo valorado) é qualquer árvore geradora do grafo que tenha peso mínimo. Vale frisar.. Localizar uma AGM só é possível em grafos valorados, ou seja, com pesos nas arestas.

6 Hilio Holz e Ramon M. Ramos Algoritmo de Kruskal Peso total de uma AGM O que é peso? Peso é o valor dado a cada aresta, podendo representar qualquer valor em um problema real, como custo, fluxo, confiabilidade, etc. Peso total da árvore geradora: = 25 Como calcular o peso total? O peso total de uma AGM é dado pela soma dos pesos das arestas da árvore.

7 Hilio Holz e Ramon M. Ramos Algoritmo de Kruskal O problema da AGM O problema da Árvore Geradora Mínima – AGM consiste em encontrar, dado um grafo com arestas valoradas, uma estrutura de conexão (árvore) em que todos os nós (geradora) se conectem (direta ou indiretamente) uns aos outros. Essa estrutura deve possuir o menor peso possível, onde o peso é dado pela soma dos pesos das arestas escolhidas (mínima). Como resolver? formar todas as árvores geradoras possíveis e escolher a de menor peso Opção 1 – Difícil! O matemático Arthur Caley provou que um grafo com N nós possui N N-2 árvores geradoras diferentes. N=4, 16 árvores N=6, árvores N=10, árvores Apenas 1 árvore mínima Usar um algoritmo específico para esta tarefa... Opção 2 – Melhor

8 Hilio Holz e Ramon M. Ramos Algoritmo de Kruskal Algoritmos possíveis de AGM Há quatro possibilidades conhecidas Algoritmo de Kruskal. Algoritmo de Prim. Esta apresentação se limita a demonstrar o comportamento do Algoritmo de Kruskal Algoritmo Reverse-Delete. Algoritmo de Borůvka.

9 Hilio Holz e Ramon M. Ramos Algoritmo de Kruskal O algoritmo de Kruskal O que é Floresta Geradora Mínima? Objetivo Resolver o problema de AGM para grafos conexos. Para grafos desconexos encontra a Floresta Geradora Mínima. Uma Floresta Geradora Mínima é composta pelo conjunto de árvores geradoras mínimas de cada componente conexo. É o mesmo princípio das AGM só que para grafos desconexos. História Este algoritmo apareceu pela primeira vez no jornal Proceedings of the American Mathematical Society, em 1956, e foi escrito por Joseph Bernard Kruskal, Jr.

10 Hilio Holz e Ramon M. Ramos Algoritmo de Kruskal 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.Senão adiciona à arvore

11 Hilio Holz e Ramon M. Ramos Algoritmo de Kruskal Programa exemplo Clicar na figura para abrir o programa...

12 Hilio Holz e Ramon M. Ramos Algoritmo de Kruskal Estrutura de dados Matriz de Adjacência com pesos Lista de Arestas Estruturas de dados utilizadas Algoritmo implementado utilizando Conjuntos Disjuntos

13 Hilio Holz e Ramon M. Ramos Algoritmo de Kruskal Matriz de Adjacência Arestas nulas representadas com 999 Alocado somente metade da matriz Sem ordenação! Não façam isso em casa!

14 Hilio Holz e Ramon M. Ramos Algoritmo de Kruskal Lista de Arestas Não representa arestas inexistentes Não consegue representar grafos desconexos V1 : 1 V2 : 2 Custo : 5 V1 : 1 V2 : 5 Custo : 7 V1 : 1 V2 : 3 Custo : 2 V1 : 3 V2 : 2 Custo : 4 V1 : 3 V2 : 5 Custo : 10

15 Hilio Holz e Ramon M. Ramos Algoritmo de Kruskal Conjuntos Disjuntos Conjuntos de objetos conectados Objetos Conjuntos Disjuntos Find Union

16 Hilio Holz e Ramon M. Ramos Algoritmo de Kruskal Conjuntos Disjuntos - Quick Find Estrutura de Dados Vetor de inteiros id[ ] de tamanho N Dois vértices são de mesmo conjunto se tem o mesmo id. 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]

17 Hilio Holz e Ramon M. Ramos Algoritmo de Kruskal Conjuntos Disjuntos - Quick Union Estrutura de Dados Vetor de inteiros id[ ] de tamanho N id[i] é o pai de i Find: Procurar recursivamente até id[i]=i Union: mudar o id da raiz de um dos conjuntos

18 Hilio Holz e Ramon M. Ramos Algoritmo de Kruskal Heurística 1 - União por Ordenação Union: A raiz de menor ordem aponta para a raiz de maior ordem. Objetivo Evitar árvores compridas.

19 Hilio Holz e Ramon M. Ramos Algoritmo de Kruskal Heurística 2 - Compressão de Caminho Find: Fazer cada nó no caminho apontar diretamente para a raiz.

20 Hilio Holz e Ramon M. Ramos Algoritmo de Kruskal Implementação – Complexidade Estrutura Conjuntos Make Sets Ordenação Find's + Union's Matriz Quick-Find O(V)O(n 3 )O(n+Lg n) Lista Quick-Find O(V)O(E Lg E)O(n+Lg n ) Quick-Union O(V) O(E Lg E) O(n+Lg n) QU+heurísticas O(V) O(E Lg E) O(n) Make Sets Ordenação Find's + Union's

21 Hilio Holz e Ramon M. Ramos Algoritmo de Kruskal Implementação Linguagem C Testes Grafos Esparsos Densos Completos Número de Vértices variando de 50 a 2000 (de 50 em 50)

22 Hilio Holz e Ramon M. Ramos Algoritmo de Kruskal Resultados – Grafos Esparsos

23 Hilio Holz e Ramon M. Ramos Algoritmo de Kruskal Resultados – Grafos Densos

24 Hilio Holz e Ramon M. Ramos Algoritmo de Kruskal Resultados – Grafos Completos

25 Hilio Holz e Ramon M. Ramos Algoritmo de Kruskal Exemplo Ex:Problema realmente grande 10 9 vértices e arestas Aplicação das heurísticas reduz o tempo de 3000 anos para 1 minuto em relação ao Quick-Find Fonte:

26 Hilio Holz e Ramon M. Ramos Algoritmo de Kruskal Conclusão Ordenação tem efeito muito importante 'Quick Union + heurísticas' é implementação assintoticamente mais rápida conhecida Bons Algoritmos tornam as soluções possíveis

27 Hilio Holz e Ramon M. Ramos Algoritmo de Kruskal Obrigado! Dúvidas / Perguntas?


Carregar ppt "ALGORITMO DE KRUSKAL Algoritmo polinomial para geração de uma Árvore Geradora Mínima de um grafo conexo Hilio Holz Ramon M. Ramos Professora: Maria Claudia."

Apresentações semelhantes


Anúncios Google