Teoria dos Grafos
This presentation is the property of its rightful owner.
Sponsored Links
1 / 27

ALGORITMO DE KRUSKAL Algoritmo polinomial para geração de uma Árvore Geradora Mínima de um grafo conexo PowerPoint PPT Presentation


  • 152 Views
  • Uploaded on
  • Presentation posted in: General

Teoria dos Grafos. Trabalho Computacional. 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. Agenda.

Download Presentation

ALGORITMO DE KRUSKAL Algoritmo polinomial para geração de uma Árvore Geradora Mínima de um grafo conexo

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Algoritmo de kruskal algoritmo polinomial para gera o de uma rvore geradora m nima de um grafo conexo

Teoria dos Grafos

Trabalho Computacional

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


Algoritmo de kruskal algoritmo polinomial para gera o de uma rvore geradora m nima de um grafo conexo

Agenda

Árvores, Árvores Geradoras, Árvores Geradoras Mínimas e seus pesos

O problema da Árvore Geradora Mínima

O algoritmo de Kruskal

Estruturas de dados utilizadas

Implementações realizadas

Complexidade do algoritmo

Resultados obtidos

Conclusão

Hilio Holz e Ramon M. Ramos

Algoritmo de Kruskal


Algoritmo de kruskal algoritmo polinomial para gera o de uma rvore geradora m nima de um grafo conexo

Árvore

O que é?

Na teoria dos grafos, uma árvore nada mais é do que um tipo especial de grafo:

Árvores são grafos em que não existem ciclos!

Uma árvore

Um grafo comum com ciclos

Hilio Holz e Ramon M. Ramos

Algoritmo de Kruskal


Algoritmo de kruskal algoritmo polinomial para gera o de uma rvore geradora m nima de um grafo conexo

Árvore Geradora

O que é?

Uma árvore é dita geradora se ela interliga (direta ou indiretamente) todos os nós do grafo.

Hilio Holz e Ramon M. Ramos

Algoritmo de Kruskal


Algoritmo de kruskal algoritmo polinomial para gera o de uma rvore geradora m nima de um grafo conexo

Á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.

Hilio Holz e Ramon M. Ramos

Algoritmo de Kruskal


Algoritmo de kruskal algoritmo polinomial para gera o de uma rvore geradora m nima de um grafo conexo

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.

Como calcular o peso total?

O peso total de uma AGM é dado pela soma dos pesos das arestas da árvore.

Peso total da árvore geradora: 1+2+4+6+12 = 25

Hilio Holz e Ramon M. Ramos

Algoritmo de Kruskal


Algoritmo de kruskal algoritmo polinomial para gera o de uma rvore geradora m nima de um grafo conexo

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?

  • Opção 1 – Difícil!

formar todas as árvores geradoras possíveis e escolher a de menor peso

O matemático Arthur Caley provou que um grafo com N nós possui NN-2 árvores geradoras diferentes.

N=4, 16 árvores N=6, 1.296 árvores N=10, 100.000.000 árvores

Apenas 1 árvore mínima

  • Opção 2 – Melhor

Usar um algoritmo específico para esta tarefa...

Hilio Holz e Ramon M. Ramos

Algoritmo de Kruskal


Algoritmo de kruskal algoritmo polinomial para gera o de uma rvore geradora m nima de um grafo conexo

Algoritmos possíveis de AGM

Há quatro possibilidades conhecidas

Algoritmo de Kruskal.

Algoritmo de Prim.

Algoritmo Reverse-Delete.

Algoritmo de Borůvka.

Esta apresentação se limita a demonstrar o comportamento do

Algoritmo de Kruskal

Hilio Holz e Ramon M. Ramos

Algoritmo de Kruskal


Algoritmo de kruskal algoritmo polinomial para gera o de uma rvore geradora m nima de um grafo conexo

O algoritmo de Kruskal

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.

Objetivo

Resolver o problema de AGM para grafos conexos.

Para grafos desconexos encontra a Floresta Geradora Mínima.

O que é Floresta Geradora Mínima?

É o mesmo princípio das AGM só que para grafos desconexos.

Uma Floresta Geradora Mínima é composta pelo conjunto de árvores geradoras mínimas de cada componente conexo.

Hilio Holz e Ramon M. Ramos

Algoritmo de Kruskal


Algoritmo de kruskal algoritmo polinomial para gera o de uma rvore geradora m nima de um grafo conexo

Funcionamento

Lê todas as arestas

Ordena em ordem crescente

Seleciona cada aresta na ordem

  • Verifica:

    • Se forma ciclo, descarta

    • Senão adiciona à arvore

Hilio Holz e Ramon M. Ramos

Algoritmo de Kruskal


Algoritmo de kruskal algoritmo polinomial para gera o de uma rvore geradora m nima de um grafo conexo

Programa exemplo

Clicar na figura para abrir o programa...

Hilio Holz e Ramon M. Ramos

Algoritmo de Kruskal


Algoritmo de kruskal algoritmo polinomial para gera o de uma rvore geradora m nima de um grafo conexo

Estrutura de dados

Estruturas de dados utilizadas

Matriz de Adjacência com pesos

Lista de Arestas

Algoritmo implementado utilizando Conjuntos Disjuntos

Hilio Holz e Ramon M. Ramos

Algoritmo de Kruskal


Algoritmo de kruskal algoritmo polinomial para gera o de uma rvore geradora m nima de um grafo conexo

Matriz de Adjacência

  • Arestas nulas representadas com 999

  • Alocado somente metade da matriz

  • Sem ordenação!

  • Não façam isso em casa!

Hilio Holz e Ramon M. Ramos

Algoritmo de Kruskal


Algoritmo de kruskal algoritmo polinomial para gera o de uma rvore geradora m nima de um grafo conexo

1

5

2

2

4

7

3

4

10

5

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

Lista de Arestas

  • Não representa arestas inexistentes

  • Não consegue representar grafos desconexos

Hilio Holz e Ramon M. Ramos

Algoritmo de Kruskal


Algoritmo de kruskal algoritmo polinomial para gera o de uma rvore geradora m nima de um grafo conexo

Conjuntos Disjuntos

  • Conjuntos de objetos conectados

  • Objetos

  • Conjuntos Disjuntos

  • Find

  • Union

Hilio Holz e Ramon M. Ramos

Algoritmo de Kruskal


Algoritmo de kruskal algoritmo polinomial para gera o de uma rvore geradora m nima de um grafo conexo

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]

Hilio Holz e Ramon M. Ramos

Algoritmo de Kruskal


Algoritmo de kruskal algoritmo polinomial para gera o de uma rvore geradora m nima de um grafo conexo

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

Hilio Holz e Ramon M. Ramos

Algoritmo de Kruskal


Algoritmo de kruskal algoritmo polinomial para gera o de uma rvore geradora m nima de um grafo conexo

Heurística 1 - União por Ordenação

  • Objetivo

Evitar árvores compridas.

  • Union: A raiz de menor ordem aponta para a raiz de maior ordem.

Hilio Holz e Ramon M. Ramos

Algoritmo de Kruskal


Algoritmo de kruskal algoritmo polinomial para gera o de uma rvore geradora m nima de um grafo conexo

Heurística 2 - Compressão de Caminho

  • Find: Fazer cada nó no caminho apontar diretamente para a raiz.

Hilio Holz e Ramon M. Ramos

Algoritmo de Kruskal


Algoritmo de kruskal algoritmo polinomial para gera o de uma rvore geradora m nima de um grafo conexo

Implementação – Complexidade

  • Make Sets

  • Ordenação

  • Find's + Union's

Hilio Holz e Ramon M. Ramos

Algoritmo de Kruskal


Algoritmo de kruskal algoritmo polinomial para gera o de uma rvore geradora m nima de um grafo conexo

Implementação

  • Linguagem

    • C

  • Testes

    • Grafos

      • Esparsos

      • Densos

      • Completos

    • Número de Vértices variando de 50 a 2000 (de 50 em 50)

Hilio Holz e Ramon M. Ramos

Algoritmo de Kruskal


Algoritmo de kruskal algoritmo polinomial para gera o de uma rvore geradora m nima de um grafo conexo

Resultados – Grafos Esparsos

Hilio Holz e Ramon M. Ramos

Algoritmo de Kruskal


Algoritmo de kruskal algoritmo polinomial para gera o de uma rvore geradora m nima de um grafo conexo

Resultados – Grafos Densos

Hilio Holz e Ramon M. Ramos

Algoritmo de Kruskal


Algoritmo de kruskal algoritmo polinomial para gera o de uma rvore geradora m nima de um grafo conexo

Resultados – Grafos Completos

Hilio Holz e Ramon M. Ramos

Algoritmo de Kruskal


Algoritmo de kruskal algoritmo polinomial para gera o de uma rvore geradora m nima de um grafo conexo

Exemplo

  • Ex:Problema realmente grande

    • 109 vértices e 1010 arestas

    • Aplicação das heurísticas reduz o tempo de 3000 anos para 1 minuto em relação ao Quick-FindFonte: http://www.cs.princeton.edu/~rs/AlgsDS07/01UnionFind.pdf

Hilio Holz e Ramon M. Ramos

Algoritmo de Kruskal


Algoritmo de kruskal algoritmo polinomial para gera o de uma rvore geradora m nima de um grafo conexo

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

Hilio Holz e Ramon M. Ramos

Algoritmo de Kruskal


Algoritmo de kruskal algoritmo polinomial para gera o de uma rvore geradora m nima de um grafo conexo

Obrigado!

Dúvidas / Perguntas?

Hilio Holz e Ramon M. Ramos

Algoritmo de Kruskal


  • Login