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