BCC204 - Teoria dos Grafos

Documentos relacionados
PCC173 - Otimização em Redes

BCC204 - Teoria dos Grafos

BCC204 - Teoria dos Grafos

Problema de Fluxo Máximo

BCC204 - Teoria dos Grafos

BCC204 - Teoria dos Grafos

BCC204 - Teoria dos Grafos

BCC204 - Teoria dos Grafos

Problemas de Fluxo em Redes

BCC204 - Teoria dos Grafos

PCC173 - Otimização em Redes

BCC204 - Teoria dos Grafos

Pesquisa Operacional. Teoria dos Grafos

Pesquisa Operacional

Problema do Caminho Mais Curto. Problema do Caminho Mais Curto

Problema do Caminho Mínimo

GRAFOS Aula 10 Fluxo em Redes Max Pereira

BCC204 - Teoria dos Grafos

BCC204 - Teoria dos Grafos

PCC173 - Otimização em Redes

MÓDULO 2 - OTIMIZAÇÃO DE REDES

Teoria dos Grafos Aula 26

Conteúdo. Histórico. Notas. Teoria dos Grafos BCC204. Notas. Notas. 1736: Euler e as Pontes de Königsberg

2 Definição do Problema

Algoritimos e Estruturas de Dados III CIC210

Definição e Conceitos Básicos

Teoria dos Grafos. Fluxo Máximo em Redes

PCC173 - Otimização em Redes

PCC104 - Projeto e Análise de Algoritmos

Caminhos Mais Curtos Fluxo Máximo Árvores Geradoras Mínimas

PCC104 - Projeto e Análise de Algoritmos

Modelos e Métodos de Resolução para Problemas de Escalonamento de Projetos

BCC204 - Teoria dos Grafos

Casamento em GB. Casamento em Grafos. Notas. Teoria dos Grafos - BCC204, Casamento em Grafos. Notas. Descrição

distância list ranking

Oferta de Serviços. Grafo Planar. Notas. Teoria dos Grafos - BCC204, Planaridade. Notas

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

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

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

PCC104 - Projeto e Análise de Algoritmos

Projeto e Análise de Algoritmos

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

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

Comunicação e redes. Aula 2: Teoria dos Grafos Conceitos básicos. Professor: Guilherme Oliveira Mota.

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

Algoritmos de Fluxo Máximo

apenas os caminhos que passam só por vértices em C, exceto, talvez, o próprio v A Figura 1 a seguir ilustra o significado do conjunto C edovalordist.

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

Otimização em Grafos

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

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

Notas 1 / 14. Notas. todos os pares de pontos devem ser ligados por ao menos um percurso; usaremos um mínimo possível de ligações. 2 / 14.

Melhores momentos AULA PASSADA. Otimização Combinatória p. 781

Grafos Parte 1. Aleardo Manacero Jr.

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

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

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano

Aula 19: Lifting e matrizes ideais

Módulo 2 OTIMIZAÇÃO DE REDES

GRAFOS. Prof. André Backes. Como representar um conjunto de objetos e as suas relações?

Teoria dos Grafos AULA

Conceitos Básicos da Teoria de Grafos

PERCURSOS. André Falcão, Carlos Augusto, Rafael Broédel e Lucas Dipré

BCC202 - Estrutura de Dados I

Processamento de Imagens usando Grafos (MAC6903)

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

O estudo utilizando apenas este material não é suficiente para o entendimento do conteúdo. Recomendamos a leitura das referências no final deste

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

1 Introdução Motivação

Teoria dos Grafos. Valeriano A. de Oliveira, Socorro Rangel, Silvio A. de Araujo. Capítulo 11: Grafos Eulerianos. Departamento de Matemática Aplicada

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

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

O estudo utilizando apenas este material não é suficiente para o entendimento do conteúdo. Recomendamos a leitura das referências no final deste

O método de enumeração de soluções básicas é muito ineficiente.

UNIVERSIDADE FEDERAL DO MARANHÃO INTERFACE DE ANÁLISE DA INTERCONEXÃO EM UMA LAN USANDO CORBA

Teoria dos Grafos Aula 23

Redes de Computadores III / /

Notas. Notas. encontrem a solução ótima em tempo polinomial para qualquer instância do problema que estamos trabalhando 2 / 19.

GRAFOS E ALGORITMOS TEORIA DE GRAFOS

Aula 20: Revisão Otimização Linear e Inteira Túlio A. M. Toffolo

Prof. Marco Antonio M. Carvalho

Grafos: caminhos mínimos

Capítulo 1. Aula Conectividade Caminhos

Compressão de Textos. Introdução. Introdução. Introdução. O volume de informação textual disponível on-line é imenso:

04 Grafos: caminhos e coloração SCC0503 Algoritmos e Estruturas de Dados II

Sistemas de Computação

Introdução à Teoria dos Grafos (MAC-5770) IME-USP Depto CC Profa. Yoshiko. Capítulo 3

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

Aula 07: Análise de sensibilidade (2)

Lista de Exercícios 02

Coloração de Mapas. O Grafo. Notas. Teoria dos Grafos - BCC204, Coloração de Grafos. Notas

Teoria dos Grafos. Edson Prestes

06 Grafos: Caminhos Mínimos SCC0503 Algoritmos e Estruturas de Dados II

CIC 111 Análise e Projeto de Algoritmos II

Programação Linear M É T O D O S : E S T A T Í S T I C A E M A T E M Á T I C A A P L I C A D A S D e 1 1 d e m a r ç o a 2 9 d e a b r i l d e

Cálculo Numérico BCC760

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

Transcrição:

BCC204 - Teoria dos Grafos Marco Antonio M. Carvalho (baseado nas notas de aula do prof. Haroldo Gambini Santos) Departamento de Computação Instituto de Ciências Exatas e Biológicas Universidade Federal de Ouro Preto 19 de setembro de 2018 Marco Antonio M. Carvalho (UFOP) BCC204 19 de setembro de 2018 1 / 41

Avisos Verifiquem a visualização de algoritmos! https://visualgo.net/ Site da disciplina: http://www.decom.ufop.br/marco/ Lista de e-mails: pcc173@googlegroups.com Para solicitar acesso: http://groups.google.com/group/pcc173 Marco Antonio M. Carvalho (UFOP) BCC204 19 de setembro de 2018 2 / 41

Conteúdo 1 Grafo de Aumento de Fluxo 2 Algoritmo de Ford & Fulkerson Marco Antonio M. Carvalho (UFOP) BCC204 19 de setembro de 2018 3 / 41

Avisos Marco Antonio M. Carvalho (UFOP) BCC204 19 de setembro de 2018 4 / 41

Grafo de Aumento de Fluxo Definição Um grafo de aumento de fluxo G=(V f, A f ) possui somente arcos simples, construído da seguinte forma: (x, y) A f, se (x, y) A e f (x, y) < ū(x, y): arco direto. (y, x) A f, se (x, y) A e f (x, y) > ū(x, y): arco reverso. Folga de um Arco A folga de um arco é obtida da seguinte maneira: ξ(x, y) = ū(x, y) f (x, y) se f (x, y) < ū(x, y) ξ(x, y) = f (x, y) ū(x, y) se f (x, y) > ū(x, y) Marco Antonio M. Carvalho (UFOP) BCC204 19 de setembro de 2018 5 / 41

Arco Utilizável Definição Dados dois vértices x e y, sendo x em análise e y não analisado, um arco a é utilizável em duas situações: 1 a = (x, y), dito arco direto; 2 a = (y, x), dito arco reverso. Note que este conceito diz respeito aos algoritmos para o problema de fluxo máximo. Marco Antonio M. Carvalho (UFOP) BCC204 19 de setembro de 2018 6 / 41

Exemplo Rede de exemplo. Marco Antonio M. Carvalho (UFOP) BCC204 19 de setembro de 2018 7 / 41

Exemplo Fluxo de 8 unidades na rede de exemplo. Marco Antonio M. Carvalho (UFOP) BCC204 19 de setembro de 2018 8 / 41

Exemplo Folgas nos arcos da rede. Marco Antonio M. Carvalho (UFOP) BCC204 19 de setembro de 2018 9 / 41

Exemplo Grafo de aumento de fluxo. Marco Antonio M. Carvalho (UFOP) BCC204 19 de setembro de 2018 10 / 41

Exemplo Rede original e Grafo de Aumento de Fluxo. Marco Antonio M. Carvalho (UFOP) BCC204 19 de setembro de 2018 11 / 41

Algoritmos para o Problema de Fluxo Máximo Estratégia: Aumento de Fluxo Uma das estratégias mais antigas utilizadas para determinação de fluxo máximo em redes é encontrar uma sequência de caminhos de aumento de fluxo entre s e t, definidos no grafo de aumento de fluxo. Para cada caminho de aumento de fluxo, os algoritmos fazem circular na rede original um fluxo entre s e t que esgota o seu arco de menor capacidade e atualiza as capacidades dos arcos percorridos pelo fluxo. Quando não for mais possível encontrar um caminho de aumento de fluxo entre s e t, o fluxo máximo é alcançado. Marco Antonio M. Carvalho (UFOP) BCC204 19 de setembro de 2018 12 / 41

Biografia Lester Randolph Ford Jr. 23/09/1927 26/02/2017 Matemático americano; Especialista em fluxo em redes; Autor do algoritmo Bellman-Ford; Autor do teorema de corte mínimo/fluxo máximo; Co-autor do algoritmo Ford-Fulkerson. Marco Antonio M. Carvalho (UFOP) BCC204 19 de setembro de 2018 13 / 41

Biografia Delbert Ray Fulkerson 14/08/1924 10/01/1976 Matemático americano; Em sua homenagem, a Mathematical Programming Society criou o Fulkerson Prize; Co-autor do algoritmo Ford-Fulkerson; Autor do algoritmo Out-of-Kilter, para o problema de fluxo de custo mínimo. Marco Antonio M. Carvalho (UFOP) BCC204 19 de setembro de 2018 14 / 41

Algoritmo de Ford & Fulkerson Princípio O algoritmo de Ford & Fulkerson (1956) calcula o fluxo máximo em uma rede a partir de um fluxo viável. No caso de os limites inferiores de todos os arcos serem iguais a zero, o fluxo zero pode ser adotado ou seja, f (i, j) = 0 para todo arco (i, j). O algoritmo rotula os vértices de R buscando encontrar um caminho de aumento de fluxo entre s e t. Caso tal caminho exista, o algoritmo aumenta o fluxo na rede. Marco Antonio M. Carvalho (UFOP) BCC204 19 de setembro de 2018 15 / 41

Algoritmo de Ford & Fulkerson Rótulos O rótulo de um vértice y qualquer segue o formato [x, ±,ξ y ] x: indica o vértice a partir do qual o vértice y foi rotulado; ±: indica rotulação a partir de um arco direto (+) ou reverso (-); ξ y : indica o quanto o fluxo pode ser aumentado no caminho de s até o vértice y. O processo é repetido até que não seja mais possível encontrar um caminho de aumento de fluxo, situação na qual o fluxo máximo está circulando na rede. Marco Antonio M. Carvalho (UFOP) BCC204 19 de setembro de 2018 16 / 41

Algoritmo de Ford & Fulkerson Atenção para os detalhes Não é possível selecionar arcos nos quais os dois vértices já foram rotulados; Somente os caminhos que terminam em t devem ser considerados; Não se esqueça dos arcos reversos; Não se esqueça de atualizar o grafo de aumento de fluxo, adicionando e removendo arcos adequadamente; Se todos os arcos que partem do vértice s tiverem a capacidade esgotada, a execução do algoritmo terminou. Marco Antonio M. Carvalho (UFOP) BCC204 19 de setembro de 2018 17 / 41

Algoritmo de Ford & Fulkerson 1 Sendo f um fluxo viável na rede; 2 Rotular s com [-, 0, + ]; 3 enquanto existir vértice i rotulado incidente a um arco utilizável faça 4 se a = (i, j) então 5 //arco utilizável: j não rotulado e f (i,j) < ū(i,j) 6 Rotular j com [i, +, ξ j ], em que ξ j = min{ξ i, ū(i,j)-f (i,j)} 7 fim 8 senão 9 //arco utilizável a = (j, i) com j não rotulado e f (i,j) > ū(i,j) 10 Rotular j com [i, -, ξ j ], em que ξ j = min{ξ i, f (i,j)-ū(i,j)} 11 fim 12 se t foi rotulado então 13 Construir o caminho P de aumento de fluxo a partir de t; 14 Aumentar o fluxo nos arcos de P somando ξ t nos arcos diretos e subtraindo ξ t nos arcos reversos; 15 Cancelar todos os rótulos (exceto o de s); 16 Atualizar o grafo de aumento de fluxo; 17 fim 18 fim Marco Antonio M. Carvalho (UFOP) BCC204 19 de setembro de 2018 18 / 41

Algoritmo de Ford & Fulkerson Complexidade No caso de a capacidade dos arcos ser inteira, a complexidade será O(mf max ); Uma variação deste algoritmo, o algoritmo de Edmonds Karp, possui complexidade independente do fluxo: O(nm 2 ). Corte Mínimo O fluxo determinado é máximo. Um corte s-t de capacidade mínima pode ser obtido colocando-se todos os nós rotulados a em X e os restantes em X. a Na última iteração do algoritmo não será possível rotular todos os vértices em um caminho até t. Marco Antonio M. Carvalho (UFOP) BCC204 19 de setembro de 2018 19 / 41

Ford & Fulkerson Exemplo Rede de exemplo. Fluxo viável f =0, logo, não há arcos reversos. Vértice s rotulado. Marco Antonio M. Carvalho (UFOP) BCC204 19 de setembro de 2018 20 / 41

Ford & Fulkerson Exemplo Primeira rotulação do vértice x 1. O arco é direto. ξ x1 = min{+, 4} Marco Antonio M. Carvalho (UFOP) BCC204 19 de setembro de 2018 21 / 41

Ford & Fulkerson Exemplo Primeira rotulação do vértice x 4. O arco é direto. ξ x4 = min{4, 2} Marco Antonio M. Carvalho (UFOP) BCC204 19 de setembro de 2018 22 / 41

Ford & Fulkerson Exemplo Primeira rotulação do vértice x 3. O arco é direto. ξ x3 = min{2, 5} Marco Antonio M. Carvalho (UFOP) BCC204 19 de setembro de 2018 23 / 41

Ford & Fulkerson Exemplo Primeira rotulação do vértice t. O arco é direto. ξ t = min{2, 6} Marco Antonio M. Carvalho (UFOP) BCC204 19 de setembro de 2018 24 / 41

Algoritmo de Ford & Fulkerson Caminho Encontrado Como o vértice t foi rotulado, um caminho de aumento de fluxo foi encontrado; O número de unidades de fluxo que podem ser aumentadas neste caminho é dado por ξ t = 2; Recupera-se o caminho a partir de t, andando para trás: s, x 1, x 4, x 3, t, aumentado o fluxo em 2 nos arcos deste caminho; A capacidade do arco (x 1, x 4 ) foi esgotada; O algoritmo remove os rótulos de todos os vértices (exceto o de s) e é reiniciado. Marco Antonio M. Carvalho (UFOP) BCC204 19 de setembro de 2018 25 / 41

Ford & Fulkerson Exemplo Caminho com aumento de fluxo encontrado. Rede com fluxo f =2. Há a inclusão de arcos reversos? Marco Antonio M. Carvalho (UFOP) BCC204 19 de setembro de 2018 26 / 41

Ford & Fulkerson Exemplo Segunda rotulação do vértice x 1. O arco é direto. ξ x1 = min{+, 2} Marco Antonio M. Carvalho (UFOP) BCC204 19 de setembro de 2018 27 / 41

Ford & Fulkerson Exemplo Segunda rotulação do vértice x 3. O arco é direto. ξ x3 = min{2, 2} Marco Antonio M. Carvalho (UFOP) BCC204 19 de setembro de 2018 28 / 41

Ford & Fulkerson Exemplo Segunda rotulação do vértice x 4. O arco é reverso. f (x 4, x 3 ) ū(x 4, x 3 ) = 2 ξ x4 = min{2, 2} Marco Antonio M. Carvalho (UFOP) BCC204 19 de setembro de 2018 29 / 41

Ford & Fulkerson Exemplo Segunda rotulação do vértice t. O arco é direto. ξ t = min{2, 10} Marco Antonio M. Carvalho (UFOP) BCC204 19 de setembro de 2018 30 / 41

Algoritmo de Ford & Fulkerson Caminho Encontrado Como o vértice t foi rotulado, um caminho de aumento de fluxo foi encontrado; O número de unidades de fluxo que podem ser aumentadas neste caminho é dado por ξ t = 2; Recupera-se o caminho a partir de t, andando para trás: s, x 1, x 3, x 4, t, aumentado o fluxo em 2 unidades nos arcos deste caminho; As capacidades dos arcos (s, x 1 ) e (x 1, x 3 ) foram esgotadas; O algoritmo remove os rótulos de todos os vértices (exceto o de s) e é reiniciado. Marco Antonio M. Carvalho (UFOP) BCC204 19 de setembro de 2018 31 / 41

Ford & Fulkerson Exemplo O fluxo dos arcos diretos é aumentado em 2 unidades. O fluxo do arco reverso é diminuído em 2 unidades. Rede com fluxo f =4. Marco Antonio M. Carvalho (UFOP) BCC204 19 de setembro de 2018 32 / 41

Ford & Fulkerson Exemplo Primeira rotulação do vértice x 2. O arco é direto. ξ 2 = min{+, 3} Marco Antonio M. Carvalho (UFOP) BCC204 19 de setembro de 2018 33 / 41

Ford & Fulkerson Exemplo Terceira rotulação do vértice x 4. O arco é direto. ξ 4 = min{3, 3} Marco Antonio M. Carvalho (UFOP) BCC204 19 de setembro de 2018 34 / 41

Ford & Fulkerson Exemplo Terceira rotulação do vértice t. O arco é direto. ξ t = min{3, 8} Marco Antonio M. Carvalho (UFOP) BCC204 19 de setembro de 2018 35 / 41

Algoritmo de Ford & Fulkerson Caminho Encontrado Como o vértice t foi rotulado, um caminho de aumento de fluxo foi encontrado; O número de unidades de fluxo que podem ser aumentadas neste caminho é dado por ξ t = 3; Recupera-se o caminho a partir de t, andando para trás: s, x 2, x 4, t, aumentado o fluxo em 3 nos arcos deste caminho; As capacidades dos arcos (s, x 2 ) e (x 2, x 4 ) foram esgotadas; O algoritmo remove os rótulos de todos os vértices (exceto o de s) e é reiniciado. Marco Antonio M. Carvalho (UFOP) BCC204 19 de setembro de 2018 36 / 41

Ford & Fulkerson Exemplo O fluxo dos arcos diretos é aumentado em 3 unidades. Não há arcos diretos. Rede com fluxo f =7. Marco Antonio M. Carvalho (UFOP) BCC204 19 de setembro de 2018 37 / 41

Ford & Fulkerson Exemplo Final do Algoritmo Após a rotulação do vértice t, o algoritmo remove todos os rótulos e reinicia; No entanto, não existe arco utilizável a partir de s, e desta forma, não há nenhum outro vértice a ser rotulado o fluxo é máximo; O algoritmo termina quando o vértice t não puder mais ser rotulado neste caso os vértices rotulados e os não rotulados definem também um corte mínimo em R; O único vértice rotulado é s, logo, o corte mínimo do exemplo é X = {s} e X = {x 1, x 2, x 3, x 4, t}. Marco Antonio M. Carvalho (UFOP) BCC204 19 de setembro de 2018 38 / 41

Ford & Fulkerson Ponto fraco Ponto Fraco O algoritmo de Ford & Fulkerson pode apresentar um comportamento ineficiente caso enfrente alguns casos patológicos. No caso abaixo, é possível que o algoritmo escolha alternadamente os caminhos de aumento de fluxo (s, x 1, x 2, t) e (s, x 2, x 1, t). Serão necessárias 2 10 n operações de aumento de fluxo. Caso a escolha fosse (s, x 1, t) e (s, x 2, t), seriam necessárias apenas 2 iterações. Marco Antonio M. Carvalho (UFOP) BCC204 19 de setembro de 2018 39 / 41

Exercício Determine o fluxo máximo para a rede abaixo, usando o algoritmo de Ford & Fulkerson. Utilize pelo menos um arco reverso e também determine o corte s-t mínimo da rede. Marco Antonio M. Carvalho (UFOP) BCC204 19 de setembro de 2018 40 / 41

Dúvidas? Marco Antonio M. Carvalho (UFOP) BCC204 19 de setembro de 2018 41 / 41