Você está na página 1de 23

Universidade Federal de Sergipe

Centro de Ciências Exatas e Tecnologia


Departamento de Computação

Grafos e Algoritmos Computacionais:


Fluxo Máximo em Redes

Aula 20

Leila Maciel de Almeida e Silva


leila@ufs.br
Fluxo Máximo em Redes

-Fundamental para a solução de diversos


problemas de áreas diferentes.

-Maior aplicação: otimização combinatória

Grafos e Algoritmos Computacionais DCOMP - UFS


2
Fluxo Máximo em Redes

Alguns conceitos:

Uma rede é um dígrafo (não necessariamente simples)


D em que cada aresta a pertencente à aD está associado
a um número real positivo c(a) denominado capacidade
da aresta a.

-vértice origem s (fonte)

-vértice destino t (sumidouro)

Grafos e Algoritmos Computacionais DCOMP - UFS


3
Fluxo Máximo em Redes

Um fluxo f de s a t em D é uma função que a cada aresta a


pertencente à aD associa um número real não negativo f(a)
satisfazendo as seguintes condições:

(i) 0 ≤ f(a) ≤ c(a), para toda aresta a pertencente à aD

(ii) ∑w1 f(w1,v) = ∑w2 f(v,w2), para todo vértice v ≠ s,t.

ii → conservação de fluxo em cada vértice


Somatório ≡ valor do fluxo no vértice
Valor do fluxo na origem ≡ valor do fluxo em D

Grafos e Algoritmos Computacionais DCOMP - UFS


4
Fluxo Máximo em Redes

Notação x(y) x→ capacidade; y→ fluxo

Fonte: Grafos e algoritmos computacionais 2ª ed, Jayme Luiz Szwarcfiter


Grafos e Algoritmos Computacionais DCOMP - UFS
5
Fluxo Máximo em Redes

Aresta (v2,v3):

Fluxo = 1
Capacidade = 2

Valor do fluxo em v2 = 3, em t = 4
Grafos e Algoritmos Computacionais DCOMP - UFS
6
Fluxo Máximo em Redes

Não é um fluxo

v4 não atende à
propriedade (ii)

Dizemos que temos um Fluxo Ilegal


Grafos e Algoritmos Computacionais DCOMP - UFS
7
Fluxo Máximo em Redes

Um fluxo pode variar de um


mínimo para um máximo.

Fluxo máximo:
4+2+1=7

Aresta saturada:
f(e) = c(e), ex: (v2, t)

Vértice saturado: todas as


arestas convergentes a v ou
divergentes de v estão
saturadas, ex: v4

Fluxo Maximal: Todo caminho de s a t em D contém uma aresta saturada.

Grafos e Algoritmos Computacionais DCOMP - UFS


8
Fluxo Máximo em Redes

Fluxo Maximal Fluxo Máximo


Valor: 1 Valor: 2

Grafos e Algoritmos Computacionais DCOMP - UFS


9
Fluxo Máximo em Redes

- Corte SX: v’ VD
v’ = VD – V’

- SX+

- SX-:

- Capacidade do corte: Capacidade de SX+


- Corte mínimo: capacidade do corte mínimo
- Fluxo no corte: f = (SX+) - (SX-)
Grafos e Algoritmos Computacionais DCOMP - UFS
10
Fluxo Máximo em Redes

SX+={(s,v1),(v3,v4),(v2,t)}

SX- = {(v1,v3)}

SX = SX+ U SX-

c(SX+) = 4+3+3=10

f(SX+) = 5

f(SX-) = 1

f(SX) = 4

Grafos e Algoritmos Computacionais DCOMP - UFS


11
Fluxo Máximo em Redes

Lema:

Seja f um fluxo na rede D e SX um corte em D, então


f(SX) = f(D)

Logo, se desejamos determinar o fluxo máximo de uma


rede, podemos pensar em olhar os cortes da rede, pois
estão relacionados. Na realidade eles estão relacionados
pelo:

Grafos e Algoritmos Computacionais DCOMP - UFS


12
Fluxo Máximo em Redes

Teorema do Fluxo Máximo – Corte mínimo

O valor do fluxo máximo em uma rede D é igual à


capacidade do corte mínimo de D.

Grafos e Algoritmos Computacionais DCOMP - UFS


13
Fluxo Máximo em Redes

- f: fluxo em uma rede D

- Objetivo: Aumentar f

- Máximo que a aresta e pode receber adicionalmente é c(e) – f(e),


pode ser que o fluxo aumente (na rede)

- aresta direta e: c(e) – f(e) >0

- As vezes precisamos, para aumentar o fluxo na rede, decrementar


o fluxo em algumas arestas

-Aresta contrária: possui fluxo >0 e pode receber decremento

Grafos e Algoritmos Computacionais DCOMP - UFS


14
Fluxo Máximo em Redes

Rede Residual D’(f)

(v,w) aresta direta de D → (v,w) aresta de D’ direta


com capacidade c’(v,w) = c(v,w) - f(v,w)

(v,w) aresta contrária de D → (w,v) aresta de D’


contrária com capacidade c’(w,v) = f(v,w)

Grafos e Algoritmos Computacionais DCOMP - UFS


15
Fluxo Máximo em Redes

A rede residual indica variações de fluxos que as arestas


podem sofrer.

Um caminho de s a t na rede residual D’f é denominado


aumentante para f, ex: (s,v2,v4,v1,v3,t).
Grafos e Algoritmos Computacionais DCOMP - UFS
16
Fluxo Máximo em Redes

Lema:

Seja f um fluxo em uma rede D(V,E) e D’ uma rede


residual correspondente. Suponha que exista em D’ um
caminho aumentante v1,v2,…,vk da origem S = v1, ao
destino t = vk. Então f(D) pode ser aumentado de um
valor

F’ = min {c’(vj,vj+1) | 1 ≤ j < k}

Grafos e Algoritmos Computacionais DCOMP - UFS


17
Fluxo Máximo em Redes
Exemplo:

Caminho aumentante: s, v1, v4, t


Capacidade mínima: 1
Incremento 1 em (s,v1) e (v4,t) e diminuo 1 em (v4,v1) (aumenta fluxo)

Grafos e Algoritmos Computacionais DCOMP - UFS


18
Fluxo Máximo em Redes

- Uma aresta e pode atuar como gargalo.

- De forma geral, o valor de qualquer fluxo f não pode


ultrapassar o valor de qualquer corte.

f(D) = f(SX) = ∑ f(e) - ∑ f(e) ≤ ∑ c(e) = c(SX)

- O fluxo máximo não pode ultrapassar a capacidade do


seu corte mínimo.

Grafos e Algoritmos Computacionais DCOMP - UFS


19
Fluxo Máximo em Redes

Com o lema do caminho aumentante prova-se o


teorema Fluxo Máximo – Corte Mínimo

O algoritmo para determinação do fluxo máximo pode


seguir dos raciocínios vistos.

Grafos e Algoritmos Computacionais DCOMP - UFS


20
Fluxo Máximo em Redes
algoritmo fluxo máximo em uma rede
dados: rede D(V,E) com capacidades c(e) inteiras e positivas, para cada
e E, origem s V e destino t.
F:=0
para e E faça f(e) := 0
construir a rede residual D’(f)
enquanto existir caminho v1,v2,…,vk de s = v1 a t = vk em D’ faça
F’:= min {c’(vj,vj+1) | 1 ≤ j < k}
para j:= 1,2,…,k-1 faça
se (vj,vj+1) é direta então
f(vj,vj+1) := f(vj,vj+1) + F’
caso contrário f(vj+1,vj) := f(vj+1,vj) – F’
F := F + F’
construir a rede residual D’(f)

Grafos e Algoritmos Computacionais DCOMP - UFS


21
Exercícios recomendados

...

Grafos e Algoritmos Computacionais DCOMP - UFS


22
Referências

Capítulo 6 do Livro de Jayme Luiz Szwarcfiter , Grafos e


algoritmos computacionais 2ª ed.

Grafos e Algoritmos Computacionais DCOMP - UFS


23

Você também pode gostar