problema do caminho mÍnimo: dijkstra...•compreender os problemas de caminho mínimo e suas...

53
PESQUISA OPERACIONAL II Prof. Dr. Daniel Caetano 2019 - 1 PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA

Upload: others

Post on 01-Oct-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

PESQUISA OPERACIONAL II

Prof. Dr. Daniel Caetano

2019 - 1

PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA

Page 2: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

Objetivos

• Compreender os problemas de caminho mínimo e suas aplicações

• Compreender a modelagem de problemas de caminho mínimo

• Capacitar para aplicação do algoritmo de Dijkstra (Label Correcting)

• Atividade Aula 4 – SAVA!

Page 4: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

RETOMANDO:

ÁRVORES GERADORAS DE CUSTO MÍNIMO

Page 5: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

O que é Árvore Geradora Mínima? • É uma árvore (sub-grafo onde não há ciclos)

• Que preserva todos os nós originais

• Cuja soma dos arcos tem valor mínimo

1

2

3 4

5

6

5

7

12

8

2

12

8

10 5 1

2

3 4

5

6

5

8

2

8

5

Page 6: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

Comparando Prim x Kruskal • Complexidade Computacional de Prim

• Complexidade do algoritmo de Kruskal

• Usamos Prim

– Quando o grafo é todo conexo

– Quando a densidade é alta (muitos arcos por nó)

• Usamos Kruskal

– Quando o grafo não é todo conexo

– Quando a densidade é baixa (poucos arcos)

𝐶 = 𝑂(𝑣2)

𝐶 = 𝑂(𝑎. log 𝑣)

Page 7: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

PROBLEMAS DE CAMINHO MÍNIMO

Page 8: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

Problemas de Caminho Mínimo • Problema de Fluxo em Rede

– Encontrar caminho para deslocamento

• Especificamente...

– Encontrar um caminho de menor “custo”

• O que pode ser o custo?

– “Dinheiro” (custo financeiro)

– Distância

– Tempo

– ...

Page 9: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

Problemas de Caminho Mínimo • Exemplos?

– Melhor caminho para uma entrega

• Mais rápido

• Mais barato

– Melhor caminho em uma rede de comunicação

• Mais rápido – menor “lag”

– Identificar áreas de atuação de emergência

• Mais rápido - pontos atendidos dentro de um tempo

Page 10: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

O Problema do Motorista de Taxi • Características Consideradas

– Um funcionário de uma empresa de taxi ganha um valor fixo por viagem

• Quanto mais viagens ele fizer, mais ele ganha

– Ele não escolhe as viagens que faz

– Velocidade constante e fixa

– Sem informações sobre o próximo passageiro

– Não tem informações sobre o trânsito

• Como maximizar os ganhos?

– Vejamos um exemplo

Page 11: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

Problema do Motorista de Taxi • Objetivo

– Passageiro de O a D pelo caminho mais curto

Page 12: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

Problema do Motorista de Taxi • Objetivo

– Passageiro de O a D pelo caminho mais curto

Page 13: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

MODELAGEM MATEMÁTICA

Page 14: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

Modelagem Matemática • A modelagem é tradicional

min 𝑐𝑖𝑗𝑥𝑖𝑗𝑖𝑗∈𝐸

𝑥𝑖𝑗𝑖𝑗∈𝐸

− 𝑥𝑗𝑘𝑗𝑘∈𝐸

= 𝐵 ∀𝑗 ∈ 𝑆

𝑥𝑖𝑗 ∈ 0, 1 ∀𝑖𝑗 ∈ 𝐸

Sujeito a:

B= -1 para j = O B= 1 para j = D B = 0 para os demais nós

Page 15: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

Algoritmos de Caminho Mínimo

• Existem vários

• Genéricos

– Network Simplex

– Out-of-Kilter

• Específicos

– Label Setting

– Dijkstra (Label Correcting)

– Moore etc.

Page 16: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

ALGORITMO DE DIJKSTRA

Page 17: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

Algoritmo de Dijkstra

• Também conhecido como Label Correcting

• Funciona para redes direcionadas ou não

– Em geral trabalhamos com direções

• Quando o grafo não é direcionado...

• ...criamos arcos em ambas as direções

1 2 12

1 2

12

12

Page 18: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

Label Correcting

• Lida com redes com ciclos

• Complexidade no pior caso

𝐶 = 𝑂(𝑎 + 𝑣. log 𝑣)

Page 19: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

Label Correcting • Etiquetas com 3 posições: • Lógica:

a) Marcar o nó Origem com antecessor O (ele mesmo), distância 0 e necessidade de cálculo.

b) Escolha o nó com necessidade de cálculo com menor distância acumulada. Esse é o nó atual.

c) Calcule a distância do nó atual para todos os descendentes, preenchendo a etiqueta dos que estão com a etiqueta vazia ou quando o caminho atual for amis curto que o registrado na etiqueta. Cada nó preenchido ou alterado deve ser marcado para cálculo.

d) Marque que o nó atual não precisa mais de cálculo. e) Voltar para b) até que nenhum nó esteja marcado

para cálculo.

Nó Antecessor

Distância Acumulada

Necessita Cálculo?

Page 20: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

Exemplo Label Correcting

1

2

3 4

5

6

5

7

12

8

2 3

12

8

Page 21: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

Label Correcting

O

2

3

4

5

6

D

5

7

12

10

8

15

4

4 16

12

14

5

Page 22: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

Label Correcting

O

2

3

4

5

6

D

5

7

12

10

8

15

4

4 16

12

14

5

0 Sim

0

Page 23: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

Label Correcting

O

2

3

4

5

6

D

5

7

12

10

8

15

4

4 16

12

14

5

0 Sim

0

Page 24: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

Label Correcting

O

2

3

4

5

6

D

5

7

12

10

8

15

4

4 16

12

14

5

0 -

0 5

Sim

0

7 Sim

0

Page 25: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

Label Correcting

O

2

3

4

5

6

D

5

7

12

10

8

15

4

4 16

12

14

5

0 -

0 5

Sim

0

7 Sim

0

Page 26: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

Label Correcting

O

2

3

4

5

6

D

5

7

12

10

8

15

4

4 16

12

14

5

0 -

0 5 -

0 17 Sim

2

7 Sim

0

Page 27: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

Label Correcting

O

2

3

4

5

6

D

5

7

12

10

8

15

4

4 16

12

14

5

0 -

0 5 -

0 17 Sim

2

7 Sim

0

Page 28: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

Label Correcting

O

2

3

4

5

6

D

5

7

12

10

8

15

4

4 16

12

14

5

0 -

0 5 -

0 17 Sim

2

15 Sim

3

22 Sim

3 7 -

0

Page 29: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

Label Correcting

O

2

3

4

5

6

D

5

7

12

10

8

15

4

4 16

12

14

5

0 -

0 5 -

0 17 Sim

2

15 Sim

3

22 Sim

3 7 -

0

Page 30: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

Label Correcting

O

2

3

4

5

6

D

5

7

12

10

8

15

4

4 16

12

14

5

0 -

0 5 -

0 17 Sim

2

29 Sim

4

15 -

3

20 Sim

4 7 -

0

Page 31: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

Label Correcting

O

2

3

4

5

6

D

5

7

12

10

8

15

4

4 16

12

14

5

0 -

0 5 -

0 17 Sim

2

29 Sim

4

15 -

3

20 Sim

4 7 -

0

Page 32: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

Label Correcting

O

2

3

4

5

6

D

5

7

12

10

8

15

4

4 16

12

14

5

0 -

0 5 -

0 17

-

2

29 Sim

4

15 -

3

20 Sim

4 7 -

0

Page 33: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

Label Correcting

O

2

3

4

5

6

D

5

7

12

10

8

15

4

4 16

12

14

5

0 -

0 5 -

0 17

-

2

29 Sim

4

15 -

3

20 Sim

4 7 -

0

Page 34: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

Label Correcting

O

2

3

4

5

6

D

5

7

12

10

8

15

4

4 16

12

14

5

0 -

0 5 -

0 17

-

2

29 Sim

4

15 -

3

20 -

4 7 -

0

Page 35: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

Label Correcting

O

2

3

4

5

6

D

5

7

12

10

8

15

4

4 16

12

14

5

0 -

0 5 -

0 17

-

2

29 Sim

4

15 -

3

20 -

4 7 -

0

Page 36: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

Label Correcting

O

2

3

4

5

6

D

5

7

12

10

8

15

4

4 16

12

14

5

0 -

0 5 -

0 17

-

2

29 -

4

15 -

3

20 -

4 7 -

0

Page 37: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

Label Correcting

O

2

3

4

5

6

D

5

7

12

10

8

15

4

4 16

12

14

5

0 -

0 5 -

0 17

-

2

29 -

4

15 -

3

20 -

4 7 -

0

Page 38: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

EXERCÍCIOS

Page 39: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

Exercício

1. Aplique o Algoritmo de Dijkstra (1 a 3)

1 2

3 4

5 6

60

51

32

18 40

51

29

34

46

0

7

31

25

21

Page 40: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

Exercício

1. Aplique o Algoritmo de Dijkstra (1 a 3)

1 2

3 4

5 6

60

51

32

18 40

51

29

34

46

0

7

31

25

21

- - 0

Sim

1

-

- -

-

-

Page 41: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

Exercício

1. Aplique o Algoritmo de Dijkstra (1 a 3)

1 2

3 4

5 6

60

51

32

18 40

51

29

34

46

0

7

31

25

21

- 32 Sim

1 0 -

1

- 21 Sim

1

-

-

-

Page 42: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

Exercício

1. Aplique o Algoritmo de Dijkstra (1 a 3)

1 2

3 4

5 6

60

51

32

18 40

51

29

34

46

0

7

31

25

21

- 32 Sim

1 0 -

1

- 21 -

1 46 Sim

7

- 67 Sim

7

Page 43: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

Exercício

1. Aplique o Algoritmo de Dijkstra (1 a 3)

1 2

3 4

5 6

60

51

32

18 40

51

29

34

46

0

7

31

25

21

61 Sim

0 32

-

1 0 -

1

92 Sim

0

21 -

1 46 Sim

7

- 67 Sim

7

Page 44: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

Exercício

1. Aplique o Algoritmo de Dijkstra (1 a 3)

1 2

3 4

5 6

60

51

32

18 40

51

29

34

46

0

7

31

25

21

61 Sim

0 32

-

1 0 -

1

92 Sim

0

21 -

1 46

-

7

- 67 Sim

7

Page 45: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

Exercício

1. Aplique o Algoritmo de Dijkstra (1 a 3)

1 2

3 4

5 6

60

51

32

18 40

51

29

34

46

0

7

31

25

21

61 -

0 32

-

1 0 -

1

92 Sim

0

21 -

1 46

-

7

- 67 Sim

7

Page 46: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

Exercício

1. Aplique o Algoritmo de Dijkstra (1 a 3)

1 2

3 4

5 6

60

51

32

18 40

51

29

34

46

0

7

31

25

21

61 -

0 32

-

1 0 -

1

92 Sim

0

21 -

1 46

-

7

101

Sim

4

67 -

7

Page 47: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

Exercício

1. Aplique o Algoritmo de Dijkstra (1 a 3)

1 2

3 4

5 6

60

51

32

18 40

51

29

34

46

0

7

31

25

21

61 -

0 32

-

1 0 -

1

92 -

0

21 -

1 46

-

7

101

Sim

4

67 -

7

Page 48: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

Exercício

1. Aplique o Algoritmo de Dijkstra (1 a 3)

1 2

3 4

5 6

60

51

32

18 40

51

29

34

46

0

7

31

25

21

61 -

0 32

-

1 0 -

1

92 -

0

21 -

1 46

-

7

101

-

4

67 -

7

Page 49: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

Exercício

1. Aplique o Algoritmo de Dijkstra (1 a 3)

1 2

3 4

5 6

60

51

32

18 40

51

29

34

46

0

7

31

25

21

61 -

0 32

-

1 0 -

1

92 -

0

21 -

1 46

-

7

101

-

4

67 -

7

Page 50: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

Exercício (para entrega!)

2. Aplique o Algoritmo de Dijkstra (1 a 9)

1

2

3

4

5

6

8

4

15

4

11

2

1

10

15 7

8

9

2

12

2

9

10

0 Sim

1

Page 51: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

CONCLUSÕES

Page 52: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

Resumo

• Caminho Mínimo: Modelagem Matemática

• Algoritmo de Dijkstra: rápido!

• Calcular todos os caminhos para uma origem!

• TAREFA: Exercícios Aula 4

• Outros problemas de fluxo em rede?

– O clássico Problema do Transporte

Page 53: PROBLEMA DO CAMINHO MÍNIMO: DIJKSTRA...•Compreender os problemas de caminho mínimo e suas aplicações •Compreender a modelagem de problemas de caminho mínimo •Capacitar para

PERGUNTAS?