Escolar Documentos
Profissional Documentos
Cultura Documentos
DE REDES: ALGORITMO DE
PRIM
Prof. Dr. Silvio Bortoleto
Objetivos
• Tomar contato com o conceito de árvores
• Conhecer o que é uma árvore geradora
• Compreender a utilidade de árvores
geradoras mínimas
• Aprender a determinar árvores geradoras
mínimas
Material de Estudo
6
3 4
1 2 3 6
7 3 4 8
8
FUNDAMENTOS:
ÁRVORES GERADORAS
DE CUSTO
MÍNIMO
O que é uma Árvore?
• É um sub-grafo onde não há ciclos
2 5 2
1 6 1 6
3 4 3 4
• Não é necessário
– Preservar todos os nós
– Preservar todos os arcos
• Só há um caminho entre dois nós da árvore
O que é uma Árvore Geradora?
• É uma árvore de um grafo em que:
– Não são preservados todos os arcos...
– Mas preserva todos os nós
2 5
2 5
6
1 6 1
3 4
3 4
1 2 10 5 6 1 2 5 6
7 3 4 8 3 4 8
8 8
∑ 𝑥 𝑖𝑗 ≤ 𝑆 ∀𝑆 ⊂ 𝑉
−1
𝑖𝑗∈𝐸:𝑖∈𝑆,𝑗∈𝑆
• Algoritmos Práticos 𝑥 𝑖𝑗 ∈
∀𝑖𝑗 ∈ 𝐸
0, 1
– Algoritmo de Prim
– Algoritmo de Kruskal
O ALGORITMO DE PRIM
Algoritmo de Prim
• O algoritmo de Prim é bastante simples
1. No grafo original O, escolha um nó A ligado ao
arco de menor custo
2. Transfira A para a árvore destino D
3. Em O, encontre o arco L de menor custo que
está ligado a qualquer nó de D por L e seu nó B,
desde que B não esteja em D
4. Transfira B e L para D
5. Se ainda há nós em O que não estão em D,
volte ao passo 3.
Aplicando o Algoritmo de Prim
1. No grafo original O, escolha um nó A ligado
ao arco de menor custo
12
5 2 5 12
O 1 2
10
5 6
7 3 4 8
8
D
Aplicando o Algoritmo de Prim
1. No grafo original O, escolha um nó A ligado
ao arco de menor custo
12
5 2 5 12
O 1 2
10
5 6
7 3 4 8
8
D
Aplicando o Algoritmo de Prim
1. No grafo original O, escolha um nó A ligado
ao arco de menor custo
12
5 2 5 12
O 1 2
10
5 6
7 3 4 8
8
D
Aplicando o Algoritmo de Prim
2. Transfira A para a árvore destino D
12
5 2 5 12
O 1 2
10
5 6
7 3 4 8
8
D
Aplicando o Algoritmo de Prim
3. Em O, encontre o arco L de menor custo que
está ligado a qualquer nó de D por L e seu nó
B 5 2
12
5 12
O 1 2
10
5 6
7 3 4 8
8
D
Aplicando o Algoritmo de Prim
3. Em O, encontre o arco L de menor custo que
está ligado a qualquer nó de D por L e seu nó
B 5 2
12
5 12
O 1 2
10
5 6
7 3 4 8
8
D
Aplicando o Algoritmo de Prim
4. Transfira B e L para D
12
5 2 5 12
O 1 2
10
5 6
7 3 4 8
8
D
Aplicando o Algoritmo de Prim
4. Transfira B e L para D
12
5 2 5 12
O 1 2
10
5 6
7 3 4 8
8
D 2
3
Aplicando o Algoritmo de Prim
5. Se ainda há nós em O que não estão em D,
volte ao passo 3
12
5 2 5 12
O 1 2
10
5 6
7 3 4 8
8
D 2
3
Aplicando o Algoritmo de Prim
3. Em O, encontre o arco L de menor custo que
está ligado a qualquer nó de D por L e seu nó
B 5 2
12
5 12
O 1 2
10
5 6
7 3 4 8
8
D 2
3
Aplicando o Algoritmo de Prim
3. Em O, encontre o arco L de menor custo que
está ligado a qualquer nó de D por L e seu nó
B 5 2
12
5 12
O 1 2
10
5 6
7 3 4 8
8
D 2
3
Aplicando o Algoritmo de Prim
4. Transfira B e L para D
12
5 2 5 12
O 1 2
10
5 6
7 3 4 8
8
D 2
3
Aplicando o Algoritmo de Prim
4. Transfira B e L para D
12
5 2 5 12
O 1 2
10
5 6
7 3 4 8
8
5 2
D 1 2
3
Aplicando o Algoritmo de Prim
5. Se ainda há nós em O que não estão em D,
volte ao passo 3
12
5 2 5 12
O 1 2
10
5 6
7 3 4 8
8
5 2
D 1 2
3
Aplicando o Algoritmo de Prim
3. Em O, encontre o arco L de menor custo que
está ligado a qualquer nó de D por L e seu nó
B 5 2
12
5 12
O 1 2
10
5 6
7 3 4 8
8
5 2
D 1 2
3
Aplicando o Algoritmo de Prim
3. Em O, encontre o arco L de menor custo que
está ligado a qualquer nó de D por L e seu nó
B 5 2
12
5 12
O 1 2
10
5 6
7 3 4 8
8
5 2
D 1 2
3
Aplicando o Algoritmo de Prim
4. Transfira B e L para D
12
5 2 5 12
O 1 2
10
5 6
7 3 4 8
8
5 2
D 1 2
3
Aplicando o Algoritmo de Prim
4. Transfira B e L para D
12
5 2 5 12
O 1 2
10
5 6
7 3 4 8
8
5 2
D 1 2
3 4
8
Aplicando o Algoritmo de Prim
5. Se ainda há nós em O que não estão em D,
volte ao passo 3
12
5 2 5 12
O 1 2
10
5 6
7 3 4 8
8
5 2
D 1 2
3 4
8
Aplicando o Algoritmo de Prim
3. Em O, encontre o arco L de menor custo que
está ligado a qualquer nó de D por L e seu nó
B 5 2
12
5 12
O 1 2
10
5 6
7 3 4 8
8
5 2
D 1 2
3 4
8
Aplicando o Algoritmo de Prim
3. Em O, encontre o arco L de menor custo que
está ligado a qualquer nó de D por L e seu nó
B 5 2
12
5 12
O 1 2
10
5 6
7 3 4 8
8
5 2
D 1 2
3 4
8
Aplicando o Algoritmo de Prim
4. Transfira B e L para D
12
5 2 5 12
O 1 2
10
5 6
7 3 4 8
8
5 2
D 1 2
3 4
8
Aplicando o Algoritmo de Prim
4. Transfira B e L para D
12
5 2 5 12
O 1 2
10
5 6
7 3 4 8
8
5 2 5
D 1 2 5
3 4
8
Aplicando o Algoritmo de Prim
5. Se ainda há nós em O que não estão em D,
volte ao passo 3
12
5 2 5 12
O 1 2
10
5 6
7 3 4 8
8
5 2 5
D 1 2 5
3 4
8
Aplicando o Algoritmo de Prim
3. Em O, encontre o arco L de menor custo que
está ligado a qualquer nó de D por L e seu nó
B 5 2
12
5 12
O 1 2
10
5 6
7 3 4 8
8
5 2 5
D 1 2 5
3 4
8
Aplicando o Algoritmo de Prim
3. Em O, encontre o arco L de menor custo que
está ligado a qualquer nó de D por L e seu nó
B 5 2
12
5 12
O 1 2
10
5 6
7 3 4 8
8
5 2 5
D 1 2 5
3 4
8
Aplicando o Algoritmo de Prim
4. Transfira B e L para D
12
5 2 5 12
O 1 2
10
5 6
7 3 4 8
8
5 2 5
D 1 2 5
3 4
8
Aplicando o Algoritmo de Prim
4. Transfira B e L para D
12
5 2 5 12
O 1 2
10
5 6
7 3 4 8
8
5 2 5
D 1 2 5 6
3 4 8
8
Aplicando o Algoritmo de Prim
5. Se ainda há nós em O que não estão em D,
volte ao passo 3
12
5 2 5 12
O 1 2
10
5 6
7 3 4 8
8
5 2 5
D 1 2 5 6
3 4 8
8
EXERCÍCIOS
Exercíci
o1. Aplique o Algoritmo de Prim
29 32
2 0 1
31 21
60 51
5 25
6 7
40 51
18
46
3
4
34
Fonte: https://www.ime.usp.br/~pf/algoritmos_para_grafos/aulas/prim.html
Exercíci
o1. Aplique o Algoritmo de Prim
29
2 0 1
31 21
5 25
6 7
18
46
3
4
34
Exercício (para entrega!)
2. Aplique o Algoritmo de Prim
8 7
2 6 7
4 9
2
1 11 4 9
4 14
8 7 6
10
3 5 8
1 2
Fonte: http://www.ic.unicamp.br/~zanoni/mc448/2003-2s/listas/lista23.pdf