Premessa: si assume di aver risolto (correttamente

Slides:



Advertisements
Presentazioni simili
Flusso Massimo Certificati di (non-) ottimalità
Advertisements

Flusso Massimo Applicazione di algoritmi
Meccanismi one-parameter. Riepilogo Archi di un grafo controllati da agenti egoistici Solo lagente conosce il peso associato al proprio arco Obiettivo:
Algoritmi e Strutture Dati
Strutture dati per insiemi disgiunti
Il problema del minimo albero ricoprente in un grafo non cooperativo
Algoritmi e Strutture Dati
Cammini minimi con una sorgente
Breath-first search Visita in ampiezza di un grafo Algoritmo Esempio
Algoritmi e Strutture Dati
Iterazione enumerativa (for)
Scenario Archi di un grafo controllati da agenti egoistici
Meccanismi one-parameter. Riepilogo Archi di un grafo controllati da agenti egoistici Solo lagente conosce il peso associato al proprio arco Obiettivo:
Elementi di Matematica
Macchine non completamente specificate
Algoritmi Paralleli e Distribuiti a.a. 2008/09
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 12/05/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 05/05/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
U V U V (a) |cfc|=2 prima e dopo (b) |cfc|=2 prima e |cfc|=1 dopo
Algoritmo di Ford-Fulkerson
Il problema del minimo albero ricoprente in un grafo con archi privati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Flusso Massimo Applicazione di algoritmi
Cammini minimi Algoritmo SPT.Acyclic
Flusso Massimo Applicazione Algoritmi Esercizio 1 Sia dato la seguente rete di flusso, in cui la sorgente è il nodo 1 e la destinazione è il nodo 6. I.
LE EQUAZIONI DI SECONDO GRADO
CORSO DI PROGRAMMAZIONE II Introduzione alla ricorsione
Algoritmi e Strutture Dati (Mod. B)
Algoritmi e Strutture Dati (Mod. A)
Algoritmi e Strutture Dati
Lezione 5 Domande: Laverage path length di Chord con 2^b identificatori e N=2^b nodi è (giustificare la risposta) Laverage path length di Chord con 2^b.
Fibonacci Heaps e il loro utilizzo nell’algoritmo di Prim
Strutture dati per insiemi disgiunti
Radix-Sort(A,d) // A[i] = cd...c2c1
Lezioni di Ricerca Operativa Corso di Laurea in Informatica
Prof. Cerulli – Dott.ssa Gentili
Ispezione lineare La funzione hash h(k,i) si ottiene da una funzione hash ordinaria h'(k) ponendo L’esplorazione inizia dalla cella h(k,0) = h'(k) e continua.
Per valutare la complessità ammortizzata scomponiamo ogni Union: nelle due FindSet e nella Link che la costituiscono e valuteremo la complessità in funzione.
Algoritmi e Strutture Dati
Prof. Cerulli – Dott.ssa Gentili
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 08/05/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Cammini minimi da un sorgente
Valutare la difficoltà dei problemi
Didattica e Fondamenti degli Algoritmi e della Calcolabilità Terza giornata: principali classi di complessità computazionale dei problemi Guido Proietti.
Capitolo 13 Cammini minimi: Algoritmo di Floyd e Warshall Algoritmi e Strutture Dati.
Capitolo 13 Cammini minimi: Ordinamento topologico Algoritmi e Strutture Dati.
Università degli Studi di Roma Tor Vergata
1 Ordinamento (Sorting) INPUT: Sequenza di n numeri OUTPUT: Permutazione π = tale che a 1 ’  a 2 ’  … …  a n ’ Continuiamo a discutere il problema dell’ordinamento:
Claudio Arbib Università dell’Aquila Ricerca Operativa Metodo del simplesso per problemi di distribuzione single-commodity.
Flusso Massimo Applicazione di algoritmi
Capitolo 13 Cammini minimi Algoritmi e Strutture Dati.
Flusso di Costo Minimo Trasformazioni Equivalenti e Trasformazioni Inverse Viene data la seguente rete di flusso, in cui i valori riportati vicino agli.
1 Ordinamento (Sorting) Input: Sequenza di n numeri Output: Permutazione π = tale che: a i 1  a i 2  ……  a i n Continuiamo a discutere il problema dell’ordinamento:
Prof. Cerulli – Dott. Carrabs
Codici prefissi Un codice prefisso è un codice in cui nessuna parola codice è prefisso (parte iniziale) di un’altra Ogni codice a lunghezza fissa è ovviamente.
Capitolo 13 Cammini minimi: Bellman e Ford Algoritmi e Strutture Dati.
Meccanismi one-parameter. Riepilogo Archi di un grafo controllati da agenti egoistici Solo l’agente conosce il peso associato al proprio arco Obiettivo:
Flusso di Costo Minimo Applicazione di algoritmi: Cammini Minimi Successivi (SSP) Esercizio 1 Sia data la seguente rete di flusso, in cui i valori riportati.
Capitolo 13 Cammini minimi Algoritmi e Strutture Dati.
Università degli Studi di Cagliari FACOLTA’ DI INGEGNERIA
Capitolo 12 Minimo albero ricoprente: Algoritmo di Kruskal Algoritmi e Strutture Dati.
Analisi matematica Introduzione ai limiti
OTTIMIZZAZIONE DI UN PERCORSO GRAFO CAMMINO MINIMO.
Sistemi di equazioni lineari. Sistemi di primo grado di due equazioni a due incognite Risolvere un sistema significa trovare la coppia di valori x e y.
Lezioni di Ricerca Operativa Corso di Laurea in Informatica
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi Albero ricoprente di costo minimo Lezione n°12.
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi Lezione n°10.
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi Lezione n°9.
Classe II a.s. 2010/2011 Prof.ssa Rita Schettino
Transcript della presentazione:

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 dell’esercizio 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… 1 4 s t 3 3 2 3

Soluzione: il flusso di valore massimo, pari a v=5, è descritto nella seguente figura. 2 1 4 2 2 s 2 t 2 3 3 2 3 1 In realtà, a noi interessa soprattutto il grafo residuo relativo al flusso suddetto, cioè il grafo residuo ottenuto all’ultima iterazione dell’algoritmo per il Flusso Massimo, che è descritto nella seguente figura (sono mostrate le capacità residue). 2 2 1 4 2 2 2 s t 2 1 3 1 3 2 3 1

Esercizio 2 (algoritmo CCN) Definiamo un problema di Flusso di Costo Minimo (MCF) a partire dal problema di Flusso Massimo dell’esercizio 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 dell’esercizio 1; il nodo t ha una richiesta di flusso pari a v. Gli altri nodi sono di transito. 1 1 4 4 s 2 t 1 2 3 1 Mostrare che la soluzione ottima x’ del problema MCF si ottiene, a partire dal flusso ottimo x dell’esercizio precedente, cancellando un solo ciclo di costo negativo. Si chiede di: calcolare il costo della soluzione x; identificare il ciclo negativo, il suo costo e la sua capacità; fornire il flusso ottimo x’ e il suo costo; 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.

Svolgimento 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. [1, 2] 1 4 [0, 2] [0, 2] [4, 2] -5 s t [1, 2] 5 [2, 2] [0, 2] [0, 3] 2 3 [0, 3] [1, 2] NOTA: si tratta della “rete trasformata” su cui abbiamo applicato l’algoritmo SSP! Nota: identificare il problema MCF è un passo utile, anche se non indispensabile per lo svolgimento dell’esercizio, visto che in pratica lavoreremo soltanto sul grafo residuo.

s t s t 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) 1 1 4 4 costi s 2 t 1 2 3 1 2 1 4 2 2 s 2 t flussi 2 3 3 2 3 1 Dunque il costo di x è (1  2) + (2  2) + (1  1) = 7

s t Punto 2 identificazione del ciclo Dobbiamo per prima cosa identificare il grafo residuo relativo al flusso ottimo x dell’esercizio sul flusso massimo. Per fare questo, riprendiamo il grafo residuo ottenuto alla fine dell’esercizio 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 dall’esercizio. Grafo residuo con costi e capacità residue: [costo,capacità] [-1,2] [0,2] 1 4 [0,2] [0,2] [4,2] s t [-2,2] [1,1] [0,3] [-1,1] [0,3] 2 3 [1,1]

s t Sul grafo residuo identifichiamo il ciclo negativo (1,2,3,1). Il costo è -2+1+0=-1. La capacità è 1, determinata dall’arco (2,3). [-1,2] [0,2] 1 4 [0,2] [0,2] [4,2] s t [-2,2] [1,1] [0,3] [-1,1] [0,3] 2 3 [1,1]

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

costo di x + (costo del ciclo  capacità del ciclo) = 7 + (-1  1) = 6 Dal nuovo grafo residuo otteniamo (come visto per il problema di Flusso Massimo) il flusso (ottimo) x’: 2 1 4 2 2 flussi s 1 t 1 3 3 2 3 2 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. Nota: il flusso ottimo x’ è quello individuato, sulla rete trasformata, nell’esercizio di applicazione dell’algoritmo SSP.

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 l’altro. 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.

[3,4] 2 -1 1 4 4 s t 2 1 -2 2 -1 3 2 Trascuriamo per il momento i nodi s e t. Diamo (arbitrariamente) al nodo 2 potenziale 0. 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. 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. Il potenziale del nodo 4 non è fissato, ma deve essere: Almeno pari a 1, per rendere non-negativo il costo ridotto dell’arco (4,3); Almeno pari a 3, per rendere non-negativo il costo ridotto dell’arco (4,1); Non maggiore di 4, per non rendere negativo il costo ridotto dell’arco (2,4). Dunque il potenziale del nodo 4 deve appartenere all’intervallo [3,4].

[3,4] 2 -1 1 4 4 ≤0 s t ≥p4 2 1 -2 2 -1 3 2 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 sull’arco (t,4); di conseguenza, il costo ridotto dell’arco (t,3) risulterà positivo; Il potenziale del nodo s deve essere minore o uguale a zero, per rendere non negativo il costo ridotto sull’arco (2,s); di conseguenza, il costo ridotto dell’arco (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 l’algoritmo SSP.

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 -1 -1 1 4 4 -3 s t 2 1 -2 2 -1 3 -3 -1 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).