Problema do Caminho Mais Curto Problema do Caminho Mais

Transcrição

Problema do Caminho Mais Curto Problema do Caminho Mais
Problema do Caminho Mais Curto
" Podemos afectar pesos" aos arcos de um grafo,
por exemplo, para representar uma distância entre
cidades numa rede ferroviária:
Toronto
650
700
Chicago
600
Boston
200
New York
José Antº Oliveira
DPS – UMinho 2005
Complementos Investigação Operacional
Semana 2: Caminho mais curto
1
Problema do Caminho Mais Curto
Shortest Path Problems
Estes grafos ponderados podem ser usados para
modelar redes de computadores com tempos de
resposta, ou com custos de ligação.
Uma das questões mais interessantes que podemos
investigar com estes grafos é:
Qual é o caminho mais curto entre dois vértices no
grafo, ou seja, o caminho com a soma mínima de
pesos?
Isto corresponde à ligação mais rápida, ou à ligação
mais económica numa rede de computadores.
José Antº Oliveira
DPS – UMinho 2005
Complementos Investigação Operacional
Semana 2: Caminho mais curto
2
1
Problema do Caminho Mais Curto
Algoritmos:
–
–
Distância mais curta de um vé
vértice origem e todos
os outros vé
é
rtices
do
grafo
v
•
Dijkstra – custos não negativos; O(n 2)
•
Ford – custos gerais
(sem ciclos comprimento negativo)
•
Algoritmo de Partiç
Partição–
ão– custos gerais; O(nm)
(sem ciclos comprimento negativo)
Distância mais curta entre todos os pares
de vértices do grafo
•
Floyd – custos gerais; O(n 3)
(sem ciclos comprimento negativo)
José Antº Oliveira
DPS – UMinho 2005
Complementos Investigação Operacional
Semana 2: Caminho mais curto
3
Problema do Caminho Mais Curto
Aplicações:
–
Concepç
Concepção de redes de comunicaç
comunicações
–
Problemas de transporte
–
Problemas de distribuiç
distribuição
–
Substituiç
Substituição de equipamento
–
Método do caminho crí
crítico
–
Dimensão dos lotes de produç
produção
–
SubSub-problema de outros algoritmos
(carteiro chinês, caixeiro viajante)
José Antº Oliveira
DPS – UMinho 2005
Complementos Investigação Operacional
Semana 2: Caminho mais curto
4
2
Problema do Caminho Mais Curto
Substituição de equipamento:
cij
1
José Antº Oliveira
DPS – UMinho 2005
2
3
4
5
Complementos Investigação Operacional
Semana 2: Caminho mais curto
5
O Algoritmo de Dijkstra
O algoritmo de Dijkstra (rotulaç
(rotulação permanente – label
setting algorithm) é um procedimento iterativo que
determina o caminho mais curto entre um vé
vértice origem s
e todos os outros vé
é
rtices
do
grafo.
v
Associa um ró
rótulo a cada vé
vértice, que corresponde à
distância mais curta entre o vé
vértice e a origem s.
Os ró
rótulos são temporá
temporários, e em cada iteraç
iteração um rotú
rotúlo
transformatransforma-se em ró
rótulo permanente, (encontrada a
distância mais curta para esse vé
vértice).
Faz uso da propriedade de não existir custos negativos.
José Antº Oliveira
DPS – UMinho 2005
Complementos Investigação Operacional
Semana 2: Caminho mais curto
6
3
O Algoritmo de Dijkstra
Teorema: o algoritmo de Dijkstra
determina correctamente a distância mais
curta do vértice s para cada um dos
restantes vértices do grafo.
Prova:
X
Vértices com distância + curta
encontrada
José Antº Oliveira
DPS – UMinho 2005
S
X
vj
V1
Vn
vi
t
Complementos Investigação Operacional
Semana 2: Caminho mais curto
7
O Algoritmo de Dijkstra
Distância + curta de F a D
José Antº Oliveira
DPS – UMinho 2005
Complementos Investigação Operacional
Semana 2: Caminho mais curto
8
4
O Algoritmo de Dijkstra
José Antº Oliveira
DPS – UMinho 2005
Complementos Investigação Operacional
Semana 2: Caminho mais curto
9
O Algoritmo de Dijkstra
José Antº Oliveira
DPS – UMinho 2005
Complementos Investigação Operacional
Semana 2: Caminho mais curto
10
5
O Algoritmo de Dijkstra
José Antº Oliveira
DPS – UMinho 2005
Complementos Investigação Operacional
Semana 2: Caminho mais curto
11
O Algoritmo de Dijkstra
José Antº Oliveira
DPS – UMinho 2005
Complementos Investigação Operacional
Semana 2: Caminho mais curto
12
6
O Algoritmo de Dijkstra
José Antº Oliveira
DPS – UMinho 2005
Complementos Investigação Operacional
Semana 2: Caminho mais curto
13
O Algoritmo de Dijkstra
José Antº Oliveira
DPS – UMinho 2005
Complementos Investigação Operacional
Semana 2: Caminho mais curto
14
7
O Algoritmo de Dijkstra
José Antº Oliveira
DPS – UMinho 2005
Complementos Investigação Operacional
Semana 2: Caminho mais curto
15
O Algoritmo de Dijkstra
José Antº Oliveira
DPS – UMinho 2005
Complementos Investigação Operacional
Semana 2: Caminho mais curto
16
8
O Algoritmo de Dijkstra
José Antº Oliveira
DPS – UMinho 2005
Complementos Investigação Operacional
Semana 2: Caminho mais curto
17
O Algoritmo de Dijkstra
José Antº Oliveira
DPS – UMinho 2005
Complementos Investigação Operacional
Semana 2: Caminho mais curto
18
9
O Algoritmo de Dijkstra
José Antº Oliveira
DPS – UMinho 2005
Complementos Investigação Operacional
Semana 2: Caminho mais curto
19
O Algoritmo de Dijkstra
José Antº Oliveira
DPS – UMinho 2005
Complementos Investigação Operacional
Semana 2: Caminho mais curto
20
10
O Algoritmo de Dijkstra
José Antº Oliveira
DPS – UMinho 2005
Complementos Investigação Operacional
Semana 2: Caminho mais curto
21
O Algoritmo de Dijkstra
José Antº Oliveira
DPS – UMinho 2005
Complementos Investigação Operacional
Semana 2: Caminho mais curto
22
11
O Algoritmo de Ford
Modelos com custos negativos não podem ser
estudados pelo algoritmo de Dijkstra.
Modelo do caminho mais longo.
(caminho mais curto aplicado aos custos simé
simétricos)
Problema: apó
após a atribuiç
atribuição de uma distância pode ser
descoberto outro caminho mais curto.
Solução: necessá
necessário corrigir ró
rótulo e rere-avaliar
sucessores – (algoritmo de correcç
correcção de ró
rótulos – label
correcting algorithms)
José Antº Oliveira
DPS – UMinho 2005
Complementos Investigação Operacional
Semana 2: Caminho mais curto
23
O Algoritmo de Ford
José Antº Oliveira
DPS – UMinho 2005
Complementos Investigação Operacional
Semana 2: Caminho mais curto
24
12
O Algoritmo de Ford
José Antº Oliveira
DPS – UMinho 2005
Complementos Investigação Operacional
Semana 2: Caminho mais curto
25
O Algoritmo de Ford
José Antº Oliveira
DPS – UMinho 2005
Complementos Investigação Operacional
Semana 2: Caminho mais curto
26
13
O Algoritmo de Ford
José Antº Oliveira
DPS – UMinho 2005
Complementos Investigação Operacional
Semana 2: Caminho mais curto
27
O Algoritmo de Ford
José Antº Oliveira
DPS – UMinho 2005
Complementos Investigação Operacional
Semana 2: Caminho mais curto
28
14
O Algoritmo de Ford
José Antº Oliveira
DPS – UMinho 2005
Complementos Investigação Operacional
Semana 2: Caminho mais curto
29
O Algoritmo de Ford
José Antº Oliveira
DPS – UMinho 2005
Complementos Investigação Operacional
Semana 2: Caminho mais curto
30
15
O Algoritmo de Ford
José Antº Oliveira
DPS – UMinho 2005
Complementos Investigação Operacional
Semana 2: Caminho mais curto
31
O Algoritmo de Ford
José Antº Oliveira
DPS – UMinho 2005
Complementos Investigação Operacional
Semana 2: Caminho mais curto
32
16
O Algoritmo de Ford
José Antº Oliveira
DPS – UMinho 2005
Complementos Investigação Operacional
Semana 2: Caminho mais curto
33
O Algoritmo de Ford
José Antº Oliveira
DPS – UMinho 2005
Complementos Investigação Operacional
Semana 2: Caminho mais curto
34
17
O Algoritmo de Ford
v1
5
2
0
s
4
v2
-2
t
-2
5
3
1
v3
José Antº Oliveira
DPS – UMinho 2005
Complementos Investigação Operacional
Semana 2: Caminho mais curto
35
O Algoritmo de Partição
No algoritmo de Ford, um vé
vértice pode ser analisado mais
do que uma vez. -> Não é possí
possível definir a complexidade
polinomial do algoritmo. A prá
prática revela um comportamento
competitivo.
Uma forma eficiente de “manusear” os vértices do
conjunto X consiste em particionar a lista em dois
subconjuntos. Este procedimento estabelece um
limite para o número de iterações.
Complexidade: Polinomial O(mn)
José Antº Oliveira
DPS – UMinho 2005
Complementos Investigação Operacional
Semana 2: Caminho mais curto
36
18
O Algoritmo de Partição
José Antº Oliveira
DPS – UMinho 2005
Complementos Investigação Operacional
Semana 2: Caminho mais curto
37
O Algoritmo de Partição
José Antº Oliveira
DPS – UMinho 2005
Complementos Investigação Operacional
Semana 2: Caminho mais curto
38
19

Documentos relacionados

Caminho mais curto a partir de um nó Algoritmos de Dijkstra e

Caminho mais curto a partir de um nó Algoritmos de Dijkstra e if v .d > u.d + w (u, v ) v .d = u.d + w (u, v ) v .π = u Ao inı́cio, o atributo v .d = ∞ para todos os nós excepto para o nó de partida s, em que s.d = 0. Initialize-Single-Source(G , s) for eac...

Leia mais