Teoria dos Grafos Aula 26

Documentos relacionados
Teoria dos Grafos Aula 22

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

Teoria dos Grafos Aula 6

GRAFOS Aula 10 Fluxo em Redes Max Pereira

Teoria dos Grafos Aula 18

Grafos: árvores geradoras mínimas. Graça Nunes

Teoria dos Grafos. Fluxo Máximo em Redes

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

Grafos: componentes fortemente conexos, árvores geradoras mínimas

Teoria dos Grafos Aula 24

Elementos de Matemática Discreta

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

Algoritmos de Fluxo Máximo

Grafos Hamiltonianos e o Problema do Caixeiro Viajante. Prof. Ademir Constantino Departamento de Informática Universidade Estadual de Maringá

Teoria dos Grafos Aula 14

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

Problema do Caminho Mais Curto. Problema do Caminho Mais Curto

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

MÓDULO 2 - OTIMIZAÇÃO DE REDES

Problema da Árvore Geradora Mínima (The Minimum Spanning Tree Problem-MST)

Algoritmo Simplex para Programação Linear I

Módulo 2 OTIMIZAÇÃO DE REDES

Teoria dos Grafos Aula 23

Problema do Caminho Mínimo

Problemas de Fluxo em Redes

Otimização em Grafos

Pesquisa Operacional

Análise e Projeto de Algoritmos

Teoria dos Grafos Aula 27

Teoria dos Grafos Aula 8

GRAFOS Aula 09 Coloração de Grafos Max Pereira

André Vignatti DINF- UFPR

Pesquisa Operacional. Teoria dos Grafos

O Problema da 3- Coloração de Grafos

Grafos Parte 1. Aleardo Manacero Jr.

Teoria dos Grafos Aula 5

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

Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4)

Otimização em Grafos

GRAFOS Aula 08 Árvore Geradora Mínima: Algoritmos de Kruskal e Prim-Jarnik Max Pereira

Aula 10: Tratabilidade

MATEMÁTICA DISCRETA PARA ENGENHARIA DE COMPUTAÇÃO

Regras para evitar ciclagem

Problema de Fluxo Máximo

Teoria dos Grafos Aula 7

Definição e Conceitos Básicos

5COP096 TeoriadaComputação

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

Teoria dos Grafos. Valeriano A. de Oliveira, Socorro Rangel, Silvio A. de Araujo. Departamento de Matemática Aplicada

ANÁLISE DE ALGORITMOS (INF 1721)

AULA 13 PROJETO E ANÁLISE DE ALGORITMOS. Problema do caminho mais curto de uma única origem em grafos Karina Valdivia Delgado

Como saber se um problema está em NP e não está em P?

Teoria dos Grafos. Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada.

Análise e Síntese de Algoritmos

Combinando relações. Exemplo Seja A = {1, 2, 3} e B = {1, 2, 3, 4}. As relações

Teoria dos grafos. Caminho euleriano e Hamiltoniano. Prof. Jesuliana N. Ulysses

Algoritmos de aproximação - Problema de cobertura por conjuntos

Teoria dos Grafos Aula 9

Simplex. Investigação Operacional José António Oliveira Simplex

x y Grafo Euleriano Figura 1

Jogos de Anti-Coordenação e Colorações Estáveis em Grafos. Renato Lui Geh NUSP:

Algoritmos em Grafos

ANÁLISE DE ALGORITMOS (INF 1721)

Transcrição:

Teoria dos Grafos Aula 26 Aula passada Redes de fluxo Problema do fluxo máximo Problema do corte mínimo Aula de hoje Algoritmo de Ford Fulkerson Análise do algoritmo Melhorando algoritmo inicial Dualidade

Backbone da RNP RNP: Rede Nacional de Pesquisa em Ensino ligação entre instutições nacionais Capacidade dos enlaces ( bits por segundo )

Problema do Fluxo Máximo Dado G=(V,E) com capacidade nas arestas e dois vértices s e t Problema: Determinar fluxo máximo entre s e t 5 1 s 5 3 3 2 2 5 3 4 1 4 2 4 2 5 t Fluxo máximo? Limitante para fluxo máximo?

Fluxo na Rede Como definir um fluxo na rede? Determinar o fluxo de cada aresta da rede Função f : E 1) Capacidade R, com restrições Fluxo em uma aresta menor que capacidade 2) Conservação Fluxo que entra igual ao fluxo que sai Fluxo que sai da origem igual fluxo que entra no destino Valor do fluxo f quantidade de fluxo saindo da origem

Buscando um Algoritmo Algoritmo guloso Começar com f(e) = 0, para todo e Procurar caminho P entre s-t com f(e) < c(e), para todo e em P Aumentar fluxo em P Repetir até não conseguir mais v(f) = 20 s 20 10 30 1 2 10 20 t Problema: fluxo não volta atrás!

Grafo Residual Idéia: dar chance do fluxo voltar atrás! Construir um grafo onde isto é possivel Grafo residual Arestas (direcionadas) originais: e = (u, v) capacidade c(e), fluxo f(e) Arestas residuais (do grafo residual) dois tipos: originais e reversas e = (u,v), e R = (v,u) manter os dois tipos no grafo residual

Arestas do Grafo Residual Capacidade das arestas dado grafo original e um fluxo f c f e =c e f e c f e = f e, quando e for original, quando e for reversa Exemplo original 10/8 2 u Grafo residual v u Todos os vértices, mais arestas (originais e reversas) com capacidade 8 v

Construindo Grafo Residual Vértices iguais ao original Arestas originais e reversas com capacidade apenas quando capacidade > 0 Exemplo 20/15 1 10/10 s 30/5 t 10/5 2 20/10

Aumentando Fluxo Idéia: aumentar o fluxo de um caminnho saturar o caminho Dado um caminho P, entre s e t no grafo residual atualizar fluxo do caminho Encontrar gargalo do caminho, b capacidade da aresta de menor capacidade Atualizar fluxos f(e) = f(e) + b, se e for aresta original f(e R ) = f(e R ) b, se e for aresta reversa

Aumentando Fluxo f : fluxo c : capacidade P : caminho Exemplo: P = {s, 1, t} 20/15 1 10/10 s 30/5 t P não possui aresta reversa 10/5 2 20/10

Ford-Fulkerson Idéia: aumentar o fluxo dos caminhos, enquanto for possivel 1) Inicializar com fluxo 0 2) Descobrir um caminho P (no grafo residual) aumentar fluxo deste caminho, via gargalo 3) Atualizar grafo residual capacidade das arestas 4) Parar quando não houver mais caminho P

Ford-Fulkerson Algoritmo Exemplo?

Análise do Término Assumir capacidades inteiras Então fluxos e capacidades residuais interias Fluxo máximo é inteiro C : limitante para fluxo máximo C = soma das capacidades de saída de s Teorema: algoritmo termina em no máximo v(f * ) <= C iterações Prova: cada iteração aumenta valor do fluxo em ao menos uma unidade Gargalo é sempre no minimo, b = 1

Complexidade Número de iterações = O(C) Complexidade de cada iteração? Encontrar caminho P BFS = O(n + m) Descobrir gargalo e atualizar fluxos do caminho Caminho mais comprido = O(n) Atualizar grafo residual Iterar por arestas (originais + residuais) = O(n + m) Assumir grafo conexo: m = (n) Cada passo = O(m)

Complexidade Complexidade de cada passo: O(m) Total de passos: O(C) Complexidade: O(mC) Algoritmo Polinomial? Pseudo-Polinomial C é um número com log 2 C bits

Capacidade Reais Assumimos capacidade inteira Onde? Para que? Algoritmo pode não terminar com capacidades reais Incremento a cada passo pode ser arbitrariamente pequeno Número de iterações pode divergir Modelos de problemas reais trabalham com capacidade inteiras ex. bps, carros por hora, etc.

Casos Patológicos Número de iterações pode ser muito alto Escolha patológica dos caminhos para aumento de fluxo Exemplo 100 1 Escolher P1 = {s, 1, 2, t} s 1 Escolher P2 = {s, 2, 1, t} Alternar entre eles... 200 iterações, pois C = 200 100 2 100 100 t

Melhorando Algoritmo Idéia: encontrar caminhos de maior capacidade, maiores gargalos Problema: caminho com maior gargalo (entre todos) pode ser difícil encontrar Aumento do tempo de cada iteração Idéia: caminhos com gargalos suficientemente grandes reduzir restrição ao longo do algoritmo Restringir caminhos do grafo residual

Melhorando Algoritmo : parâmetro de escala G f ( ) : grafo residual restringido arestas com capacidade residual de ao menos Algortimo modificado 1) = maior potência de 2, que não seja maior do que C (capacidade de saída de s) 2) Trabalhar com G f ( ) até que não haja mais P 3) Fazer = /2 4) G f ( ) = Grafo residual convencional

Complexidade Número de iterações que reduzem log 2 C Número máximo de caminhos P para um dado valor de primeira iteração: 1 em geral, no máximo 2m (pode-se mostrar) Custo total: O(m 2 log C ) Polinomial? Outras variações que não dependem de C Custo O(mn)