• Non ci sono risultati.

Problemistrutturati 12

N/A
N/A
Protected

Academic year: 2021

Condividi "Problemistrutturati 12"

Copied!
8
0
0

Testo completo

(1)

12

Problemi strutturati

12.1 IL PROBLEMA DEL CAMMINO MINIMO: L’ALGORITMO DI DIJKSTRA Esercizio 12.1.1 Dato il grafo di Figura 12.1.1, trovare il peso dei cammini minimi dal nodo 1 a tutti gli altri nodi del grafo (il peso associato a ciascun arco

`e mostrato in figura in prossimit`a dell’arco stesso).

3 6 2 5

4

1 7

5

1

7 2 3 1

2

4 5

Fig. 12.1.1 Esercizio 12.1.1

Soluzione.

(2)

I passi dell’algoritmo sono i seguenti (l’evoluzione di T `e omessa essendo sem- plicemente T = V − S):

• Iterazione 0.

(a) Inizializzazione.

S = {1}. π(1) = 0. π(2) = 7. π(3) = 1. π(4) = +∞. π(5) = +∞.

π(6) = +∞.

• Iterazione 1.

(b) j = 3. S = {1, 3}.

(c) N+(j) ∩ T = {2, 5, 6}. π(2) = min(7, 1 + 5) = 6.

π(5) = min(+∞, 1 + 2) = 3. π(6) = min(+∞, 1 + 7) = 8.

• Iterazione 2.

(b) j = 5. S = {1, 3, 5}.

(c) N+(j) ∩ T = {2, 4}. π(2) = min(6, 2 + 3) = 5. π(4) = min(+∞, 3 + 5) = 8.

• Iterazione 3.

(b) j = 2. S = {1, 2, 3, 5}.

(c) N+(j) ∩ T = {4, 6}. π(4) = min(8, 5 + 4) = 8. π(6) = min(8, 5 + 1) = 6.

• Iterazione 4.

(b) j = 6. S = {1, 2, 3, 5, 6}.

(c) N+(j) ∩ T = ∅.

• Iterazione 5.

(b) j = 4. S = {1, 2, 3, 4, 5, 6}. STOP.

I pesi dei cammini minimi saranno quindi: π(1) = 0. π(2) = 5. π(3) = 1.

π(4) = 8. π(5) = 3. π(6) = 6.

Una comoda rappresentazione delle varie iterazioni dell’algoritmo `e data dalla seguente forma tabellare:

iter. 2 3 4 5 6

0 7 1 +∞ +∞ +∞

1 6 +∞ 3 8

2 5 8 8

3 8 6

4 8

(3)

ove le righe rappresentano iterazioni mentre le colonne sono in corrispondenza ai nodi. L’elemento i, j rappresenta il valore della variabile π(j) all’iterazione i- esima. L’elemento selezionato all’iterazione i-esima `e rappresentato in grassetto (talvolta pu`o essere circolettato) e, nelle iterazioni successive, il valore della vari- abile corrispondente non viene pi`u riportato. La riga corrispondente all’ultima iterazione `e omessa.

Esempio 12.1.2 Dato il grafo di figura 12.1.2, determinare per quali valori di x esiste un cammino minimo finito dal nodo 1 al nodo 6.

-8

7

2 4

1 4

6 3

x2

5 -4x

6 x

4

Fig. 12.1.2 Esercizio 12.1.2

Soluzione.

Affinch´e esista una soluzione finita del problema, non devono esistere nel grafo cicli orientati di peso negativo. Esistono nel grafo dato due cicli orientati: C1 = {2, (2, 6), 6, (6, 4), 4, (4, 2)} e C2 = {3, (3, 6), 6, (6, 5), 5, (5, 3)}. Il primo ciclo ha peso non-negativo se e solo se x + 7 − 8 ≥ 0, e cio`e x ≥ 1. Il secondo ciclo ha peso negativo se e solo se x2− 4x + 4 ≥ 0, che `e sempre verificata. Quindi, si avr`a un cammino minimo finito da 1 a 6 se e solo se x ≥ 1.

Esercizio 12.1.3 Dato il grafo di Figura 12.1.3, determinare per quali valori di x non esista un cammino minimo dal nodo s al nodo t che passi per il nodo 4.

(4)

s

1

2

3

4

5

6

7

8

3 1

4

1 2

3

1 1 1

8 5

3 2

1

2

2

x

7

3 6

3 t

Fig. 12.1.3 Esercizio 12.1.3

Soluzione.

Osservare innanzitutto che ogni cammino da s a t passante per il nodo 4, passer`a necessariamente anche per l’arco (4, 8). Affinch´e il cammino minimo fino a t non passi per l’arco (4, 8) deve esistere un cammino minimo dal nodo s al nodo 8 di peso inferiore al peso di un cammino minimo da s a 4 aumentato del peso dell’arco (4, 8). Quindi bisogna innanzi tutto calcolare il peso di un cammino minimo fino al nodo 8 che non utilizzi l’arco (4, 8) (ad esempio considerando x molto grande, o rimuovendo l’arco) e calcolare il peso di un cammino minimo fino al nodo 4. A tal scopo si pu`o utilmente sfruttare l’algoritmo di Dijkstra, con la semplificazione che una volta ottenuti i pesi cercati (e cio`e π(4) e π(8)) possiamo concludere le iterazioni dell’algoritmo.

I passi dell’algoritmo sono i seguenti (l’evoluzione di T `e omessa essendo sem- plicemente T = V − S):

• Iterazione 0.

(a) Inizializzazione.

S = {1}. π(s) = 0. π(1) = 4. π(2) = 1. π(3) = 3. π(4) = +∞.

π(5) = +∞. π(6) = +∞. π(7) = +∞. π(8) = +∞. π(t) = +∞.

• Iterazione 1.

(b) j = 2. S = {s, 2}.

(c) N+(j)∩ T = {1, 3, 6, 7}. π(1) = min(4, 1+ 2) = 3. π(3) = min(3, 1+ 1) = 2.

π(6) = min(+∞, 1 + 8) = 9. π(7) = min(+∞, 1 + 5) = 6.

(5)

• Iterazione 2.

(b) j = 3. S = {s, 2, 3}.

(c) N+(j) ∩ T = {6, 7}. π(6) = min(9, 2 + 3) = 5. π(7) = min(6, 2 + 2) = 4.

• Iterazione 3.

(b) j = 1. S = {s, 1, 2, 3}.

(c) N+(j) ∩ T = {4, 5}. π(4) = min(+∞, 3 + 3) = 6. π(5) = min(+∞, 3 + 1) = 4.

• Iterazione 4.

(b) j = 5. S = {s, 1, 2, 3, 5}.

(c) N+(j) ∩ T = {4, 6, 8}. π(4) = min(6, 4 + 1) = 5. π(6) = min(5, 4 + 2) = 5.

π(8) = min(+∞, 4 + 7) = 11.

• Iterazione 5.

(b) j = 7. S = {s, 1, 2, 3, 5, 7}.

(c) N+(j) ∩ T = {6, 8}. π(6) = min(5, 4 + 2) = 5. π(8) = min(11, 4 + 6) = 10.

• Iterazione 6.

(b) j = 4. S = {s, 1, 2, 3, 4, 5, 7}.

(c) N+(j) ∩ T = ∅.

• Iterazione 7.

(b) j = 6. S = {s, 1, 2, 3, 4, 5, 6, 7}.

(c) N+(j) ∩ T = {8}. π(8) = min(10, 5 + 3) = 8.

• Iterazione 8.

(b) j = 8. S = {s, 1, 2, 3, 4, 5, 6, 7, 8}.

(c) N+(j) ∩ T = {t}. π(t) = min(+∞, 8 + 3) = 11. STOP.

Notare che al passo (c) dell’iterazione 6, l’intersezione fra l’intorno positivo del nodo 4 e l’insieme T `e considerato vuota, concordemente all’assunzione che l’arco (4, 8) sia stato rimosso.

Le iterazioni dell’algoritmo possono essere rappresentate in forma tabellare:

(6)

iter. 1 2 3 4 5 6 7 8 t

0 4 1 3 +∞ +∞ +∞ +∞ +∞ +∞

1 3 2 +∞ +∞ 9 6 +∞ +∞

2 3 +∞ +∞ 5 4 +∞ +∞

3 6 4 5 4 +∞ +∞

4 5 5 4 11 +∞

5 5 5 10 +∞

6 5 10 +∞

7 8 +∞

8 11

I pesi dei cammini minimi cercati saranno quindi: π(4) = 5. π(8) = 8. Quindi, affinch´e l’arco (4, 8) non sia contenuto in nessun cammino minimo, dovr`a essere π(4) + x > π(8), ovvero x > 3.

(7)

Sommario

1 Introduzione 1

2 La Programmazione Matematica 3

2.1 Problemi di Programmazione Matematica 3

3 Modelli di Programmazione Lineare 5

3.1 Modelli di allocazione ottima di risorse 5

3.2 Modelli di miscelazione 14

3.3 Modelli di trasporto 19

4 Il linguaggio di modellizzazione algebrica AMPL 25 4.1 Esercizi di formulazioni mediante il linguaggioAMPL 25

5 La Programmazione Lineare 31

5.1 Interpretazione geometrica di un Problema di Programmazione

Lineare 31

6 Teoria della Programmazione Lineare 43

6.1 Vertici di un poliedro 43

7 Il metodo del simplesso 45

(8)

7.1 La forma standard 45

7.2 Vertici e Soluzioni di Base 46

7.3 Il criterio di ottimalit`a e il criterio di illimitatezza 49

7.4 Il metodo del simplesso 54

8 La dualit`a nella Programmazione Lineare 73

8.1 Teoria della dualit`a 73

9 Modelli di Programmazione Lineare Intera 85 9.1 Modelli di Programmazione Lineare Intera 85 10 Teoria della Programmazione Lineare Intera 95

11 Soluzione di problemi di Programmazione Lineare Intera 97 11.1 Esercizi sulla soluzione di problemi di Programmazione

Lineare Intera 97

12 Problemi strutturati 109

12.1 Il problema del cammino minimo: l’algoritmo di Dijkstra 109

Riferimenti

Documenti correlati

Ci sono poche evidenze circa un incremento Ci sono poche evidenze circa un incremento ponderale e una crescita lineare maggiori in ponderale e una crescita lineare maggiori in

ragazzina’ Laly ‘ti ha presa per la mano ho da un’altra parte’ April ‘mi sono sentita avvolgere dai capelli che mi anno portata sulla riva’ Susy ‘come avvolgere non mi

[r]

Esecuzione, di uno o più tempi a scelta del candidato, o di una composizione per viola sola (escluse le suites dall’originale per violoncello solo di J.S.Bach) , o di

Accesso tramite: Diploma accademico di primo livello o altro titolo di studio equipollente, anche conseguito all'estero, riconosciuto idoneo. Occorre che la preparazione acquisita

[r]

erenze tra i concetti di curva semplice e quello di curva chiusa semplice, tuttavia anche il concetto di curva chiusa semplice e importante perche, come le prossime

[r]