Problemas de Fluxo Máximo

Slides:



Advertisements
Apresentações semelhantes
Algoritmos de Caminho Mínimo em Grafos
Advertisements

Árvores CC/EC/Mestrado Teoria dos Grafos ‏ 1.
Algoritmos em Grafos.
Algoritmos em Grafos (Parte 2)
Prof. M.Sc. Fábio Francisco da Costa Fontes Maio
Fluxo em Redes Prof. Ricardo R. Santos.
DETERMINANTES de Ordem n (n > 3).
Copiado do site Departamento Matemática da Universidade de Aveiron
O Planejamento Social de um Galinha
Funções 1. Interpretação de Gráficos
Celso C. Ribeiro Caroline T. Rocha
Análise e Síntese de Algoritmos
Pesquisa em profundidade
Problemas de fluxo numa rede
INVESTIGAÇÃO OPERACIONAL
INVESTIGAÇÃO OPERACIONAL
A10-1 Definição: Um ponto x*  W diz-se um mínimo relativo ou ponto
1 Domínios Finitos A eficiência das programas em domínios finitos (incluindo booleanos) podem ainda ser melhoradas pelo uso de Algoritmos de Propagação.
Capítulo 3 - Aplicações das Derivadas
Problemas de Forma Não-padrão
Fonte, Sumidouro, Capacidade e Fluxo
SISTEMAS DE EQUAÇÕES.
INEQUAÇÃO → Para aprendermos inequação, deveremos conhecer os símbolos das desigualdades. Uma sentença matemática em que usa o símbolo ≠ (diferente de)
Capacitores 1. Capacitores ou Condensadores
Carolina Fonseca Neumar Ribeiro
O que você deve saber sobre
SISTEMAS LINEARES I Prof. Marlon.
Polinômios Prof. Marlon.
EQUAÇÕES POLINOMIAIS Prof. Marlon.
SISTEMAS LINEARES II Prof. Marlon.
Progressão Aritmética (PA) Professor : Eduardo Jatobá
TENSÕES E CORRENTES EM CIRCUITOS TRIFÁSICOS BALANCEADOS Sistemas de potência são alimentados por geradores trifásicos. De maneira ideal, os geradores suprem.
Explorando os quadrados mágicos (3x3)
Informática Teórica Engenharia da Computação
Sistema de Equação de 1° grau com duas incógnitas.
Análise do Lugar das Raízes
IVAN SANTOS. CAPACITORES OU CONDENSADORES CAPACITORES OU CONDENSADORES Capacitores ou condensadores são elementos elétricos capazes de armazenar carga.
Teoria dos Grafos Caminhos e Noção de Grafos com pesos
Cálculo Numérico / Métodos Numéricos
Cálculo Numérico / Métodos Numéricos
Programação Linear Rosa Canelas Janeiro 2008.
Operações com grafos União Exemplo
O problema do emparelhamento máximo
Problemas de fluxo em grafos 1º semestre/2012 Prof. André Renato
Aula Teórica 2 Difusividade e Fluxo Difusivo.
PROBABILIDADE.
1. Noção de Função Considere os seguintes conjuntos A e B f C
SISTEMAS LINEARES Prof. Moacir.
Espaços e Subespaços Vetoriais
Polinômios e equações algébricas
Capitulo 5: Simplex Voltando ao exemplo da confecção da D. Maria, e modificando um pouco os valores apenas para facilitar nossos cálculos e o entendimento,
Capitulo 8: Dualidade O que é um modelo Dual?
CONJUNTO DOS NÚMEROS INTEIROS

Problema do Fluxo Máximo
Análise e Síntese de Algoritmos
Exercícios de Fluxo em Redes
10ª Aula 20 de Outubro Entrada e bem-estar 4.4. Entrada e saída em mercados concorrenciais.
Algoritmos em Grafos Celso C. Ribeiro Caroline T. Rocha.
Potenciação an = a . a . a a (a ≠ 0) n fatores onde: a: base
Algoritmo de Transportes Objecto de Aprendizagem Manuel Pina MarquesDEIG
Calculo II Prof Me Carlos Bifi
Treinamento Quando são criadas, as RNA ainda não são capazes de resolver os problemas, elas precisam ser treinadas, ensinadas, do mesmo jeito que as pessoas,
TEORIA DOS NÚMEROS Aula 2 – Princípio da Indução Finita
Estática Estática Histórico
Aula 8: Completeza em R, Supremos e Ínfimos
1 UNIVERSIDADE CATÓLICA DE PELOTAS Escola de Informática Programa de Pós-Graduação em Informática Mestrado em Ciência da Computação Algoritmos de Fluxo.
Álgebra Linear Prof(a):Janaína F. Lacerda A matemática não precisa ser uma tortura.
Base de Dados Autor: Skyup Informática. Atividade – Base de Dados Base de dados é uma atividade em Moodle para o desenvolvimento colaborativo de um banco.
Comportamento Assintótico
Transcrição da apresentação:

Problemas de Fluxo Máximo Objecto de Aprendizagem 2010

Problemas de Fluxo Máximo Definição: Dada uma rede, com um nó de entrada e um nó de saída, com capacidades associadas a cada ramo, pretende-se saber qual é o fluxo máximo, de um certo bem, que se pode enviar da entrada para a saída. Modelo: xij – fluxo que passa no ramo (i, j), de i para j cij – capacidade do ramo (i, j) Nó 1 – nó de entrada Nó t – nó de saída Sujeito a: (equilíbrio de fluxos nos nós) (restrições de capacidade)

Exemplo de um problema de Fluxo Máximo Nó de entrada = nó 1 Nó de saída = nó 4 Capacidades totais dos ramos: Ramo 1  2 = 9 Ramo 1  3 = 8 2 Ramo 2  3 = 3 Ramo 2  4 = 7 (9) (7) Ramo 3  4 = 9 1 (3) 4 (8) (9) 3

Algoritmo de fluxo máximo 1. Injectar um fluxo nulo (f = 0) no nó de entrada; 2. Fixar as capacidades utilizadas dos ramos em 0 (zero); 3. Seleccionar um caminho não saturado (caminho com capacidade  0) entre o nó de entrada e o nó de saída. Se não existir nenhum, foi encontrada a solução óptima;. 4. Somar ao fluxo de entrada um fluxo igual à capacidade do caminho seleccionado; 5. Alterar as capacidades utilizadas dos ramos do caminho seleccionado, somando-lhes o fluxo injectado; Capacidade total do ramo Capacidade utilizada do ramo Caminho 1: capacidade = 7 6. Voltar ao ponto 3. 2 Caminho 2: capacidade = 3 (0, 7) (7) Vamos, por exemplo, seleccionar o caminho não saturado 1 3  4, com capacidade disponível = min (8; 9) = 8 (0, 9) (9) Caminho: conjunto de ramos unindo o nó de entrada ao nó de saída, e que não passa duas vezes pelo mesmo nó. f = 0+8 = 8 f = 0 1 (3) (0, 3) 4 f = 0+8 = 8 f = 0 Capacidade de um caminho: menor capacidade disponível de entre todos os ramos que fazem parte do caminho. (0, 8) (8, 8) (8) (0, 9) (8, 9) (9) 3 Caminho 3: capacidade = 8 Caminho saturado: caminho com capacidade disponível nula

Algoritmo de fluxo máximo (cont.) 3. Seleccionar um caminho não saturado (caminho com capacidade  0) entre o nó de entrada e o nó de saída. Se não existir nenhum, foi encontrada a solução óptima;. 4. Somar ao fluxo de entrada um fluxo igual à capacidade do caminho seleccionado; 5. Alterar as capacidades utilizadas dos ramos do caminho seleccionado, somando-lhes o fluxo injectado; 6. Voltar ao ponto 3. Vamos seleccionar o caminho não saturado 1 2  3  4, com capacidade disponível = min (9; 7) = 7 2 (7, 9) (0, 9) (0, 7) (7, 7) f = 8+7 = 15 f = 8 1 (0, 3) 4 f = 8+7= 15 f = 8 (8, 8) (8, 9) 3

Algoritmo de fluxo máximo (cont.) 3. Seleccionar um caminho não saturado (caminho com capacidade  0) entre o nó de entrada e o nó de saída. Se não existir nenhum, foi encontrada a solução óptima;. 4. Somar ao fluxo de entrada um fluxo igual à capacidade do caminho seleccionado; 5. Alterar as capacidades utilizadas dos ramos do caminho seleccionado, somando-lhes o fluxo injectado; 6. Voltar ao ponto 3. Vamos, seleccionar o caminho não saturado 1 2  3  4 Não existe nenhum caminho não saturado. Logo, foi encontrada a solução óptima 2 Capacidades disponíveis dos ramos deste caminho: (8, 9) (7, 9) (7, 7) ramo 1  2: capacidade = 9 – 7 = 2 ramo 2  3: capacidade = 3 – 0 = 3 ramo 3  4: capacidade = 9 – 8 = 1 f = 15+1 = 16 f = 15 f = 16 1 (1, 3) (0, 3) 4 f = 16 f =15+1=16 f = 15 Capacidade disponível do caminho 1 2 3  4 = min (2; 3; 1) =1 (8, 8) (9, 9) (8, 9) 3

Algoritmo de fluxo máximo (cont.) Vamos agora saturar os caminhos por uma ordem diferente. O que acontecerá? 1. Injectar um fluxo nulo (f = 0) no nó de entrada; 2. Fixar as capacidades utilizadas dos ramos em 0 (zero); 3. Seleccionar um caminho não saturado (caminho com capacidade  0) entre o nó de entrada e o nó de saída. Se não existir nenhum, foi encontrada a solução óptima;. 4. Somar ao fluxo de entrada um fluxo igual à capacidade do caminho seleccionado; 5. Alterar as capacidades utilizadas dos ramos do caminho seleccionado, somando-lhes o fluxo injectado; 6. Voltar ao ponto 3. 2 (0, 7) (7) (3, 9) (0, 9) (9) f = 0+3 = 3 f = 0 1 (0, 3) (3, 3) (3) 4 f = 0+3 = 3 f = 0 Vamos seleccionar o caminho não saturado 1 2  3  4, com capacidade disponível = min (9; 3; 9) = 3 (0, 8) (8) (0, 9) (3, 9) (9) 3

Algoritmo de fluxo máximo (cont.) 3. Seleccionar um caminho não saturado (caminho com capacidade  0) entre o nó de entrada e o nó de saída. Se não existir nenhum, foi encontrada a solução óptima;. 4. Somar ao fluxo de entrada um fluxo igual à capacidade do caminho seleccionado; 5. Alterar as capacidades utilizadas dos ramos do caminho seleccionado, somando-lhes o fluxo injectado; 6. Voltar ao ponto 3. Vamos seleccionar, por exemplo, o caminho não saturado 1 2  4 2 (6, 7) (0, 7) (7) (0, 9) (9, 9) (3, 9) (9) Capacidades disponíveis dos ramos deste caminho: ramo 1  2: capacidade = 9 – 3 = 6 ramo 2  4: capacidade = 7 – 0 = 7 f = 3+6 = 9 f = 3 1 (3, 3) (3) (0, 3) 4 f = 3+6= 9 f = 3 Capacidade disponível do caminho 1 2 4 = min (6; 7) = 6 (0, 8) (8) (3, 9) (0, 9) (9) 3

Algoritmo de fluxo máximo (cont.) 3. Seleccionar um caminho não saturado (caminho com capacidade  0) entre o nó de entrada e o nó de saída. Se não existir nenhum, foi encontrada a solução óptima;. Aparentemente não há nenhum caminho não saturado, mas o fluxo máximo agora obtido (f = 15) é menor do que no caso anterior (f = 16). Como é que isto é possível , já que o algoritmo é de optimização? 2 (6, 7) (0, 7) (7) (0, 9) (9, 9) (3, 9) (9) f = 15 1 (3) (0, 3) (3, 3) 4 f =15 f = 9 (6, 8) (0, 8) (8) (9, 9) (0, 9) (3, 9) (9) 3

Algoritmo de fluxo máximo (cont.) De facto, o exemplo anterior não está completamente resolvido (até à optimalidade) porque existe ainda um caminho não saturado. Para se encontrar esse caminho não saturado é necessário considerar o conceito de “fluxo negativo", isto é, fluxo que atravessa os ramos no sentido contrário à sua orientação. Uma das restrições apresentadas no modelo do problema de fluxo máximo impunha que todos os fluxos fossem positivos ou nulos (xij  0). E de facto, na solução final, tal terá sempre que acontecer. No entanto, essa solução final obtém-se pela adição dos vários fluxos que vamos injectando na rede. Alguns desses fluxos poderão atravessar algum ramo no sentido contrário ao indicado, devendo nesse caso ser contabilizados como negativos. O resultado final (soma de todos os fluxos que foram injectados nesse ramo) é que terá que ser positivo ou nulo. No fundo, um “fluxo negativo" mais não é do que deixar de fazer passar fluxo por esse ramo. Observando a rede deste ponto de vista, verifica-se que o caminho 1  3  2  4 não está saturado, pois: 2  o ramo 1  3 tem uma capacidade de 2 = (8 – 6). (6, 7) (0, 9) (3, 9) (9, 9) (9)  o ramo 2  3 está saturado no sentido do nó 2 para o nó 3; mas no sentido do nó 3 para o nó 2 tem uma capacidade de 3 (igual à capacidade que está a ser utilizada no sentido do nó 2 para o nó 3) isto é, podemos deixar de fazer passar, do nó 2 para o nó 3, até 3 unidades (que é fluxo actual). f = 15 1 (3, 3) 4 f =15 f = 9 (6, 8) (9, 9) (3, 9) (0, 9) (9)  o ramo 2  4 tem uma capacidade de 1 = (7 – 6). 3 Logo, a capacidade do caminho 1  3  2  4 é de 1 = min (2; 3, 1)

Vejamos com maior detalhe o que realmente se passa nesta iteração Algoritmo de fluxo máximo (cont.) 3. Seleccionar um caminho não saturado (caminho com capacidade  0) entre o nó de entrada e o nó de saída. Se não existir nenhum, foi encontrada a solução óptima;. 4. Somar ao fluxo de entrada um fluxo igual à capacidade do caminho seleccionado; 5. Alterar as capacidades utilizadas dos ramos do caminho seleccionado, somando-lhes o fluxo injectado; 6. Voltar ao ponto 3. Seleccionamos então o caminho não saturado 1  3  2  4 (com capacidade = 1) 2 (7, 7) (6, 7) (0, 9) (3, 9) (9, 9) (9) f = 15+1 =16 f = 15 1 (2, 3) (3, 3) 4 f =15+1=16 f =15 Vejamos com maior detalhe o que realmente se passa nesta iteração (7, 8) (6, 8) (0, 9) (9, 9) (3, 9) (9) 3

Algoritmo de fluxo máximo (cont.) Como se viu antes, a capacidade do caminho 1  3  2  4 é de 1 unidade. Vai-se então enviar uma unidade por esse caminho: 1º Enviar 1 unidade do nó 1 para o nó 3. Essa unidade enviada do nó 1 para o nó 3, não pode depois ser enviada pelo ramo 3  4, pois este ramo está saturado neste sentido. Então que fazer? A única forma de ultrapassar este problema é fazer com que uma das unidades que é presentemente enviada por 2  3  4, passe a ser enviada por 2  4, de forma a libertar uma unidade da capacidade do ramo 3  4. Corrigindo as capacidades utilizadas dos ramos obtém-se: 2 Utiliza-se depois essa unidade, assim libertada (da capacidade do ramo 3  4), para fazer fluir do nó 3 para o nó 4 a unidade que enviamos antes do nó 1 para o nó 3. (6, 7) (7, 7) (9, 9) (0, 9) (3, 9) (9) f = 15+1=16 f = 15 1 (2, 3) (3, 3) 4 f =15 f = 9 O procedimento descrito é equivalente a: 2º Enviar 1 unidade do nó 3 para o nó 2. (7, 8) (6, 8) (9, 9) (8, 9) (9, 9) 3 3º Enviar 1 unidade do nó 2 para o nó 4.

Teorema do Fluxo Máximo – Corte Mínimo: Como saber se a rede está na situação de fluxo máximo? (ou seja, se a solução em presença é óptima) através do Teorema do Fluxo Máximo – Corte Mínimo: Uma rede está na situação de fluxo máximo se existir um corte mínimo, isto é, que separa a entrada da saída da rede, e que só atravessa: ramos orientados da entrada para a saída saturados, e ramos orientados da saída para a entrada com fluxo nulo O fluxo máximo é, nestas condições, igual à capacidade do corte mínimo Ver conceitos Capacidade do corte mínimo = 7 + 9 = 16 2 (6, 7) (7, 7) (9, 9) (0, 9) (3, 9) (9) Como a capacidade do corte mínimo (16) é igual ao fluxo actual (f =16) a solução é óptima f = 16 1 (3, 3) (2, 3) 4 f = 16 (6, 8) (7, 8) (9, 9) (8, 9) (9, 9) 3 corte mínimo

Conceitos Corte: Um corte numa rede com nó de entrada S e nó de saída T é um conjunto de arcos cuja remoção separa a rede em duas partes X e Y, uma contendo S e outra contendo T. Capacidade de um corte: É a soma das capacidades dos arcos do corte, que estão dirigidos de X para Y. Corte mínimo: É um corte com a menor capacidade possível. X Y S T Valor de qualquer fluxo  Capacidade de qualquer corte Valor do fluxo máximo  Capacidade de qualquer corte Valor de fluxo máximo  Capacidade de um corte mínimo Fechar

Ver explicação detalhada Teorema do Fluxo Máximo – Corte Mínimo Se analisarmos a solução anterior à óptima (com f = 15), podemos verificar que é impossível definir um corte mínimo Note-se que o corte abaixo representado, não é um corte mínimo, pois o fluxo do nó 2 para o nó 3 não é nulo. Ver explicação detalhada 2 (0, 7) (6, 7) (7) (9, 9) (3, 9) (0, 9) (9) f = 15 1 (3, 3) (0, 3) (3) 4 f = 15 (6, 8) (0, 8) (8) (9, 9) (0, 9) (3, 9) (9) 3

Conceitos Corte mínimo: É um corte com a menor capacidade possível, ou Corte: Um corte numa rede com nó de entrada S e nó de saída T é um conjunto de arcos cuja remoção separa a rede em duas partes X e Y, uma contendo S e outra contendo T. Capacidade de um corte: É a soma das capacidades dos arcos do corte, que estão dirigidos de X para Y. Corte mínimo: É um corte com a menor capacidade possível, ou é um corte que separa a entrada da saída da rede, e que só atravessa ramos orientados da entrada para a saída saturados, e ramos orientados da saída para a entrada com fluxo nulo X Y S T 2 (0, 7) (6, 7) (7) (3, 9) (9, 9) (0, 9) (9) 1 (0, 3) (3, 3) (3) 4 (6, 8) (0, 8) (8) (9, 9) (0, 9) (3, 9) (9) O corte representado não é um corte mínimo, pois o fluxo do nó 2 para o nó 3 (de Y para X) não é nulo. 3 Fechar