Universidade Federal de Campina Grande              Centro de Engenharia Elétrica e Informática               Departamento...
AgendaIntrodução             IntroduçãoConceitos                        Conceitos importantesimportantesApresentação ...
IntroduçãoIntrodução                        Caracterização              do Problema:ConceitosimportantesApresentação  ...
IntroduçãoIntrodução               Motivação:Conceitosimportantes                  Aplicável a vários problemas reais....
IntroduçãoIntrodução               Objetivos:Conceitosimportantes                              Apresentar um algoritmo...
Conceitos Importantes   DSC/CEEI/UFCG
Contextualizando...Introdução               O que é um grafo?Conceitosimportantes                            Dois tipo...
Menor caminho de origem únicaIntrodução               Em que consiste?Conceitosimportantes                            ...
Algoritmo de Bellman-FordIntroduçãoConceitosimportantes            Bellman-Ford(G, w, s)Apresentação      e       for ∀...
Redes de fluxoIntrodução               O que são redes de fluxo?Conceitosimportantes                            Cada a...
Redes de fluxoIntrodução               Exemplo:ConceitosimportantesApresentação      e                                ...
Rede residualIntrodução             Considere c(e) a função capacidade                         de e, e ∈ EConceitosimpo...
Rede residualIntrodução               Rede residual após um fluxo de 4 noConceitosimportantes                caminho F...
Algoritmo de fluxo máximoIntrodução               Ford-FulkersonConceitosimportantes                            Rede r...
Apresentação e análise doalgoritmo    DSC/CEEI/UFCG
Fluxo Máximo a Custo MínimoIntrodução               “Por que não encontrar os menoresConceitosimportantes              ...
Fluxo Máximo a Custo MínimoIntrodução               ExemploConceitosimportantesApresentação      e                    ...
Fluxo Máximo a Custo MínimoIntrodução               ExemploConceitosimportantesApresentação      e                    ...
Fluxo Máximo a Custo MínimoIntrodução               ExemploConceitosimportantesApresentação      e                    ...
O algoritmoIntroduçãoConceitos             MinCostMaxFlow(G, s, t)importantes                         for ∀e ∈ E[G] doA...
Analisando o algoritmoIntrodução               Análise do Bellman-FordConceitosimportantes                            ...
Analisando o algoritmoIntrodução               Análise do Fluxo Máximo a Custo MínimoConceitosimportantes              ...
Exemplo de ImplementaçãoIntroduçãoConceitosimportantesApresentação      eanálise doalgoritmoExemplode                 ...
ReferênciasIntrodução             Prof. Jorge Figueiredo, notas de aula                         6 e 10;Conceitosimporta...
Dúvidas?IntroduçãoConceitosimportantesApresentação      eanálise doalgoritmoExemplodeimplementaçãoConsideraçõesFinais...
Próximos SlideShares
Carregando em…5
×

Fluxo Maximo Custo Minimo - Min Cost Max Flow

1.058 visualizações

Publicada em

O problema do fluxo máximo a custo mínimo (Min Cost Max Flow), em grafos, consiste em encontrar os caminhos de menor custo que geram o fluxo máximo de uma rede. Este é um problema clássico na Teoria dos Grafos e se aplica a várias situações práticas, como encontrar a maior quantidade de carga que uma empresa pode transportar, de uma só vez para certo local, de modo que gaste a menor quantidade de combustível. Neste seminário, será apresentado e analisado um algoritmo que soluciona este tipo de problema e, também, uma implementação deste para a resolução de um problema prático.

Publicada em: Educação
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Fluxo Maximo Custo Minimo - Min Cost Max Flow

  1. 1. 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ínimoMin Cost Max Flow DSC/CEEI/UFCG
  2. 2. AgendaIntrodução  IntroduçãoConceitos  Conceitos importantesimportantesApresentação eanálise doalgoritmo  Algoritmo de Bellman-FordExemplodeimplementação  Redes de fluxoConsiderações Apresentação e análise do algoritmoFinais   Exemplo de implementação  Considerações Finais DSC/CEEI/UFCG CST – Fluxo Máximo a Custo 2 Mínimo – Demontiê Junior
  3. 3. IntroduçãoIntrodução  Caracterização do Problema:ConceitosimportantesApresentação e  Encontrar os caminhos de menor custoanálise doalgoritmo que geram o fluxo máximo de uma rede.ExemplodeimplementaçãoConsideraçõesFinais  Utiliza algoritmos de fluxo máximo e de menor caminho de origem única.  Cada aresta tem dois atributos: peso e DSC/CEEI/UFCG capacidade CST – Fluxo Máximo a Custo 3 Mínimo – Demontiê Junior
  4. 4. IntroduçãoIntrodução  Motivação:Conceitosimportantes  Aplicável a vários problemas reais.Apresentação eanálise do  Exemplo (variação: fluxo a custo mínimo):algoritmoExemplode “Saber a quantia mínima em dinheiro queimplementaçãoConsiderações um grupo de amigos precisa dispor para seFinais 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 DSC/CEEI/UFCG tem a mesma capacidade, e cada um tem seu custo por pessoa.” CST – Fluxo Máximo a Custo 4 Mínimo – Demontiê Junior
  5. 5. IntroduçãoIntrodução  Objetivos:Conceitosimportantes  Apresentar um algoritmo para resoluçãoApresentação eanálise doalgoritmo do problema de Fluxo Máximo a CustoExemplodeimplementação MínimoConsideraçõesFinais  Mostrar a importância do conhecimento desse tipo de algoritmos para a resolução de problemas reais DSC/CEEI/UFCG CST – Fluxo Máximo a Custo 5 Mínimo – Demontiê Junior
  6. 6. Conceitos Importantes DSC/CEEI/UFCG
  7. 7. Contextualizando...Introdução  O que é um grafo?Conceitosimportantes  Dois tipos de elementos: vértices eApresentação eanálise doalgoritmo arestasExemplodeimplementação  De maneira mais formal, grafos sãoConsideraçõesFinais 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 DSC/CEEI/UFCG adjacentes CST – Fluxo Máximo a Custo 7 Mínimo – Demontiê Junior
  8. 8. Menor caminho de origem únicaIntrodução  Em que consiste?Conceitosimportantes  Encontrar os menores caminhos entreApresentação eanálise doalgoritmo um vértice inicial e todos os outrosExemplodeimplementação vértices de um grafoConsideraçõesFinais  Utiliza grafos valorados  Algoritmos mais famosos:  Dijkstra  Bellman-Ford  Floyd-Warshall DSC/CEEI/UFCG CST – Fluxo Máximo a Custo 8 Mínimo – Demontiê Junior
  9. 9. Algoritmo de Bellman-FordIntroduçãoConceitosimportantes Bellman-Ford(G, w, s)Apresentação e for ∀u ∈ V[G] doanálise do d[u] ← ∞algoritmo π[u] ← NIL Inicia as variáveisExemplodeimplementação d[s] ← 0Considerações for i  1 to |V[G]| - 1 doFinais for ∀(u, v) ∈ E[G] do if d[v] > d[u] + w(u,v) then d[v] ← d[u] + w(u,v) Relaxamento π[v] ← u for ∀(u, v) ∈ E[G] do if d[v] > d[u] + w(u, v) then Checa a presença return FALSE de ciclo negativo DSC/CEEI/UFCG return TRUE CST – Fluxo Máximo a Custo 9 Mínimo – Demontiê Junior
  10. 10. Redes de fluxoIntrodução  O que são redes de fluxo?Conceitosimportantes  Cada aresta tem uma capacidade (fluxoApresentação eanálise doalgoritmo máximo nessa aresta)Exemplodeimplementação  Possui dois vértices especiais: fonte (f)ConsideraçõesFinais e sovedouro (s)  ∀v ∈ V, existe um caminho entre f e s passando por v DSC/CEEI/UFCG CST – Fluxo Máximo a Custo 10 Mínimo – Demontiê Junior
  11. 11. Redes de fluxoIntrodução  Exemplo:ConceitosimportantesApresentação e 12análise do V WalgoritmoExemplode 16 20implementaçãoConsideraçõesFinais 10 4 9 7 F S 13 4 X Y DSC/CEEI/UFCG 14 CST – Fluxo Máximo a Custo 11 Mínimo – Demontiê Junior
  12. 12. Rede residualIntrodução  Considere c(e) a função capacidade de e, e ∈ EConceitosimportantesApresentação e  A rede residual de uma rede R é umanálise doalgoritmo grafo R = <V, Eresidual>, tal que:ExemplodeimplementaçãoConsideraçõesFinais  ∀e ∈ E, Ǝ uma eresidual cuja capacidade é cresidual  cresidual(e) = c(e) – fluxo(e) DSC/CEEI/UFCG CST – Fluxo Máximo a Custo Mínimo – 12 Demontiê Junior
  13. 13. Rede residualIntrodução  Rede residual após um fluxo de 4 noConceitosimportantes caminho FXYSApresentação eanálise do 12algoritmo V WExemplodeimplementação 16 20ConsideraçõesFinais 10 4 9 7 F S 9 0 4 4 10 X Y DSC/CEEI/UFCG 4 CST – Fluxo Máximo a Custo 13 Mínimo – Demontiê Junior
  14. 14. Algoritmo de fluxo máximoIntrodução  Ford-FulkersonConceitosimportantes  Rede residualApresentação e  Caminho expandívelanálise doalgoritmoExemplodeimplementação Ford-Fulkerson(G, s, t)ConsideraçõesFinais 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 DSC/CEEI/UFCG (*) capacidade do arco de menor capacidade de p CST – Fluxo Máximo a Custo 14 Mínimo – Demontiê Junior
  15. 15. Apresentação e análise doalgoritmo DSC/CEEI/UFCG
  16. 16. Fluxo Máximo a Custo MínimoIntrodução  “Por que não encontrar os menoresConceitosimportantes caminhos com Dijkstra e, simplesmente, sairApresentaçãoanálise do e distribuindo o fluxo?”algoritmoExemplode  Temos que gerar, sempre, a rede residual, paraimplementação que não seja encontrado um fluxo diferente doConsideraçõesFinais máximo  Quando geramos a rede residual, temos que modificar, também, os custos das arestas  Algumas vezes invertemos o custo de uma aresta DSC/CEEI/UFCG  Dijkstra não funciona bem com pesos negativos CST – Fluxo Máximo a Custo 16 Mínimo – Demontiê Junior
  17. 17. Fluxo Máximo a Custo MínimoIntrodução  ExemploConceitosimportantesApresentação e 12análise do V Walgoritmo 20Exemplode 16 20implementação 20 20ConsideraçõesFinais 9 F 1 S 20 20 13 4 20 X Y DSC/CEEI/UFCG 14 CST – Fluxo Máximo a Custo Mínimo – 17 Demontiê Junior
  18. 18. Fluxo Máximo a Custo MínimoIntrodução  ExemploConceitosimportantesApresentação e 12análise do V Walgoritmo 20Exemplode 16 20implementação 20 20ConsideraçõesFinais 9 F ERRADO 1 S 20 20 13 4 20 X Y DSC/CEEI/UFCG 14 CST – Fluxo Máximo a Custo Mínimo – 18 Demontiê Junior
  19. 19. Fluxo Máximo a Custo MínimoIntrodução  ExemploConceitosimportantesApresentação e 12análise do V Walgoritmo 20Exemplode 16 20implementação 20 20ConsideraçõesFinais 9 F CORRETO 1 S 20 20 13 4 20 X Y DSC/CEEI/UFCG 14 CST – Fluxo Máximo a Custo Mínimo – 19 Demontiê Junior
  20. 20. O algoritmoIntroduçãoConceitos MinCostMaxFlow(G, s, t)importantes for ∀e ∈ E[G] doApresentação eanálise do fluxo[e] ← 0algoritmoExemplode redeResidual ← Gimplementação custo ← 0ConsideraçõesFinais 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 DSC/CEEI/UFCG return fluxo, custo (*) o Bellman-Ford roda em cima da rede residual CST – Fluxo Máximo a Custo Mínimo – 20 Demontiê Junior
  21. 21. Analisando o algoritmoIntrodução  Análise do Bellman-FordConceitosimportantes  Ordem de complexidade: (|V|.|E|)Apresentação e Análise do Ford-Fulkersonanálise doalgoritmo Exemplodeimplementação  Ordem de complexidade: O(E.|f*|)ConsideraçõesFinais  Na implementação de Edmonds-Karp, utilizando busca em largura: O(V.E²) DSC/CEEI/UFCG CST – Fluxo Máximo a Custo 21 Mínimo – Demontiê Junior
  22. 22. Analisando o algoritmoIntrodução  Análise do Fluxo Máximo a Custo MínimoConceitosimportantes MinCostMaxFlow(G, s, t) for ∀e ∈ E[G] doApresentação e fluxo[e] ← 0 O(E)análise doalgoritmo redeResidual ← GExemplode custo ← 0implementação while exisitr um caminho entre F e S (rodar Bellman-FordConsiderações para encontra menor caminho F  S (*)) do O(|f*|.E.V)Finais atualizar custo aumentar fluxo ao longo do caminho c O(E) gerar rede residual, modificando o custo das arestas return fluxo, custo  MinCostMaxFlow = O(V.E²) DSC/CEEI/UFCG CST – Fluxo Máximo a Custo 22 Mínimo – Demontiê Junior
  23. 23. Exemplo de ImplementaçãoIntroduçãoConceitosimportantesApresentação eanálise doalgoritmoExemplode  Código Java que responde aoimplementaçãoConsiderações exemplo citadoFinais DSC/CEEI/UFCG CST – Fluxo Máximo a Custo 23 Mínimo – Demontiê Junior
  24. 24. ReferênciasIntrodução  Prof. Jorge Figueiredo, notas de aula 6 e 10;ConceitosimportantesApresentação e  CORMEN, THOMAS H., Introductionanálise doalgoritmo To Algorithms 2.ed. MIT PRESS, 2001ExemplodeimplementaçãoConsideraçõesFinais  http://www.slideshare.net/rafaelspere ira/fluxo-a-custo-mnimo-1828149  http://courses.csail.mit.edu/6.854/06/ DSC/CEEI/UFCG scribe/s12-minCostFlowAlg.pdf CST – Fluxo Máximo a Custo Mínimo – 24 Demontiê Junior
  25. 25. Dúvidas?IntroduçãoConceitosimportantesApresentação eanálise doalgoritmoExemplodeimplementaçãoConsideraçõesFinais DSC/CEEI/UFCG CST – Fluxo Máximo a Custo Mínimo – 25 Demontiê Junior

×