ARVORES GERADORAS MINIMAS E O ALGORITMO DE KRUSKAL

LauraAlvesPacifico1 8 views 48 slides Sep 23, 2025
Slide 1
Slide 1 of 48
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41
Slide 42
42
Slide 43
43
Slide 44
44
Slide 45
45
Slide 46
46
Slide 47
47
Slide 48
48

About This Presentation

grafos AGM


Slide Content

Universidade Federal de Alfenas Universidade Federal de Alfenas
Algoritmos em Grafos Algoritmos em Grafos
Aula 09 Aula 09
––
ÁÁ
rvore Geradora M rvore Geradora M
íí
nima: Algoritmo de nima: Algoritmo de
Kruskal Kruskal
Prof. Humberto C Prof. Humberto C
éé
sar Brandão de Oliveira sar Brandão de Oliveira
[email protected] [email protected]
**
mg.edu.br mg.edu.br

Relembrando aula passada... Relembrando aula passada...

Exemplo:
),(AV G
=
),('XV G
=

Relembrando aula passada... Relembrando aula passada...
.
)},{(
),(
1||||
}{
) ), ,(( _
fim
X retorna
enquanto fim
vu X X
X para segura vu aresta uma encontrar
faça V X enquanto
X
wAVG GENERICA AGM
∪ ←
− ≤

1. Corte
2. Aresta segura
3. Aresta leve

ÁÁ
rvore Geradora M rvore Geradora M
íí
nimanima

Dois
algoritmos cl algoritmos cl
áá
ssicos para a AGM ssicos para a AGM
:
▫ Kruskal;
▫ Prim;

Primeiro algoritmo: ▫ Boruvka.

ÁÁ
rvore Geradora M rvore Geradora M
íí
nimanima
••
PrimPrim
::
▫Gera uma 
áá
rvore  rvore 
úú
nicanica
;
▫Ao longo do algoritmo, o conjunto X sempre éuma árvore.
••
Kruskal Kruskal
::
▫Gera uma 
floresta floresta
, antes de gerar a AGM;
▫Existe garantia de ser apenas uma árvore apenas depois 
da última iteração.

Kruskal Kruskal

Na aula de hoje vamos estudar o algoritmo de Kruska l: ▫ Criado por Joseph Bernard Kruskal, Jr.
▫ Nascido em 1928.
▫ Terminou seu PhD na Universidade
de Princeton em 1956

ÁÁ
rvore Geradora M rvore Geradora M
íí
nimanima
••
Arestas seguras: Arestas seguras: ▫▫
PrimPrim
::
GA aresta segura ésempre a aresta de peso mínimo que 
conecta a árvore a um vértice não presente no conju nto X. ▫▫
Kruskal Kruskal
::
GA aresta segura ésempre uma aresta de peso mínimo no 
grafo que conecta dois componentes distintos (duas árvor es 
distintas na floresta).

Kruskal Kruskal
••
Ponto Chave: Ponto Chave: ▫ Ele encontra uma
aresta segura aresta segura
para adicionar àfloresta
encontrando,
de todas as arestas que conectam duas de todas as arestas que conectam duas
áá
rvores quaisquer, uma aresta de peso m rvores quaisquer, uma aresta de peso m
íí
nimonimo
;
RSe você reparar,
o corte acontece neste ponto o corte acontece neste ponto
... Mas para isso, é
efetuada uma adaptação no grafo original

Kruskaléconsiderado um
algoritmo guloso algoritmo guloso
, porque em cada passo
ele adiciona àfloresta uma
aresta de peso m aresta de peso m
íí
nimonimo
(daquelas que
ainda podem ser adicionadas).
▫ Ou seja, faz uma avaliação dentre todas as possibi lidades que
possui;

.
),(
)},{(
)( )(
' ),(
'
)(
}{
) ), ,(( _
fim
X retorne
para fim
se fim
vuão aplicarUni
vu X X
então v conjuntoDe u conjuntoDe se
faça A vu aresta cada para
crescente peso por Ade arestas as ordenar A
para fim
v nto criarConju
faça Vv vértice cada para
X
wAVG Kruskal AGM
∪ ←





Kruskal

.
),(
)},{(
)( )(
' ),(
'
)(
}{
) ), ,(( _
fim
X retorne
para fim
se fim
vuão aplicarUni
vu X X
então v conjuntoDe u conjuntoDe se
faça A vu aresta cada para
crescente peso por Ade arestas as ordenar A
para fim
v nto criarConju
faça Vv vértice cada para
X
wAVG Kruskal AGM
∪ ←





Kruskal
A princípio, o 
conjunto que 
guarda as arestas 
da AGM é vazio.

.
),(
)},{(
)( )(
' ),(
'
)(
}{
) ), ,(( _
fim
X retorne
para fim
se fim
vuão aplicarUni
vu X X
então v conjuntoDe u conjuntoDe se
faça A vu aresta cada para
crescente peso por Ade arestas as ordenar A
para fim
v nto criarConju
faça Vv vértice cada para
X
wAVG Kruskal AGM
∪ ←





Kruskal
|V| árvores são 
criadas.

.
),(
)},{(
)( )(
' ),(
'
)(
}{
) ), ,(( _
fim
X retorne
para fim
se fim
vuão aplicarUni
vu X X
então v conjuntoDe u conjuntoDe se
faça A vu aresta cada para
crescente peso por Ade arestas as ordenar A
para fim
v nto criarConju
faça Vv vértice cada para
X
wAVG Kruskal AGM
∪ ←





Kruskal O conjunto de 
arestas é
ordenado em 
função dos 
pesos. Condição 
necessária para a 
criação da AGM 
através de 
Kruskal

.
),(
)},{(
)( )(
' ),(
'
)(
}{
) ), ,(( _
fim
X retorne
para fim
se fim
vuão aplicarUni
vu X X
então v conjuntoDe u conjuntoDe se
faça A vu aresta cada para
crescente peso por Ade arestas as ordenar A
para fim
v nto criarConju
faça Vv vértice cada para
X
wAVG Kruskal AGM
∪ ←





Kruskal
Para cada aresta 
do vetor 
ordenado
Se ue vsão de 
árvores distintas, 
a aresta (u,v)é
adicionada ao 
conjunto Xe é
aplicada uma 
união das 
árvores de ue v.

AGM utilizando  AGM utilizando 
Kruskal Kruskal

Considerando o grafo a seguir... Vamos criar
passo passo
**
aa
**
passo passo
a AGM utilizando Kruskal...

AGM utilizando  AGM utilizando 
Kruskal Kruskal
••
11
ºº
passo: passo:
criar um(a) conjunto/árvore para cada vértice.
{
}
}{},{}, {}, {},{},{},{},{},{i h g f e d c b a

AGM utilizando  AGM utilizando 
Kruskal Kruskal
••
22
ºº
passo: passo:
ordenar as arestas do conjunto A.
{
}
}{},{}, {}, {},{},{},{},{},{i h g f e d c b a
);,();,();, (); ,();,(); ,();,();,(ih dcig fc ba gf ic hg
),();,(); ,();,();,();,(fd hb feed cb ha
A’

••
33
ºº
passo: passo:
para cada aresta ordenada, faça...
AGM utilizando  AGM utilizando 
Kruskal Kruskal
{
}
}{},{}, {}, {},{},{},{},{},{i h g f e d c b a
);,();,();, (); ,();,(); ,();,();,(ih dcig fc ba gf ic hg
),();,(); ,();,();,();,(fd hb feed cb ha
A’
g e h pertencem a 
mesma árvore na 
floresta?


3ºpasso: para cada aresta ordenada, faça...
AGM utilizando  AGM utilizando 
Kruskal Kruskal
{
}
}{},,{}, {},{}, {},{},{},{i hg f e d c b a
);,();,();, (); ,();,(); ,();,();,(ih dcig fc ba gf ic hg
),();,(); ,();,();,();,(fd hb feed cb ha
A’
g e h pertencem a 
mesma árvore na 
floresta?
Não... Então...
União das árvores 
de g e h e adição da 
aresta na AGM


3ºpasso: para cada aresta ordenada, faça...
AGM utilizando  AGM utilizando 
Kruskal Kruskal
{
}
}{},,{}, {},{}, {},{},{},{i hg f e d c b a
);,();,();, (); ,();,(); ,();,();,(ih dcig fc ba gf ic hg
),();,(); ,();,();,();,(fd hb feed cb ha
A’
ce ipertencem a 
mesma árvore na 
floresta?

{
}
},{}, {},{},{},,{},{},{hg f e dic b a
);,();,();, (); ,();,(); ,();,();,(ih dcig fc ba gf ic hg

3ºpasso: para cada aresta ordenada, faça...
AGM utilizando  AGM utilizando 
Kruskal Kruskal
),();,(); ,();,();,();,(fd hb feed cb ha
A’
Não... Então...
União das árvores 
de ce ie adição da 
aresta na AGM

{
}
},{}, {},{},{},,{},{},{hg f e dic b a
);,();,();, (); ,();,(); ,();,();,(ih dcig fc ba gf ic hg

3ºpasso: para cada aresta ordenada, faça...
AGM utilizando  AGM utilizando 
Kruskal Kruskal
),();,(); ,();,();,();,(fd hb feed cb ha
A’
fe gpertencem a 
mesma árvore na 
floresta?


3ºpasso: para cada aresta ordenada, faça...
{
}
},,{},{}, {},,{},{},{hgf e dic b a
);,();,();, (); ,();,(); ,();,();,(ih dcig fc ba gf ic hg
AGM utilizando  AGM utilizando 
Kruskal Kruskal
),();,(); ,();,();,();,(fd hb feed cb ha
A’
Não... Então...
União das árvores 
de fe ge adição da 
aresta na AGM


3ºpasso: para cada aresta ordenada, faça...
{
}
},,{},{}, {},,{},{},{hgf e dic b a
);,();,();, (); ,();,(); ,();,();,(ih dcig fc ba gf ic hg
AGM utilizando  AGM utilizando 
Kruskal Kruskal
),();,(); ,();,();,();,(fd hb feed cb ha
A’
a e bpertencem a 
mesma árvore na 
floresta?


3ºpasso: para cada aresta ordenada, faça...
{
}
},,{},{},{},,{},,{hgf e dic ba
);,();,();, (); ,();,(); ,();,();,(ih dcig fc ba gf ic hg
AGM utilizando  AGM utilizando 
Kruskal Kruskal
),();,(); ,();,();,();,(fd hb feed cb ha
A’
Não... Então...
União das árvores 
de ae be adição da 
aresta na AGM


3ºpasso: para cada aresta ordenada, faça...
{
}
},,{},{},{},,{},,{hgf e dic ba
);,();,();, (); ,();,(); ,();,();,(ih dcig fc ba gf ic hg
AGM utilizando  AGM utilizando 
Kruskal Kruskal
),();,(); ,();,();,();,(fd hb feed cb ha
A’
c e fpertencem a 
mesma árvore na 
floresta?


3ºpasso: para cada aresta ordenada, faça...
{
}
},,,,{},{}, {},,{ihgfc e d ba
);,();,();, (); ,();,(); ,();,();,(ih dcig fc ba gf ic hg
AGM utilizando  AGM utilizando 
Kruskal Kruskal
),();,(); ,();,();,();,(fd hb feed cb ha
A’
Não... Então...
União das árvores 
de ce fe adição da 
aresta na AGM


3ºpasso: para cada aresta ordenada, faça...
{
}
},,,,{},{}, {},,{ihgfc e d ba
);,();,();, (); ,();,(); ,();,();,(ih dcig fc ba gf ic hg
AGM utilizando  AGM utilizando 
Kruskal Kruskal
),();,(); ,();,();,();,(fd hb feed cb ha
A’
g e ipertencem a 
mesma árvore na 
floresta?


3ºpasso: para cada aresta ordenada, faça...
{
}
},,,,{},{}, {},,{ihgfc e d ba
);,();,();, (); ,();,(); ,();,();,(ih dcig fc ba gf ic hg
AGM utilizando  AGM utilizando 
Kruskal Kruskal
),();,(); ,();,();,();,(fd hb feed cb ha
A’
(g,i) fecha um 
ciclo. Isso é
identificado 
porque ge i
pertencem a 
mesma árvore na 
estrutura auxiliar 
‘floresta’.


3ºpasso: para cada aresta ordenada, faça...
{
}
},,,,{},{}, {},,{ihgfc e d ba
);,();,();, (); ,();,(); ,();,();,(ih dcig fc ba gf ic hg
AGM utilizando  AGM utilizando 
Kruskal Kruskal
),();,(); ,();,();,();,(fd hb feed cb ha
A’
c e dpertencem a 
mesma árvore na 
floresta?


3ºpasso: para cada aresta ordenada, faça...
{
}
},,,,,{},{},,{ihgfdc e ba
);,();,();, (); ,();,(); ,();,();,(ih dcig fc ba gf ic hg
AGM utilizando  AGM utilizando 
Kruskal Kruskal
),();,(); ,();,();,();,(fd hb feed cb ha
A’
Não... Então...
União das árvores 
de ce de adição da 
aresta na AGM


3ºpasso: para cada aresta ordenada, faça...
{
}
},,,,,{},{},,{ihgfdc e ba
);,();,();, (); ,();,(); ,();,();,(ih dcig fc ba gf ic hg
AGM utilizando  AGM utilizando 
Kruskal Kruskal
),();,(); ,();,();,();,(fd hb feed cb ha
A’
h e ipertencem a 
mesma árvore na 
floresta?


3ºpasso: para cada aresta ordenada, faça...
{
}
},,,,,{},{},,{ihgfdc e ba
);,();,();, (); ,();,(); ,();,();,(ih dcig fc ba gf ic hg
AGM utilizando  AGM utilizando 
Kruskal Kruskal
),();,(); ,();,();,();,(fd hb feed cb ha
A’
Fecha ciclo...


3ºpasso: para cada aresta ordenada, faça...
{
}
},,,,,{},{},,{ihgfdc e ba
);,();,();, (); ,();,(); ,();,();,(ih dcig fc ba gf ic hg
AGM utilizando  AGM utilizando 
Kruskal Kruskal
),();,(); ,();,();,();,(fd hb feed cb ha
A’
a e hpertencem a 
mesma árvore na 
floresta?


3ºpasso: para cada aresta ordenada, faça...
{
}
},,,,,,,{},{ihgfdcba e
);,();,();, (); ,();,(); ,();,();,(ih dcig fc ba gf ic hg
AGM utilizando  AGM utilizando 
Kruskal Kruskal
),();,(); ,();,();,();,(fd hb feed cb ha
A’
Não... Então...
União das árvores 
de ae he adição da 
aresta na AGM


3ºpasso: para cada aresta ordenada, faça...
{
}
},,,,,,,{},{ihgfdcba e
);,();,();, (); ,();,(); ,();,();,(ih dcig fc ba gf ic hg
AGM utilizando  AGM utilizando 
Kruskal Kruskal
),();,(); ,();,();,();,(fd hb feed cb ha
A’
b e cpertencem a 
mesma árvore na 
floresta?


3ºpasso: para cada aresta ordenada, faça...
{
}
},,,,,,,{},{ihgfdcba e
);,();,();, (); ,();,(); ,();,();,(ih dcig fc ba gf ic hg
AGM utilizando  AGM utilizando 
Kruskal Kruskal
),();,(); ,();,();,();,(fd hb feed cb ha
A’
Fecha ciclo...


3ºpasso: para cada aresta ordenada, faça...
{
}
},,,,,,,{},{ihgfdcba e
);,();,();, (); ,();,(); ,();,();,(ih dcig fc ba gf ic hg
AGM utilizando  AGM utilizando 
Kruskal Kruskal
),();,(); ,();,();,();,(fd hb feed cb ha
A’
d e epertencem a 
mesma árvore na 
floresta?


3ºpasso: para cada aresta ordenada, faça...
{
}
},,,,,,,,{ihgfedcba
);,();,();, (); ,();,(); ,();,();,(ih dcig fc ba gf ic hg
AGM utilizando  AGM utilizando 
Kruskal Kruskal
),();,(); ,();,();,();,(fd hb feed cb ha
A’
Não... Então...
União das árvores 
de de ee adição da 
aresta na AGM


3ºpasso: para cada aresta ordenada, faça...
{
}
},,,,,,,,{ihgfedcba
);,();,();, (); ,();,(); ,();,();,(ih dcig fc ba gf ic hg
AGM utilizando  AGM utilizando 
Kruskal Kruskal
),();,(); ,();,();,();,(fd hb feed cb ha
A’
e e fpertencem a 
mesma árvore na 
floresta?


3ºpasso: para cada aresta ordenada, faça...
{
}
},,,,,,,,{ihgfedcba
);,();,();, (); ,();,(); ,();,();,(ih dcig fc ba gf ic hg
AGM utilizando  AGM utilizando 
Kruskal Kruskal
),();,(); ,();,();,();,(fd hb feed cb ha
A’
Fecha ciclo...


3ºpasso: para cada aresta ordenada, faça...
{
}
},,,,,,,,{ihgfedcba
);,();,();, (); ,();,(); ,();,();,(ih dcig fc ba gf ic hg
AGM utilizando  AGM utilizando 
Kruskal Kruskal
),();,(); ,();,();,();,(fd hb feed cb ha
A’
b e hpertencem a 
mesma árvore na 
floresta?


3ºpasso: para cada aresta ordenada, faça...
{
}
},,,,,,,,{ihgfedcba
);,();,();, (); ,();,(); ,();,();,(ih dcig fc ba gf ic hg
AGM utilizando  AGM utilizando 
Kruskal Kruskal
),();,(); ,();,();,();,(fd hb feed cb ha
A’
Fecha ciclo...


3ºpasso: para cada aresta ordenada, faça...
{
}
},,,,,,,,{ihgfedcba
);,();,();, (); ,();,(); ,();,();,(ih dcig fc ba gf ic hg
AGM utilizando  AGM utilizando 
Kruskal Kruskal
),();,(); ,();,();,();,(fd hb feed cb ha
A’
d e fpertencem a 
mesma árvore na 
floresta?


3ºpasso: para cada aresta ordenada, faça...
{
}
},,,,,,,,{ihgfedcba
);,();,();, (); ,();,(); ,();,();,(ih dcig fc ba gf ic hg
AGM utilizando  AGM utilizando 
Kruskal Kruskal
),();,(); ,();,();,();,(fd hb feed cb ha
A’
Fecha ciclo...


O conjunto X (arestas da AGM) foi composto ao longo da execução
do Kruskal, onde apenas as arestas não marcadas de A’foram
adicionadas àárvore.
);,();,();, (); ,();,(); ,();,();,(ih dcig fc ba gf ic hg
AGM utilizando  AGM utilizando 
Kruskal Kruskal
),();,(); ,();,();,();,(fd hb feed cb ha
A’

Anima Anima
çç
ão na Web do algoritmo de  ão na Web do algoritmo de 
Kruskal Kruskal •
Pode ser feito passo a passo. Bom para entendimento geral do
algoritmo:
▫ http://students.ceid.upatras.gr/~papagel/project/k ruskal.htm


Qual éa complexidade do algoritmo de Kruskal?

Ela de depende quais estruturas?

Proponha uma estrutura eficiente para armazenar e
efetuar as operações na floresta e nas árvores do
algoritmo de Kruskal.
Exerc Exerc
íí
ciocio

Bibliografia •
CORMEN, T. H.; LEISERSON, C. E.; RIVEST, R. L.; 
(2002). Algoritmos –Teoria e Prática. Tradução da 2 ª
edição americana. Rio de Janeiro. Editora Campus.

ZIVIANI, N. (2007). Projeto e Algoritmos com 
implementações em Java e C++. São Paulo. Editora 
Thomson;
48
Tags