Prof. Bruno Samways dos Santos bruno.samways@gmail.com Otimização em Redes Prof. Bruno Samways dos Santos bruno.samways@gmail.com
Introdução 1 – Problema de Fluxo Máximo 2 – Problema da Árvore de Expansão Mínima 3 – Problema do Caminho Mais Curto 4 – Problema de Fluxo de Custo Mínimo 5 – Redes PERT/CPM
Problema do Caminho Mais Curto O objetivo deste tipo de problema é encontrar o caminho mínimo entre dois nós As redes em que podem ser aplicadas os algoritmos deste problema envolvem tanto arcos direcionados como não direcionados (vamos trabalhar mais com direcionados) Os arcos podem representar distâncias, tempos ou custos por exemplo.
Algoritmos existentes Dijkstra Ford, Bellman e Moore Caminho mais confiável Floyd Dantzig K-caminhos mínimos
Algoritmo de Dijkstra Utiliza-se este algoritmo para determinar o caminho mínimo de um nó para outro nó ou para todos os outros nós da rede É um dos algoritmos mais utilizados por sua eficiência Sua utilização só é possível quando o valor (tempo, distância, custo) atribuído nos arcos são POSITIVOS
Passos 1. Identifique a origem da rede e rotule-a DEFINITIVAMENTE , fazendo para o nó: [o,-](0) Obs: [a, n](i) , onde: a = valor da soma dos arcos predecessores e, n = nó predecessor. 2. Identifique os arcos que saem do nó recém- rotulado e rotule TEMPORARIAMENTE os nós alcançados pelos arcos. 3. Identifique o nó TEMPORÁRIO com a menor soma dos arcos (de toda a rede) e rotule-o DEFINITIVAMENTE 4. Repita os passos 2 e 3 até não sobrarem mais nós com rótulos TEMPORÁRIOS ou até ter chegado ao destino escolhido
A D 4 8 6 2 3 O C T 12 6 1 4 5 12 B E 2
A D 4 8 6 2 3 O C T 12 [0,-](0) 6 1 4 5 12 B E 2
[8,O](1) A D 4 8 6 2 3 [12,O](1) O C T 12 [0,-](0) 6 1 4 5 12 B E 2 [5,O](1)
[8,O](1) A D 4 8 6 2 3 [12,O](1) O C T 12 [0,-](0) 6 1 4 5 12 B E 2 [5,O](1)
[8,O](1) A D 4 8 6 [9,B](2) 2 3 [12,O](1) O C T 12 [0,-](0) 6 1 4 5 12 B E 2 [5,O](1) [7,B](2)
[8,O](1) A D 4 8 6 [9,B](2) 2 3 [12,O](1) O C T 12 [0,-](0) 6 1 4 5 12 B E 2 [5,O](1) [7,B](2)
[8,O](1) A D 4 8 6 [9,B](2) 2 3 [12,O](1) O C T 12 [0,-](0) 6 [19,E](3) 1 4 5 12 B E 2 [5,O](1) [7,B](2)
[8,O](1) A D 4 8 6 [9,B](2) 2 3 [12,O](1) O C T 12 [0,-](0) 6 [19,E](3) 1 4 5 12 B E 2 [5,O](1) [7,B](2)
[8,O](1) [12,A](4) A D 4 [10,A](4) 8 6 [9,B](2) 2 3 [12,O](1) O C T 12 [0,-](0) 6 [19,E](3) 1 4 5 12 B E 2 [5,O](1) [7,B](2)
[8,O](1) [12,A](4) A D 4 [10,A](4) 8 6 [9,B](2) 2 3 [12,O](1) O C T 12 [0,-](0) 6 [19,E](3) 1 4 5 12 B E 2 [5,O](1) [7,B](2)
[12,B](5) [8,O](1) [12,A](4) A D 4 [10,A](4) 8 6 [9,B](2) 2 3 [12,O](1) O C T 12 [0,-](0) 6 [19,E](3) 1 4 5 12 B E 2 [5,O](1) [7,B](2)
[12,B](5) [8,O](1) [12,A](4) A D 4 [10,A](4) 8 6 [9,B](2) 2 3 [12,O](1) O C T 12 [0,-](0) 6 [19,E](3) 1 4 5 12 B E 2 [5,O](1) [7,B](2)
[12,B](5) [8,O](1) [12,A](4) A D 4 [10,A](4) 8 6 [9,B](2) 2 3 [12,O](1) [18,D](6) O C T 12 [0,-](0) 6 [19,E](3) 1 4 5 12 B E 2 [5,O](1) [7,B](2)
[12,B](5) [8,O](1) [12,A](4) A D 4 [10,A](4) 8 6 [9,B](2) 2 3 [12,O](1) [18,D](6) O C T 12 [0,-](0) 6 [19,E](3) 1 4 5 12 B E 2 [5,O](1) [7,B](2)
Qual é o menor caminho? Faz a rota inversa para descobrir!!! A D E B C 3 6 12 4 2 8 1 5 [0,-](0) [5,O](1) [8,O](1) [9,B](2) [7,B](2) [12,A](4) [12,B](5) [18,D](6)
[12,B](5) [8,O](1) [12,A](4) 4 A D 8 6 2 [9,B](2) 3 O 12 C T [0,-](0) 6 [18,D](6) 4 1 5 12 B E 2 [5,O](1) [7,B](2) O -> A -> D -> T = 8 + 4 + 6 = 18 …ou
[12,B](5) [8,O](1) [12,A](4) 4 A D 8 6 2 [9,B](2) 3 O 12 C T [0,-](0) 6 [18,D](6) 4 1 5 12 B E 2 [5,O](1) [7,B](2) O -> B -> C -> D -> T = 5 + 4 + 3 + 6 = 18