cammini di costo minimo su un grafo pesato - roma tre · cammini di costo minimo su un grafo pesato...
TRANSCRIPT
Camminidicostominimosuungrafopesato
AlgoritmodiFloyd-Warshallconlatecnicadellaprogrammazionedinamica
Prof.M.Liverani– OttimizzazioneCombinatoria(IN440)
a.a.2017/2018
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}
Outputdell’algoritmo• Unamatricequadrataconicostideicamminiminimiperognicoppiadiverticidelgrafo:
conparialcostodiuncamminodicostominimodaa
• Indichiamoconlamatricecheriportailcostodelcamminominimoperognicoppiadiverticieconverticiintermedisceltinell’insieme
n⇥n
D(n) d(n)i, j i j
D(k)
i j{1,2,3, . . . ,k}
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}
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
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)
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)
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)
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)
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)
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)
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)
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!