Escolar Documentos
Profissional Documentos
Cultura Documentos
Adilson Barros
22 de Junho de 2020
Conteúdo
Conteúdo
1 Exercício sobre o Algoritmo de Dikjstra.
Conteúdo
1 Exercício sobre o Algoritmo de Dikjstra.
2 Algoritmo de Floyd.
Exercício 3
A rede de estradas entre um conjunto de 6 localidades da Cidade
da Praia encontra-se danificada. O custo de reparação de cada
estrada é proporcional à sua extensão.
Na rede seguinte encontram-se as ligações existentes assim como as
suas extensões (em quilómetros):
Iteração 1 2 3 4 5 6
2.o (2,1) +∞ (2,1) +∞ +∞
3.o (7,2) (2,1) +∞ +∞
Iteração 1 2 3 4 5 6
2.o (2,1) +∞ (2,1) +∞ +∞
3.o (7,2) (2,1) +∞ +∞
Iteração 1 2 3 4 5 6
2.o (2,1) +∞ (2,1) +∞ +∞
3.o (7,2) (2,1) +∞ +∞
2 d=4. Sucessores de 4 não permanente são os vértices 3 e 5.
Iteração 1 2 3 4 5 6
2.o (2,1) +∞ (2,1) +∞ +∞
3.o (7,2) (2,1) +∞ +∞
2 d=4. Sucessores de 4 não permanente são os vértices 3 e 5.
Vamos atualizar os l(j) de 3 e 5
Iteração 1 2 3 4 5 6
2.o (2,1) +∞ (2,1) +∞ +∞
3.o (7,2) (2,1) +∞ +∞
2 d=4. Sucessores de 4 não permanente são os vértices 3 e 5.
Vamos atualizar os l(j) de 3 e 5
l(3) = {7, 8} = 7 e l(5) = {+∞, 2 + 4} = 6
Iteração 1 2 3 4 5 6
2.o (2,1) +∞ (2,1) +∞ +∞
3.o (7,2) (2,1) +∞ +∞
2 d=4. Sucessores de 4 não permanente são os vértices 3 e 5.
Vamos atualizar os l(j) de 3 e 5
l(3) = {7, 8} = 7 e l(5) = {+∞, 2 + 4} = 6
Iteração 1 2 3 4 5 6
3.o (7,2) (2,1) +∞ +∞
4.o (7,2) (6,4) +∞
Iteração 1 2 3 4 5 6
3.o (7,2) (2,1) +∞ +∞
4.o (7,2) (6,4) +∞
Iteração 1 2 3 4 5 6
3.o (7,2) (2,1) +∞ +∞
4.o (7,2) (6,4) +∞
2 d=5. Sucessores de 5 não permanente são os vértices 3 e 6.
Iteração 1 2 3 4 5 6
3.o (7,2) (2,1) +∞ +∞
4.o (7,2) (6,4) +∞
2 d=5. Sucessores de 5 não permanente são os vértices 3 e 6.
Vamos atualizar os l(j) de 3 e 6
Iteração 1 2 3 4 5 6
3.o (7,2) (2,1) +∞ +∞
4.o (7,2) (6,4) +∞
2 d=5. Sucessores de 5 não permanente são os vértices 3 e 6.
Vamos atualizar os l(j) de 3 e 6
l(3) = {7, 9} = 7 e l(6) = {+∞, 10} = 10
Iteração 1 2 3 4 5 6
3.o (7,2) (2,1) +∞ +∞
4.o (7,2) (6,4) +∞
2 d=5. Sucessores de 5 não permanente são os vértices 3 e 6.
Vamos atualizar os l(j) de 3 e 6
l(3) = {7, 9} = 7 e l(6) = {+∞, 10} = 10
Iteração 1 2 3 4 5 6
3.o (7,2) (2,1) +∞ +∞
4.o (7,2) (6,4) +∞
5.o (7,2) (10,5)
Iteração 1 2 3 4 5 6
3.o (7,2) (2,1) +∞ +∞
4.o (7,2) (6,4) +∞
5.o (7,2) (10,5)
Iteração 1 2 3 4 5 6
3.o (7,2) (2,1) +∞ +∞
4.o (7,2) (6,4) +∞
5.o (7,2) (10,5)
2 d=3. Sucessores de 3 não permanente é o vértice 6.
Iteração 1 2 3 4 5 6
3.o (7,2) (2,1) +∞ +∞
4.o (7,2) (6,4) +∞
5.o (7,2) (10,5)
2 d=3. Sucessores de 3 não permanente é o vértice 6.
Vamos atualizar os l(j) de 6
Iteração 1 2 3 4 5 6
3.o (7,2) (2,1) +∞ +∞
4.o (7,2) (6,4) +∞
5.o (7,2) (10,5)
2 d=3. Sucessores de 3 não permanente é o vértice 6.
Vamos atualizar os l(j) de 6
e l(6) = {10, 8} = 8
Iteração 1 2 3 4 5 6
3.o (7,2) (2,1) +∞ +∞
4.o (7,2) (6,4) +∞
5.o (7,2) (10,5)
2 d=3. Sucessores de 3 não permanente é o vértice 6.
Vamos atualizar os l(j) de 6
e l(6) = {10, 8} = 8
Iteração 1 2 3 4 5 6
4.o (7,2) (6,4) +∞
5.o (7,2) (10,5)
6.o (8,3)
Adilson Barros Problema de Caminho Mais Curto
Resolução
Nova Lista
Aresta Capacidade
(5,3) 3
(2,4) 4
(5,4) 4
(5,6) 4
(3,4) 6
Algoritmo Floyd-Warshall
1 O algoritmo de Floyd é um algoritmo que resolve o problema
de determina, caminho mais curto entre todos os pares de
vértices em uma rede.
Algoritmo Floyd-Warshall
1 O algoritmo de Floyd é um algoritmo que resolve o problema
de determina, caminho mais curto entre todos os pares de
vértices em uma rede.
2 Trata-se de um algoritmo que utiliza matrizes para determinar
os caminhos mínimos entre todos os pares de nós da rede.
Algoritmo Floyd-Warshall
1 O algoritmo de Floyd é um algoritmo que resolve o problema
de determina, caminho mais curto entre todos os pares de
vértices em uma rede.
2 Trata-se de um algoritmo que utiliza matrizes para determinar
os caminhos mínimos entre todos os pares de nós da rede.
3 No algoritmo de Floyd são feitas n iterações que corresponde
ao número de vértices da rede.
Algoritmo Floyd-Warshall
1 O algoritmo de Floyd é um algoritmo que resolve o problema
de determina, caminho mais curto entre todos os pares de
vértices em uma rede.
2 Trata-se de um algoritmo que utiliza matrizes para determinar
os caminhos mínimos entre todos os pares de nós da rede.
3 No algoritmo de Floyd são feitas n iterações que corresponde
ao número de vértices da rede.
4 A cada iteração corresponde uma matriz Dn×n cujos valores
são modificados utilizando uma fórmula de recorrência:
0 2 1 5
2 0 4 ∞
1 A matriz D 0 =
1 4
0 3
5 ∞ 3 0
0 2 1 5
2 0 4 ∞
1 A matriz D 0 =
1 4
0 3
5 ∞ 3 0
nil 1 1 1
2 nil 2 nil
2 e a matriz PAI =
3
3 nil 3
4 nil 4 nil
Adilson Barros Problema de Caminho Mais Curto
Problema Caminho Mais Curto
Algoritmo de Floyd-Exemplo
1 Passo 2: k=1
Algoritmo de Floyd-Exemplo
1 Passo 2: k=1
Na matriz 0
2
D , vamos eliminar
a linha 1 e a coluna 1
0 2 1 5
2 0 4 ∞
D0 =
1 4 0 3 vamos ter
5 ∞ 3 0
1
D =
0 2 1 5
2 0
Algoritmo de Floyd-Exemplo
1 Passo 2: k=1
Na matriz 0
2
D , vamos eliminar
a linha 1 e a coluna 1
0 2 1 5
2 0 4 ∞
D0 =
1 4 0 3 vamos ter
5 ∞ 3 0
1
D =
0 2 1 5
2 0 min{3, 4} = 3
Algoritmo de Floyd-Exemplo
1 Passo 2: k=1
Na matriz 0
2
D , vamos eliminar
a linha 1 e a coluna 1
0 2 1 5
2 0 4 ∞
D0 =
1 4 0 3 vamos ter
5 ∞ 3 0
1
D =
0 2 1 5
2
0 min{3, 4} = 3 min{7, ∞} = 7
1
Algoritmo de Floyd-Exemplo
1 Passo 2: k=1
Na matriz 0
2
D , vamos eliminar
a linha 1 e a coluna 1
0 2 1 5
2 0 4 ∞
D0 =
1 4 0 3 vamos ter
5 ∞ 3 0
1
D =
0 2 1 5
2
0 min{3, 4} = 3 min{7, ∞} = 7
1 min{3, 4} = 3 0
Algoritmo de Floyd-Exemplo
1 Passo 2: k=1
Na matriz 0
2
D , vamos eliminar
a linha 1 e a coluna 1
0 2 1 5
2 0 4 ∞
D0 =
1 4 0 3 vamos ter
5 ∞ 3 0
1
D =
0 2 1 5
2
0 min{3, 4} = 3 min{7, ∞} = 7
1 min{3, 4} = 3 0 min{6, 3} = 3
5
Algoritmo de Floyd-Exemplo
1 Passo 2: k=1
Na matriz 0
2
D , vamos eliminar
a linha 1 e a coluna 1
0 2 1 5
2 0 4 ∞
D0 =
1 4 0 3 vamos ter
5 ∞ 3 0
1
D =
0 2 1 5
2
0 min{3, 4} = 3 min{7, ∞} = 7
1 min{3, 4} = 3 0 min{6, 3} = 3
5 min{7, ∞} = 7
Algoritmo de Floyd-Exemplo
1 Passo 2: k=1
Na matriz 0
2
D , vamos eliminar
a linha 1 e a coluna 1
0 2 1 5
2 0 4 ∞
D0 =
1 4 0 3 vamos ter
5 ∞ 3 0
1
D =
0 2 1 5
2
0 min{3, 4} = 3 min{7, ∞} = 7
1 min{3, 4} = 3 0 min{6, 3} = 3
5 min{7, ∞} = 7 min{6, 3} = 3 0
Algoritmo de Floyd-Exemplo
1 Passo
2: k=1
0 2 1 5
2 0 3 7
D1 = 1 3
0 3
5 7 3 0
Algoritmo de Floyd-Exemplo
1 Passo
2: k=1
0 2 1 5
2 0 3 7
D1 = 1 3
e a matriz
0 3
5 7 3 0
nil 1 1 1
2 nil 1 1
PAI = 3
1 nil 3
4 1 4 nil
Algoritmo de Floyd-Exemplo
1 Passo 2: k=2, do nosso D 1 , vamos eliminar a segunda linha e
a segunda
coluna
0 2 1 5
2 0 3 7
D1 = 1 3 0
vamos ter
3
5 7 3 0
D 2 =
0 2
Algoritmo de Floyd-Exemplo
1 Passo 2: k=2, do nosso D 1 , vamos eliminar a segunda linha e
a segunda
coluna
0 2 1 5
2 0 3 7
D1 = 1 3 0
vamos ter
3
5 7 3 0
D 2 =
0 2 min{5, 1} = 1
Algoritmo de Floyd-Exemplo
1 Passo 2: k=2, do nosso D 1 , vamos eliminar a segunda linha e
a segunda
coluna
0 2 1 5
2 0 3 7
D1 = 1 3 0
vamos ter
3
5 7 3 0
D 2 =
0 2 min{5, 1} = 1 min{9, 5} = 5
2 0 3 7
Algoritmo de Floyd-Exemplo
1 Passo 2: k=2, do nosso D 1 , vamos eliminar a segunda linha e
a segunda
coluna
0 2 1 5
2 0 3 7
D1 = 1 3 0
vamos ter
3
5 7 3 0
D 2 =
0 2 min{5, 1} = 1 min{9, 5} = 5
2 0 3 7
min{5, 1} = 1 3 0
Algoritmo de Floyd-Exemplo
1 Passo 2: k=2, do nosso D 1 , vamos eliminar a segunda linha e
a segunda
coluna
0 2 1 5
2 0 3 7
D1 = 1 3 0
vamos ter
3
5 7 3 0
D 2 =
0 2 min{5, 1} = 1 min{9, 5} = 5
2 0 3 7
min{5, 1} = 1 3 0 min{10, 3} = 3
Algoritmo de Floyd-Exemplo
1 Passo 2: k=2, do nosso D 1 , vamos eliminar a segunda linha e
a segunda
coluna
0 2 1 5
2 0 3 7
D1 = 1 3 0
vamos ter
3
5 7 3 0
D 2 =
0 2 min{5, 1} = 1 min{9, 5} = 5
2 0 3 7
min{5, 1} = 1 3 0 min{10, 3} = 3
min{9, 5} = 5 7
Algoritmo de Floyd-Exemplo
1 Passo 2: k=2, do nosso D 1 , vamos eliminar a segunda linha e
a segunda
coluna
0 2 1 5
2 0 3 7
D1 = 1 3 0
vamos ter
3
5 7 3 0
D 2 =
0 2 min{5, 1} = 1 min{9, 5} = 5
2 0 3 7
min{5, 1} = 1 3 0 min{10, 3} = 3
min{9, 5} = 5 7 min{10, 3} = 3 0
Algoritmo de Floyd-Exemplo
1 Passo
2: k=2
0 2 1 5
2 0 3 7
D2 = 1 3
0 3
5 7 3 0
Algoritmo de Floyd-Exemplo
1 Passo
2: k=2
0 2 1 5
2 0 3 7
D2 = 1 3
e a matriz
0 3
5 7 3 0
nil 1 1 1
2 nil ´1 1
PAI = 3
1 nil 3
4 1 4 nil
Algoritmo de Floyd-Exemplo
1 Passo 2: k=3, do nosso D 2 , vamos eliminar a terceira linha e a
terceira
coluna
0 2 1 5
2 0 3 7
D2 = 1 3 0
vamos ter
3
5 7 3 0
0 2 1
D3 =
Algoritmo de Floyd-Exemplo
1 Passo 2: k=3, do nosso D 2 , vamos eliminar a terceira linha ea
terceira
coluna
0 2 1 5
2 0 3 7
D2 = 1 3 0 3 vamos ter
5 7 3 0
0 2 1 min{4, 5} = 4
2 0 3 min{6, 7} = 6
D3 =
1 3 0 3
min{4, 5} = 4 min{6, 7} = 6 3 0
Algoritmo de Floyd-Exemplo
1 Passo
2: k=3
0 2 1 4
2 0 3 6
D3 = 1 3
0 3
4 6 3 0
Algoritmo de Floyd-Exemplo
1 Passo
2: k=3
0 2 1 4
2 0 3 6
D3 = 1 3
e a matriz
0 3
4 6 3 0
nil 1 1 3
2 nil 1 3
PAI = 3
1 nil 3
3 1 4 nil
Algoritmo de Floyd-Exemplo
1 Passo 2: k=4, do nosso D 3 , vamos eliminar a quarta linha e a
quartacoluna
0 2 1 4
2 0 3 6
D3 = 1 3
vamos ter
0 3
4 6 3 0
0 2 1 4
2 0 3 6
D4 = 1 3
0 3
4 6 3 0
Algoritmo de Floyd-Exemplo
0 2 1 4
2 0 3 6
D4 =
1 3 0 3
4 6 3 0
Algoritmo de Floyd-Exemplo
0 2 1 4
2 0 3 6
D4 =
1 3 0 3
4 6 3 0
e a matriz
nil 1 1 3
2 nil 1 3
PAI =
3
1 nil 3
3 1 4 nil
Algoritmo de Floyd-Exemplo
0 2 1 4
2 0 3 6
D4 =
1 3 0 3
4 6 3 0
e a matriz
nil 1 1 3
2 nil 1 3
PAI =
3
1 nil 3
3 1 4 nil
Termina o Algoritmo.