Fluxo Máximo a Custo Mínimo



Documentos relacionados
Programação Dinâmica: Algoritmo de Bellman-Ford

5COP096 TeoriadaComputação

Análise e Síntese de Algoritmos. Caminhos Mais Curtos para Todos os Pares CLRS, Cap. 25

The Stable Matching Problem

2006/2007 Análise e Síntese de Algoritmos 2

Árvores Binárias e Busca. Jeane Melo

A-Graph: Uma ferramenta computacional de suporte para o ensino-aprendizado da disciplina Teoria dos Grafos e seus Algoritmos

Projeto e Análise de Algoritmos

Matemática Discreta. Leandro Colombi Resendo. Matemática Discreta Bacharel em Sistemas de Informações

TÍTULO: COMPARAÇÃO ENTRE OS MÉTODOS DE BUSCA EM ESPAÇOS DE ESTADOS E O ALGORITMO DE DIJKSTRA

Projeto e Análise de Algoritmos. Método Guloso

BC-0506: Comunicação e Redes Algoritmos em Grafos

Análise de Redes de Transportes. Útil também para várias outras áreas além de Transportes!

Sumário. 5COP096 Teoria da Computação Aula 8 Pesquisa em Memória Primária

Eduardo Camponogara. DAS-9003: Introdução a Algoritmos

Projetos. Universidade Federal do Espírito Santo - UFES. Mestrado em Informática 2004/1. O Projeto. 1. Introdução. 2.

Sobre o Professor Dr. Sylvio Barbon Junior

O Problema do Fluxo Máximo de Custo Mínimo e suas Aplicações no Transporte de Recursos em Sistemas Distribuídos

Análise e Síntese de Algoritmos. Algoritmos em Grafos CLRS, Cap. 22

Introdução à Programação Aula 11 Mais sobre ciclos e iteração

Grafo: Algoritmos e Aplicações

Teoria dos Grafos Aula 27

Aula 20. Roteamento em Redes de Dados. Eytan Modiano MIT

Análise e Síntese de Algoritmos

COS767 - Modelagem e Análise Aula 2 - Simulação. Algoritmo para simular uma fila Medidas de interesse

Trabalho Computacional

Projeto e Análise de Algoritmos

Busca em largura. Algoritmos em Grafos. Marco A L Barbosa

Busca em Largura. Adaptado de Humberto C. B. Oliveira

INSTITUTO SUPERIOR TÉCNICO Análise e Síntese de Algoritmos. RESOLUÇÃO DA REPESCAGEM DO 1 o TESTE

Eduardo C. Xavier. 24 de fevereiro de 2011

Algoritmo de Dijkstra (um para todos ; arestas de peso não negativo ; guloso)

Ficha da Unidade Curricular (UC)

CAPÍTULO 2. Grafos e Redes

Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos 2005.

FATEC Zona Leste. Teoria dos Gráfos. Métodos Quantitativos de Gestão MQG

01/05/2016. Danillo Tourinho Sancho da Silva, MSc ROTEIRIZAÇÃO TEORIA DOS GRAFOS MOTIVAÇÃO

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

BCC204 - Teoria dos Grafos

Roteamentos AULA ... META. Introduzir alguns problemas de roteamento. OBJETIVOS. Ao final da aula o aluno deverá ser capaz de:

Teoria dos Grafos. Edson Prestes

grafo nós vértices arcos arestas

Grafos - Representação

2 Problema das p-medianas

Busca em Árvores ou Grafos

5.1 Modelo de uma rede óptica com conversores de comprimento de onda

Coleções. Conceitos e Utilização Básica. c Professores de ALPRO I 05/2012. Faculdade de Informática PUCRS

LÓGICA DE PROGRAMAÇÃO. Vitor Valerio de Souza Campos

Introdução a Computação

7 - Análise de redes Pesquisa Operacional CAPÍTULO 7 ANÁLISE DE REDES. 4 c. Figura Exemplo de um grafo linear.

IPv6. Problema do espaço de endereços do IPv4 Outros problemas abordados

Grafos. Exemplo de árvore geradora mínima. Notas. Notas. Notas. Notas. Árvores espalhadas mínimas. Como construir uma árvore geradora miníma

Busca em Espaço de Estados

Ciclos hamiltonianos e o problema do caixeiro viajante

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

Serviço Público Federal CONCURSO PÚBLICO 2014 INSTRUÇÕES GERAIS. Nº do doc. de identificação (RG, CNH etc.): Assinatura do(a) candidato(a):

PROGRAMAÇÃO DE MICROPROCESSADORES 2011 / 2012

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

Caminho Mínimo de Fonte Única em Grafos sem Pesos Negativos

Teoria dos Grafos. Edson Prestes

Algoritmo de Dijkstra em LISP

Algoritmo de Prim Wikipédia, a enciclopédia livre

Algoritmo de Dijkstra Wikipédia, a enciclopédia livre

Algoritmo nlog n Unidirecional (Peterson, 82)

Web site. Objetivos gerais. Introdução. Profa. Patrícia Dockhorn Costa

Teoria dos Grafos. Aulas 3 e 4. Profa. Alessandra Martins Coelho

Grafos. Notas. Notas. Notas. Notas. Caminhos mais curtos de única origem. Subestrutura ótima. Propriedades de caminhos mais curtos

Sistemas Distribuídos: Conceitos e Projeto Eleição de Coordenador

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

CURSO BÁSICO DE PROGRAMAÇÃO AULA 7

PLANO DE ENSINO. DISCIPLINA: (06241) Algoritmos e Estruturas de Dados. PRÉ-REQUISITOS: Matemática Discreta e Introdução a Programação

A lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá.

Lógica Computacional Descrição do Projeto

ENG1000 Introdução à Engenharia

Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia de Computação CECOMP

Caminho Mínimo de Fonte Única em Grafos com Pesos Negativos Letícia Rodrigues Bueno

Disciplina de Projetos e Análise de Algoritmos. Aula 1 - Apresentação aos Algoritmos Computacionais

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo.

Departamento de Informática

Testes Baseados na Implementação. (fluxo de controle) Baseado em notas de aula da profa. Eliane Martins

Análise e Projeto de Algoritmos

OPERAÇÃO DE SISTEMAS DE POTÊNCIA. TEE Aula 13 Prof. Vitor Hugo Ferreira

Estrutura de Dados. Introdução a Ponteiros. Prof. Gerson Borges Estrutura de Dados I 1

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas

Engenharia de Software II

Roteamento em Redes de Computadores

IES-300. Tecnologia em Análise e Desenvolvimento de Sistemas Prof. Me. Álvaro d Arce alvaro@darce.com.br

Aluísio Eustáquio da Silva

Transcrição:

Universidade Federal de Campina Grande Centro de Engenharia Elétrica e Informática Departamento de Sistemas e Computação Programa de Educação Tutorial (PET) Demontiê Junior (demontie@dsc.ufcg.edu.br) Fluxo Máximo a Custo Mínimo Min Cost Max Flow

Agenda Introdução Conceitos Algoritmo de Bellman-Ford Redes de fluxo Apresentação e Exemplo de Considerações 2

Introdução Caracterização do Problema: Encontrar os caminhos de menor custo que geram o fluxo máximo de uma rede. Utiliza s de fluxo máximo e de menor caminho de origem única. Cada aresta tem dois atributos: peso e capacidade 3

Introdução Motivação: Aplicável a vários problemas reais. Exemplo (variação: fluxo a custo mínimo): Saber a quantia mínima em dinheiro que um grupo de amigos precisa dispor para se deslocar entre duas cidades. O transporte será feito por aviões, que seguem determinados trechos (existe apenas um vôo para cada trecho durante todo o período do passeio, mas o tempo do vôo é desprezível). Todos os vôos tem a mesma capacidade, e cada um tem seu custo por pessoa. 4

Introdução Objetivos: Apresentar um para resolução do problema de Fluxo Máximo a Custo Mínimo Mostrar a importância do conhecimento desse tipo de s para a resolução de problemas reais 5

Conceitos Importantes

Contextualizando... O que é um grafo? Dois tipos de elementos: vértices e arestas De maneira mais formal, grafos são tuplas do tipo G = <V, E>: V é o conjunto finito, não vazio, de vértices E é o conjunto finito de arestas Se Ǝ e = {v, w} e E, então, dizemos que e é incidente a v e w, bem como v e w são adjacentes 7

Menor caminho de origem única Em que consiste? Encontrar os menores caminhos entre um vértice inicial e todos os outros vértices de um grafo Utiliza grafos valorados Algoritmos mais famosos: Dijkstra Bellman-Ford Floyd-Warshall 8

Algoritmo de Bellman-Ford Bellman-Ford(G, w, s) for u V[G] do d[u] π[u] NIL d[s] 0 for i 1 to V[G] - 1 do for (u, v) E[G] do if d[v] > d[u] + w(u,v) then d[v] d[u] + w(u,v) π[v] u for (u, v) E[G] do if d[v] > d[u] + w(u, v) then return FALSE return TRUE Inicia as variáveis Relaxamento Checa a presença de ciclo negativo 9

Redes de fluxo O que são redes de fluxo? Cada aresta tem uma capacidade (fluxo máximo nessa aresta) Possui dois vértices especiais: fonte (f) e sovedouro (s) v V, existe um caminho entre f e s passando por v 10

Redes de fluxo Exemplo: 16 V 12 W F 10 4 9 7 S 13 4 X 14 Y 11

Rede residual Considere c(e) a função capacidade de e, e E A rede residual de uma rede R é um grafo R = <V, E residual >, tal que: e E, Ǝ uma e residual cuja capacidade é c residual c residual (e) = c(e) fluxo(e) Mínimo Demontiê Junior 12

Rede residual Rede residual após um fluxo de 4 no caminho F X Y S F 16 V 10 4 12 9 7 W S 4 9 X 10 4 Y 0 4 13

Algoritmo de fluxo máximo Ford-Fulkerson Rede residual Caminho expandível Ford-Fulkerson(G, s, t) for e E[G] do fluxo[e] 0 while exisitr um caminho expandível p na rede residual do aumentar f (*) ao longo de p return f (*) capacidade do arco de menor capacidade de p 14

Apresentação e

Fluxo Máximo a Custo Mínimo Por que não encontrar os menores caminhos com Dijkstra e, simplesmente, sair distribuindo o fluxo? Temos que gerar, sempre, a rede residual, para que não seja encontrado um fluxo diferente do máximo Quando geramos a rede residual, temos que modificar, também, os custos das arestas Algumas vezes invertemos o custo de uma aresta Dijkstra não funciona bem com pesos negativos 16

Fluxo Máximo a Custo Mínimo Exemplo F 16 V 1 12 9 W S 13 X 14 Y 4 Mínimo Demontiê Junior 17

Fluxo Máximo a Custo Mínimo Exemplo 16 F 12 V W 9 ERRADO 1 S 13 X 14 Y 4 Mínimo Demontiê Junior 18

Fluxo Máximo a Custo Mínimo Exemplo 12 V W 16 9 CORRETO F 1 S 13 X 14 Y 4 Mínimo Demontiê Junior 19

O MinCostMaxFlow(G, s, t) for e E[G] do fluxo[e] 0 rederesidual G custo 0 while exisitr um caminho entre F e S (rodar Bellman-Ford para encontra menor caminho F S (*)) do atualizar custo aumentar fluxo ao longo do caminho c gerar rede residual, modificando o custo das arestas return fluxo, custo (*) o Bellman-Ford roda em cima da rede residual Mínimo Demontiê Junior

Analisando o Análise do Bellman-Ford Ordem de complexidade: ( V. E ) Análise do Ford-Fulkerson Ordem de complexidade: O(E. f* ) Na de Edmonds-Karp, utilizando busca em largura: O(V. E²) 21

Analisando o Análise do Fluxo Máximo a Custo Mínimo MinCostMaxFlow(G, s, t) for e E[G] do fluxo[e] 0 rederesidual G custo 0 O(E) while exisitr um caminho entre F e S (rodar Bellman-Ford para encontra menor caminho F S (*)) do atualizar custo aumentar fluxo ao longo do caminho c gerar rede residual, modificando o custo das arestas O( f*. E. V) O(E) return fluxo, custo MinCostMaxFlow = O(V. E²) 22

Exemplo de Implementação Código Java que responde ao exemplo citado 23

Referências Prof. Jorge Figueiredo, notas de aula 6 e 10; CORMEN, THOMAS H., Introduction To Algorithms 2.ed. MIT PRESS, 01 http://www.slideshare.net/rafaelspere ira/fluxo-a-custo-mnimo-1828149 http://courses.csail.mit.edu/6.854/06/ scribe/s12-mincostflowalg.pdf Mínimo Demontiê Junior 24

Dúvidas? Mínimo Demontiê Junior 25