Professional Documents
Culture Documents
mayron.moreira@dcc.ua.br
16 de maio de 2015
GCC111 PAA
16 de maio de 2015
1 / 15
Contedo
GCC111 PAA
16 de maio de 2015
2 / 15
Introduo
Origens
O primeiro algoritmo a resolver o problema de rvore geradora mnima
(AGM) atribudo a Otakar Boruvka, em 1926;
Contexto: resolver o problema de encontrar uma eciente cobertura
eltrica de Moravia (atual Repblica Checa);
Aplicaes
Transporte areo, transporte terrestre, redes de computadores, redes
eltricas, projeto de circuitos eletrnicos, etc.
GCC111 PAA
16 de maio de 2015
3 / 15
Introduo
Dados
Objetivo
Encontrar um subconjunto
P acclico T E que conecte todos os vrtices e
cujo peso total w (T ) = (u,v )T w (u, v ) seja minimizado.
GCC111 PAA
16 de maio de 2015
4 / 15
Introduo
Dados
Objetivo
Encontrar um subconjunto
P acclico T E que conecte todos os vrtices e
cujo peso total w (T ) = (u,v )T w (u, v ) seja minimizado.
GCC111 PAA
16 de maio de 2015
4 / 15
Algoritmo Genrico
Generic-MTSP()
A=
while A no formar uma rvore geradora
encontre a aresta (u, v ) que seja segura para A
A = A {u, v }
return A
GCC111 PAA
16 de maio de 2015
5 / 15
Denies
Corte
GCC111 PAA
16 de maio de 2015
6 / 15
Denies
Corte
GCC111 PAA
16 de maio de 2015
6 / 15
Denies
Aresta Leve
Aresta Segura
Aresta que pode ser adiciona a A a m de compor a AGM.
GCC111 PAA
16 de maio de 2015
6 / 15
Teorema
GCC111 PAA
16 de maio de 2015
7 / 15
Corolrio
GCC111 PAA
16 de maio de 2015
8 / 15
Algoritmo de Kruskal
GCC111 PAA
16 de maio de 2015
9 / 15
Algoritmo de Kruskal
GCC111 PAA
16 de maio de 2015
9 / 15
Algoritmo de Kruskal
GCC111 PAA
16 de maio de 2015
9 / 15
Algoritmo de Kruskal
GCC111 PAA
16 de maio de 2015
10 / 15
Algoritmo de Kruskal
GCC111 PAA
16 de maio de 2015
10 / 15
Algoritmo de Kruskal
GCC111 PAA
16 de maio de 2015
10 / 15
Algoritmo de Kruskal
GCC111 PAA
16 de maio de 2015
10 / 15
Algoritmo de Kruskal
GCC111 PAA
16 de maio de 2015
10 / 15
Algoritmo de Kruskal
GCC111 PAA
16 de maio de 2015
10 / 15
Algoritmo de Kruskal
GCC111 PAA
16 de maio de 2015
10 / 15
Algoritmo de Kruskal
GCC111 PAA
16 de maio de 2015
10 / 15
Algoritmo de Kruskal
GCC111 PAA
16 de maio de 2015
10 / 15
Algoritmo de Kruskal
GCC111 PAA
16 de maio de 2015
10 / 15
Algoritmo de Kruskal
GCC111 PAA
16 de maio de 2015
10 / 15
Algoritmo de Kruskal
GCC111 PAA
16 de maio de 2015
10 / 15
Algoritmo de Kruskal
GCC111 PAA
16 de maio de 2015
10 / 15
Algoritmo de Kruskal
GCC111 PAA
16 de maio de 2015
10 / 15
Algoritmo de Kruskal
GCC111 PAA
16 de maio de 2015
10 / 15
Algoritmo de Kruskal
GCC111 PAA
16 de maio de 2015
10 / 15
Algoritmo de Kruskal
GCC111 PAA
16 de maio de 2015
10 / 15
Algoritmo de Kruskal
GCC111 PAA
16 de maio de 2015
10 / 15
Algoritmo de Kruskal
MST-Kruskall()
A=
for cada vrtice v V
Make-Set(v )
ordene as arestas de E em ordem ascendente de peso w
for cada aresta (u, v ) E , tomada em ordem ascendente de peso
if Find-Set(u) 6= Find-Set(v )
A = A {(u, v )}
Union(u, v )
return A
GCC111 PAA
16 de maio de 2015
11 / 15
Algoritmo de Kruskal
MST-Kruskall()
A=
for cada vrtice v V
Make-Set(v )
ordene as arestas de E em ordem ascendente de peso w
for cada aresta (u, v ) E , tomada em ordem ascendente de peso
if Find-Set(u) 6= Find-Set(v )
A = A {(u, v )}
Union(u, v )
return A
Complexidade
O(|E |log |V |), mas depende de como as operaes em conjuntos so
implementadas.
GCC111 PAA
16 de maio de 2015
11 / 15
Algoritmo de Prim
GCC111 PAA
16 de maio de 2015
12 / 15
Algoritmo de Prim
GCC111 PAA
16 de maio de 2015
12 / 15
Algoritmo de Prim
GCC111 PAA
16 de maio de 2015
12 / 15
Algoritmo de Prim
GCC111 PAA
16 de maio de 2015
13 / 15
Algoritmo de Prim
GCC111 PAA
16 de maio de 2015
13 / 15
Algoritmo de Prim
GCC111 PAA
16 de maio de 2015
13 / 15
Algoritmo de Prim
GCC111 PAA
16 de maio de 2015
13 / 15
Algoritmo de Prim
GCC111 PAA
16 de maio de 2015
13 / 15
Algoritmo de Prim
GCC111 PAA
16 de maio de 2015
13 / 15
Algoritmo de Prim
GCC111 PAA
16 de maio de 2015
13 / 15
Algoritmo de Prim
GCC111 PAA
16 de maio de 2015
13 / 15
Algoritmo de Prim
GCC111 PAA
16 de maio de 2015
13 / 15
Algoritmo de Prim
GCC111 PAA
16 de maio de 2015
13 / 15
Algoritmo de Prim
GCC111 PAA
16 de maio de 2015
13 / 15
Algoritmo de Prim
MST-Prim()
for cada v V
u.chave =
u. = NIL
r .chave = 0
Q=V
while Q 6=
u = Extract-Min(Q)
for cada v Adj[u]
if v Q e w (u, v ) < v .chave
v . = u
v .chave = w (u, v )
GCC111 PAA
16 de maio de 2015
14 / 15
Algoritmo de Prim
MST-Prim()
for cada v V
u.chave =
u. = NIL
r .chave = 0
Q=V
while Q 6=
u = Extract-Min(Q)
for cada v Adj[u]
if v Q e w (u, v ) < v .chave
v . = u
v .chave = w (u, v )
Complexidade
O(|E |log |V |), mas tambm depende de como as operaes em conjuntos
so implementadas.
Mayron Csar O. Moreira (UFLA)
GCC111 PAA
16 de maio de 2015
14 / 15
Perguntas
E se todas as arestas tivessem o mesmo peso? Existe uma forma mais
eciente de resolver?
Como projeto um algoritmo para uma AGM de peso mximo?
GCC111 PAA
16 de maio de 2015
15 / 15