You are on page 1of 51

GCC111  Projeto e Anlise de Algoritmos

Mayron Csar O. Moreira


Universidade Federal de Lavras
Departamento de Cincia da Computao

mayron.moreira@dcc.ua.br

16 de maio de 2015

Mayron Csar O. Moreira (UFLA)

GCC111  PAA

16 de maio de 2015

1 / 15

Contedo

Grafos - rvores Geradoras Mnimas

Mayron Csar O. Moreira (UFLA)

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.

Mayron Csar O. Moreira (UFLA)

GCC111  PAA

16 de maio de 2015

3 / 15

Introduo

Dados

Seja G = (V , E ) um grafo conexo no-orientado, onde V o conjunto de


vrtices e E o conjunto de arestas. Para cada (u, v ) E , temos um peso
w (u, v ).

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.

Mayron Csar O. Moreira (UFLA)

GCC111  PAA

16 de maio de 2015

4 / 15

Introduo

Dados

Seja G = (V , E ) um grafo conexo no-orientado, onde V o conjunto de


vrtices e E o conjunto de arestas. Para cada (u, v ) E , temos um peso
w (u, v ).

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.

Mayron Csar O. Moreira (UFLA)

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

Mayron Csar O. Moreira (UFLA)

GCC111  PAA

16 de maio de 2015

5 / 15

Denies

Corte

Consiste em uma partio de G = (V , E ) dada por (S, V S). Dizemos


que uma aresta (u, v ) E cruza o corte (S, V S) se um dos seus pontos
est em S e o outro est em V S .

Mayron Csar O. Moreira (UFLA)

GCC111  PAA

16 de maio de 2015

6 / 15

Denies

Corte

Um corte respeita um conjunto A de arestas se nenhuma aresta em A


cruza o corte.

Mayron Csar O. Moreira (UFLA)

GCC111  PAA

16 de maio de 2015

6 / 15

Denies

Aresta Leve

Aresta que cruza o corte com peso mnimo.

Aresta Segura
Aresta que pode ser adiciona a A a m de compor a AGM.

Mayron Csar O. Moreira (UFLA)

GCC111  PAA

16 de maio de 2015

6 / 15

Teorema

Seja G = (V , E ) um grafo valorado no orientado. Considere A um


subconjunto de E que est includo em alguma AGM para G , (S, V S)
qualquer corte de G que respeita A e (u, v ) E uma aresta leve que cruza
(S, V S). Ento, a aresta (u, v ) segura para A.

Mayron Csar O. Moreira (UFLA)

GCC111  PAA

16 de maio de 2015

7 / 15

Corolrio

Seja C = (VC , EC ) uma componente conexa (rvore) na oresta


GA = (V , A). Se (u, v ) uma aresta leve que conecta C a alguma outra
componente em GA , ento (u, v ) segura para A.

Mayron Csar O. Moreira (UFLA)

GCC111  PAA

16 de maio de 2015

8 / 15

Algoritmo de Kruskal

O conjunto A uma oresta cujos vrtices so todos os vrtices do


grafo dado;
A aresta segura adicionada a A sempre uma aresta de peso mnimo
no grafo que conecta duas componentes distintas (lembre-se do
Corolrio);

Mayron Csar O. Moreira (UFLA)

GCC111  PAA

16 de maio de 2015

9 / 15

Algoritmo de Kruskal

O conjunto A uma oresta cujos vrtices so todos os vrtices do


grafo dado;
A aresta segura adicionada a A sempre uma aresta de peso mnimo
no grafo que conecta duas componentes distintas (lembre-se do
Corolrio);
Ideia: ordenar as arestas de maneira ascendente do valor de cada peso;

Mayron Csar O. Moreira (UFLA)

GCC111  PAA

16 de maio de 2015

9 / 15

Algoritmo de Kruskal

O conjunto A uma oresta cujos vrtices so todos os vrtices do


grafo dado;
A aresta segura adicionada a A sempre uma aresta de peso mnimo
no grafo que conecta duas componentes distintas (lembre-se do
Corolrio);
Ideia: ordenar as arestas de maneira ascendente do valor de cada peso;
Ao nal do algoritmo, temos o conjunto S formando uma AGM.

Mayron Csar O. Moreira (UFLA)

GCC111  PAA

16 de maio de 2015

9 / 15

Algoritmo de Kruskal

Mayron Csar O. Moreira (UFLA)

GCC111  PAA

16 de maio de 2015

10 / 15

Algoritmo de Kruskal

Mayron Csar O. Moreira (UFLA)

GCC111  PAA

16 de maio de 2015

10 / 15

Algoritmo de Kruskal

Mayron Csar O. Moreira (UFLA)

GCC111  PAA

16 de maio de 2015

10 / 15

Algoritmo de Kruskal

Mayron Csar O. Moreira (UFLA)

GCC111  PAA

16 de maio de 2015

10 / 15

Algoritmo de Kruskal

Mayron Csar O. Moreira (UFLA)

GCC111  PAA

16 de maio de 2015

10 / 15

Algoritmo de Kruskal

Mayron Csar O. Moreira (UFLA)

GCC111  PAA

16 de maio de 2015

10 / 15

Algoritmo de Kruskal

Mayron Csar O. Moreira (UFLA)

GCC111  PAA

16 de maio de 2015

10 / 15

Algoritmo de Kruskal

Mayron Csar O. Moreira (UFLA)

GCC111  PAA

16 de maio de 2015

10 / 15

Algoritmo de Kruskal

Mayron Csar O. Moreira (UFLA)

GCC111  PAA

16 de maio de 2015

10 / 15

Algoritmo de Kruskal

Mayron Csar O. Moreira (UFLA)

GCC111  PAA

16 de maio de 2015

10 / 15

Algoritmo de Kruskal

Mayron Csar O. Moreira (UFLA)

GCC111  PAA

16 de maio de 2015

10 / 15

Algoritmo de Kruskal

Mayron Csar O. Moreira (UFLA)

GCC111  PAA

16 de maio de 2015

10 / 15

Algoritmo de Kruskal

Mayron Csar O. Moreira (UFLA)

GCC111  PAA

16 de maio de 2015

10 / 15

Algoritmo de Kruskal

Mayron Csar O. Moreira (UFLA)

GCC111  PAA

16 de maio de 2015

10 / 15

Algoritmo de Kruskal

Mayron Csar O. Moreira (UFLA)

GCC111  PAA

16 de maio de 2015

10 / 15

Algoritmo de Kruskal

Mayron Csar O. Moreira (UFLA)

GCC111  PAA

16 de maio de 2015

10 / 15

Algoritmo de Kruskal

Mayron Csar O. Moreira (UFLA)

GCC111  PAA

16 de maio de 2015

10 / 15

Algoritmo de Kruskal

Mayron Csar O. Moreira (UFLA)

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

Mayron Csar O. Moreira (UFLA)

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.

Mayron Csar O. Moreira (UFLA)

GCC111  PAA

16 de maio de 2015

11 / 15

Algoritmo de Prim

O conjunto A forma uma rvore nica;


A aresta segura adicionada a A sempre uma aresta de peso mnimo
que conecta a rvore a um vrtice no presente na rvore (lembre-se
do Teorema);

Mayron Csar O. Moreira (UFLA)

GCC111  PAA

16 de maio de 2015

12 / 15

Algoritmo de Prim

O conjunto A forma uma rvore nica;


A aresta segura adicionada a A sempre uma aresta de peso mnimo
que conecta a rvore a um vrtice no presente na rvore (lembre-se
do Teorema);
Ideia: a rvore comea por um vrtice qualquer e cresce at que
conecte todos os vrtices de V ;

Mayron Csar O. Moreira (UFLA)

GCC111  PAA

16 de maio de 2015

12 / 15

Algoritmo de Prim

O conjunto A forma uma rvore nica;


A aresta segura adicionada a A sempre uma aresta de peso mnimo
que conecta a rvore a um vrtice no presente na rvore (lembre-se
do Teorema);
Ideia: a rvore comea por um vrtice qualquer e cresce at que
conecte todos os vrtices de V ;
Ao nal do algoritmo, temos o conjunto S formando uma AGM.

Mayron Csar O. Moreira (UFLA)

GCC111  PAA

16 de maio de 2015

12 / 15

Algoritmo de Prim

Mayron Csar O. Moreira (UFLA)

GCC111  PAA

16 de maio de 2015

13 / 15

Algoritmo de Prim

Mayron Csar O. Moreira (UFLA)

GCC111  PAA

16 de maio de 2015

13 / 15

Algoritmo de Prim

Mayron Csar O. Moreira (UFLA)

GCC111  PAA

16 de maio de 2015

13 / 15

Algoritmo de Prim

Mayron Csar O. Moreira (UFLA)

GCC111  PAA

16 de maio de 2015

13 / 15

Algoritmo de Prim

Mayron Csar O. Moreira (UFLA)

GCC111  PAA

16 de maio de 2015

13 / 15

Algoritmo de Prim

Mayron Csar O. Moreira (UFLA)

GCC111  PAA

16 de maio de 2015

13 / 15

Algoritmo de Prim

Mayron Csar O. Moreira (UFLA)

GCC111  PAA

16 de maio de 2015

13 / 15

Algoritmo de Prim

Mayron Csar O. Moreira (UFLA)

GCC111  PAA

16 de maio de 2015

13 / 15

Algoritmo de Prim

Mayron Csar O. Moreira (UFLA)

GCC111  PAA

16 de maio de 2015

13 / 15

Algoritmo de Prim

Mayron Csar O. Moreira (UFLA)

GCC111  PAA

16 de maio de 2015

13 / 15

Algoritmo de Prim

Mayron Csar O. Moreira (UFLA)

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 )

Mayron Csar O. Moreira (UFLA)

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

rvore Geradora Mnima

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?

Mayron Csar O. Moreira (UFLA)

GCC111  PAA

16 de maio de 2015

15 / 15

You might also like