cammini di costo minimo su un grafo pesato - roma tre · cammini di costo minimo su un grafo pesato...

13
Cammini di costo minimo su un grafo pesato Algoritmo di Floyd-Warshall con la tecnica della programmazione dinamica Prof. M. Liverani – Ottimizzazione Combinatoria (IN440) a.a. 2017 / 2018

Upload: others

Post on 28-Oct-2019

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Cammini di costo minimo su un grafo pesato - Roma Tre · Cammini di costo minimo su un grafo pesato Algoritmo di Floyd-Warshall con la tecnica della programmazione dinamica Prof

Camminidicostominimosuungrafopesato

AlgoritmodiFloyd-Warshallconlatecnicadellaprogrammazionedinamica

Prof.M.Liverani– OttimizzazioneCombinatoria(IN440)

a.a.2017/2018

Page 2: Cammini di costo minimo su un grafo pesato - Roma Tre · Cammini di costo minimo su un grafo pesato Algoritmo di Floyd-Warshall con la tecnica della programmazione dinamica Prof

Datiininput• Ungrafo• Unafunzionew cheassegnapesiaglispigolidelgrafo(ipesipossonoessereanchenegativi,manonsonoconsentiticiclidicostonegativo)

• Sia

G = (V,E)

w : E(G)! R

1

2 3

4

56

2

4

1

5

3

2

1

–2 7

2

V (G) = {1,2,3, . . . ,n}

Page 3: Cammini di costo minimo su un grafo pesato - Roma Tre · Cammini di costo minimo su un grafo pesato Algoritmo di Floyd-Warshall con la tecnica della programmazione dinamica Prof

Outputdell’algoritmo• Unamatricequadrataconicostideicamminiminimiperognicoppiadiverticidelgrafo:

conparialcostodiuncamminodicostominimodaa

• Indichiamoconlamatricecheriportailcostodelcamminominimoperognicoppiadiverticieconverticiintermedisceltinell’insieme

n⇥n

D(n) d(n)i, j i j

D(k)

i j{1,2,3, . . . ,k}

Page 4: Cammini di costo minimo su un grafo pesato - Roma Tre · Cammini di costo minimo su un grafo pesato Algoritmo di Floyd-Warshall con la tecnica della programmazione dinamica Prof

AlgoritmodiFloyd-Warshall• Lamatricerappresentailcostodelcamminodaaconnessunverticeintermedio:quindièbasatasulcostoassegnatoadognispigolodelgrafo(infinitoselospigolononesiste)• L’algoritmocostruisceunasequenzadimatrici:sipassadallamatriceallamatriceselezionandoilminimotrailcostodelcamminominimodaaconverticiin

eilcostodelcamminodicostominimodaapassanteperconverticiintermediin

D(0)

i j

wi, j

D(k�1)

D(k)

i j{1, . . . ,k�1}

i j k{1, . . . ,k�1}

Page 5: Cammini di costo minimo su un grafo pesato - Roma Tre · Cammini di costo minimo su un grafo pesato Algoritmo di Floyd-Warshall con la tecnica della programmazione dinamica Prof

AlgoritmodiFloyd-Warshall

i j

k

xy

z

a

b c

d

sceltiin {1, . . . ,k�1}

costo:d(k�1)i, j

costo:costo:d(k�1)i,k d(k�1)

k, j

costo:d(k�1)i,k +d(k�1)

k, j

Quindi:

d(k)i, j = min

(d(k�1)

i, j

d(k�1)i,k +d(k�1)

k, j

Page 6: Cammini di costo minimo su un grafo pesato - Roma Tre · Cammini di costo minimo su un grafo pesato Algoritmo di Floyd-Warshall con la tecnica della programmazione dinamica Prof

Inizializzazione

• VieneinizializzatalamatriceD(0) conidatidellamatriceW

1

2 3

4

56

2

4

1

5

3

2

1

–2 7

2

1 2 3 4 5 6

1 0 2 ∞ ∞ ∞ 5

2 ∞ 0 4 ∞ ∞ 1

3 ∞ ∞ 0 2 7 ∞

4 ∞ ∞ ∞ 0 1 ∞

5 3 ∞ ∞ ∞ 0 ∞

6 ∞ ∞ –2 ∞ 2 0

D(0)

Page 7: Cammini di costo minimo su un grafo pesato - Roma Tre · Cammini di costo minimo su un grafo pesato Algoritmo di Floyd-Warshall con la tecnica della programmazione dinamica Prof

Camminidicostominimoconverticiintermediin{1}

• VienecalcolatalamatriceD(1) conicostideglieventualicamminidicostominimoconverticiintermediin{1}

1

2 3

4

56

2

4

1

5

3

2

1

–2 7

2

1 2 3 4 5 6

1 0 2 ∞ ∞ ∞ 5

2 ∞ 0 4 ∞ ∞ 1

3 ∞ ∞ 0 2 7 ∞

4 ∞ ∞ ∞ 0 1 ∞

5 3 5 ∞ ∞ 0 8

6 ∞ ∞ –2 ∞ 2 0

D(1)

Page 8: Cammini di costo minimo su un grafo pesato - Roma Tre · Cammini di costo minimo su un grafo pesato Algoritmo di Floyd-Warshall con la tecnica della programmazione dinamica Prof

Camminidicostominimoconverticiintermediin{1,2}

• VienecalcolatalamatriceD(2) conicostideglieventualicamminidicostominimoconverticiintermediin{1, 2}

1

2 3

4

56

2

4

1

5

3

2

1

–2 7

2

1 2 3 4 5 6

1 0 2 6 ∞ ∞ 3

2 ∞ 0 4 ∞ ∞ 1

3 ∞ ∞ 0 2 7 ∞

4 ∞ ∞ ∞ 0 1 ∞

5 3 5 9 ∞ 0 6

6 ∞ ∞ –2 ∞ 2 0

D(2)

Page 9: Cammini di costo minimo su un grafo pesato - Roma Tre · Cammini di costo minimo su un grafo pesato Algoritmo di Floyd-Warshall con la tecnica della programmazione dinamica Prof

Camminidicostominimoconverticiintermediin{1,2,3}

• VienecalcolatalamatriceD(3) conicostideglieventualicamminidicostominimoconverticiintermediin{1, 2, 3}

1

2 3

4

56

2

4

1

5

3

2

1

–2 7

2

1 2 3 4 5 6

1 0 2 6 8 13 3

2 ∞ 0 4 6 11 1

3 ∞ ∞ 0 2 7 ∞

4 ∞ ∞ ∞ 0 1 ∞

5 3 5 9 11 0 6

6 ∞ ∞ –2 0 2 0

D(3)

Page 10: Cammini di costo minimo su un grafo pesato - Roma Tre · Cammini di costo minimo su un grafo pesato Algoritmo di Floyd-Warshall con la tecnica della programmazione dinamica Prof

Camminidicostominimoconverticiintermediin{1,2,3,4}

• VienecalcolatalamatriceD(4) conicostideglieventualicamminidicostominimoconverticiintermediin{1, 2, 3, 4}

1

2 3

4

56

2

4

1

5

3

2

1

–2 7

2

1 2 3 4 5 6

1 0 2 6 8 9 3

2 ∞ 0 4 6 7 1

3 ∞ ∞ 0 2 3 ∞

4 ∞ ∞ ∞ 0 1 ∞

5 3 5 9 11 0 6

6 ∞ ∞ –2 0 1 0

D(4)

Page 11: Cammini di costo minimo su un grafo pesato - Roma Tre · Cammini di costo minimo su un grafo pesato Algoritmo di Floyd-Warshall con la tecnica della programmazione dinamica Prof

Camminidicostominimoconverticiintermediin{1,2,3,4,5}

• VienecalcolatalamatriceD(5) conicostideglieventualicamminidicostominimoconverticiintermediin{1, 2, 3, 4, 5}

1

2 3

4

56

2

4

1

5

3

2

1

–2 7

2

1 2 3 4 5 6

1 0 2 6 8 9 3

2 10 0 4 6 7 1

3 6 8 0 2 3 9

4 4 6 10 0 1 7

5 3 5 9 11 0 6

6 4 6 –2 0 1 0

D(5)

Page 12: Cammini di costo minimo su un grafo pesato - Roma Tre · Cammini di costo minimo su un grafo pesato Algoritmo di Floyd-Warshall con la tecnica della programmazione dinamica Prof

Camminidicostominimoconverticiintermediin{1,2,3,4,5,6}

• VienecalcolatalamatriceD(6) conicostideglieventualicamminidicostominimoconverticiintermediin{1, 2, 3, 4, 5, 6}

1

2 3

4

56

2

4

1

5

3

2

1

–2 7

2

1 2 3 4 5 6

1 0 2 1 3 4 3

2 6 0 –1 1 2 1

3 6 8 0 2 3 9

4 4 6 5 0 1 7

5 3 5 4 6 0 6

6 4 6 –2 0 1 0

D(6)

Page 13: Cammini di costo minimo su un grafo pesato - Roma Tre · Cammini di costo minimo su un grafo pesato Algoritmo di Floyd-Warshall con la tecnica della programmazione dinamica Prof

Camminidicostominimoconverticiintermediin{1,2,3,4,5,6}

• VienecalcolatalamatriceD(6) conicostideglieventualicamminidicostominimoconverticiintermediin{1, 2, 3, 4, 5, 6}

1

2 3

4

56

2

4

1

5

3

2

1

–2 7

2

1 2 3 4 5 6

1 0 2 1 3 4 3

2 6 0 –1 1 2 1

3 6 8 0 2 3 9

4 4 6 5 0 1 7

5 3 5 4 6 0 6

6 4 6 –2 0 1 0

D(6)

n = 6

Soluzione!