L'algoritmo di Ford-Fulkerson: un esempio di applicazioneunina.stidue.net/Ottimizzazione su...

15
L'algoritmo di Ford-Fulkerson: un esempio di applicazione Prof. Giancarlo Ferrari Trecate Dipartimento di Informatica e Sistemistica Università degli Studi di Pavia [email protected]

Transcript of L'algoritmo di Ford-Fulkerson: un esempio di applicazioneunina.stidue.net/Ottimizzazione su...

Page 1: L'algoritmo di Ford-Fulkerson: un esempio di applicazioneunina.stidue.net/Ottimizzazione su Rete/Materiale/Ford-Fulkerson... · L'algoritmo di Ford-Fulkerson: un esempio di applicazione

L'algoritmo di Ford-Fulkerson:un esempio di applicazione

Prof. Giancarlo Ferrari Trecate

Dipartimento di Informatica e Sistemistica

Università degli Studi di Pavia

[email protected]

Page 2: L'algoritmo di Ford-Fulkerson: un esempio di applicazioneunina.stidue.net/Ottimizzazione su Rete/Materiale/Ford-Fulkerson... · L'algoritmo di Ford-Fulkerson: un esempio di applicazione

Rappresentazione della rete incrementale

i ja b

a: capacità residua dell'arco direttob: capacità residua dell'arco inverso

i j

b

a

Nodo di partenza: 

Archi diretti e inversi: 

s0

0 : valore del flusso

Page 3: L'algoritmo di Ford-Fulkerson: un esempio di applicazioneunina.stidue.net/Ottimizzazione su Rete/Materiale/Ford-Fulkerson... · L'algoritmo di Ford-Fulkerson: un esempio di applicazione

Problema

4

6

2

3

1 5 7

9

12

3

6

9

4

63

2

2

25

8

7

Determinare il flusso massimo dal nodo s=1 al nodo t=7 nella rete seguente:

Page 4: L'algoritmo di Ford-Fulkerson: un esempio di applicazioneunina.stidue.net/Ottimizzazione su Rete/Materiale/Ford-Fulkerson... · L'algoritmo di Ford-Fulkerson: un esempio di applicazione

Inizializzazione

4

6

2

3

1 5 79

0

0

12

6

0

0

3

03

90

4

0 0

2

2

0

8 0

0

0

7

5

0

2

60

Le capacità degli archi inversi sono pari alle capacità della rete di partenza

0

Page 5: L'algoritmo di Ford-Fulkerson: un esempio di applicazioneunina.stidue.net/Ottimizzazione su Rete/Materiale/Ford-Fulkerson... · L'algoritmo di Ford-Fulkerson: un esempio di applicazione

Iterazione 1

4

6

2

3

1 5 79

0

0

12

6

0

0

3

03

90

4

0 0

2

2

0

8 0

0

0

7

5

0

2

60

● Cammino aumentante P:1­2­4­7● Massimo incremento di flusso: 

0

=7

Page 6: L'algoritmo di Ford-Fulkerson: un esempio di applicazioneunina.stidue.net/Ottimizzazione su Rete/Materiale/Ford-Fulkerson... · L'algoritmo di Ford-Fulkerson: un esempio di applicazione

Iterazione 1

4

6

2

3

1 5 72

7

0

12

6

0

0

3

03

27

4

0 0

2

2

0

8 0

7

0

0

5

0

2

60

7

● Aggiornamento delle capacità lungo P e del valore del flusso● Osservazione: l'arco (4,7) e' saturo 

Page 7: L'algoritmo di Ford-Fulkerson: un esempio di applicazioneunina.stidue.net/Ottimizzazione su Rete/Materiale/Ford-Fulkerson... · L'algoritmo di Ford-Fulkerson: un esempio di applicazione

Iterazione 2

4

6

2

3

1 5 72

7

0

12

6

0

0

3

03

27

4

0 0

2

2

0

8 0

7

0

0

5

0

2

60

7

● Cammino aumentante P:1­3­6­7● Massimo incremento di flusso: =3

Page 8: L'algoritmo di Ford-Fulkerson: un esempio di applicazioneunina.stidue.net/Ottimizzazione su Rete/Materiale/Ford-Fulkerson... · L'algoritmo di Ford-Fulkerson: un esempio di applicazione

Iterazione 2

4

6

2

3

1 5 72

7

3

9

6

3

0

3

00

27

4

0 0

2

2

0

8 0

7

3

0

2

0

2

60

10

● Aggiornamento delle capacità lungo P e del valore del flusso● Osservazione: l'arco (3,6) e' saturo 

Page 9: L'algoritmo di Ford-Fulkerson: un esempio di applicazioneunina.stidue.net/Ottimizzazione su Rete/Materiale/Ford-Fulkerson... · L'algoritmo di Ford-Fulkerson: un esempio di applicazione

Iterazione 3

4

6

2

3

1 5 72

7

3

9

6

3

0

3

00

27

4

0 0

2

2

0

8 0

7

3

0

2

0

2

60

10

● Cammino aumentante P:1­3­5­7● Massimo incremento di flusso: =6

Page 10: L'algoritmo di Ford-Fulkerson: un esempio di applicazioneunina.stidue.net/Ottimizzazione su Rete/Materiale/Ford-Fulkerson... · L'algoritmo di Ford-Fulkerson: un esempio di applicazione

Iterazione 3

4

6

2

3

1 5 72

7

9

3

6

3

0

3

00

27

4

0 0

2

2

0

2 6

7

3

0

2

0

2

06

16

● Aggiornamento delle capacità lungo P e del valore del flusso● Osservazione: l'arco (3,5) e' saturo 

Page 11: L'algoritmo di Ford-Fulkerson: un esempio di applicazioneunina.stidue.net/Ottimizzazione su Rete/Materiale/Ford-Fulkerson... · L'algoritmo di Ford-Fulkerson: un esempio di applicazione

Iterazione 4

4

6

2

3

1 5 72

7

9

3

6

3

0

3

00

27

4

0 0

2

2

0

2 6

7

3

0

2

0

2

06

16

● Cammino aumentante P:1­2­4­5­7● Massimo incremento di flusso: =2

Page 12: L'algoritmo di Ford-Fulkerson: un esempio di applicazioneunina.stidue.net/Ottimizzazione su Rete/Materiale/Ford-Fulkerson... · L'algoritmo di Ford-Fulkerson: un esempio di applicazione

Iterazione 4

4

6

2

3

1 5 70

9

9

3

6

3

0

3

00

09

4

0 2

0

2

0

0 8

7

3

0

2

0

2

06

18

● Aggiornamento delle capacità lungo P e del valore del flusso● Osservazione: l'arco (4,5) e' saturo 

Page 13: L'algoritmo di Ford-Fulkerson: un esempio di applicazioneunina.stidue.net/Ottimizzazione su Rete/Materiale/Ford-Fulkerson... · L'algoritmo di Ford-Fulkerson: un esempio di applicazione

Iterazione 5

4

6

2

3

1 5 70

9

9

3

6

3

0

3

00

09

4

0 2

0

2

0

0 8

7

3

0

2

0

2

06

18

● Cammino aumentante P:1­3­4­2­5­6­7● Massimo incremento di flusso: ● E' stato utilizzato l'arco inverso (4,2)

=2

Page 14: L'algoritmo di Ford-Fulkerson: un esempio di applicazioneunina.stidue.net/Ottimizzazione su Rete/Materiale/Ford-Fulkerson... · L'algoritmo di Ford-Fulkerson: un esempio di applicazione

Iterazione 5

4

6

2

3

1 5 70

9

11

1

6

3

0

3

00

27

2

2 2

0

0

2

0 8

7

5

0

0

2

0

06

20

● Aggiornamento delle capacità lungo P e del valore del flusso● Osservazione: tutti gli archi che arrivano al nodo 7 sono saturi ⇒ Non puo' esistere nessun un cammino aumentante, neppure utilizzando archi inversi.

Page 15: L'algoritmo di Ford-Fulkerson: un esempio di applicazioneunina.stidue.net/Ottimizzazione su Rete/Materiale/Ford-Fulkerson... · L'algoritmo di Ford-Fulkerson: un esempio di applicazione

Iterazione 5

4

6

2

3

1 5 70

9

11

1

6

3

0

3

00

27

2

2 2

0

0

2

0 8

7

5

0

0

2

0

06

20

 L'algoritmo si arresta ed il valore del flusso ottimo e' pari a 20