Celso C. Ribeiro Caroline T. Rocha

Slides:



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

Árvores CC/EC/Mestrado Teoria dos Grafos ‏ 1.
Ford Fulkerson Teoria dos Grafos.
Algoritmos em Grafos.
AULA 02 PROGRAMAÇÃO LINEAR INTEIRA
AULA 01 PROGRAMAÇÃO DINÂMICA
Prof. M.Sc. Fábio Francisco da Costa Fontes Maio
Programação em Java Prof. Maurício Braga
Geometria Computacional Fecho Convexo II
Programação em Java Prof. Maurício Braga
Inteligência Artificial
Celso C. Ribeiro Caroline T. Rocha
Motivação para listas duplamente encadeadas e circulares
Fluxo em Redes Prof. Ricardo R. Santos.
Operações envolvendo imagens
MÁQUINAS UNIVERSAIS Fabrício Dias
UFES CC/EC/Mestrado Teoria dos Grafos Árvores. UFES CC/EC/Mestrado Teoria dos Grafos Árvores Grafo Acíclico: não possui ciclos.
Problemas de fluxo numa rede
Múltiplos Os múltiplos de um número inteiro obtêm-se multiplicando esse número por 0, 1, 2, 3, 4, 5, 6, ... Exemplos: M5= {0, 5, 10, 15, 20,
Vetores Representação e características Operações I Decomposição
Fonte, Sumidouro, Capacidade e Fluxo
SISTEMAS DE EQUAÇÕES.
PARTIÇÃO DE BENDERS Secundino Soares Filho Unicamp.
Árvores.
Pesquisa Operacional Livro: Introdução à Pesquisa Operacional
1 Sabendo-se que os pratos das balanças estão em equilíbrio, você seria capaz de dizer: Quantos quadrados corresponde um círculo ? Dica Mais dicas Elaboração:
Decomposição em fatores primos
Auditoria de Segurança da Informação
Matemática I Prof. Gerson Lachtermacher, Ph.D.
Provas de Concursos Anteriores
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.
Campus de Caraguatatuba
Grafos Msc. Cintia Carvalho Oliveira Doutoranda em Computação – UFU
Como aplicar leis da lógica
1 Celulose.
Título da produção digital em questão: JOGOS DE PERGUNTAS E RESPOSTA B) Proposta pedagógica orientadora da produção: construir conceitos matemáticos através.
Momentos de Inércia Cap. 10
Cinemática Plana de um Corpo Rígido Cap. 16
Dinâmica de um Ponto Material: Impulso e Quantidade de Movimento
MECÂNICA - DINÂMICA Cinemática de uma Partícula Cap Exercícios.
Dinâmica de um Ponto Material: Impulso e Quantidade de Movimento
Exercícios: Alg Gulosos Eduardo Laber. Cap 4-Exercício 2 a)Verdadeiro, já que trocando cada elemento pelo seu quadrado não altera a ordem das arestas.
1 António Arnaut Duarte. 2 Sumário: primeiros passos;primeiros passos formatar fundo;formatar fundo configurar apresentação;configurar apresentação animação.
Conversão de um NFA para um DFA com um exemplo
Conceitos Básicos Alysson e Franklina 2ºs/
Salas de Matemática.
Celso C. Ribeiro Caroline T. Rocha
Noções de trigonometria e funções trigonométricas
Coordenação Geral de Ensino da Faculdade
Problemas de Fluxo Máximo
Busca com informação e exploração
Progressão Geométrica Matrizes Questão nº01  Na P.G., a posição do termo é...
EXERCÍCIOS PARA GUARDA-REDES
Resoluções de equações Métodos iterativos
1 2 Observa ilustração. Cria um texto. Observa ilustração.
Grupo A – Azul Claro, Marrom, Laranja
Conceitos básicos em grafos
Computação Gráfica Aula 3 Transformações Geométricas
PROGRAMAÇÃO MATEMÁTICA MÉTODO SIMPLEX
TRANSFORMAÇÕES DE TENSÕES
Trigonometria 19/11/2009.
CALENDÁRIO SEXY Ele & Ela. CALENDÁRIO SEXY Ele & Ela.
Ceça Moraes – Introdução à Programação SI1
Uma lição de matemática... Já pensou naquelas pessoas que dizem que estão dando mais que 100% delas mesmas?
Rio Verde - Goiás - Brasil
Cinemática Plana de um Corpo Rígido Cap. 16
Nome alunos 1 Título UC. Título – slide 2 Conteúdo Conteúdo 2.
POTENCIAÇÃO E RAIZ QUADRADA DE NÚMEROS RACIONAIS
GINÁSTICA LABORAL UM NOVO CAMINHO.
Algoritmos em Grafos Celso C. Ribeiro Caroline T. Rocha.
Transcrição da apresentação:

Celso C. Ribeiro Caroline T. Rocha Algoritmos em Grafos Celso C. Ribeiro Caroline T. Rocha

PARTE 4: PROBLEMA DO FLUXO MÁXIMO Algoritmos em Grafos

Problema do Fluxo Máximo Dados: Grafo G=(X,U) orientado u  U: capacidade c(u) 0 ≤ f(u) ≤ c(u) S P fonte sumidouro f Problema: Obter um fluxo máximo de S a P respeitando as restrições de capacidade e as restrições de conservação de fluxo em cada nó. Algoritmos em Grafos

Problema do Fluxo Máximo Inserindo-se um arco de retorno, transforma-se um fluxo em uma “circulação”: S P f Exemplo: capacidades c S P a b 1, 1 0, 5 fluxos f 1, 2 3, 3 2, 4 3,  Algoritmos em Grafos

Problema do Fluxo Máximo v, x = S 0, x  S, x  P -v, x  P I(u) T(u) u Com o arco de retorno: Algoritmos em Grafos

Problema do Fluxo Máximo Exemplo: a c S P  2 3 1 1 e 1 2 7 5 b d Capacidades associadas aos nós: Como dar nome ao exemplo??? x 2 8 7 3 x1 2 8 x2 7 3 c(x) Algoritmos em Grafos

Problema do Fluxo Máximo Algoritmo de rotulação de Ford e Fulkerson (idéia básica) Início: fluxo viável (por exemplo um fluxo nulo) Iteração: Determinar um caminho C de S a P ao longo do qual nenhum arco esteja saturado. (isto é, f(u) = c(u)) Circuito  = C  {(P,S)} Aumentar o fluxo ao longo dos arcos de  do valor  = minu[c(u)-f(u)] Algoritmos em Grafos

Problema do Fluxo Máximo Exemplo: 1 S P a b 1 4 3 5 2 1 2 3 Este fluxo (f=3) é máximo? Por que? Fluxo máximo = 4 Algoritmos em Grafos

Problema do Fluxo Máximo A inexistência de um caminho aumentante no grafo original não quer dizer que não seja possível aumentar o fluxo. Obter uma cadeia ligando S e P que, em conjunto com o arco de retorno (P,S) defina um ciclo : +: arcos de  orientados como (P,S) -: arcos de  orientados no sentido oposto a (P,S) 1= minu+ [c(u) – f(u)] (aumento possível nos arcos de +) 2= minu- [f(u)] (redução possível nos arcos de -) L+ e L-: não é ao contrário?? Melhorar a solução (aumentar o fluxo) somando  = min{1, 2} aos fluxos nos arcos de + e subtraindo  aos fluxos nos arcos de -. Algoritmos em Grafos

Problema do Fluxo Máximo Exemplo: f(u) c(u) a - + 1 X  1, 1 0, 5 +1 X 0 1, 2 S P +1 -1 3, 3 2, 4 X 3 b +1 X 4 3,  1 = 2 2 = 1  = 1 Algoritmos em Grafos

Problema do Fluxo Máximo Algoritmo Procedimento de rotulação para obter um ciclo : Nó x  rótulo (x) Quantidade pela qual pode ser aumentado o fluxo de S a x seguindo uma cadeia cujo último arco é A(x) Rotulação direta: x marcado (x) com u = (x,y) f(u) < c(u) y não marcado (y) = min { (x), c(u)-f(u) } x y u (x) A(y) = u Algoritmos em Grafos

Problema do Fluxo Máximo Rotulação inversa: x marcado (x) arco u = (y,x) f(u) > 0 y não marcado (y) = min { (x), f(u) } x y u (x) A(y) = u f(u)  0 u ROTULAR(f,,A,Y) Enquanto  > 0 faça ALTERAR_FLUXOS(f,,A) fim-enquanto Algoritmos em Grafos

Problema do Fluxo Máximo ROTULAR(f,,A,Y) , (S)  + Y  {S} Enquanto P  Y e  > 0 faça Se u =(x,y): x  Y, y  Y e f(u) < c(u) então Y  Y  {y} A(y)  u (y)  min {(x), c(u)-f(u)} Senão Se u =(y,x): x  Y, y  Y e f(u) > 0 então (y)  min {(x), f(u)}   0 fim-enquanto Se P  Y então   (P) FIM-ROTULAR Algoritmos em Grafos

Problema do Fluxo Máximo ALTERAR_FLUXOS(f,,A) x  P f(P,S)  f(P,S) +  Enquanto x  S faça u  A(x) Se x = T(u) então f(u)  f(u) +  x  I(u) Senão f(u)  f(u) -  x  T(u) fim-enquanto FIM-ALTERAR_FLUXOS Algoritmos em Grafos

Problema do Fluxo Máximo Exemplo: 1, 1 1, 5 0, 5 0, 2 1, 2 S P 3, 3 3, 4 2, 4 b 4,  3,  Marcação: f(P,S) = 4 (S) = + Y = {S} A(S) = (P,S) f(a,P) = 1 (b) = 2 Y = {S, b} A(b) = (S,b) f(a,b) = 0 (a) = 1 Y = {S, b, a} A(a) = (a,b) f(S,b) = 3 (P) = 1 Y = {S, b, a, P} A(P) = (a,P) f(S,a) = 1  = 1 f(b,P) = 3 Algoritmos em Grafos

Problema do Fluxo Máximo Exemplo: 1, 1 1, 5 0, 2 S P 3, 3 3, 4 b 4,  Marcação: (S) = + Y = {S} (b) = 1 Y = {S, b}  = 0, P  Y FIM Algoritmos em Grafos

Problema do Fluxo Máximo 15 15 2 6 15 Exemplo: 15 20 4 15 5 5 7 1 12 8 6 8 10 8 3 4 8 9 12 15  (1) = + Y = {1} A(1) = (7,1) f(6,7) = 15 (2) = 20 Y = {1, 2} A(2) = (1,2) f(2,6) = 15 (6) = 15 Y = {1, 2, 6} A(6) = (2,6) f(1,2) = 15 (7) = 15 Y = {1, 2, 6, 7} A(7) = (6,7) f(7,1) = 15  = 15 Algoritmos em Grafos

Problema do Fluxo Máximo 15 15 2 6 15 Exemplo: 15 20 4 15 5 12 5 7 1 8 6 10 8 8 8 8 8 8 3 4 8 9 12 23 15  (1) = + Y = {1} A(1) = (7,1) f(8,7) = 8 (3) = 10 Y = {1, 3} A(3) = (1,3) f(4,8) = 8 (4) = 9 Y = {1, 3, 4} A(4) = (3,4) f(3,4) = 8 (8) = 9 Y = {1, 3, 4, 8} A(8) = (4,8) f(1,3) = 8 (7) = 8 Y = {1, 3, 4, 8, 7} A(7) = (8,7) f(7,1) = 23  = 8 Algoritmos em Grafos

Problema do Fluxo Máximo 15 15 2 6 15 20 Exemplo: 15 20 4 15 5 12 5 7 1 5 8 5 5 6 10 8 8 8 8 8 8 3 4 8 9 12 23 28  (1) = + Y = {1} A(1) = (7,1) f(5,7) = 5 (2) = 5 Y = {1, 2} A(2) = (1,2) f(3,5) = 5 (3) = 5 Y = {1, 2, 3} A(3) = (2,3) f(2,3) = 5 (5) = 5 Y = {1, 2, 3, 5} A(5) = (3,5) f(1,2) = 20 (7) = 5 Y = {1, 2, 3, 5, 7} A(7) = (5,7) f(7,1) = 28  = 5 Algoritmos em Grafos

Problema do Fluxo Máximo 15 15 2 6 20 Exemplo: 15 20 4 15 5 12 5 7 1 7 5 8 5 5 7 6 10 8 8 8 10 8 8 8 3 4 8 9 12 30 28  (1) = + Y = {1} A(1) = (7,1) f(5,7) = 7 (3) = 2 Y = {1, 3} A(3) = (1,3) f(3,5) = 7 (5) = 2 Y = {1, 3, 5} A(5) = (3,5) f(1,3) = 10 (7) = 2 Y = {1, 3, 5, 7} A(7) = (5,7) f(7,1) = 30  = 2 Algoritmos em Grafos

Problema do Fluxo Máximo 15 15 2 6 20 Exemplo: 15 20 4 15 5 12 5 7 1 7 8 5 7 6 10 8 8 8 10 8 8 3 4 8 9 12 30  (1) = + Y = {1}  = 0, P  Y FIM Algoritmos em Grafos

Problema do Fluxo Máximo Teorema do Corte Mínimo Um conjunto de arcos C é chamado de corte separando P de S se  Y  X com S  Y e P  Y tal que C = { u  U: I(u)  Y, T(u)  Y } Um corte separando P de S corta qualquer caminho de S a P no grafo G = (X,U). Capacidade de um corte separando P de S: c(C) = uC c(u) Algoritmos em Grafos

Problema do Fluxo Máximo Exemplo: 5 1 8 4 P S 2 7 6 3 C = { (1,5), (2,4), (2,6) } Y = { S, 1, 2, 3} C = { (1,5), (2,4), (2,6), (S,3) } Y = { S, 1, 2 } Algoritmos em Grafos

Problema do Fluxo Máximo Teorema: fluxo viável f corte C f(P,S)  c(C) fSP fPS S P Y Algoritmos em Grafos

Problema do Fluxo Máximo Corolário: Quando o algoritmo de rotulação termina com um fluxo f sem que seja possível marcar o nó P, f é a solução ótima do problema de fluxo máximo de S a P. Y P  Y f(u) = c(u), senão a extremidade u estaria marcada u T(u) Y f(u) = 0, senão a extremidade u estaria marcada u I(u) Algoritmos em Grafos

Problema do Fluxo Máximo Corolário: Se as capacidades são inteiras, então o algoritmo de Ford e Fulkerson obtém em um número finito de iterações uma solução ótima do problema de fluxo máximo. Algoritmos em Grafos

Problema do Fluxo Máximo Teorema: O valor do fluxo máximo é igual à capacidade do corte mínimo separando P de S. Ao final do procedimento de rotulação: f*(P,S) S P Y fSP fPS fSP = fPS + f*(P,S) fPS = 0 fSP = c(C) f*(P,S) = c(C) f(P,S)  c(C) corte é mínimo. Algoritmos em Grafos

Problema do Fluxo Máximo 15 15 2 6 20 Exemplo: 15 20 4 15 5 12 5 7 1 7 8 5 7 6 10 8 8 8 10 8 8 3 4 8 9 12 Corte mínimo Capacidade = 30 Fluxo máximo = 30 30  (1) = + Y = {1}  = 0, P  Y FIM Algoritmos em Grafos