Problema do Fluxo de Custo Mínimo Algoritmos Algoritmo do ciclo negativo Algoritmo CICLO NEGATIVO; begin Estabelecer um fluxo admissível x na rede; while G(x) possuir um ciclo de custo negativo do begin usar um algoritmo para identificar um ciclo de custo negativo C; seja d : = min { rij : (i, j) C }; aumentar d unidades de fluxo no ciclo C e actualizar G(x); end; end; Algoritmo de Klein 2 Exemplo 0 2 10, $4 0 4 30, $7 25 1 25, $5 20, $2 20, $6 3 0 25, $2 20, $1 5 -25 3 Fluxo admissível Podemos considerar o seguinte 30,25 fluxo admissível. 25 1 0 2 0 10,10 4 25,15 20,10 20,20 20,0 3 0 25,5 5 -25 O fluxo admissível pode ser determinado através da resolução de um problema de fluxo máximo. 4 Continuando ... 5 Obtemos a seguinte rede residual 5, $4 25, $7 1 2 4 5, $-4 5, $-7 20, $2 25, $5 15, $1 5, $-1 20, $-6 3 5, $2 5 20, $-2 Na qual já não existe nenhum ciclo de custo negativo. 6 Algoritmo dos sucessivos CMC begin encontrar um pseudo-fluxo dual admissível (x, p) inicial while existir um nodo com excesso positivo do begin S = {i : e(i) > 0}; T = {j : e(j) < 0}; seleccionar um nodo s S e um nodo t T tais que exista um caminho de s para t; determinar as distâncias d(j) do CMC do nodo s para todos os outros nodos em G(x) relativamente a cp; actualizar pj = pj –d(j) ; enviar fluxo através de um caminho mais curto de s para t com custos reduzidos nulos; actualizar a rede residual e os conjuntos S e T; end Algoritmo de Jewel, end Iri, Busaker & Gowen 7 Exemplo 5,0 10,$4 2 -2,0 Rede com 4 ofertas/procuras 30,$7 capacidades e 20,$2 23,0 1 20,$1 25,$5 20,$6 25,$2 3 -7,0 5 -19,0 custos Potenciais de nodos a vermelho 8