La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Flusso di Costo Minimo Applicazione di algoritmi: cancellazione cicli negativi (CCN) Premessa: si assume di aver risolto (correttamente!) un precedente.

Presentazioni simili


Presentazione sul tema: "Flusso di Costo Minimo Applicazione di algoritmi: cancellazione cicli negativi (CCN) Premessa: si assume di aver risolto (correttamente!) un precedente."— Transcript della presentazione:

1 Flusso di Costo Minimo Applicazione di algoritmi: cancellazione cicli negativi (CCN) Premessa: si assume di aver risolto (correttamente!) un precedente esercizio sul Flusso Massimo (con un qualunque algoritmo). Ci riferiamo a questo esercizio come Esercizio 1. Il testo dellesercizio 1 deve ovviamente specificare una rete con le capacità superiori sugli archi. Esercizio 1 Si consideri la seguente rete di flusso, in cui le capacità superiori sono tutte pari a due, ad esclusione di quelle degli archi (s,2) e (3,t), che sono pari a 3, come indicato in figura. Si determini un flusso di valore massimo da s a t… ts 3 3

2 Soluzione: il flusso di valore massimo, pari a v=5, è descritto nella seguente figura ts ts In realtà, a noi interessa soprattutto il grafo residuo relativo al flusso suddetto, cioè il grafo residuo ottenuto allultima iterazione dellalgoritmo per il Flusso Massimo, che è descritto nella seguente figura (sono mostrate le capacità residue)

3 Esercizio 2 (algoritmo CCN) Definiamo un problema di Flusso di Costo Minimo (MCF) a partire dal problema di Flusso Massimo dellesercizio 1, definendo costi sugli archi come indicato in figura. Il nodo s ha una richiesta di flusso pari a -v, il valore del flusso massimo dellesercizio 1; il nodo t ha una richiesta di flusso pari a v. Gli altri nodi sono di transito. Mostrare che la soluzione ottima x del problema MCF si ottiene, a partire dal flusso ottimo x dellesercizio precedente, cancellando un solo ciclo di costo negativo. Si chiede di: 1.calcolare il costo della soluzione x; 2.identificare il ciclo negativo, il suo costo e la sua capacità; 3.fornire il flusso ottimo x e il suo costo; 4.fornire un certificato di ottimalità per il flusso x. Non si richiede di applicare specifici algoritmi per la ricerca del ciclo, che può essere facilmente identificato per ispezione ts

4 Svolgimento [1, 2] [4, 2] Possiamo, per cominciare, identificare la rete su cui è definito il problema MCF: a ciascun arco si associa la coppia [costo,capacità superiore]; ai nodi s e t associamo le domande -5 e +5. ts -5 5 [0, 2] [0, 3] [0, 2] [2, 2] [1, 2] [0, 2] [0, 3] NOTA: si tratta della rete trasformata su cui abbiamo applicato lalgoritmo SSP! Nota: identificare il problema MCF è un passo utile, anche se non indispensabile per lo svolgimento dellesercizio, visto che in pratica lavoreremo soltanto sul grafo residuo.

5 Punto 1 costo della soluzione x. Confrontando i flussi sugli archi relativi a x (dalla slide 2) e i costi assegnati agli archi nel problema MCF, vediamo che gli unici archi che hanno sia il flusso che il costo diversi da zero sono (1,4), (2,1) e (2,3) Dunque il costo di x è (1 2) + (2 2) + (1 1) = ts ts costi flussi

6 [0,2] [1,1] [4,2] ts [-1,1] [-1,2] [-2,2] [1,1] [0,2] [0,3] Grafo residuo con costi e capacità residue: Punto 2 identificazione del ciclo Dobbiamo per prima cosa identificare il grafo residuo relativo al flusso ottimo x dellesercizio sul flusso massimo. Per fare questo, riprendiamo il grafo residuo ottenuto alla fine dellesercizio sul flusso massimo (slide 2) e lo completiamo associando a ciascuno arco il costo corrispondente, oltre alla capacità residua che già abbiamo. Ovviamente, i costi sugli archi del grafo residuo sono ottenuti dai costi assegnati dallesercizio. [costo,capacità]

7 Sul grafo residuo identifichiamo il ciclo negativo (1,2,3,1). Il costo è =-1. La capacità è 1, determinata dallarco (2,3) [0,2] [1,1] [4,2] ts [-1,1] [-1,2] [-2,2] [1,1] [0,2] [0,3]

8 Punto 3 calcolo della soluzione ottima x Dobbiamo spedire un flusso 1 (pari alla capacità) lungo il ciclo negativo (1,2,3,1) Dopo la spedizione del flusso sul ciclo, il nuovo grafo residuo è il seguente [0,2] [1,1] [4,2] ts [-1,1] [-1,2] [-2,2] [1,1] [0,2] [0,3] [0,1] [1,1] [4,2] ts [-1,2] [-2,1] [0,2] [0,3] [0,1][2,1]

9 Dal nuovo grafo residuo otteniamo (come visto per il problema di Flusso Massimo) il flusso (ottimo) x: ts Nota: il flusso ottimo x è quello individuato, sulla rete trasformata, nellesercizio di applicazione dellalgoritmo SSP. flussi Il costo di x si ottiene come: costo di x + (costo del ciclo capacità del ciclo) = 7 + (-1 1) = 6 Nota: per verifica, si può calcolare il costo moltiplicando i nuovi flussi sugli archi per i costi.

10 Punto 4 Ricerca di un certificato di ottimalità Metodo informale: possiamo risolvere il problema sfruttando questa proprietà: Se un arco (i,j) non è né vuoto né saturo, nel grafo residuo compaiono i due archi (i,j) e (j,i), con costi c[i,j] e –c[i,j], rispettivamente; dunque, affinchè entrambi gli archi abbiano costo ridotto non-negativo, occorre che questo costo ridotto sia per entrambi zero; questo permette, dato il potenziale di uno dei due nodi, di fissare univocamente laltro. Dunque, fissato arbitrariamente il potenziale di un nodo, possiamo derivare i potenziali di altri nodi. Per i nodi il cui potenziale non viene fissato in questo modo dobbiamo scegliere il potenziale in modo da rendere non-negativi i costi ridotti degli archi adiacenti. Più in generale, per i nodi il cui potenziale non viene fissato, possiamo determinare gli intervalli a cui tale potenziale deve appartenere.

11 ts [3,4] Trascuriamo per il momento i nodi s e t. 1.Diamo (arbitrariamente) al nodo 2 potenziale 0. 2.Diamo al nodo 1 potenziale 2 per avere costi ridotti nulli sugli archi (1,2) e (2,1), corrispondenti ad un arco non vuoto e non saturo. 3.Diamo al nodo 3 potenziale 2 per avere costi ridotti nulli sugli archi (1,3) e (3,1), corrispondenti ad un arco non vuoto e non saturo. 4.Il potenziale del nodo 4 non è fissato, ma deve essere: Almeno pari a 1, per rendere non-negativo il costo ridotto dellarco (4,3); Almeno pari a 3, per rendere non-negativo il costo ridotto dellarco (4,1); Non maggiore di 4, per non rendere negativo il costo ridotto dellarco (2,4). Dunque il potenziale del nodo 4 deve appartenere allintervallo [3,4].

12 ts [3,4] 4 0 Consideriamo ora i nodi s e t: Il potenziale del nodo t deve essere almeno pari a quello del nodo 4, per rendere non negativo il costo ridotto sullarco (t,4); di conseguenza, il costo ridotto dellarco (t,3) risulterà positivo; Il potenziale del nodo s deve essere minore o uguale a zero, per rendere non negativo il costo ridotto sullarco (2,s); di conseguenza, il costo ridotto dellarco (1,s) risulterà positivo. Tra i vettori di potenziali che rispettano i limiti visti possiamo scegliere, ad esempio: π = [0,2,0,2,3,3] [s,1,2,3,4,t] Questo vettore costituisce il certificato di ottimalità per x richiesto. Nota: è lo stesso vettore di potenziali trovato applicando lalgoritmo SSP

13 ts Metodo formale: si risolve un problema di cammino minimo con radici multiple, in cui tutti i nodi sono radici. Questo è equivalente a risolvere il problema SPT di radice r sul grafo riportato qui sotto, dove gli archi uscenti da r hanno costo zero. r In questo caso, la soluzione trovata è unica, e corrisponde al vettore delle distanze minime da r, riportate in blu nella figura. Il corrispondente albero dei cammini minimi è quello evidenziato (notare che i nodi 4 e t sono figli della radice)


Scaricare ppt "Flusso di Costo Minimo Applicazione di algoritmi: cancellazione cicli negativi (CCN) Premessa: si assume di aver risolto (correttamente!) un precedente."

Presentazioni simili


Annunci Google