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

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

Árvore Geradora de Peso Mínimo Davi Martins Fábio Ávila.

Apresentações semelhantes


Apresentação em tema: "Árvore Geradora de Peso Mínimo Davi Martins Fábio Ávila."— Transcrição da apresentação:

1 Árvore Geradora de Peso Mínimo Davi Martins Fábio Ávila

2 Introdução n Apresentação do problema u Diferenciação do problema de distâncias n Idéia geral do algoritmo n Algoritmo de Prim u Leve modificação do algoritmo de distâncias n Algoritmo de Kruskal u Idéia alternativa - menor aresta disponível, se esta não fechar ciclo n Custos

3 Apresentação do problema n Partindo de um Grafo G=(V,E) u Conexo u Não-direcionado n Deseja-se encontrar árvore geradora de peso mínimo (T) u Minimum Cost Spanning Tree (MCST) u Subgrafo de G u Contém todos os vértices de G (conceito de árvore geradora) u Possui (V-1) arestas

4 Exemplo 1 b hg d f aie c n Peso total: 37 n Árvore não-única. Removendo a aresta (b,c) e trocando-a pela (a,h) leva a outra árvore geradora com peso

5 Exemplo n Peso total: 56 n Árvore geradora de peso mínimo única.

6 Idéia geral do algoritmo n Algoritmo genérico 1 A Ø 2 Enquanto A não forma uma árvore geradora faça 3 Ache uma aresta (u,v) segura para A 4 A A U {(u,v)} 5 Retorne (A) n Resta saber como achar arestas seguras

7 Partições n Um corte (S,V-S) de um grafo não direcionado G=(V,E) é uma partição de V. n Uma aresta pode atravessar um corte n Um corte respeita um conjunto de arestas se o conjunto não possuir nenhuma aresta que atravesse o corte n Uma aresta é leve se o seu peso é o mínimo de qualquer aresta atravessando o corte. b hg d f aie c S V-S

8 Teorema n Seja G=(V,E) um grafo com pesos conexo e não direcionado. Seja A um subconjunto de E contido em alguma MCST para G. Seja (S,V-S) um corte que respeita A, e seja (u,v) uma aresta leve atravessando (S,V-S). Então, a aresta (u,v) é segura para A.

9 Achando uma MCST com partições parciais b hg d f aie c

10 Diferenciação do problema de distâncias n No problema de distâncias, procurava-se sempre o caminho mais curto saindo de um vértice inicial. u Guarda-se sempre a distância mínima de cada vértice ao vértice inicial n A única diferença entre os dois algoritmos é que o mínimo não é mais tomado como o comprimento total do caminho, mas sim como o custo de uma aresta. u Trabalha-se sempre com os vértices dentro da partição, buscando sempre um vértice fora da partição atual (formando uma aresta considerada segura) n O resto do algoritmo é basicamente o mesmo

11 Algoritmo de Prim n Algoritmo muito similar ao SSSP n Árvore T definida inicialmente como uma árvore contendo apenas o vértice inicial u Seguramente, um subgrafo da MCST n Em cada iteração, procura-se achar a aresta de custo mínimo conectando T a vértices fora de T.

12 Algoritmo MCST-Prim (G) Entrada: G (um grafo conexo com pesos não direcionado) Saída: T (uma árvore geradora de peso mínimo de G) Início T Ø; Para todo vértice w faça w.marca Falso; w.custo ; Atribua a (x,y) uma aresta de peso mínimo em G; x.marca Verdadeiro; Para todas as arestas (x,z) faça z.aresta (x,z); z.custo custo(x,z); Enquanto existir um vértice não marcado faça w vértice não marcado com menor w.custo; w.marca Verdadeiro; Adicione w.aresta a T; Para todos os vértices (w,z) faça Se não z.marca então Se custo(w,z) < z.custo então z.aresta (w,z); z.custo custo(w,z); Fim b hg d f aie c

13 Algoritmo MCST-Prim (G) Entrada: G (um grafo conexo com pesos não direcionado) Saída: T (uma árvore geradora de peso mínimo de G) Início T Ø; Para todo vértice w faça w.marca Falso; w.custo ; Atribua a (x,y) uma aresta de peso mínimo em G; x.marca Verdadeiro; Para todas as arestas (x,z) faça z.aresta (x,z); z.custo custo(x,z); Enquanto existir um vértice não marcado faça w vértice não marcado com menor w.custo; w.marca Verdadeiro; Adicione w.aresta a T; Para todos os vértices (w,z) faça Se não z.marca então Se custo(w,z) < z.custo então z.aresta (w,z); z.custo custo(w,z); Fim a ed fc b

14 Custo do Algoritmo de Prim n Depende de como se implemente os procedimentos de busca do menor elemento. Usaremos heaps. n O procedimento de extrair o menor elemento dos candidatos possíveis ao redor de um vértice leva no máximo (log |V|) operações, onde |V| é o número de vértices do grafo. Essa comparação acontece |V| vezes. Portanto, essa parte do algoritmo tem tempo de execução O(|V| log |V|) n O último laço para é executado O(|E|) vezes no total. Sabemos que operações de atualização em heaps é O(log |V|), portanto esta última parte leva a O(|E| log |V|) n Somando-se os tempos dos trechos, temos: O(|V| log |V|) + O(|E| log |V|) = O((|E| + |V|) log |V|)

15 Algoritmo de Kruskal n Árvore T definida inicialmente como uma floresta contendo todos os vértices do grafo original G u Seguramente, um subgrafo da MCST n Primeiro ordena os pesos de cada aresta, partindo do menor peso para o maior u Checa se os vértices que formam arestas candidatas não estão na mesma árvore (ou seja, se fecha um ciclo)

16 Algoritmo MCST-Kruskal (G) Entrada: G (um grafo conexo com pesos não direcionado) Saída: T (uma árvore geradora de peso mínimo de G) Início T Ø; Para todo vértice w faça Adicione w a T; Ordene os pesos das arestas de T; Para todas as arestas (x,z), na ordem crescente, faça Se u e v não pertencem à mesma árvore então Adicione (u,v) a T; Fim

17 Algoritmo MCST-Kruskal (G) Entrada: G (um grafo conexo com pesos não direcionado) Saída: T (uma árvore geradora de peso mínimo de G) Início T Ø; Para todo vértice w faça Adicione w a T; Ordene os pesos das arestas de T; Para todas as arestas (x,z), na ordem crescente, faça Se u e v não pertencem à mesma árvore então Adicione (u,v) a T; Fim b hg d f aie c

18 Custo do Algoritmo de Kruskal n O procedimento para ordenar as arestas é O(|E| log |E|), obedecendo os critérios de algoritmos de ordenação por comparação. n Os tempos da parte de detecção dos vértices fazendo parte da mesma árvore e junção dos vértices são O(|E| log |E|), determinado usando as heurísticas de união por classificação e compressão de caminho. n Portanto, o tempo do algoritmo de Kruskal é O(|E| log |E|)

19 Conclusão n Tradução da parte de MCST do Manber disponível para consulta. n Consultar livro Introduction to Algorithms, Thomas H. Cormen, Charles E. Leiserson e Ronald L. Rivest u Apresentação mais amigável do assunto


Carregar ppt "Árvore Geradora de Peso Mínimo Davi Martins Fábio Ávila."

Apresentações semelhantes


Anúncios Google