Il teorema del flusso massimo e taglio minimo (conosciuto anche come max-flow min-cut) dice che, in una rete di flusso, il massimo flusso passante dalla sorgente (il nodo iniziale) al pozzo (il nodo finale) è uguale alla somma dei pesi degli archi nel taglio minimo.
Si tratta di una generalizzazione del problema primale standard, tipico della programmazione lineare.
Il teorema fu dimostrato da P. Elias, A. Feinstein, e C.E. Shannon nel 1956, e indipendentemente anche da L.R. Ford Jr. e D.R. Fulkerson nello stesso anno.[1]
Sia
una rete di flusso, con s e t rispettivamente sorgente e pozzo di N.
Definizione. Un flusso è una funzione
che assegna ad ogni arco
un valore denotato con
o
. Il flusso è soggetto a due vincoli:
- Vincolo di capacità:
![{\displaystyle \forall (u,v)\in E:\qquad f_{uv}\leq c_{uv))](https://wikimedia.org/api/rest_v1/media/math/render/svg/15f95586316fd4ea3e902453281a3e76a8c46fc9)
- Conservazione del flusso:
![{\displaystyle \forall v\in V\setminus \{s,t\}:\qquad \sum \nolimits _{\{u:(u,v)\in E\))f_{uv}=\sum \nolimits _{\{u:(v,u)\in E\))f_{vu}.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/09ba52095288a1a32e6b326179a44a56ca818853)
Definizione. La capacità è una funzione
che assegna ad ogni arco
un valore denotato con
o
. Rappresenta il massimo flusso che può passare attraverso un arco.
Definizione. Il valore di flusso è costituito da:
![{\displaystyle |f|=\sum \nolimits _{v\in V}f_{sv},}](https://wikimedia.org/api/rest_v1/media/math/render/svg/daff9ef737e5a4058650303273482c2717fa4564)
e rappresenta l'ammontare di flusso che parte dalla sorgente per arrivare al pozzo.
Definizione. Un taglio s-t
è la partizione di V tale che
e
. L'insieme di taglio di C è:
![{\displaystyle \{(u,v)\in E\ :\ u\in S,v\in T\}.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/e32963bf0e3b43e72ccbba45340ad0eb1f81c22a)
Nota che se gli archi di C venissero rimossi, | f | = 0.
Definizione. La capacità di un taglio s-t è definita come
![{\displaystyle c(S,T)=\sum \nolimits _{(u,v)\in S\times T}c_{uv}=\sum \nolimits _{(i,j)\in E}c_{ij}d_{ij},}](https://wikimedia.org/api/rest_v1/media/math/render/svg/4c14437e720e7cc010a5e787afef1675428a58c4)
dove
se
e
, 0 altrimenti.
- Minimum s-t Cut Problem. Determinare S e T tali che la capacità del taglio s-t sia minima.
Il valore massimo di un flusso s-t è uguale alla capacità minima fra tutti i tagli s-t.
Si introducono due teoremi fondamentali, chiamati teorema 1 e teorema 2, per semplificare la dimostrazione.
sia
un taglio della rete di flusso N con singola sorgente s e singolo pozzo t.
Si ipotizzi un flusso
tale che
se
e
altrimenti. Dove
è il valore della capacità dell'arco
.
Allora
è il flusso di valore massimo in
e
è il taglio di N di capacità minima.
Dimostrazione valore massimo:
Il valore di un flusso
è calcolato come
Per un flusso ammissibile questo valore è uguale per ogni taglio
della rete N. Se consideriamo il flusso
definito nelle ipotesi abbiamo che il valore del flusso diventa
siccome ogni arco entrate in
ha flusso azzerato.
Ipotizziamo, per assurdo, che esista un flusso di valore superiore e chiamiamolo
. Ora consideriamo il taglio
su cui è stata costruita l'ipotesi.
. Ma questo è chiaramente impossibile poiché la prima sommatoria ha valore massimo in
(e quindi anche in
) e la seconda sommatoria può soltanto peggiorare il valore del flusso. Quindi otteniamo
.
Dimostrazione taglio di capacità minima:
Per definizione di valore di un flusso abbiamo
dove
è la capacità di qualsiasi taglio
in una rete di flusso.
Per ipotesi il valore del flusso
è
.
Per ogni altro taglio
di capacità diversa il valore del flusso è
.
Ma
è un flusso ammissibile
sia
un flusso in una rete di flusso s-t
, allora
è il flusso di valore massimo se e solo[2] se il grafo residuo
relativo al flusso
non contiene un percorso da s a t e quindi non contiene un cammino aumentante.
Dimostrazione
Dimostrazione
:
Consideriamo ogni percorso in
che inizia da
e creiamo un insieme
composto da tutti i vertici che appartengono a questi percorsi.
Siccome non esiste cammino aumentante:
. Quindi consideriamo il taglio
.
Ogni arco
ha come valore di flusso
oppure
per costruzione del grafo residuo.
Quindi il taglio
soddisfa le ipotesi del teorema 1 e quindi
è il flusso di massimo valore.
Il valore massimo di un flusso s-t è uguale alla capacità minima fra tutti i tagli s-t.
Dimostrazione
Il taglio elaborato nella dimostrazione del teorema 2 ha capacità pari al flusso di massimo valore.
- ^ P. Elias, A. Feinstein, and C. E. Shannon, A note on the maximum flow through a network, IRE. Transactions on Information Theory, 2, 4 (1956), 117–119
- ^ manca l'altra dimostrazione, che non è necessaria ai fini del teorema