Rvore geradora de peso m nimo
Download
1 / 19

Árvore Geradora de Peso Mínimo - PowerPoint PPT Presentation


  • 77 Views
  • Uploaded on

Árvore Geradora de Peso Mínimo. Davi Martins Fábio Ávila. Introdução. Apresentação do problema Diferenciação do problema de distâncias Idéia geral do algoritmo Algoritmo de Prim Leve modificação do algoritmo de distâncias Algoritmo de Kruskal

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Árvore Geradora de Peso Mínimo' - sumi


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
Rvore geradora de peso m nimo

Árvore Geradora de Peso Mínimo

Davi Martins

Fábio Ávila


Introdu o
Introdução

  • Apresentação do problema

    • Diferenciação do problema de distâncias

  • Idéia geral do algoritmo

  • Algoritmo de Prim

    • Leve modificação do algoritmo de distâncias

  • Algoritmo de Kruskal

    • Idéia alternativa - menor aresta disponível, se esta não fechar ciclo

  • Custos


Apresenta o do problema
Apresentação do problema

  • Partindo de um Grafo G=(V,E)

    • Conexo

    • Não-direcionado

  • Deseja-se encontrar árvore geradora de peso mínimo (T)

    • Minimum Cost Spanning Tree (MCST)

    • Subgrafo de G

    • Contém todos os vértices de G (conceito de árvore geradora)

    • Possui (V-1) arestas


Exemplo 1
Exemplo 1

8

7

b

c

d

  • Peso total: 37

  • Árvore não-única. Removendo a aresta (b,c) e trocando-a pela (a,h) leva a outra árvore geradora com peso 37.

9

4

2

a

i

e

11

4

14

7

6

8

10

h

g

f

1

2


Exemplo 2
Exemplo 2

16

2

1

  • Peso total: 56

  • Árvore geradora de peso mínimo única.

5

21

11

6

3

19

6

33

14

10

4

5

18


Id ia geral do algoritmo
Idéia geral do algoritmo

  • 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)

  • Resta saber como achar arestas seguras


Parti es
Partições

  • Um corte (S,V-S) de um grafo não direcionado G=(V,E) é uma partição de V.

  • Uma aresta pode atravessar um corte

  • Um corte respeita um conjunto de arestas se o conjunto não possuir nenhuma aresta que atravesse o corte

  • Uma aresta é leve se o seu peso é o mínimo de qualquer aresta atravessando o corte.

8

7

b

c

d

9

4

2

S

a

i

e

14

11

4

7

6

V-S

8

10

h

g

f

1

2


Teorema
Teorema

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


Achando uma mcst com parti es parciais
Achando uma MCST com partições parciais

8

7

b

c

d

9

4

2

a

i

e

14

11

4

6

7

8

10

h

g

f

1

2


Diferencia o do problema de dist ncias
Diferenciação do problema de distâncias

  • No problema de distâncias, procurava-se sempre o caminho mais curto saindo de um vértice inicial.

    • Guarda-se sempre a distância mínima de cada vértice ao vértice inicial

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

    • 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)

  • O resto do algoritmo é basicamente o mesmo


Algoritmo de prim
Algoritmo de Prim

  • Algoritmo muito similar ao SSSP

  • Árvore T definida inicialmente como uma árvore contendo apenas o vértice inicial

    • Seguramente, um subgrafo da MCST

  • Em cada iteração, procura-se achar a aresta de custo mínimo conectando T a vértices fora de T.


8

7

b

c

d

9

4

2

a

i

e

11

4

14

7

6

8

10

h

g

f

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

1

2


16

a

b

5

21

11

f

c

6

19

33

14

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

10

e

d

18


Custo do algoritmo de prim
Custo do Algoritmo de Prim

  • Depende de como se implemente os procedimentos de busca do menor elemento. Usaremos heaps.

  • 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|)

  • 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|)

  • Somando-se os tempos dos trechos, temos:

    O(|V| log |V|) + O(|E| log |V|) = O((|E| + |V|) log |V|)


Algoritmo de kruskal
Algoritmo de Kruskal

  • Árvore T definida inicialmente como uma floresta contendo todos os vértices do grafo original G

    • Seguramente, um subgrafo da MCST

  • Primeiro ordena os pesos de cada aresta, partindo do menor peso para o maior

    • Checa se os vértices que formam arestas candidatas não estão na mesma árvore (ou seja, se fecha um ciclo)


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

16

1

2

5

21

11

6

3

6

19

33

14

10

5

4

18


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

8

7

b

c

d

9

4

2

a

i

e

11

4

14

7

6

8

10

h

g

f

1

2


Custo do algoritmo de kruskal
Custo do Algoritmo de Kruskal

  • O procedimento para ordenar as arestas é O(|E| log |E|), obedecendo os critérios de algoritmos de ordenação por comparação.

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

  • Portanto, o tempo do algoritmo de Kruskal é

    O(|E| log |E|)


Conclus o
Conclusão

  • Tradução da parte de MCST do Manber disponível para consulta.

  • Consultar livro “Introduction to Algorithms”, Thomas H. Cormen, Charles E. Leiserson e Ronald L. Rivest

    • Apresentação mais amigável do assunto


ad