Você está na página 1de 86

Problema de Caminho Mais Curto

Adilson Barros

22 de Junho de 2020

Adilson Barros Problema de Caminho Mais Curto


Resume da Aula

Conteúdo

Adilson Barros Problema de Caminho Mais Curto


Resume da Aula

Conteúdo
1 Exercício sobre o Algoritmo de Dikjstra.

Adilson Barros Problema de Caminho Mais Curto


Resume da Aula

Conteúdo
1 Exercício sobre o Algoritmo de Dikjstra.

2 Algoritmo de Floyd.

Adilson Barros Problema de Caminho Mais Curto


Exercícios

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):

Adilson Barros Problema de Caminho Mais Curto


Sabendo que é necessário manter a ligação entre as localidades 1 a
6 de forma mais curta possível, que ligações devem ser reparadas
de forma a que seja possível aceder a todas as localidades
minimizando o custo total de reparação?

Adilson Barros Problema de Caminho Mais Curto


Resolução
1.o Parte do Exercício

Adilson Barros Problema de Caminho Mais Curto


Resolução
1.o Parte do Exercício

1 Determinar o caminho mais curto entre o vértice 1 ao vértice


6, então: Toma-se s = 1 e d=6.

Adilson Barros Problema de Caminho Mais Curto


Resolução
1.o Parte do Exercício

1 Determinar o caminho mais curto entre o vértice 1 ao vértice


6, então: Toma-se s = 1 e d=6.
Iteração 1 2 3 4 5 6
1. o 0 +∞ +∞ +∞ +∞ +∞

Adilson Barros Problema de Caminho Mais Curto


Resolução
1.o Parte do Exercício

1 Determinar o caminho mais curto entre o vértice 1 ao vértice


6, então: Toma-se s = 1 e d=6.
Iteração 1 2 3 4 5 6
1. o 0 +∞ +∞ +∞ +∞ +∞
2 Vai ser transformada s como permanente.

Adilson Barros Problema de Caminho Mais Curto


Resolução
1.o Parte do Exercício

1 Determinar o caminho mais curto entre o vértice 1 ao vértice


6, então: Toma-se s = 1 e d=6.
Iteração 1 2 3 4 5 6
1. o 0 +∞ +∞ +∞ +∞ +∞
2 Vai ser transformada s como permanente.
Iteração 1 2 3 4 5 6
1. o 0 +∞ +∞ +∞ +∞ +∞
Adilson Barros Problema de Caminho Mais Curto
Resolução

1.o Parte do Exercício

Adilson Barros Problema de Caminho Mais Curto


Resolução

1.o Parte do Exercício

1 Os sucessores de d = s = 1, são os vértices 2 e 4.

Adilson Barros Problema de Caminho Mais Curto


Resolução

1.o Parte do Exercício

1 Os sucessores de d = s = 1, são os vértices 2 e 4.


Vamos atualizar os l(j) de 2 e 4

Adilson Barros Problema de Caminho Mais Curto


Resolução

1.o Parte do Exercício

1 Os sucessores de d = s = 1, são os vértices 2 e 4.


Vamos atualizar os l(j) de 2 e 4
l(2) = {+∞, 0 + 2} = 2

Adilson Barros Problema de Caminho Mais Curto


Resolução

1.o Parte do Exercício

1 Os sucessores de d = s = 1, são os vértices 2 e 4.


Vamos atualizar os l(j) de 2 e 4
l(2) = {+∞, 0 + 2} = 2
l(4) = {+∞, 0 + 2} = 2

Adilson Barros Problema de Caminho Mais Curto


Resolução

1.o Parte do Exercício

1 Os sucessores de d = s = 1, são os vértices 2 e 4.


Vamos atualizar os l(j) de 2 e 4
l(2) = {+∞, 0 + 2} = 2
l(4) = {+∞, 0 + 2} = 2
Iteração 1 2 3 4 5 6
1.o 0 +∞ +∞ +∞ +∞ +∞
2.o (2,1) +∞ (2,1) +∞ +∞

Adilson Barros Problema de Caminho Mais Curto


Resolução

1.o Parte do Exercício

1 Os sucessores de d = s = 1, são os vértices 2 e 4.


Vamos atualizar os l(j) de 2 e 4
l(2) = {+∞, 0 + 2} = 2
l(4) = {+∞, 0 + 2} = 2
Iteração 1 2 3 4 5 6
1. o 0 +∞ +∞ +∞ +∞ +∞
2.o (2,1) +∞ (2,1) +∞ +∞
2 o min{2, 2} = 2, podemos escolher ou o vértice 2 ou o vértice
3 como permanente. Vai ser escolhido o vértice 2.

Adilson Barros Problema de Caminho Mais Curto


Resolução

1.o Parte do Exercício

Adilson Barros Problema de Caminho Mais Curto


Resolução

1.o Parte do Exercício


Iteração 1 2 3 4 5 6
1.o 0 +∞ +∞ +∞ +∞ +∞
2.o (2,1) +∞ (2,1) +∞ +∞

Adilson Barros Problema de Caminho Mais Curto


Resolução

1.o Parte do Exercício


Iteração 1 2 3 4 5 6
1. o 0 +∞ +∞ +∞ +∞ +∞
2.o (2,1) +∞ (2,1) +∞ +∞
1 d=2. Sucessores de 2 não permanente são os vértices 3 e 4.

Adilson Barros Problema de Caminho Mais Curto


Resolução

1.o Parte do Exercício


Iteração 1 2 3 4 5 6
1. o 0 +∞ +∞ +∞ +∞ +∞
2.o (2,1) +∞ (2,1) +∞ +∞
1 d=2. Sucessores de 2 não permanente são os vértices 3 e 4.

Vamos atualizar os l(j) de 3 e 4

Adilson Barros Problema de Caminho Mais Curto


Resolução

1.o Parte do Exercício


Iteração 1 2 3 4 5 6
1. o 0 +∞ +∞ +∞ +∞ +∞
2.o (2,1) +∞ (2,1) +∞ +∞
1 d=2. Sucessores de 2 não permanente são os vértices 3 e 4.

Vamos atualizar os l(j) de 3 e 4


l(3) = {+∞, 2 + 5} = 7 e l(4) = {2, 2 + 4} = 2

Adilson Barros Problema de Caminho Mais Curto


Resolução

1.o Parte do Exercício


Iteração 1 2 3 4 5 6
1. o 0 +∞ +∞ +∞ +∞ +∞
2.o (2,1) +∞ (2,1) +∞ +∞
1 d=2. Sucessores de 2 não permanente são os vértices 3 e 4.

Vamos atualizar os l(j) de 3 e 4


l(3) = {+∞, 2 + 5} = 7 e l(4) = {2, 2 + 4} = 2

Iteração 1 2 3 4 5 6
2.o (2,1) +∞ (2,1) +∞ +∞
3.o (7,2) (2,1) +∞ +∞

Adilson Barros Problema de Caminho Mais Curto


Resolução

1.o Parte do Exercício

Adilson Barros Problema de Caminho Mais Curto


Resolução

1.o Parte do Exercício


1 min{2, 7} = 2, então o vértice 4 passa a ser permanente.

Adilson Barros Problema de Caminho Mais Curto


Resolução

1.o Parte do Exercício


1 min{2, 7} = 2, então o vértice 4 passa a ser permanente.

Iteração 1 2 3 4 5 6
2.o (2,1) +∞ (2,1) +∞ +∞
3.o (7,2) (2,1) +∞ +∞

Adilson Barros Problema de Caminho Mais Curto


Resolução

1.o Parte do Exercício


1 min{2, 7} = 2, então o vértice 4 passa a ser permanente.

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.

Adilson Barros Problema de Caminho Mais Curto


Resolução

1.o Parte do Exercício


1 min{2, 7} = 2, então o vértice 4 passa a ser permanente.

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

Adilson Barros Problema de Caminho Mais Curto


Resolução

1.o Parte do Exercício


1 min{2, 7} = 2, então o vértice 4 passa a ser permanente.

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

Adilson Barros Problema de Caminho Mais Curto


Resolução

1.o Parte do Exercício


1 min{2, 7} = 2, então o vértice 4 passa a ser permanente.

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) +∞

Adilson Barros Problema de Caminho Mais Curto


Resolução

1.o Parte do Exercício

Adilson Barros Problema de Caminho Mais Curto


Resolução

1.o Parte do Exercício


1 min{6, 7} = 6, então o vértice 5 passa a ser permanente.

Adilson Barros Problema de Caminho Mais Curto


Resolução

1.o Parte do Exercício


1 min{6, 7} = 6, então o vértice 5 passa a ser permanente.

Iteração 1 2 3 4 5 6
3.o (7,2) (2,1) +∞ +∞
4.o (7,2) (6,4) +∞

Adilson Barros Problema de Caminho Mais Curto


Resolução

1.o Parte do Exercício


1 min{6, 7} = 6, então o vértice 5 passa a ser permanente.

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.

Adilson Barros Problema de Caminho Mais Curto


Resolução

1.o Parte do Exercício


1 min{6, 7} = 6, então o vértice 5 passa a ser permanente.

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

Adilson Barros Problema de Caminho Mais Curto


Resolução

1.o Parte do Exercício


1 min{6, 7} = 6, então o vértice 5 passa a ser permanente.

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

Adilson Barros Problema de Caminho Mais Curto


Resolução

1.o Parte do Exercício


1 min{6, 7} = 6, então o vértice 5 passa a ser permanente.

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)

Adilson Barros Problema de Caminho Mais Curto


Resolução
1.o Parte do Exercício

Adilson Barros Problema de Caminho Mais Curto


Resolução
1.o Parte do Exercício
1 min{7, 10} = 7, então o vértice 3 passa a ser permanente.

Adilson Barros Problema de Caminho Mais Curto


Resolução
1.o Parte do Exercício
1 min{7, 10} = 7, então o vértice 3 passa a ser permanente.

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)

Adilson Barros Problema de Caminho Mais Curto


Resolução
1.o Parte do Exercício
1 min{7, 10} = 7, então o vértice 3 passa a ser permanente.

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.

Adilson Barros Problema de Caminho Mais Curto


Resolução
1.o Parte do Exercício
1 min{7, 10} = 7, então o vértice 3 passa a ser permanente.

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

Adilson Barros Problema de Caminho Mais Curto


Resolução
1.o Parte do Exercício
1 min{7, 10} = 7, então o vértice 3 passa a ser permanente.

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

Adilson Barros Problema de Caminho Mais Curto


Resolução
1.o Parte do Exercício
1 min{7, 10} = 7, então o vértice 3 passa a ser permanente.

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

1.o Parte do Exercício


Iteração 1 2 3 4 5 6
1.o 0 +∞ +∞ +∞ +∞ +∞
2.o (2,1) +∞ (2,1) +∞ +∞
3.o (7,2) (2,1) +∞ +∞
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

2.o Parte do Exercício


1 Queremos que todas as cidades fiquem ligados

Ainda falta ligar as cidades 4 e 5.

Adilson Barros Problema de Caminho Mais Curto


Resolução

2.o Parte do Exercício


1 Vamos aplicar o Kruskal Ordenar as aresta que não pertence

ao caminho mais curto, de 1 à 6, de forma não decrescente


Aresta Capacidade
(1,4) 2
(5,3) 3
(2,4) 4
(5,4) 4
(5,6) 4
(3,4) 6

Adilson Barros Problema de Caminho Mais Curto


Resolução

2.o Parte do Exercício


1 Introduzir (1,4) na rede

Nova Lista
Aresta Capacidade
(5,3) 3
(2,4) 4
(5,4) 4
(5,6) 4
(3,4) 6

Adilson Barros Problema de Caminho Mais Curto


Resolução

2.o Parte do Exercício


1 Introduzir (5,3) na rede

Já é uma Árvore, solução ótima, e o custo é 8+5=13.

Adilson Barros Problema de Caminho Mais Curto


Problema Caminho Mais Curto

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.

Adilson Barros Problema de Caminho Mais Curto


Problema Caminho Mais Curto

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.

Adilson Barros Problema de Caminho Mais Curto


Problema Caminho Mais Curto

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.

Adilson Barros Problema de Caminho Mais Curto


Problema Caminho Mais Curto

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:

dijn = min{dikn−1 + dkjn−1 , dijn−1 }

Adilson Barros Problema de Caminho Mais Curto


Problema Caminho Mais Curto
Algoritmo Floyd-Warshall
1 Passo 1: Numera os vértices da rede de 1,2,...,n. Defina a
matriz D 0 = [dij ], onde

 0 se i =j
dij = cij se (i, j) ∈ A
+∞ se (i, j) ∈ /A

Adilson Barros Problema de Caminho Mais Curto


Problema Caminho Mais Curto
Algoritmo Floyd-Warshall
1 Passo 1: Numera os vértices da rede de 1,2,...,n. Defina a
matriz D 0 = [dij ], onde

 0 se i =j
dij = cij se (i, j) ∈ A
+∞ se (i, j) ∈ /A

2 Passo 2: Para cada k=1,2,...,n determinar sucessivamente os


elementos da matriz D k a partir dos elementos da matriz
D k−1 , utilizando a expressão:

dijk = min{dikk−1 + dkjk−1 , dijk−1 }

Onde dijk é o caminho entre os vértices i e j na k-enésima


matriz de iteração.
Adilson Barros Problema de Caminho Mais Curto
Problema Caminho Mais Curto
Algoritmo de Floyd-Exemplo

Adilson Barros Problema de Caminho Mais Curto


Problema Caminho Mais Curto
Algoritmo de Floyd-Exemplo

 
0 2 1 5
 2 0 4 ∞ 
1 A matriz D 0 = 
 1 4

0 3 
5 ∞ 3 0

Adilson Barros Problema de Caminho Mais Curto


Problema Caminho Mais Curto
Algoritmo de Floyd-Exemplo

 
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

Adilson Barros Problema de Caminho Mais Curto


Problema Caminho Mais Curto

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

Adilson Barros Problema de Caminho Mais Curto


Problema Caminho Mais Curto

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

Adilson Barros Problema de Caminho Mais Curto


Problema Caminho Mais Curto

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

Adilson Barros Problema de Caminho Mais Curto


Problema Caminho Mais Curto

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

Adilson Barros Problema de Caminho Mais Curto


Problema Caminho Mais Curto

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

Adilson Barros Problema de Caminho Mais Curto


Problema Caminho Mais Curto

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

Adilson Barros Problema de Caminho Mais Curto


Problema Caminho Mais Curto

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

Adilson Barros Problema de Caminho Mais Curto


Problema Caminho Mais Curto

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

Adilson Barros Problema de Caminho Mais Curto


Problema Caminho Mais Curto

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

Adilson Barros Problema de Caminho Mais Curto


Problema Caminho Mais Curto

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


Adilson Barros Problema de Caminho Mais Curto


Problema Caminho Mais Curto

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


Adilson Barros Problema de Caminho Mais Curto


Problema Caminho Mais Curto

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

Adilson Barros Problema de Caminho Mais Curto


Problema Caminho Mais Curto

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

Adilson Barros Problema de Caminho Mais Curto


Problema Caminho Mais Curto

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

Adilson Barros Problema de Caminho Mais Curto


Problema Caminho Mais Curto

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

Adilson Barros Problema de Caminho Mais Curto


Problema Caminho Mais Curto

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

Adilson Barros Problema de Caminho Mais Curto


Problema Caminho Mais Curto

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

Adilson Barros Problema de Caminho Mais Curto


Problema Caminho Mais Curto

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

Adilson Barros Problema de Caminho Mais Curto


Problema Caminho Mais Curto

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 =  

Adilson Barros Problema de Caminho Mais Curto


Problema Caminho Mais Curto

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

Adilson Barros Problema de Caminho Mais Curto


Problema Caminho Mais Curto

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

Adilson Barros Problema de Caminho Mais Curto


Problema Caminho Mais Curto

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

Adilson Barros Problema de Caminho Mais Curto


Problema Caminho Mais Curto

Algoritmo de Floyd-Exemplo
1 Passo 2: k=4, do nosso D 3 , vamos eliminar a quarta linha e a
quartacoluna 
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

Adilson Barros Problema de Caminho Mais Curto


Problema Caminho Mais Curto

Algoritmo de Floyd-Exemplo
 
0 2 1 4
2 0 3 6 
D4 = 


 1 3 0 3 
4 6 3 0

Adilson Barros Problema de Caminho Mais Curto


Problema Caminho Mais Curto

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

Adilson Barros Problema de Caminho Mais Curto


Problema Caminho Mais Curto

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.

Adilson Barros Problema de Caminho Mais Curto

Você também pode gostar