Problema de Fluxo Máximo

Documentos relacionados
Pesquisa Operacional

Faculdade de Engenharia Optimização. Prof. Doutor Engº Jorge Nhambiu

Problemas de Fluxo em Redes

Problema de Fluxo de Custo Mínimo

Faculdade de Engenharia Investigação Operacional. Prof. Doutor Engº Jorge Nhambiu

DISCIPLINA: Investigação Operacional ANO LECTIVO 2009/2010

Fluxo em Redes. > Fluxo em Redes Modelando com Fluxo Máximo 1/20

Estruturas de Dados Grafos

Problema de Designação. Fernando Nogueira Problema de Designação 1

Pesquisa Operacional. Teoria dos Grafos

INF 1010 Estruturas de Dados Avançadas

CURSO DE ENGENHARIA DE PRODUÇÃO PESQUISA OPERACIONAL FLUXO MÁXIMO

Pesquisa Operacional II. Professor João Soares de Mello

Otimização em Grafos

Estrutura de Dados e Algoritmos e Programação e Computadores II. Aula 10: Introdução aos Grafos

Problema do Caminho Mínimo

GRAFOS Aula 10 Fluxo em Redes Max Pereira

Grafos: Busca. Algoritmos e Estruturas de Dados 2. Graça Nunes

GRAFOS Aula 07 Algoritmos de Caminho Mínimo: Bellman-Ford / Floyd-Warshall Max Pereira

MÓDULO 2 - OTIMIZAÇÃO DE REDES

Fluxo em Redes: Ford-Fulkerson - Fluxo Máximo

Módulo 2 OTIMIZAÇÃO DE REDES

Conceitos Básicos da Teoria de Grafos

Teoria dos Grafos Aula 6

GRAFOS Aula 03 Representações de Grafos Max Pereira

Problema de Transporte (Redes) Fernando Nogueira Problema de Transporte 1

05 Grafos: ordenação topológica SCC0503 Algoritmos e Estruturas de Dados II

Otimização. Otimização em Redes. Paulo Henrique Ribeiro Gabriel Faculdade de Computação Universidade Federal de Uberlândia 2016/2

Departamento de Engenharia de Produção UFPR 22

Algoritmos polinomiais para o problema de Fluxo Máximo

Aula 03: Algoritmo Simplex (Parte 2)

PAA-DCC-UFAM. Grafos. Universidade Federal do Amazonas Departamento de Eletrônica e Computação

Grafos. Fabio Gagliardi Cozman. PMR2300 Escola Politécnica da Universidade de São Paulo

Otimização Combinatória - Parte 3

Teoria dos Grafos. Fluxo Máximo em Redes

Teoria dos Grafos Aula 26

Teoria dos Grafos. Teoria dos Grafos. Profa. Sheila Morais de Almeida DAINF-UTFPR-PG. agosto

Exemplo: Maximização de lucros em uma chocolateria que produz os seguintes produtos: (1) Chocolate Pyramide (2) Chocolate Pyramide Nuit

AULA 11 PROJETO E ANÁLISE DE ALGORITMOS. Conceitos básicos e representação de grafos Karina Valdivia Delgado

Volmir Eugênio Wilhelm Departamento de Engenharia de Produção UFPR 21

GRAFOS Aula 05 Algoritmos de percurso: busca em largura e profundidade Max Pereira

Definição e Conceitos Básicos

Backtracking. Túlio Toffolo Marco Antônio Carvalho BCC402 Aula 10 Algoritmos e Programação Avançada

Otimização em Grafos

Grafos representação e aplicações. Prof. Guilherme Tomaschewski Netto

Grafos: Busca. SCE-183 Algoritmos e Estruturas de Dados 2. Thiago A. S. Pardo Maria Cristina

Teoria dos Grafos Aula 1 - Introdução

Projeto e Análise de Algoritmos

Análise e Síntese de Algoritmos

76) 1.1 Sim 1.2 Não 1.3 Não

Programação Linear (PL) Solução algébrica - método simplex

CEFET/RJ Disciplina: Inteligência Artificial Professor: Eduardo Bezerra Lista de exercícios 01

Introdução à Teoria dos Grafos

CEFET/RJ Disciplina: Inteligência Artificial Professor: Eduardo Bezerra Lista de exercícios 01

Algoritmos de Fluxo Máximo

ESTRUTURAS DISCRETAS (INF 1631) GRAFOS. 1. O que é um grafo? Defina um grafo orientado. Defina um grafo não-orientado.

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

Algoritmos em Grafos COM11087-Tópicos Especiais em Programação I

Fluxo Máximo. Pedro Ribeiro 2014/2015 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Fluxo Máximo 2014/ / 28

Cap. 2 Conceitos Básicos em Teoria dos Grafos

Pesquisa Operacional

BCC 463 Otimização em Redes ou Fluxo em Redes. Prof. Gustavo Peixoto Silva Departamento de Computação Univ. Federal de Ouro Preto

MATEMÁTICA DISCRETA PARA ENGENHARIA DE COMPUTAÇÃO

Problema do Caminho Mais Curto. Problema do Caminho Mais Curto

TGR BCC Representação Computacional de Grafos. Prof. Ricardo José Pfitscher

a1q1: Seja ABCDEF GH um cubo de aresta unitária de E 3 e considere o espaço V 3 orientado pela base { CD, CB, CH}. Então podemos afirmar que: a)

Fábio Protti - UFF Loana T. Nogueira - UFF Sulamita Klein UFRJ

EXERCÍCIOS RESOLVIDOS - RETAS

Algoritmos e Estruturas de Dados

Grafos: algoritmos de busca

Aula 02: Algoritmo Simplex (Parte 1)

Grafos - Introdução. Pedro Ribeiro 2014/2015 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/ / 32

Transcrição:

Problema de Fluxo Máximo The Maximum Flow Problem Fernando Nogueira Fluxo Máximo 1

O Problema de Fluxo Máximo (The Maximum Flow Problem) Considere uma rede direcionada (dígrafo) conectada, com 2 nós especiais denominados Origem e Destino e ainda, associado a cada arco, uma distância não-negativa. O objetivo é encontrar o fluxo máximo na rede. Exemplos de Aplicações: 1)Maximizar o fluxo de uma rede de distribuição (suprimentos) de uma companhia a partir de suas fábricas (fornecedores) para os seus (suas) clientes (fábricas). 2)Maximizar o fluxo de óleo (água) através de um sistema de oleodutos (aquedutos). 3)Maximizar o fluxo de veículos através de uma rede de transporte. Fernando Nogueira Fluxo Máximo 2

Exemplo Maximizar o número de viagens para a rede do Parque Seervada de O para T, onde os valores dos arcos representam o fluxo máximo de cada arco. Uma solução viável é enviar 7 bondes, sendo: 5 usando a rota O B E T 1 usando a rota O B C E T e 1 usando a rota O B C E D T Fernando Nogueira Fluxo Máximo 3

A solução anterior é viável, porém não é a ótima. Uma vez que o Problema de Fluxo Máximo em uma Rede pode ser formulado como um Problema de Programação Linear, o algoritmo Simplex pode ser utilizado para obtenção da solução ótima. Entretanto, existe um algoritmo mais eficiente para a solução deste problema denominado Algoritmo do Caminho de Aumento (Augmenting Path Algorithm). O algoritmo do Caminho de Aumento é baseado em dois conceitos intuitivos: uma Rede Residual e um Caminho de Aumento (propriamente dito). Fernando Nogueira Fluxo Máximo 4

Rede Residual Os valores dos arcos da rede da esquerda representam as capacidades máximas e seus respectivos fluxos (capacidade, fluxo). Os valores dos arcos da rede da direita representam os resíduos, ou seja, a diferença entre a capacidade e o fluxo do arco. Fernando Nogueira Fluxo Máximo 5

Caminho de Aumento Um Caminho de Aumento é um caminho orientado (os arcos possuem sentidos) a partir da origem para o destino na Rede Residual tal que todo arco sobre este caminho possui resíduo estritamente positivo. O mínimo destes resíduos é chamado de Capacidade Residual do Caminho de Aumento, uma vez que este representa a quantidade de fluxo que pode viavelmente ser adicionado ao caminho todo. O caminho: O C E D T é um Caminho de Aumento com Capacidade Residual 1 (menor resíduo neste caminho). Fernando Nogueira Fluxo Máximo 6

Existem algumas versões do Algoritmo do Caminho de Aumento. A mais conhecida é o Algoritmo de Ford-Fulkerson. Algoritmo de Ford-Fulkerson s = origem, t = destino, P = caminho, f = fluxo total, f ij = fluxo do arco i para o arco j, c ij = capacidade de fluxo do arco i para o arco j. 1. Designar um fluxo inicial f ij (por exemplo, f ij = 0, para todos os arcos). Compute f. 2. Rotular o nó 1 (s) por. Marque os outros vértices como nãorotulados. Fernando Nogueira Fluxo Máximo 7

3. Encontrar um nó rotulado i que não tenha sido scanned. Scan i como: Para todo nó adjacente não-rotulado j, se c ij > f ij, computar ij = c ij f ij e 1j = min (, ) i > 1 e rotular j como um rótulo para frente (i +, j ); j ou se f ji >0, computar j = min ( i,f ji ) e rotular j como um para trás (i -, j ); Se não existir nenhum j, então SAI f. Pare. (f é o fluxo máximo). Fernando Nogueira Fluxo Máximo 8 rótulo 4. Repita o passo 3 até o nó destino (t) ser alcançado (isto fornece um fluxo sobre um Caminho de Aumento) Se é impossível alcançar o destino, então SAI f. Pare (f é o fluxo máximo). i ij se se i = 1

5. Determine o caminho P usando os rótulos. 6. Aumente o fluxo existente em P por t. Faça f = f + t. 7. Remover os rótulos dos nós 2, 3,..., t. Volte para o passo 3. Obs: dever-se utilizar BFS (Breadth First Search) que foi sugerido para ser utilizado neste algoritmo por Edmonds & Karp em 1972. A técnica BFS, neste algoritmo, consiste em, antes de scannear um nó i, scannear todos os nós que foram rotulados antes de i. O próximo exemplo mostra a execução deste algoritmo para o problema de maximizar o fluxo de bondes nas rodovias do Parque Seervada. O fluxo inicial adotado foi zero. Fernando Nogueira Fluxo Máximo 9

1. Fluxo inicial f = 0 2. Rotular O por. Marcar A, B, C, D, E, T não-rotulado. 3. Scan O Computar OA = 5-0 = 5. A = 5. Rotular A por (O +, 5). Computar OB = 7-0 = 7. B = 7. Rotular B por (O +, 7). Computar OC = 4-0 = 4. C = 4. Rotular C por (O +, 4). Fernando Nogueira Fluxo Máximo 10

4. Scan B Computar BD = 4-0 = 4. D = min( B, BD ) = 4. Rotular D por (B +, 4). Computar BE = 5-0 = 5. E = min( B, BE ) = 5. Rotular E por (B +, 5). Fernando Nogueira Fluxo Máximo 11

Scan D Computar DT = 9-0 = 9. T = min( D, DT ) = 4. Rotular T por (D +, 4). 5. Caminho: O B D T é um Caminho de Aumento. 6. T = 4. Aumentando o fluxo de T resulta em: f OB = f BD = f DT = 0 + 4 = 4. Outros fluxos continuam sem mudanças. Fluxo total f = 4. 7. Remover todos os rótulos sobre os vértices A,B,C,D,E,T e voltar para o passo 3. Fernando Nogueira Fluxo Máximo 12

3. Scan O Computar OA = 5-0 = 5. A = 5. Rotular A por (O +, 5). Computar OB = 7-4 = 3. B = 3. Rotular B por (O +, 3). Computar OC = 4-0 = 4. C = 4. Rotular C por (O +, 4). Fernando Nogueira Fluxo Máximo 13

4. Scan B Computar BD = saturado (não computar). Computar BE = 5-0 = 5. E = min( B, BE ) = 3. Rotular E por (B +, 3). Fernando Nogueira Fluxo Máximo 14

Scan E Computar ED = 1-0 = 1. D = min( E, ED ) = 1. Rotular D por (E +, 1). Computar ET = 6-0 = 6. T = min( E, ET ) = 3. Rotular T por (E +, 3). 5. Caminho: O B E T é um Caminho de Aumento. 6. T = 3. Aumentando o fluxo de T resulta em: f OB = 4 + 3 = 7, f BE = 0 + 3 = 3, f ET = 0 + 3 = 3. Outros fluxos continuam sem mudanças. Fluxo total f = 4 + 3 = 7. 7. Remover todos os rótulos sobre os vértices A,B,C,D,E,T e voltar para o passo 3. Fernando Nogueira Fluxo Máximo 15

3. Scan O Computar OA = 5-0 = 5. A = 5. Rotular A por (O +, 5). Computar OB = saturado (não computar) Computar OC = 4-0 = 4. C = 4. Rotular C por (O +, 4). Fernando Nogueira Fluxo Máximo 16

4. Scan A Computar AD = 3-0 = 3. D = min( A, AD ) = 3. Rotular D por (A +, 3). Computar AB = 1-0 = 1. B = min( A, AB ) = 1. Rotular B por (A +, 1). Fernando Nogueira Fluxo Máximo 17

Scan D Computar DT = 9-4 = 5. T = min( D, DT ) = 3. Rotular T por (D +, 3). Computar E = min( D, f ED ) = 1. Rotular E por (D -, 1). 5. Caminho: O A D T é um Caminho de Aumento. 6. T = 3. Aumentando o fluxo de T resulta em: f OA = 0 + 3 = 3, f AD = 0 + 3 = 3, f DT = 4 + 3 = 7. Outros fluxos continuam sem mudanças. Fluxo total f = 7 + 3 = 10. 7. Remover todos os rótulos sobre os vértices A,B,C,D,E,T e voltar para o passo 3. Fernando Nogueira Fluxo Máximo 18

3. Scan O Computar OA = 5-3 = 2. A = 2. Rotular A por (O +, 2). Computar OB = saturado (não computar) Computar OC = 4-0 = 4. C = 4. Rotular C por (O +, 4). Fernando Nogueira Fluxo Máximo 19

4. Scan A Computar AD = saturado (não computar). Computar AB = 1-0 = 1. B = min( A, AB ) = 1. Rotular B por (A +, 1). Fernando Nogueira Fluxo Máximo 20

Scan B Computar BE = 5-3 = 2. E = min( B, BE ) = 1. Rotular E por (B +, 1). Computar BD = saturado (não computar). Fernando Nogueira Fluxo Máximo 21

Scan E Computar ED = 1-0 = 1. D = min( E, ED ) = 1. Rotular D por (E +, 1). Computar ET = 6-3 = 3. T = min( E, ET ) = 1. Rotular T por (E +, 1). Fernando Nogueira Fluxo Máximo 22

5. Caminho: O A B E T é um Caminho de Aumento. 6. T = 1. Aumentando o fluxo de T resulta em: f OA = 3 + 1 = 4, f AB = 0 + 1 = 1, f BE = 3 + 1 = 4, f ET = 3 + 1 = 4. Outros fluxos continuam sem mudanças. Fluxo total f = 10 + 1 = 11. 7. Remover todos os rótulos sobre os vértices A,B,C,D,E,T e voltar para o passo 3. Fernando Nogueira Fluxo Máximo 23

3. Scan O Computar OA = 5-4 = 1. A = 1. Rotular A por (O +,1). Computar OB = saturado (não computar) Computar OC = 4-0 = 4. C = 4. Rotular C por (O +, 4). Fernando Nogueira Fluxo Máximo 24

4. Scan A Computar AD = saturado (não computar). Computar AB = saturado (não computar). Fernando Nogueira Fluxo Máximo 25

Scan C Computar CE = 4-0 = 4. E = min( C, CE ) = 4. Rotular E por (C +, 4). Computar B = min( C, f BC ) = 2. Rotular B por (C -, 2). Fernando Nogueira Fluxo Máximo 26

Scan E Computar ED = 1-0 = 1. D = min( E, ED ) = 1. Rotular D por (E +, 1). Computar ET = 6-4 = 2. T = min( E, ET ) = 2. Rotular T por (E +, 2). Fernando Nogueira Fluxo Máximo 27

5. Caminho: O C E T é um Caminho de Aumento. 6. T = 2. Aumentando o fluxo de T resulta em: f OC = 0 + 2 = 2, f CE = 0 + 2 = 2, f ET = 4 + 2 = 6. Outros fluxos continuam sem mudanças. Fluxo total f = 11 + 2 = 13. 7. Remover todos os rótulos sobre os vértices A,B,C,D,E,T e voltar para o passo 3. Fernando Nogueira Fluxo Máximo 28

3. Scan O Computar OA = 5-4 = 1. A = 1. Rotular A por (O +,1). Computar OB = saturado (não computar) Computar OC = 4-2 = 2. C = 2. Rotular C por (O +, 2). Fernando Nogueira Fluxo Máximo 29

4. Scan A Computar AD = saturado (não computar). Computar AB = saturado (não computar). Fernando Nogueira Fluxo Máximo 30

Scan C Computar CE = 4-2 = 2. E = min( C, CE ) = 2. Rotular E por (C +, 2). Computar B = min( C, f BC ) = 2. Rotular B por (C -, 2). Fernando Nogueira Fluxo Máximo 31

Scan E Computar ED = 1-0 = 1. D = min( E, ED ) = 1. Rotular D por (E +, 1). Computar ET = saturado (não computar). Fernando Nogueira Fluxo Máximo 32

Scan D Computar DT = 9-7 = 2. T = min( D, DT ) = 1. Rotular T por (D +, 1). Fernando Nogueira Fluxo Máximo 33

5. Caminho: O C E D T é um Caminho de Aumento. 6. T = 1. Aumentando o fluxo de T resulta em: f OC = 2 + 1 = 3, f CE = 2 + 1 = 3, f ED = 0 + 1 = 1, f DT = 7 + 1 = 8. Outros fluxos continuam sem mudanças. Fluxo total f = 12 + 1 = 14. 7. Remover todos os rótulos sobre os vértices A,B,C,D,E,T e voltar para o passo 3. Fernando Nogueira Fluxo Máximo 34

A priori, deveríamos retornar ao passo 3, porém todos os arcos que chegam em D estão saturados (não há como enviar mais nada para D) e portanto, não é possível enviar mais nada para T a partir de D. Uma vez que o arco que chega em T, a partir de E, também está saturado, não é possível melhorar a solução. Portanto, a solução acima é ótima. Fernando Nogueira Fluxo Máximo 35

A figura abaixo representa a solução ótima apenas com os fluxos (sem as capacidades). Fernando Nogueira Fluxo Máximo 36