Flusso di costo minimo

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Flusso di costo minimo"

Transcript

1 Flusso di costo minimo Un grafo G = (N,A) è una coppia di insiemi: N, di cardinalità finita, i nodi, ed A, sottoinsieme del prodotto cartesiano N N, gli archi. N = {,,,} e A = {(,),(,),(,),(,),(,)} è rappresentato nella seguente figura: April, 9 / 9

2 Flusso di costo minimo Supponiamo che su ogni arco (i,j) sia definito un costo c ij per unità di flusso, una capacità inferiore l ij ed una superiore u ij del flusso. Sui nodi siano assegnati dei bilanci b i con la convenzione che b i > significa che il nodo i è un pozzo (destinazione) e che b i < significa che il nodo i è una sorgente (origine). Introduciamo le variabili x ij che rappresentano il flusso sull arco (i,j). Si vuole determinare il flusso di costo minimo che rispetti i bilanci dei nodi e le capacità degli archi. April, 9 / 9

3 Flusso di costo minimo Il problema si può formulare nel seguente modo: min c ij x ij (i,j) A x pi x iq = b i per ogni nodo i N (vincoli di bilancio) (p,i) A (i,q) A l ij x ij u ij per ogni arco (i,j) A (vincoli di capacità) oppure: min c T x E x = b l x u dove nella matrice E, di dimensioni N A, detta matrice di incidenza del grafo, l elemento di riga p N e colonna (i,j) A è: se p = i, E p,(i,j) = se p = j, altrimenti. April, 9 / 9

4 Flusso di costo minimo Supporremo che il vettore x dei flussi sia in ordine lessicografico: x i,j viene prima di x k,h se i < k oppure se i = k e j < h. Possiamo supporre che l ij = (eventualmente cambio di variabile x = x l). Supponiamo che b i =. i N Infatti, se b i, si aggiunge un nodo n+ con bilancio b n+ = b i. i N Se b n+ <, si aggiungono archi (di costo nullo e capacità + ) che vanno dal nodo fittizio verso ogni pozzo, mentre se b n+ > si aggiungono archi (sempre di costo nullo e capacità + ) che vanno dalle sorgenti al nodo introdotto. i N April, 9 / 9

5 Flusso di costo minimo Consideriamo il problema di flusso di costo minimo: (9,7) 8 (,) (,9) (,7) (,) (,) (7,8) April, 9 / 9

6 Flusso di costo minimo Il problema può essere formulato come: min 9x +x +x +x +x +7x +x x x = x x x = 8 x +x x x = x +x x = x +x = x 7 x x 9 x x 7 x 8 x April, 9 / 9

7 Flusso di costo minimo oppure come min c T x E x = b x u dove il vettore dei flussi, in ordine lessicografico, è x = (x, x, x, x, x, x, x ) T, il vettore dei costi è il vettore dei bilanci è il vettore delle capacità è c = (9,,,,, 7, ) T, b = (, 8,,, ) T, u = (7,, 9,, 7, 8, ) T, April, 9 7 / 9

8 Flusso di costo minimo la matrice di incidenza è E = (,) (,) (,) (,) (,) (,) (,) April, 9 8 / 9

9 Flusso di costo minimo Il flusso ottimo è x = (,, 8,,, 8, ) T, ossia: April, 9 9 / 9

10 Cammini minimi Trovare su un grafo un cammino di costo minimo da un nodo di partenza ad un nodo di arrivo. Diamo la definizione di cammino. Un cammino dal nodo n al nodo n p+ è un insieme di archi a,...,a p tale che per ogni i =,...,p si ha che a i = (n i,n i+ ) oppure a i = (n i+,n i ) ed inoltre che gli archi siano tutti diversi tra loro. Se vale sempre la prima condizione, cioè gli archi coinvolti vanno dal nodo n i al nodo n i+, il cammino si dice orientato. Un cammino da n a n p+ si dice un ciclo se n = n p+. April, 9 / 9

11 Cammini minimi Consideriamo il problema di trovare (se esistono) i cammini orientati di costo minimo da un nodo r verso tutti gli altri nodi. Tale problema si può formulare come un problema di flusso di costo minimo ponendo le capacità superiori u ij = + ed i bilanci dei nodi tutti uguali ad tranne quello del nodo r. { se i r, b i = n+ se i = r. Ciò equivale a supporre che n unità di flusso si debbano dirigere dal nodo r ognuna verso un nodo diverso dagli altri (bilanci ai nodi) al costo minimo. April, 9 / 9

12 Cammini minimi Supponiamo di voler cercare i cammini minimi dal nodo : 9 8 April, 9 / 9

13 Cammini minimi Come detto tale problema può essere formulato come un problema flusso di costo minimo, con il bilancio del nodo uguale a ed i bilanci degli altri nodi uguali a : min x +x +x +9x +8x +x +x +x +x x x = x x x = x +x x x = x +x x x = x +x x = x +x = x April, 9 / 9

14 Cammini minimi Il flusso ottimo risulta uguale a x = (,,,,,,,,): April, 9 / 9

15 Cammini minimi Osserviamo che gli archi con flusso positivo formano l albero dei cammini minimi: ad esempio, il cammino minimo da a è (,), (,), (,) e (,). April, 9 / 9

16 Cammini minimi Consideriamo il seguente grafo: 9 8 April, 9 / 9

17 Cammini minimi L albero di copertura di costo minimo è formato dagli archi indicati in figura: April, 9 7 / 9

18 Cammini minimi Tale albero non coincide con l albero dei cammini minimi di costo minimo di radice che é: April, 9 8 / 9

19 Flusso massimo Supponiamo di avere il problema di spedire contemporaneamente, da un nodo origine s ad un nodo destinazione t il massimo flusso possibile compatibilmente con le capacità degli archi. Supponiamo che il grafo sia orientato, con capacità intere. Se non ci fosse alcun cammino orientato da s a t il problema avrebbe x = come soluzione ottima. Il problema di flusso massimo può essere usato per determinare un flusso ammissibile in un problema di flusso di costo minimo. Si aggiunge un nodo s collegato con i nodi sorgenti j (cioè b j < ) con archi (s,j) di capacità b j ed un nodo t collegato con i pozzi i (cioè b i > ) con archi (i,t) di capacità b i. Poi si risolve il problema di flusso massimo da s a t. Se il flusso massimo satura tutti gli archi aggiunti, allora tale flusso è una soluzione ammissibile per il problema di flusso di costo minimo, altrimenti non esistono flussi ammissibili per il problema di flusso di costo minimo. April, 9 9 / 9

20 Flusso massimo Il problema di flusso massimo può essere formulato così: max v E x = b x u v se i = s dove b i = se i s,t v se i = t dove la variabile v rappresenta il flusso che si spedisce da t ad s. April, 9 / 9

21 Flusso massimo Flusso massimo dal nodo al nodo : 9 8 April, 9 / 9

22 Flusso massimo Il problema può essere formulato nel modo seguente: max v x x = v x x x = x +x x x = x +x x x = x +x x = x +x = v x x x x 9 x 8 x x x x April, 9 / 9

23 Flusso massimo La soluzione ottima è v = 9 ed il vettore dei flussi è x = (9,,, 9, 8,,,, 8), ossia: April, 9 / 9

24 Addestramento di costo minimo Supponiamo che un azienda debba addestrare i suoi m impiegati a compiere un certo numero n di mansioni, che ogni mansione j debba essere imparata, per essere poi svolta, da un numero b j di impiegati, che ogni impiegato debba imparare e svolgere una ed una sola mansione, e che il costo sopportato dall azienda per addestrare l impiegato i a svolgere la mansione j sia dato e pari a c ij. Si voglia determinare il piano di addestramento di costo minimo. { se l impiegato i è addestrato a svolgere la mansione j, x ij = altrimenti. Il problema può essere formulato come: min m n c ij x ij i=j= m x ij = b j per ogni mansione j =,...,n i= n x ij = per ogni impiegato i =,...,m j= x ij {,} April, 9 / 9

25 Addestramento di costo minimo Il problema può essere trasformato in un problema di flusso di costo minimo su un grafo bipartito ottenuto orientando gli archi dagli impiegati,...,m verso le mansioni m+,...,m+n e ponendo bilanci uguali a sui nodi corrispondenti agli impiegati e bilancio uguale a b j per ogni mansione j. Impiegati Mansioni m+ b m+.. i c ij j b j.. m m +n b m+n April, 9 / 9

26 Addestramento di costo minimo Supponiamo di dover addestrare 9 impiegati a compiere mansioni che devono essere svolte, rispettivamente, da, e impiegati. I costi di addestramento sono: mansioni impiegati April, 9 / 9

27 Addestramento di costo minimo La formulazione del problema è la seguente: min 7x +x +7x +7x +x +x +7x +x +x +8x +8x +x +x +x +x +x +x +x +x 7 +x 7 +x 7 +8x 8 +x 8 +7x 8 +x 9 +x 9 +x 9 x +x +x +x +x +x +x 7 +x 8 +x 9 = x +x +x +x +x +x +x 7 +x 8 +x 9 = x +x +x +x +x +x +x 7 +x 8 +x 9 = x +x +x = x +x +x = x +x +x = x +x +x = x +x +x = x +x +x = x 7 +x 7 +x 7 = x 8 +x 8 +x 8 = x 9 +x 9 +x 9 = x ij {,} April, 9 7 / 9

28 Accoppiamento di cardinalità massima Supponiamo di avere m lavoratori e n lavori da svolgere. Supponiamo che ogni lavoratore sappia svolgere alcuni dei lavori e che ad ogni lavoratore si possa assegnare al massimo un lavoro. Dobbiamo assegnare i lavori in modo da eseguire il massimo numero di lavori. Tale problema può essere trasformato in un problema di flusso massimo in un grafo che contiene i nodi,...,m che rappresentano i lavoratori, i nodi m+,...,m+n che rappresentano i lavori e due nodi fittizi s e t (origine e destinazione). Gli archi collegano ogni lavoratore a tutti i lavori che sa svolgere, il nodo s a tutti i lavoratori e tutti i lavori al nodo t, ponendo tutti gli archi con capacità superiore uguale a. April, 9 8 / 9

29 Accoppiamento di cardinalità massima Lavoratori Lavori m+.. s i j t.. m m +n April, 9 9 / 9

30 Accoppiamento di cardinalità massima Supponiamo di avere lavoratori e lavori. In figura le frecce rappresentano la capacità del lavoratore i di saper svolgere il lavoro j: 7 April, 9 / 9

31 Accoppiamento di cardinalità massima Il problema può essere formulato come: max x +x +x +x 7 +x +x x +x +x +x 7 x x x +x +x x x x 7 x ij {,} Si osserva che l accoppiamento ottimo ha cardinalità. April, 9 / 9

32 Flusso di costo minimo Analizziamo i problemi di flusso di costo minimo. min c T x E x = b x u viene chiamato poliedro dei flussi. {x R n : E x = b, x u} April, 9 / 9

33 Preliminari Un cammino dal nodo n al nodo n p+ è un insieme di archi a,...,a p tale che per ogni i =,...,p si ha che a i = (n i,n i+ ) oppure a i = (n i+,n i ) ed inoltre che gli archi siano tutti diversi tra loro. Se gli archi coinvolti vanno dal nodo n i al nodo n i+, il cammino si dice orientato. Un cammino da n a n p+ si dice un ciclo se n = n p+. Un grafo si dice connesso se esiste un cammino che connette ogni coppia di nodi. April, 9 / 9

34 Preliminari Figure : sopra: un grafo connesso; sotto: un grafo non connesso. April, 9 / 9

35 Preliminari Una foglia di T è un nodo sul quale incide un solo arco di T. L insieme {(,), (,), (,), (,)} è un albero di copertura le cui foglie sono i nodi e : April, 9 / 9

36 Preliminari Due strutture che non sono alberi di copertura: April, 9 / 9

37 Preliminari Un grafo é connesso se e solo se contiene almeno un albero di copertura. In un grafo connesso con n nodi, ogni albero di copertura contiene n archi ed almeno foglie. Supponiamo di trattare solo grafi connessi. La somma delle righe della matrice E è uguale al vettore nullo. Quindi le n righe di E non sono linearmente indipendenti e di conseguenza E ha rango al più uguale a n. Abbiamo supposto che il grafo sia bilanciato quindi nel sistema E x = b si può cancellare un equazione senza cambiare l insieme delle soluzioni del sistema. Per indicare la matrice di incidenza useremo per comodità la lettera E anche se abbiamo cancellato la riga relativa al nodo. April, 9 7 / 9

38 Problemi di flusso di costo minimo Teorema Se T è un albero di copertura, allora la sottomatrice quadrata E T, di dimensione (n ), ottenuta scegliendo le colonne relative agli archi di T, è invertibile e det(e T ) = ±. Mostriamo che la matrice E T è triangolare inferiore con la diagonale uguale a oppure a. Scegliamo una foglia z di T e indichiamo con a l unico arco di T che incide su z. Permutando le righe e le colonne di E T in modo che la prima riga corrisponda al nodo z e la prima colonna all arco a, otteniamo che ( ) ±... E T = dove E S è la matrice di incidenza relativa all albero di copertura S = T \{a} nel sottografo con n nodi ottenuto da (N,A) cancellando il nodo z. Ricorsivamente la matrice E S è triangolare inferiore con o sulla diagonale, quindi l intera matrice E T è triangolare inferiore con o sulla diagonale e quindi è invertibile con determinante uguale a ±. E S April, 9 8 / 9

39 Problemi di flusso di costo minimo Per scrivere quindi in forma triangolare inferiore la matrice di incidenza E T di un albero di copertura T bisogna effettuare un opportuna visita di T, detta visita per foglie. Partiamo scegliendo una foglia z (diversa dal nodo ) di T e consideriamo l unico arco a di T che incide sul nodo z. Costruiamo la matrice E T mettendo il nodo z come prima riga e l arco a come prima colonna. Cancelliamo dal grafo (N,T) il nodo z e l arco a. Nel grafo rimasto scegliamo ancora una foglia w (diversa dal nodo ) e consideriamo l unico arco a che incide sul nodo w. Poniamo il nodo w come seconda riga di E T e l arco a come seconda colonna. Iterando questo procedimento si ottiene la matrice E T in forma triangolare inferiore. April, 9 9 / 9

40 Problemi di flusso di costo minimo Consideriamo il grafo connesso: La sua matrice di incidenza, senza la riga, è la seguente: E = (,) (,) (,) (,) (,) (,) April, 9 / 9

41 Problemi di flusso di costo minimo T = {(,), (,), (,), (,)} forma un albero di copertura, infatti il grafo è connesso e non contiene cicli. La matrice E T è invertibile; scriviamola in forma triangolare con una visita per foglie. April, 9 / 9

42 Problemi di flusso di costo minimo Partiamo con una foglia di T: l unica foglia diversa dal nodo è il nodo. Scegliamo l unico arco di T che incide sul nodo, cioè l arco (,). Costruiamo E T mettendo il nodo come prima riga e l arco (,) come prima colonna: (,) E T = Cancellando dal grafo (N,T) il nodo e l arco (,) otteniamo il sottografo April, 9 / 9

43 Problemi di flusso di costo minimo Scegliamo una foglia diversa dal nodo, cioè il nodo, e troviamo l unico arco (nel sottografo) che incide sul nodo, cioè l arco (,). Mettiamo il nodo come seconda riga di E T e l arco (,) come seconda colonna ottenendo: (,) (,) E T = April, 9 / 9

44 Problemi di flusso di costo minimo Cancellando il nodo e l arco (,) otteniamo il sottografo Scegliamo la foglia e l arco (,) che saranno terza riga e terza colonna di E T : E T = (,) (,) (,) April, 9 / 9

45 Problemi di flusso di costo minimo Rimangono il nodo e l arco (,) che sono quarta riga e quarta colonna di E T : E T = (,) (,) (,) (,) Abbiamo scritto la matrice E T in forma triangolare inferiore con elementi diagonali ±, quindi E T è invertibile con determinante uguale a. April, 9 / 9

46 Problemi di flusso di costo minimo Vale anche il viceversa. Se E T è una sottomatrice invertibile di E, di dimensione (n ), allora T è un albero di copertura. Supponiamo che T non sia un albero di copertura. Allora T contiene un ciclo. Moltiplichiamo per o le colonne di E T in modo che il ciclo diventi orientato (il determinante di E T cambia eventualmente solo il segno). La somma delle colonne del ciclo è uguale al vettore nullo e quindi il determinante di E T è uguale, ma questo contraddice l ipotesi che E T sia invertibile. April, 9 / 9

47 Flussi di base Studiamo le soluzioni di base del problema di flusso di costo minimo. Riscriviamo il problema in forma duale aggiungendo le variabili di scarto w: min c T x E x = b x +w = u x,w ossia in forma matriciale come ) ( c min (x,w) T ( ) E (x,w) T T I = (b,u) I T (x,w) April, 9 7 / 9

48 Flussi di base La matrice M = ( E T I I ) ha dimensione (m+m) (n +m) e ha rango n +m. Vediamo come trovare n +m righe di M linearmente indipendenti. Consideriamo una tripartizione (T, L, U) dell insieme degli archi dove T è un albero di copertura. Indichiamo con T, L ed U le righe di M corrispondenti alle variabili di scarto w. Teorema L insieme B = T U T L è una base ed il determinante della corrispondente matrice è oppure. April, 9 8 / 9

49 Flussi di base Indicizziamo le righe di M come T,L,U,T,L,U e riscriviamo M a blocchi: ET T I T EL T I L M = EU T I U I T I L I U Consideriamo la sottomatrice M B = ET T I T EU T I U I T I L Calcoliamo il determinante di M B : det(m B ) = det ET T I T ( ) EU T I U E T = det T E I T U T = det(e I T T ). U April, 9 9 / 9

50 Flussi di base Poiché T è un albero di copertura sappiamo che E T ha determinante ± e quindi M B è invertibile. Il determinante della matrice di base, anche in tal caso, è ±. Se i vettori u e b sono a componenti intere, allora le soluzioni di base del poliedro dei flussi sono a componenti intere. Si può sempre togliere nei problemi che hanno come modello un problema di flusso di costo minimo il vincolo x Z n ed ottenere un problema equivalente di PL. April, 9 / 9

51 Flussi di base Calcoliamo ora la soluzione di base relativa alla base B = T U T L. Gli indici in L e in U non sono in base quindi si ha x L = e w U = cioè x U = u U. Calcoliamo x B. b = E x = ( ) x T E T E L E U x L = E T x T +E L x L +E U x U = E T x T +E U u U, x U si ha Quindi la soluzione di base ( x, w) è x T = E T (b E U u U ). x T = E T (b E U u U ) x L = x U = u U w T = u T E T (b E U u U ) w L = u L w U = April, 9 / 9

52 Flussi di base Tale flusso di base è ammissibile se e solo se x ij u ij per ogni (i,j) T, Tale soluzione è degenere se e solo se almeno una componente di base è nulla. Poiché non è possibile che una componente di x U o di w L sia nulla il flusso è degenere quando esiste un arco (i,j) T tale che x ij = oppure x ij = u ij. Il primo caso corrisponde ad una componente nulla di x T, il secondo ad una componente nulla di w T. April, 9 / 9

53 Potenziali di base Il duale del problema del flusso di costo minimo, detto problema dei potenziali, è dato da: ) che equivale a: ( π max (b,u) T ( ) µ ( E T I π c I)( µ ) max π T b +µ T u π T E +µ T c T µ April, 9 / 9

54 Potenziali di base Calcoliamo la soluzione di base del problema dei potenziali associata alla base B = T U T L. π T E T +µ T T = ct T π T E U +µ T U = ct U µ T = µ L = quindi dalla prima equazione ricaviamo π T E T = c T T. Si pone π = in quanto il sistema ha n equazioni e n incognite. Si ha π T = c T T E T. Dalla seconda equazione otteniamo µ T U = ct U ct T E T E U, quindi: π T = c T T E T µ T = µ L = µ T U = ct U πt E U April, 9 / 9

55 Potenziali di base Tale potenziale di base è ammissibile se sono soddisfatti i vincoli non di base: π T E L + µ T L = πt E L c T L µ U = c T U πt E U ossia { cij + π i π j per ogni (i,j) L, c ij + π i π j per ogni (i,j) U. Definiamo il costo ridotto dell arco (i, j) relativo al potenziale π: c π ij = c ij + π i π j () Il potenziale di base π è ammissibile se e solo se i costi ridotti degli archi in L sono non negativi ed i costi ridotti degli archi in U sono non positivi. Osserviamo inoltre che, dall equazione che definisce π, si deduce che i costi ridotti degli archi in T sono uguali a. Il potenziale di base π è degenere quando un arco di L oppure un arco di U ha costo ridotto nullo. April, 9 / 9

56 Flussi e potenziali di base Riassumiamo nella tabella i possibili casi per i flussi ed i potenziali di base: flusso di base x T = E T (b E U u U ) x L = x U = u U potenziale di base π T = ct TE T A (i,j) T si ha (i,j) L si ha c π ij x ij u ij (i,j) U si ha c π ij (i,j) T tale che x ij < (i,j) L tale che c π ij < NA oppure oppure (i,j) T tale che x ij > u ij (i,j) U tale che c π ij > (i,j) T tale che x ij = (i,j) L tale che c π ij = D oppure oppure (i,j) T tale che x ij = u ij (i,j) U tale che c π ij = ND (i,j) T si ha (i,j) L si ha c π ij x ij e x ij u ij (i,j) U si ha c π ij April, 9 / 9

57 Flussi e potenziali di base Applicando il test di ottimalità alla coppia di problemi flusso/potenziali otteniamo la seguente condizione sufficiente di ottimalità per flussi di base. Teorema di Bellman Supponiamo che una tripartizione (T,L,U) generi un flusso di base x ammissibile. Se il potenziale di base π è tale che { c π ij per ogni (i,j) L, c π ij per ogni (i,j) U, (condizioni di Bellman) allora x è ottimo. Le condizioni sui costi ridotti sono equivalenti all ammissibilità della soluzione complementare ( π, µ). April, 9 7 / 9

58 Flussi e potenziali di base Poiché le condizioni di Bellman rappresentano l ammissibilità duale, la cosa importante è la differenza tra i valori delle componenti di π (differenza di potenziale). Se il flusso di base x è non degenere le condizioni di Bellman diventano anche necessarie per l ottimalità. Supponiamo che una tripartizione (T,L,U) generi un flusso di base x ammissibile e non degenere. Sia π il potenziale di base associato. Allora si ha che: x è ottimo { c π ij per ogni (i,j) L c π ij per ogni (i,j) U April, 9 8 / 9

59 Esempio Consideriamo il seguente problema di flusso di costo minimo: (,) (,) (,) (,) (,) (,) (,) Sia data la tripartizione T = {(,), (,), (,), (,)} L = {(,), (,)} U = {(,)}, calcoliamo il flusso ed il potenziale di base. April, 9 9 / 9

60 Esempio Gli archi di L sono vuoti e l arco di U saturo, quindi abbiamo x =, x =, x = u =. Fissato il flusso sull arco (,), dobbiamo aggiornare i bilanci dei nodi e : b = b + x = + =, b = b x = =. Ora possiamo calcolare i flussi sugli archi di T rispettando i bilanci aggiornati dei nodi. April, 9 / 9

61 Esempio L albero T è il seguente: Partiamo da una foglia di T, ad esempio il nodo che ha bilancio. L arco (,) dovrà avere perciò flusso uguale a, quindi aggiorniamo anche il bilancio dei nodi e : x =, b = =, b = + =. April, 9 / 9

62 Esempio Abbiamo così bilanciato il nodo e rimane da trovare il flusso sul sottoalbero: April, 9 / 9

63 Esempio Applichiamo la procedura a questo sottoalbero partendo da una foglia, ad esempio il nodo che ha bilancio e su cui incide solo l arco (,) che deve quindi avere flusso uguale a : x =, b = =, b = + =. Rimangono da determinare solamente i flussi sugli archi (,) e (,): April, 9 / 9

64 Esempio Poiché il nodo ha bilancio ed il nodo ha bilancio si ha che x =, x =. Poiché tutti i flussi sugli archi di T soddisfano i vincoli di capacità, il flusso di base è ammissibile. E non degenere perché nessun arco di T è vuoto o saturo. April, 9 / 9

65 Esempio Calcoliamo ora il potenziale di base. Fissiamo π =, e calcoliamo il potenziale degli altri nodi passando sugli archi di T. Sappiamo che il costo ridotto degli archi di T deve essere nullo, ossia π j π i = c ij (i,j) T, quindi consideriamo gli archi di T che incidono sul nodo, ossia (,) e (,) e ricaviamo i potenziali dei nodi e : π = π +c = + =, π = π +c = + =. April, 9 / 9

66 Esempio A questo punto non ci sono altri archi di T incidenti sul nodo, ma c è l arco (,) incidente sul nodo, quindi ricaviamo il potenziale del nodo : π = π +c = + =. Infine calcoliamo il potenziale del nodo sfruttando l arco (,): π = π c = = 8. Per controllare l ammissibilità calcoliamo i costi ridotti degli archi di L e U: c π = c + π π = + = >, c π = c + π π = + = 8 <, c π = c + π π = + 8 = <. April, 9 / 9

67 Esempio Il potenziale non è ammissibile perché l arco (,) L ha costo ridotto negativo. Il potenziale è non degenere perché nessuno dei tre archi di L e U ha costo ridotto nullo. Riassumendo, il flusso di base è ammissibile e non degenere, mentre il potenziale di base non è ammissibile, quindi, il flusso di base non è ottimo. April, 9 7 / 9

68 Algoritmo del simplesso per flussi Come detto in un problema di flusso di costo minimo il vincolo di interezza può essere rimosso e quindi il problema è un problema di PL. L algoritmo del simplesso ha in tali problemi delle specifiche interessanti dal punto di vista teorico e dal punto di vista computazionale. Analizziamo il simplesso duale applicato al flusso di costo minimo che chiameremo simplesso per flussi. April, 9 8 / 9

69 Algoritmo del simplesso per flussi ALGORITMO DEL SIMPLESSO PER FLUSSI Trova una tripartizione degli archi (T,L,U), con T un albero di copertura, che generi un flusso di base ammissibile. Calcola il flusso di base x: x T = E T (b E U u U ), x L =, x U = u U, ed il potenziale di base π T = c T T E T. Indica con c π ij = c ij + π i π j il costo ridotto. April, 9 9 / 9

70 Algoritmo del simplesso per flussi Se sono soddisfatte le condizioni di Bellman: c π ij per ogni (i,j) L, c π ij per ogni (i,j) U, allora STOP ( x è un flusso di costo minimo e π è un potenziale ottimo). altrimenti calcola l arco entrante ( ) (p,q) = min(lex) {(i,j) L : c π ij < } {(i,j) U : c π ij > } L arco (p,q) forma un ciclo C con gli archi di T. Fissa su C un verso concorde con (p,q), se (p,q) L, oppure discorde con (p,q), se (p,q) U. Indica con C + gli archi del ciclo concordi con il verso e con C quelli discordi. April, 9 7 / 9

71 Algoritmo del simplesso per flussi Calcola trova l arco uscente ( (r,s) = min(lex) ϑ + = min{u ij x ij : (i,j) C + } ϑ = min{ x ij : (i,j) C } ϑ = min{ϑ +,ϑ } {(i,j) C + : u ij x ij = ϑ} {(i,j) C : x ij = ϑ} ). April, 9 7 / 9

72 Algoritmo del simplesso per flussi Aggiorna la tripartizione:se (p,q) L, (r,s) C + e (p,q) = (r,s), allora L = L\{(p,q)}, U = U {(p,q)}; se (p,q) L, (r,s) C + e (p,q) (r,s), allora T = T \{(r,s)} {(p,q)}, L = L\{(p,q)}, U = U {(r,s)}; se (p,q) L, (r,s) C, allora T = T \{(r,s)} {(p,q)}, L = L\{(p,q)} {(r,s)}; se (p,q) U, (r,s) C e (p,q) = (r,s), allora L = L {(p,q)}, U = U \{(p,q)}; se (p,q) U, (r,s) C e (p,q) (r,s), allora T = T \{(r,s)} {(p,q)}, L = L {(r,s)}, U = U \{(p,q)}; se (p,q) U, (r,s) C +, allora T = T \{(r,s)} {(p,q)}, U = U \{(p,q)} {(r,s)}. Torna al passo. April, 9 7 / 9

73 Algoritmo del simplesso per flussi Al passo, se le condizioni di Bellman non sono soddisfatte, si opera un cambio di base scegliendo come arco entrante in base il primo (regola di Bland) che viola queste condizioni. L arco entrante (p,q), che sta in L o in U, forma un ciclo C con gli archi di T. Consideriamo un flusso ottenuto da x spedendo flusso sul ciclo C. Se l arco (p,q) L, cioè x pq =, il flusso su (p,q) può solo aumentare e quindi fissiamo su C un verso concorde con (p,q). Fissiamo un verso discorde con (p,q) se (p,q) U, perché in tal caso l arco è saturo. April, 9 7 / 9

74 Esempio Consideriamo il flusso di costo minimo sul seguente grafo: (,) (,) (,) (,) (,) (,) (,) (,) April, 9 7 / 9

75 Esempio Iter.. Partiamo dalla base relativa alla tripartizione T = {(,),(,),(,),(,)} L = {(,),(,),(,)} U = {(,)}. Il corrispondente flusso di base ha x =, ed i flussi sugli archi di T: x =, x =, x =, x =, ossia April, 9 7 / 9

76 Esempio Tale flusso è degenere perché l arco (,) T è vuoto. I potenziali di base sono: π = π = π +c = + = π = π +c = + = π = π +c = + = π = π c = = 8 Calcoliamo i costi ridotti degli archi di L ed U in ordine lessicografico: (,) U : c π = + = (,) L : c π = + = <, quindi l arco (, ) viola le condizioni di Bellman. April, 9 7 / 9

77 Esempio Tale arco forma con gli archi di T un ciclo con verso concorde a (,) Sull arco (,) indichiamo il flusso e la capacità, mentre su quelli discordi il flusso: (,) ϑ + = u x =, ϑ = min { x, x } = min {,} =, April, 9 77 / 9

78 Esempio Iter.. La nuova tripartizione è la seguente: T = {(,),(,),(,),(,)} L = {(,),(,),(,)} U = {(,)}. Il flusso non cambia perché ϑ =. Per aggiornare i potenziali, osserviamo che la rimozione da T dell arco (,) crea due sottoinsiemi sconnessi di nodi {,} e {,,}: April, 9 78 / 9

79 Esempio Aggiorniamo i potenziali: π =, π =, π = =, π = 8 =, π = =. Calcoliamo di nuovo i costi ridotti degli archi di L ed U: (,) U, c π = + ( ) = >. L arco (,) viola le condizioni di Bellman e forma con T il seguente ciclo sul quale fissiamo un verso discorde a (,) (sugli archi concordi (,) e (,) indichiamo il flusso e la capacità, mentre su quelli discordi solo il flusso). April, 9 79 / 9

80 Esempio (,) (,) Quindi si ha: ϑ + = min {u x,u x } = min {, } =, ϑ = min { x, x } = min {,} =, April, 9 8 / 9

81 Esempio ϑ = ϑ + = ϑ = e per la regola anticiclo di Bland tra gli archi (,) e (,) scegliamo come arco uscente l arco (,) che va da U in L. Iter.. La nuova tripartizione degli archi diventa: T = {(,),(,),(,),(,)} L = {(,),(,),(,),(,)} U =. Il nuovo flusso di base si ottiene spedendo unità di flusso lungo il ciclo indicato sopra: April, 9 8 / 9

82 Esempio L albero T è invariato, quindi π = (,,,,). c π = + ( ) = c π = + ( ) = = = < c π quindi l arco (,) viola le condizioni di Bellman e forma con T il seguente ciclo sul quale fissiamo un verso concorde a (,) (sugli archi concordi (,) e (,) indichiamo il flusso e la capacità, mentre sugli altri solo il flusso): (,) (,) April, 9 8 / 9

83 Esempio Quindi si ha: ϑ + = min {u x,u x } = min {, } =, ϑ = x =, pertanto ϑ = ϑ + =, (,) va da T in U, mentre (,) va da L in T. Iter.. La nuova tripartizione degli archi diventa: T = {(,),(,),(,),(,)} L = {(,),(,),(,)} U = {(,)}. Il nuovo flusso di base è ottenuto spedendo unità di flusso in più lungo il ciclo: April, 9 8 / 9

84 Esempio Aggiorniamo i potenziali: π =, π =, π =, π =, π = = April, 9 8 / 9

85 Calcoliamo di nuovo i costi ridotti degli archi di L e di U: (,) L : c π = ( ) = (,) L : c π = + ( ) = (,) L : c π = + = (,) U : c π = + = Sono soddisfatte le condizioni di Bellman, il flusso di base corrente è ottimo. Al passo è necessario conoscere una tripartizione (T, L, U) ammissibile. Essendo un simplesso duale, per tripartizione ammissibile (T, L, U) si applica il duale ausiliario. April, 9 8 / 9

86 Flusso di costo minimo non capacitato Consideriamo il caso in cui le capacità superiori sugli archi sono u = + : min c T x E x = b x che è già in forma duale. Le basi coincidono con gli alberi di copertura del grafo: B è una base B è un albero di copertura Una base è data una partizione degli archi in (T,L), dove T è un albero di copertura. Il flusso di base x è dato da x T = E T b, x L =. April, 9 8 / 9

87 Flusso di costo minimo non capacitato Tale flusso è ammissibile se e solo se x T ed è degenere se e solo se esiste un arco (i,j) T tale che x ij =. Il problema dei potenziali diventa: { max π T b π T E c T Il potenziale di base relativo alla base T è π T = c T T E T, che è ammissibile se π T E L c L, ossia i costi ridotti degli archi di L non sono negativi: c π ij = c ij + π i π j (i,j) L. Il potenziale di base è degenere se e solo se esiste un arco (i,j) L con c π ij =. April, 9 87 / 9

88 Flusso di costo minimo non capacitato Riassumiamo nella tabella i possibili casi per i flussi ed i potenziali di base: flusso di base potenziale di base x T = E T b x L = π T = ct TE T ammissibile (i,j) T si ha x ij (i,j) L si ha c π ij non ammissibile (i,j) T tale che x ij < (i,j) L tale che c π ij < degenere (i,j) T tale che x ij = (i,j) L tale che c π ij = non degenere (i,j) T si ha x ij (i,j) L si ha c π ij April, 9 88 / 9

89 Flusso di costo minimo non capacitato Supponiamo che una partizione (T,L) generi un flusso di base x ammissibile. Se π è tale che allora x è ottimo. c π ij per ogni (i,j) L, (condizioni di Bellman) Se il flusso x è non degenere, le condizioni di Bellman sono necessarie e sufficienti per l ottimalità. April, 9 89 / 9

90 Esempio Consideriamo il flusso di costo minimo non capacitato sul seguente grafo: Consideriamo la base generata dalla partizione T = {(,),(,),(,),(,),(,)} L = {(,),(,),(,)}. April, 9 9 / 9

91 Esempio Calcoliamo il flusso di base x facendo una visita per foglie di T. Partendo dalla foglia che ha bilancio si trova che x =. Anche la foglia ha bilancio e quindi x =. Il bilancio del nodo è, il flusso sull arco (,) deve essere uguale alla somma dei flussi sugli archi (,) e (,), cioè x =. April, 9 9 / 9

92 Esempio Anche il bilancio del nodo è e quindi x =. Il bilancio del nodo è e si ottiene x =. Sul grafo indichiamo il flusso sugli archi ed i bilanci ai nodi: Tale flusso è ammissibile e non degenere. April, 9 9 / 9

93 Esempio Calcoliamo ora il potenziale di base π. Sul grafo indichiamo il costo sugli archi di T: 8 8 π = π +c = 8 e π = π +c = 8. Dal potenziale del nodo otteniamo il potenziale del nodo : π = π +c =. Dal potenziale del nodo troviamo il potenziale del nodo : π = π +c = ed il potenziale del nodo, π = π +c = 9. April, 9 9 / 9

94 Esempio Sul grafo indichiamo il costo sugli archi ed i potenziali ai nodi: c π = +8 8 = c π = 9+8 = c π = + 9 = I costi ridotti sono tutti positivi, π è ammissibile e quindi il flusso x è ottimo. April, 9 9 / 9

95 Esempio Consideriamo ora la partizione: T = {(,),(,),(,),(,),(,)} L = {(,),(,),(,)}. Sul grafo indichiamo il flusso di base sugli archi ed i bilanci ai nodi: 7 Tale flusso è non ammissibile e non degenere. April, 9 9 / 9

96 Esempio Sul grafo indichiamo il costo sugli archi ed i potenziali di base: c π = 8+ 7 = c π = +7 8 = c π = + 9 = Il potenziale di base è ammissibile e degenere. April, 9 9 / 9

97 Esempio Consideriamo infine la seguente partizione: T = {(,),(,),(,),(,),(,)} L = {(,),(,),(,)}. Sul grafo indichiamo il flusso di base sugli archi ed i bilanci ai nodi: Tale flusso è non ammissibile e degenere. April, 9 97 / 9

98 Esempio Sul grafo che segue indichiamo il costo sugli archi ed i potenziali di base: April, 9 98 / 9

99 Esempio Calcoliamo i costi ridotti degli archi di L: c π = 8+ 7 = c π = + = = + = c π Il potenziale di base è non ammissibile e degenere. April, 9 99 / 9

100 ALGORITMO DEL SIMPLESSO PER FLUSSI (non capacitato) Trova una partizione degli archi (T,L), con T che generi un flusso ammissibile. Calcola il flusso di base x: x T = E T b, x L =, ed il potenziale di base π T = c T T E T. Indica con c π ij = c ij + π i π j il costo ridotto di ogni arco (i,j). Se sono soddisfatte le condizioni di Bellman: c π ij per ogni (i,j) L, allora STOP ( x è un flusso di costo minimo e π è un potenziale ottimo). altrimenti calcola l arco entrante (p,q) = min {(i,j) L : c π ij < } dove il minimo è fatto rispetto all ordine lessicografico sugli archi. L arco (p,q) forma un ciclo C con gli archi di T con verso concorde con (p,q) ed indica con C l insieme gli archi del ciclo discordi con il verso fissato. Se C = April, 9 / 9

101 ALGORITMO DEL SIMPLESSO PER FLUSSI (non capacitato) allora STOP (il flusso di costo minimo ha valore. altrimenti calcola ϑ = min { x ij : (i,j) C }. e trova l arco uscente (r,s) = min {(i,j) C : x ij = ϑ} dove il minimo è sempre fatto rispetto all ordine lessicografico sugli archi. aggiorna la partizione: T = T \{(r,s)} {(p,q)}, L = L\{(p,q)} {(r,s)}, e torna al passo. April, 9 / 9

102 Simplesso per flussi Per calcolare il nuovo flusso di base basta spedire ϑ unità di flusso lungo il ciclo. Il primo (in ordine lessicografico) arco del ciclo che si svuota esce dall albero T. Quando ϑ = significa che siamo in un flusso di base degenere, cioè si cambia la partizione (T,L) senza cambiare il flusso x. Se non ci sono archi discordi nel ciclo, allora non ci sono limiti sul flusso che può essere spedito lungo il ciclo, e quindi il valore della funzione obiettivo tende a. April, 9 / 9

103 Esempio Consideriamo il seguente problema di flusso di costo minimo: Partiamo dalla base T = {(,),(,),(,),(,),(,)}. April, 9 / 9

104 Esempio Iter.. Facendo una visita per foglie di T troviamo il seguente flusso di base: April, 9 / 9

105 c π = 9+ = April, 9 / 9 Esempio Tale flusso di base è degenere perché l arco (,) ha flusso nullo. Calcoliamo ora il potenziale di base (sugli archi indichiamo i costi): Calcoliamo, in ordine lessicografico, i costi ridotti degli archi che non appartengono a T: = + = c π

106 Esempio L arco (,) ha costo ridotto negativo e quindi entra in base. Esso forma con gli archi di T il seguente ciclo (sugli archi sono indicati i flussi): 9 7 Gli archi discordi al verso del ciclo sono (,) e (,), quindi L arco (,) si svuota ed esce dalla base. ϑ = min { x, x } = min{,}=. April, 9 / 9

107 Esempio Iter.. La nuova base risulta essere T = {(,),(,),(,),(,),(,)} ed il nuovo flusso di base diventa: Nel nuovo potenziale di base cambia solo il valore del nodo : π = π c π = ( ) =. April, 9 7 / 9

108 Esempio I potenziali diventano: April, 9 8 / 9

109 Esempio Calcoliamo i costi ridotti degli archi non di base: c π = + = c π = + = c π = + = = + = c π L arco (,) ha costo ridotto negativo e quindi entra in base. Forma con gli archi di T il seguente ciclo (sugli archi sono indicati i flussi): April, 9 9 / 9

110 Esempio Gli archi discordi al verso del ciclo sono (,) e (,), quindi L arco (,) si svuota ed esce dalla base. Iter.. La nuova base è ed il nuovo flusso di base diventa: ϑ = min { x, x } = min{,7} =. T = {(,),(,),(,),(,),(,)} 9 9 April, 9 / 9

111 Esempio Nel nuovo potenziale di base cambiano solo i valori dei nodi e : π = π c π = ( ) = π = π c π = ( ) = quindi i potenziali diventano: April, 9 / 9

112 Esempio Poichè c π = + =, l arco (,) ha costo ridotto negativo, entra in base e forma con gli archi di T il seguente ciclo (sugli archi sono indicati i flussi): 9 9 Gli archi discordi al verso del ciclo sono (,), (,) e (,), quindi ϑ = min { x, x, x } = min{9,9,}=. L arco (,) si svuota ed esce dalla base. April, 9 / 9

113 Esempio Iter.. La nuova base è T = {(,),(,),(,),(,),(,)} ed il nuovo flusso di base diventa: April, 9 / 9

114 Esempio I nuovi potenziali diventano: c π = + = c π = + = c π = + = c π = + = Essendo positivi tutti i costi ridotti degli archi non di base, il flusso Aprildi, base 9 è / 9

115 Problema ausiliario Per il flusso di costo minimo non capacitato il problema ausiliario è: min ǫ i i N E i x +ǫ i = b i se b i E i x ǫ i = b i se b i < x,ǫ dove ǫ i sono le variabili ausiliarie, una per ogni nodo i N, ed E i sono le righe della matrice di incidenza E. Tale problema ausiliario è un flusso di costo minimo su un grafo i cui ci sono i nodi di N più un nodo ausiliario (con bilancio nullo) e gli archi sono gli archi di A più gli archi ausiliari che vanno dai nodi i con bilancio b i < al nodo e dal nodo ai nodi i con b i. Gli archi ausiliari hanno costo, mentre gli archi di A hanno costo nullo. April, 9 / 9

116 Problema ausiliario La seguente partizione: T = {archi ausiliari} L = {archi di A}, fornisce un flusso di base ammissibile per il problema ausiliario. Da tale base può partire il simplesso per flussi per risolvere il problema ausiliario. Se il problema ausiliario ha valore ottimo positivo, allora non esiste un flusso ammissibile sul grafo originario (N, A); se invece il problema ausiliario ha valore ottimo nullo, allora il flusso ottimo del problema ausiliario è ammissibile per il problema originario e dalla base ottima del problema ausiliario si può ricavare una base ammissibile per il problema originario. April, 9 / 9

117 Esempio Consideriamo il seguente problema di flusso di costo minimo: April, 9 7 / 9

118 Esempio April, 9 8 / 9

119 Esempio T = {(,),(,),(,),(,),(,),(,)} fornisce il seguente flusso: April, 9 9 / 9

120 Esempio Applichiamo il simplesso per flussi al problema ausiliario a partire da tale base ammissibile e, alla fine, otteniamo la base ottima: con il relativo flusso ottimo: T = {(,),(,),(,),(,),(,),(,)} April, 9 / 9

121 Esempio Il valore ottimo del problema ausiliario è (gli archi ausiliari hanno flusso nullo) e quindi il flusso precedente è ammissibile per il problema iniziale e corrisponde alla base ammissibile: T = {(,),(,),(,),(,),(,)}. Il simplesso per flussi può partire da questa base per risolvere il problema iniziale. April, 9 / 9

122 Cammini minimi Nel problema dei cammini minimi di radice r, senza perdita di generalità possiamo supporre che per ogni nodo i r esista un cammino orientato da r a i, a meno di aggiungere archi fittizi (r,i) di costo +. Tale problema può essere formulato come flusso di costo minimo min c T x E x = b x dove b i = { (n ) se i = r, se i r.. () April, 9 / 9

123 Cammini minimi Ciò equivale a supporre che n unità di flusso si debbano dirigere dal nodo r ognuna verso un nodo i r minimizzando il costo complessivo c T x. In questo caso non abbiamo capacità superiori sugli archi, per cui B è una base se e solo se rappresenta un albero di copertura del grafo. B è una base ammissibile se e solo se è un albero di copertura orientato di radice r, ossia contiene un cammino orientato da r verso ogni altro nodo i r. Consideriamo ora un albero di copertura T r orientato di radice r. Il flusso di base associato a T r è sempre non degenere perché i bilanci dei nodi sono tutti uguali a (tranne quello della radice r). April, 9 / 9

124 Cammini minimi Il vettore π dei potenziali di base associati a T r è tale che π j π i = c ij (i,j) T r, per cui π i rappresenta il costo del cammino orientato da r a i nell albero T r. Poiché i flussi di base ammissibili sono non degeneri, le condizioni di Bellman sono necessarie e sufficienti per l ottimalità. Sia T r un albero di copertura orientato di radice r e π il vettore dei potenziali associati a T r. Allora T r è un albero dei cammini minimi se e solo se T r verifica le condizioni di Bellman: c π ij = c ij +π i π j (i,j) / T r. April, 9 / 9

125 Algoritmo del simplesso per cammini L algoritmo del simplesso per flussi diventa un simplesso per cammini: Non ci sono capacità superiori: u = +. Le basi ammissibili corrispondono agli alberi orientati di radice r. Non sono necessarie regole anticiclo perché non ci sono soluzioni di base degeneri, quindi possiamo scegliere come arco entrante in base quello che ha il costo ridotto più grande in valore assoluto. Se (p,q) è l arco entrante in base, allora l arco uscente dalla base è l unico arco che entra nel nodo q, diciamo (i,q) (tale arco è unico perché T r è un albero), perché tra gli archi discordi al verso del ciclo formato, (i,q) è sicuramente quello di flusso minimo. April, 9 / 9

126 Algoritmo del simplesso per cammini i p q L uscita di un arco dalla base sconnette l insieme N dei nodi generando una partizione dei nodi (N,N ), dove N e N sono le due componenti connesse e r N. I potenziali si aggiornano solo sui nodi appartenenti a N. I costi ridotti si aggiornano solo sugli archi che hanno un estremo in N e l altro in N. April, 9 / 9

127 ALGORITMO DEL SIMPLESSO PER CAMMINI Trova un albero T orientato di radice r. Calcola il potenziale di base π T = c T T E T. Se sono soddisfatte le condizioni di Bellman: c π ij per ogni (i,j) / T, allora STOP (T è un albero dei cammini minimi). altrimenti scegli come arco entrante un arco (p,q) tale che c π pq <. L arco (p,q) forma un ciclo C con gli archi di T. Se tutti gli archi di C sono concordi con (p,q) allora STOP (l albero dei cammini minimi non esiste). altrimenti scegli come arco uscente l unico arco (i,q) T che entra nel nodo q. Aggiorna l albero: e torna al passo. T = T \{(i,q)} {(p,q)}, April, 9 7 / 9

128 Algoritmo del simplesso per cammini Applichiamo il simplesso per cammini: April, 9 8 / 9

129 Algoritmo del simplesso per cammini Iter.. Partiamo dalla seguente base (sugli archi indichiamo i costi e sui nodi i potenziali): April, 9 9 / 9

130 Algoritmo del simplesso per cammini c π = +7 =, quindi l arco (,) entra in base ed esce l arco (,). Iter.. La nuova base è la seguente (sugli archi i costi e sui nodi i potenziali): April, 9 / 9

131 Algoritmo del simplesso per cammini c π = + 9 = c π = +7 = c π = + 7 = quindi l arco (,) entra in base ed esce l arco (,). Iter.. La nuova base è la seguente (sugli archi i costi e sui nodi i potenziali): April, 9 / 9

132 Algoritmo del simplesso per cammini c π = + 8 = c π = 7+ = c π = + 9 = c π = +9 = quindi l arco (,) entra in base ed esce l arco (,). April, 9 / 9

133 Algoritmo del simplesso per cammini Iter.. La nuova base (sugli archi i costi e sui nodi i potenziali): April, 9 / 9

134 Algoritmo del simplesso per cammini c π = + 8 = c π = 7+ = c π = + 9 = c π = 9+ = c π = +9 = c π 7 = + = Poiché i costi ridotti sono non negativi, abbiamo trovato un albero dei cammini minimi. April, 9 / 9

135 Algoritmo del simplesso per cammini Applichiamo il simplesso per cammini per trovare, se esiste, l albero dei cammini minimi di radice sul seguente grafo con costi sia positivi che negativi: April, 9 / 9

136 Algoritmo del simplesso per cammini Iter.. Partiamo con il seguente albero ed indichiamo sui nodi i potenziali: Calcoliamo i costi ridotti degli archi non in base: c π = + = c π = + = L arco (,) entra in base, mentre l arco uscente è (,). April, 9 / 9

137 Algoritmo del simplesso per cammini Iter.. La nuova base ed i nuovi potenziali sono i seguenti: Calcoliamo i costi ridotti degli archi non in base: c π = + = c π = + = April, 9 7 / 9

138 Algoritmo del simplesso per cammini L arco (,) entra in base e forma un ciclo con tutti gli archi concordi a (,): Quindi l albero dei cammini minimi non esiste perché il ciclo ha costo negativo uguale a + =. April, 9 8 / 9

139 Algoritmo di Dijkstra Sono stati studiati algoritmi specifici per risolvere il problema dei cammini minimi. Descriviamo l algoritmo di Dijkstra nell ipotesi aggiuntiva c ij. Ad ogni iterazione l algoritmo mantiene un albero di copertura orientato di radice r (memorizzato in un vettore p di predecessori dei nodi) ed un vettore π di etichette ai nodi, con la proprietà che π i rappresenta il costo del cammino da r a i contenuto nell albero. Inizialmente l albero è formato da archi fittizi (r,i) per ognii r, che collegano la radice r a tutti i nodi con costo c ri = +, il vettore p è definito come: { i r, p i = i = r. mentre le corrispondenti etichette sono: { + i r, π i = i = r. April, 9 9 / 9

140 Algoritmo di Dijkstra Ad ogni iterazione si cercano gli archi che violano le condizioni di Bellman e si cambiano l albero e le corrispondenti etichette in modo da soddisfare tali condizioni. L algoritmo mantiene anche un insieme Q formato dai nodi le cui stelle uscenti contengono gli archi che potenzialmente possono violare le condizioni di Bellman. Inizialmente Q contiene solo la radice r, ad ogni iterazione si estrae da Q un nodo u con etichetta minima e si controlla la stella uscente da u. April, 9 / 9

141 Algoritmo di Dijkstra Se un arco (u,v) viola le condizioni di Bellman, cioè π v > π u +c uv, significa che il cammino da r a v contenuto nell albero ha un costo π v maggiore del cammino formato unendo al cammino da r a u, contenuto nell albero, l arco (u,v). L albero viene modificato assegnando il nodo u come predecessore del nodo v e modificando l etichetta del nodo v in modo corrispondente, ossia π v = π u +c uv. A questo punto il nodo v si inserisce (se non è già stato inserito) nell insieme Q dei nodi candidati. L algoritmo termina quando Q =. April, 9 / 9

142 ALGORITMO DI DIJKSTRA Inizializza l insieme Q = {r}, le etichette π i = { i r, ed i predecessori p i = i = r. Estrai da Q un nodo u con etichetta π u minima. Controlla gli archi uscenti da u: se l arco (u,v) è tale che π v > π u +c uv allora poni: p v = u, π v = π u +c uv, Q = Q {v}. { + i r, i = r, Se Q =, allora STOP (p fornisce un albero dei cammini minimi). altrimenti torna al passo. April, 9 / 9

143 Algoritmo di Dijkstra L algoritmo di Dijkstra trova un albero dei cammini minimi dopo n iterazioni. La complessità dell algoritmo di Dijkstra è O(n ) perché il numero di iterazioni è al più n ed ogni iterazione richiede un numero di passi proporzionale al numero dei nodi appartenenti a Q, che sono al più n. Applichiamo l algoritmo di Dijkstra per trovare l albero dei cammini minimi: April, 9 / 9

144 Algoritmo di Dijkstra Inizializziamo Q = {}. L albero iniziale è formato da tutti archi fittizi dalla radice verso tutti gli altri nodi con costo Iter.. Si estrae da Q il nodo e si esamina la stella uscente da, cioè (,), (,) e (,): (,): + = π > π +c = = p =, π =, Q = {} (,): + = π > π +c = 7 = p =, π = 7, Q = {,} April, 9 / 9

145 Algoritmo di Dijkstra L albero aggiornato e le relative etichette sono: April, 9 / 9

146 Algoritmo di Dijkstra Iter.. Nell insieme Q = {,,} il nodo con etichetta minima è il nodo. Si estrae da Q il nodo e si esamina la stella uscente da, cioè gli archi (,) e (,): (,): 7 = π > π +c = = p =, π =, Q = {,} (,): + = π > π +c = = p =, π =, Q = {,,} L albero aggiornato e le relative etichette sono: April, 9 / 9

147 Algoritmo di Dijkstra Iter. In Q = {,,} il nodo con etichetta minima è il nodo. Si estrae da Q il nodo e si esamina la stella uscente da, cioè gli archi (,), (,) e (,7): (,): = π > π +c = 8 = p =, π = 8, Q = {,} (,): + = π > π +c = = p =, π =, Q = {,,} (,7): + = π 7 > π +c 7 = = p 7 =, π 7 =, Q = {,,,7} April, 9 7 / 9

148 Algoritmo di Dijkstra Iter.. Nell insieme Q = {,,,7} il nodo con etichetta minima è il nodo. Si estrae da Q il nodo e si esamina l unico arco uscente da, cioè (,): (,): = π > π +c = 9 = p =, π = 9, Q = {,,7} L albero aggiornato e le relative etichette sono: April, 9 8 / 9

149 Algoritmo di Dijkstra Iter.. In Q = {,,7} il nodo con etichetta minima è il nodo. Si estrae da Q il nodo e si esamina la stella uscente da, cioè gli archi (,) e (,7): (,): = π > π +c = = p =, π =, Q = {,7} (,7): = π 7 = π +c 7 = L albero aggiornato e le relative etichette sono: April, 9 9 / 9

150 Algoritmo di Dijkstra Iter.. Si estrae da Q = {,7} il nodo di etichetta minima che è e si esamina la stella uscente da, cioè l arco (,7): (,7): = π 7 < π +c 7 = L albero e le relative etichette rimangono le stesse dell iterazione precedente. Iter. 7. Dall insieme Q = {7} si estrae il nodo 7. Non ci sono archi uscenti dal nodo 7, quindi Q = e l algoritmo si ferma. April, 9 / 9

151 Algoritmo di Dijkstra Pertanto l albero dei cammini minimi e le relative etichette ai nodi sono i seguenti: April, 9 / 9

152 Flusso massimo Supponiamo di avere un grafo G = (N,A) con capacità superiori u ij. Il problema del flusso massimo può essere formulato come problema di PL: max v E x = b x u dove b i = v se i = s v se i = t altrimenti. () Il valore di un flusso ammissibile x è indicato da v e rappresenta la quantità di flusso uscente dall origine s ed entrante nella destinazione t, cioè v = x sj = x it. (s,j) A (i,t) A April, 9 / 9

153 Algoritmo del simplesso per il flusso massimo Il problema del flusso massimo può essere risolto mediante l algoritmo del simplesso per flussi, dopo averlo trasformato in un problema di flusso di costo minimo aggiungendo un arco fittizio (t,s) di costo e di capacità +, assegnando costo nullo a tutti gli altri archi e ponendo bilanci nulli a tutti i nodi. min v E. x u v ( ) x = v April, 9 / 9

154 Algoritmo del simplesso per il flusso massimo Consideriamo il problema del flusso massimo dal nodo al nodo sul grafo seguente: April, 9 / 9

155 Algoritmo del simplesso per il flusso massimo Tale problema equivale al problema di flusso di costo minimo sul seguente grafo: (,) (,) (,) (,) (,) (,) (,) (,) (, + ) April, 9 / 9

156 Algoritmo del simplesso per il flusso massimo Partiamo dalla tripartizione: T = {(,), (,), (,), (,), (,)}, L = {(,), (,), (,), (,)}, U =. Iter.. Poiché tutti i nodi hanno bilancio nullo, il flusso di base iniziale è x = : April, 9 / 9

157 Algoritmo del simplesso per il flusso massimo I costi degli archi di T sono nulli e quindi anche i potenziali di base sono tutti uguali a zero. Calcoliamo i costi ridotti degli archi di L e U: (,) L : c π = (,) L : c π = (,) L : c π = (,) L : c π = L arco (,) viola le condizioni di Bellman e forma con gli archi di T il seguente ciclo (sugli archi sono indicati il flusso e la capacità): (,) (,) (,) April, 9 7 / 9

158 Algoritmo del simplesso per il flusso massimo Non ci sono archi discordi al verso del ciclo, quindi abbiamo: ϑ + = min {u x,u x,u x,u x } = min {,,,+ }= ϑ = min = + ϑ = ϑ + = L arco (,) da L va in T mentre l arco (,) da B va in U. La nuova base è: T = {(,), (,), (,), (,), (,)}, L = {(,), (,), (,)}, U = {(,)}. April, 9 8 / 9

Introduzione ai grafi

Introduzione ai grafi TFA A048 Anno Accademico 2012-13 Outline Cenni storici sui grafi Nozioni introduttive: cammini, connessione, alberi, cicli Cammini di costo minimo Origini storiche La nascita della teoria dei grafi risale

Dettagli

RICERCA OPERATIVA (a.a. 2017/18) Nome: Cognome: Matricola:

RICERCA OPERATIVA (a.a. 2017/18) Nome: Cognome: Matricola: Sesto appello 7/7/8 RICERCA OPERATIVA (a.a. 7/8) Nome: Cognome: Matricola: ) Si risolva il seguente problema di PL applicando l algoritmo del Simplesso Duale, per via algebrica, a partire dalla base B

Dettagli

Gestione della produzione e della supply chain Logistica distributiva

Gestione della produzione e della supply chain Logistica distributiva Gestione della produzione e della supply chain Logistica distributiva Paolo Detti Dipartimento di Ingegneria dell Informazione e Scienze Matematiche Università di Siena Convergenza dell algoritmo Se non

Dettagli

Quinto appello 27/6/ = 4. B b B = 2 b N = 4

Quinto appello 27/6/ = 4. B b B = 2 b N = 4 Quinto appello // RICERCA OPERATIVA (a.a. /) Nome: Cognome: Matricola: ) Si risolva il problema di PL dato applicando l algoritmo del Simplesso Duale, per via algebrica, a partire dalla base B {, }. Per

Dettagli

Gestione della produzione e della supply chain Logistica distributiva. Paolo Detti Dipartimento di Ingegneria dell Informazione Università di Siena

Gestione della produzione e della supply chain Logistica distributiva. Paolo Detti Dipartimento di Ingegneria dell Informazione Università di Siena Gestione della produzione e della supply chain Logistica distributiva Paolo Detti Dipartimento di Ingegneria dell Informazione Università di Siena Un algoritmo per il flusso a costo minimo: il simplesso

Dettagli

RICERCA OPERATIVA (a.a. 2018/19)

RICERCA OPERATIVA (a.a. 2018/19) Secondo appello //9 RICERCA OPERATIVA (a.a. 8/9) Nome: Cognome: Matricola: ) Si consideri il seguente problema di PL: min y + y y y y y = y + y y = y, y, y, y Si verifichi se la soluzione ȳ =,,, sia ottima

Dettagli

min det det Allora è unimodulare se e solo se det 1, 1, 0 per ogni sottomatrice quadrata di di qualsiasi dimensione.

min det det Allora è unimodulare se e solo se det 1, 1, 0 per ogni sottomatrice quadrata di di qualsiasi dimensione. Se è unimodulare e è intero allora il poliedro 0 ha vertici interi. Sia un vertice di Per definizione esiste allora una base di tale che, 0 Poiché è non singolare ( invertibile det 0) si ha che det 1 è

Dettagli

RICERCA OPERATIVA (a.a. 2015/16) Nome: Cognome: Matricola:

RICERCA OPERATIVA (a.a. 2015/16) Nome: Cognome: Matricola: o Appello 8// RICERCA OPERATIVA (a.a. /) Nome: Cognome: Matricola: ) Si risolva il seguente problema di PL max x x x x x x + x x per via algebrica, mediante l algoritmo del Simplesso Primale a partire

Dettagli

min 2x 1 +4x 2 2x 3 +2x 4 x 1 +4x 2 +2x 3 + x 4 =6 2x 1 + x 2 +2x 3 + x 5 =3 x 0.

min 2x 1 +4x 2 2x 3 +2x 4 x 1 +4x 2 +2x 3 + x 4 =6 2x 1 + x 2 +2x 3 + x 5 =3 x 0. 5 IL METODO DEL SIMPLESSO 6.4 IL METODO DEL SIMPLESSO In questo paragrafo sono riportati alcuni esercizi risolti sul metodo del simplesso. Alcuni sono risolti utilizzando la procedura di pivot per determinare,

Dettagli

UNIVERSITÀ DEGLI STUDI ROMA TRE Collegio Didattico in Ingegneria Informatica corso di Ricerca operativa 2. Esercizi sul problema dell assegnamento

UNIVERSITÀ DEGLI STUDI ROMA TRE Collegio Didattico in Ingegneria Informatica corso di Ricerca operativa 2. Esercizi sul problema dell assegnamento UNIVERSITÀ DEGLI STUDI ROMA TRE Collegio Didattico in Ingegneria Informatica corso di Ricerca operativa Esercizi sul problema dell assegnamento Richiami di Teoria Ricordiamo che, dato un grafo G=(N,A),

Dettagli

3.3 Problemi di PLI facili

3.3 Problemi di PLI facili 3.3 Problemi di PLI facili Consideriamo un generico problema di PLI espresso in forma standard min{c t x : Ax = b, x Z n +} (1) dove A Z m n con n m, e b Z m. Supponiamo che A sia di rango pieno. Sia P

Dettagli

RICERCA OPERATIVA (a.a. 2014/15) Nome: Cognome: Matricola:

RICERCA OPERATIVA (a.a. 2014/15) Nome: Cognome: Matricola: o Appello // RICERCA OPERATIVA (a.a. /) Nome: Cognome: Matricola: ) Si risolva il seguente problema di PL max x x x + x x x x x x applicando l algoritmo del Simplesso Primale per via algebrica a partire

Dettagli

Algoritmo del simplesso

Algoritmo del simplesso Algoritmo del simplesso Ipotesi : si parte da una S.A.B. e dal tableau A=b in forma canonica. Si aggiunge una riga costituita dagli r j, j =,., n e da -z (valore, cambiato di segno, della f.o. nella s.a.b.)

Dettagli

Algoritmo basato su cancellazione di cicli

Algoritmo basato su cancellazione di cicli Algoritmo basato su cancellazione di cicli Dato un flusso ammissibile iniziale, si costruisce una sequenza di flussi ammissibili di costo decrescente. Ciascun flusso è ottenuto dal precedente flusso ammissibile

Dettagli

Possibile applicazione

Possibile applicazione p. 1/4 Assegnamento Siano dati due insiemi A e B entrambi di cardinalità n. Ad ogni coppia (a i,b j ) A B è associato un valore d ij 0 che misura la "incompatibilità" tra a i e b j, anche interpretabile

Dettagli

RICERCA OPERATIVA (a.a. 2012/13) Nome: Cognome: Matricola:

RICERCA OPERATIVA (a.a. 2012/13) Nome: Cognome: Matricola: o Appello 7// RICERCA OPERATIVA (a.a. /) Nome: Cognome: Matricola: ) Si individui un albero dei cammini minimi di radice sul grafo in figura utilizzando l algoritmo più appropriato dal punto di vista della

Dettagli

Massimo flusso e matching

Massimo flusso e matching Capitolo Massimo flusso e matching. Problema del massimo matching. Nel problema del massimo matching è dato un grafo non orientato G(V, A); un matching in G è un insieme di archi M A tale che nessuna coppia

Dettagli

RICERCA OPERATIVA (a.a. 2017/18) Nome: Cognome: Matricola:

RICERCA OPERATIVA (a.a. 2017/18) Nome: Cognome: Matricola: Appello straordinario //8 RICERCA OPERATIVA (a.a. 7/8) Nome: Cognome: Matricola: ) Si consideri il seguente problema di PL: max x + x x x x x x + x x Si applichi l algoritmo del Simplesso Duale, per via

Dettagli

RICERCA OPERATIVA (a.a. 2011/12) Nome: Cognome: Matricola:

RICERCA OPERATIVA (a.a. 2011/12) Nome: Cognome: Matricola: 5 o Appello 8/0/0 RICERCA OPERATIVA (a.a. 0/) Nome: Cognome: Matricola: ) Si individui un albero dei cammini minimi di radice sul grafo in figura, utilizzando l algoritmo più appropriato dal punto di vista

Dettagli

Esercizio 1. Variabili decisionali:

Esercizio 1. Variabili decisionali: Esercizio 1 Si noti che i costi sono dati per tonnellata, mentre molti vincoli riguardano il numero di navi. Si introducono pertanto DUE tipi di variabili, uno relativo al numero di tonnellate per tipo

Dettagli

RICERCA OPERATIVA (a.a. 2014/15) Nome: Cognome: Matricola:

RICERCA OPERATIVA (a.a. 2014/15) Nome: Cognome: Matricola: 7 o Appello /9/ RICERCA OPERATIVA (a.a. /) Nome: Cognome: Matricola: ) Si consideri il seguente problema di PL max x x x x x x + x 6 x e la corrispondente soluzione x = [,. Utilizzando il teorema degli

Dettagli

Soluzione dei Problemi di Programmazione Lineare

Soluzione dei Problemi di Programmazione Lineare Soluzione dei Problemi di Programmazione Lineare Consideriamo un problema di Programmazione Lineare (PL) con m vincoli ed n variabili in Forma Standard dove: ma 0 c A b ( ) 0 ( 2) R è il vettore n delle

Dettagli

Introduzione al Metodo del Simplesso. 1 Soluzioni di base e problemi in forma standard

Introduzione al Metodo del Simplesso. 1 Soluzioni di base e problemi in forma standard Introduzione al Metodo del Simplesso Giacomo Zambelli 1 Soluzioni di base e problemi in forma standard Consideriamo il seguente problema di programmazione lineare (PL), relativo all esempio di produzione

Dettagli

Esame di Ricerca Operativa del 1/02/2019

Esame di Ricerca Operativa del 1/02/2019 Esame di Ricerca Operativa del /0/0 (Cognome) (Nome) (Numero di Matricola) Esercizio. (a) Risolvere il seguente problema di programmazione lineare applicando l algoritmo del simplesso: max x +x x 0 x +x

Dettagli

RICERCA OPERATIVA (a.a. 2016/17) Nome: Cognome: Matricola:

RICERCA OPERATIVA (a.a. 2016/17) Nome: Cognome: Matricola: Secondo appello //0 RICERCA OPERATIVA (a.a. 0/) Nome: Cognome: Matricola: ) Si risolva il seguente problema di PL max x x x x x + x x x per via algebrica, mediante l algoritmo del Simplesso Primale a partire

Dettagli

Esame di Ricerca Operativa del 19/02/2019. Esercizio 1. Risolvere il seguente problema di programmazione lineare applicando l algoritmo del simplesso:

Esame di Ricerca Operativa del 19/02/2019. Esercizio 1. Risolvere il seguente problema di programmazione lineare applicando l algoritmo del simplesso: Esame di Ricerca Operativa del 9/0/09 (Cognome) (Nome) (Numero di Matricola) Esercizio. Risolvere il seguente problema di programmazione lineare applicando l algoritmo del simplesso: max x x x 0 x + x

Dettagli

Algoritmi per la programmazione lineare: il metodo del simplesso

Algoritmi per la programmazione lineare: il metodo del simplesso Algoritmi per la programmazione lineare: il metodo del simplesso Dipartimento di Informatica, Universita' di Pisa A.A. 2018/2019 Contenuti della lezione Problemi di programmazione lineare, forma standard

Dettagli

x 1 x 2 x 3 x 5 La base iniziale è B 0 = I e risulta x B 0 = , x N 0 = Iterazione 0. Calcolo dei costi ridotti. γ 0 = c N 0 (N 0 ) T c B 0 =

x 1 x 2 x 3 x 5 La base iniziale è B 0 = I e risulta x B 0 = , x N 0 = Iterazione 0. Calcolo dei costi ridotti. γ 0 = c N 0 (N 0 ) T c B 0 = 56 IL METODO DEL SIMPLESSO 7.4 IL METODO DEL SIMPLESSO In questo paragrafo sono riportati alcuni esercizi risolti sul metodo del simplesso. Alcuni sono risolti utilizzando la procedura di pivot per determinare,

Dettagli

Il valore di flusso che si ottiene è

Il valore di flusso che si ottiene è 1) Si consideri un insieme di piste da sci e di impianti di risalita. Lo si modelli con un grafo orientato che abbia archi di due tipi: tipo D (discesa e orientato nel senso della discesa) e tipo R (risalita

Dettagli

Esame di Ricerca Operativa del 11/1/19

Esame di Ricerca Operativa del 11/1/19 Esame di Ricerca Operativa del // (Cognome) (Nome) (Numero di Matricola) Esercizio. (a) Risolvere il seguente problema di programmazione lineare, determinandone il problema duale ed applicando l algoritmo

Dettagli

2. ALGORITMO DEL SIMPLESSO

2. ALGORITMO DEL SIMPLESSO . ALGORITMO DEL SIMPLESSO R. Tadei Una piccola introduzione R. Tadei SIMPLESSO L obiettivo del capitolo è quello di fornire un algoritmo, l algoritmo del simplesso, che risolve qualsiasi problema di programmazione

Dettagli

Esame di Ricerca Operativa del 19/07/19. Esercizio 1. (a) Risolvere mediante il metodo del simplesso il seguente problema di programmazione lineare:

Esame di Ricerca Operativa del 19/07/19. Esercizio 1. (a) Risolvere mediante il metodo del simplesso il seguente problema di programmazione lineare: Esame di Ricerca Operativa del /0/ (Cognome) (Nome) (Numero di Matricola) Esercizio. (a) Risolvere mediante il metodo del simplesso il seguente problema di programmazione lineare: max x +x x + x x x x

Dettagli

RICERCA OPERATIVA (a.a. 2015/16) Nome: Cognome: Matricola:

RICERCA OPERATIVA (a.a. 2015/16) Nome: Cognome: Matricola: o Appello // RICERCA OPERATIVA (a.a. /) Nome: Cognome: Matricola: ) Si consideri il seguente problema di PL: max x + x x x x x x + x x Si applichi l algoritmo del Simplesso Duale, per via algebrica, a

Dettagli

RICERCA OPERATIVA (a.a. 2018/19) Nome: Cognome: Matricola:

RICERCA OPERATIVA (a.a. 2018/19) Nome: Cognome: Matricola: Primo appello //9 RICERCA OPERATIVA (a.a. /9) Nome: Cognome: Matricola: ) Si risolva il seguente problema di PL max x + x x + x x + x x x x x applicando l algoritmo del Simplesso Primale, per via algebrica,

Dettagli

Formulazioni. Consideriamo il seguente problema di Knapsack 0-1. max (5x x 2. ) st 3x x 2. < 6 x {0,1} 2

Formulazioni. Consideriamo il seguente problema di Knapsack 0-1. max (5x x 2. ) st 3x x 2. < 6 x {0,1} 2 Formulazioni Consideriamo il seguente problema di Knapsack 0-1 max (5x 1 + 2x 2 ) st 3x 1 + 4x 2 < 6 x {0,1} 2 Insiemi ammissibili F = {(0, 0), (0, 1), (1, 0)} Rappresentiamo sul piano gli insiemi ammissibili.

Dettagli

Definizione 1.3 (Arco accoppiato) Un arco è accoppiato se è appartenente al matching M.

Definizione 1.3 (Arco accoppiato) Un arco è accoppiato se è appartenente al matching M. Matching. Definizioni Definizione. (Matching di un grafo G = (N, A)) Il matching di un grafo è un sottoinsieme M di archi tali per cui nessuna coppia di essi condivida lo stesso nodo. Definizione.2 (Matching

Dettagli

ALGORITMO DEL SIMPLESSO. Una piccola introduzione. Ricerca Operativa. Prof. R. Tadei. Politecnico di Torino. Simplesso / 1.

ALGORITMO DEL SIMPLESSO. Una piccola introduzione. Ricerca Operativa. Prof. R. Tadei. Politecnico di Torino. Simplesso / 1. ALGORITMO DEL SIMPLESSO Una piccola introduzione R. Tadei R. Tadei 2 SIMPLESSO L obiettivo del capitolo è quello di fornire un algoritmo, l algoritmo del simplesso, che risolve qualsiasi problema di programmazione

Dettagli

Esame di Ricerca Operativa del 20/02/18

Esame di Ricerca Operativa del 20/02/18 Esame di Ricerca Operativa del //8 (Cognome) (Nome) (Numero di Matricola) Esercizio. (a) Risolvere mediante l algoritmo del simplesso duale il seguente problema di programmazione lineare: min x x +x x

Dettagli

Parte IV: Matrici totalmente unimodulari

Parte IV: Matrici totalmente unimodulari Parte IV: Matrici totalmente unimodulari Formulazioni Consideriamo il seguente problema di Knapsack 0-1 max (5x 1 + 2x 2 ) st 3x 1 + 4x 2 < 6 x {0,1} 2 Insiemi ammissibili F = {(0, 0), (0, 1), (1, 0)}

Dettagli

Esame di Ricerca Operativa del 14/09/18

Esame di Ricerca Operativa del 14/09/18 Esame di Ricerca Operativa del /9/ (Cognome) (Nome) (Numero di Matricola) Esercizio. (a) Risolvere mediante l algoritmo del simplesso duale il seguente problema di programmazione lineare: Iterazione {,}

Dettagli

Problemi di Flusso: Il modello del Trasporto

Problemi di Flusso: Il modello del Trasporto Problemi di Flusso: Il modello del rasporto Andrea Scozzari a.a. 2014-2015 April 27, 2015 Andrea Scozzari (a.a. 2014-2015) Problemi di Flusso: Il modello del rasporto April 27, 2015 1 / 25 Problemi su

Dettagli

RICERCA OPERATIVA (a.a. 2016/17) Nome: Cognome: Matricola:

RICERCA OPERATIVA (a.a. 2016/17) Nome: Cognome: Matricola: Primo appello //7 RICERCA OPERATIVA (a.a. 6/7) Nome: Cognome: Matricola: ) Si risolva il seguente problema di PL applicando l algoritmo del Simplesso Duale, per via algebrica, a partire dalla base B {,

Dettagli

A T x b x 0. che chiameremo problema primale, possiamo associare ad esso un altro problema di PL, detto problema duale, definito come segue.

A T x b x 0. che chiameremo problema primale, possiamo associare ad esso un altro problema di PL, detto problema duale, definito come segue. 1 Dualitá Dato un problema di PL in forma canonica max c T x A T x b x 0 che chiameremo problema primale, possiamo associare ad esso un altro problema di PL, detto problema duale, definito come segue min

Dettagli

Programmazione Matematica / A.A Soluzioni di alcuni esercizi

Programmazione Matematica / A.A Soluzioni di alcuni esercizi Programmazione Matematica / A.A. 7-8 Soluzioni di alcuni esercizi Esercizi - I. Aggiungiamo al problema una variabile v, e richiediamo che v soddisfi v n a ij x j b i. j= Fissato x, il minimo v che soddisfa

Dettagli

RICERCA OPERATIVA (a.a. 2008/09) Nome: Cognome: Matricola:

RICERCA OPERATIVA (a.a. 2008/09) Nome: Cognome: Matricola: o Appello /09/009 RICERCA OPERATIVA (a.a. 008/09) Nome: Cognome: Matricola: ) Si applichi l algoritmo di Kruskal per determinare un albero di copertura di costo minimo sul grafo in figura. Per ogni iterazione

Dettagli

RICERCA OPERATIVA (a.a. 2016/17) Nome: Cognome: Matricola:

RICERCA OPERATIVA (a.a. 2016/17) Nome: Cognome: Matricola: Sesto appello // RICERCA OPERATIVA (a.a. /) Nome: Cognome: Matricola: ) Si risolva il seguente problema di PL max x x x x x x + x x per via algebrica, mediante l algoritmo del Simplesso Primale a partire

Dettagli

Il metodo del simplesso

Il metodo del simplesso Capitolo 5 Il metodo del simplesso 5. La forma standard Esercizio 5.. Porre il problema di Programmazione Lineare: in forma standard. min x +x + x + x x +x 5 x 4 x, x Si trasformano i vincoli di disuguaglianza

Dettagli

Esame di Ricerca Operativa del 07/06/2019

Esame di Ricerca Operativa del 07/06/2019 Esame di Ricerca Operativa del 0/0/09 (Cognome) (Nome) (Numero di Matricola) Esercizio. (a) Risolvere il seguente problema di programmazione lineare applicando l algoritmo del simplesso duale: min y y

Dettagli

Figura 1: 1) Si scriva la formulazione del problema come problema di PLI (con un numero minimo di vincoli) e la matrice dei vincoli.

Figura 1: 1) Si scriva la formulazione del problema come problema di PLI (con un numero minimo di vincoli) e la matrice dei vincoli. ESERCIZIO 1 Sia dato il grafo orientato in Figura 1. Si consideri il problema di flusso a 1 2 4 Figura 1: costo minimo su tale grafo con b 1 = 4 b 2 = 2 b = b 4 = e c 12 = 2 c 1 = 4 c 14 = 1 c 2 = 1 c

Dettagli

RICERCA OPERATIVA (a.a. 2012/13) Nome: Cognome: Matricola:

RICERCA OPERATIVA (a.a. 2012/13) Nome: Cognome: Matricola: o Appello 9/9/ RICERCA OPERATIVA (a.a. /) Nome: Cognome: Matricola: ) Si individui un albero dei cammini minimi di radice sul grafo in figura 6-7 utilizzando l algoritmo più appropriato dal punto di vista

Dettagli

Metodi e Modelli per l Ottimizzazione Combinatoria Problema dell assegnamento e matrici totalmente unimodulari

Metodi e Modelli per l Ottimizzazione Combinatoria Problema dell assegnamento e matrici totalmente unimodulari Metodi e Modelli per l Ottimizzazione Combinatoria Problema dell assegnamento e matrici totalmente unimodulari L. De Giovanni G. Zambelli 1 Problema dell assegnamento Sia dato un grafo non orientato bipartito

Dettagli

1) Data la seguente istanza di TSP (grafo completo con 5 nodi): c 12 = 52; c 13 = 51; c 14 = 40; c 15 = 53; c 23 = 44;

1) Data la seguente istanza di TSP (grafo completo con 5 nodi): c 12 = 52; c 13 = 51; c 14 = 40; c 15 = 53; c 23 = 44; 1) Data la seguente istanza di TSP (grafo completo con 5 nodi): c 12 = 52; c 13 = 51; c 14 = 40; c 15 = 53; c 23 = 44; c 24 = 15; c 25 = 12; c 34 = 32; c 35 = 55; c 45 = 24 Si calcoli l ottimo duale (formulazione

Dettagli

Ricerca Operativa. G. Liuzzi. Lunedí 20 Aprile 2015

Ricerca Operativa. G. Liuzzi. Lunedí 20 Aprile 2015 1 Lunedí 20 Aprile 2015 1 Istituto di Analisi dei Sistemi ed Informatica IASI - CNR Rilassamento di un problema Rilassare un problema di Programmazione Matematica vuol dire trascurare alcuni (tutti i)

Dettagli

RICERCA OPERATIVA (a.a. 2003/04) Nome Cognome:

RICERCA OPERATIVA (a.a. 2003/04) Nome Cognome: o Appello 0//00 RICERCA OPERATIVA (a.a. 00/0) Nome Cognome: Corso di Laurea: I SI M Matricola Corso A B C ) La ditta di trasporti FurgonFast deve suddividere tra tre diversi trasportatori n oggetti da

Dettagli

RICERCA OPERATIVA (a.a. 2015/16) Nome: Cognome: Matricola:

RICERCA OPERATIVA (a.a. 2015/16) Nome: Cognome: Matricola: o Appello // RICERCA OPERATIVA (a.a. /) Nome: Cognome: Matricola: ) Si consideri il seguente problema di PL: max x +x x +x x +x +x 7 x x Utilizzando il Teorema degli scarti complementari, si dimostri che

Dettagli

Il problema del commesso viaggiatore

Il problema del commesso viaggiatore Il problema del commesso viaggiatore Mauro Passacantando Dipartimento di Informatica Largo B. Pontecorvo 3, Pisa mpassacantando@di.unipi.it M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università

Dettagli

Si considera, come al solito, un problema di programmazione lineare in forma standard:

Si considera, come al solito, un problema di programmazione lineare in forma standard: LA FASE I DEL METODO DEL SIMPLESSO 149 6.5 LA FASE I DEL METODO DEL SIMPLESSO Comegiàdetto, il primoobiettivo dellafase Idel metododelsimplessoèquellodi verificare l ammissibilità del problema da risolvere.

Dettagli

Matrici unimodulari e totalmente unimodulari

Matrici unimodulari e totalmente unimodulari Matrici unimodulari e totalmente unimodulari Sia una matrice intera di dimensione con, si dice unimodulare se presa una qualsiasi sottomatrice di ordine massimo (di dimensione ) vale det = 1, +1, 0. Una

Dettagli

RICERCA OPERATIVA (a.a. 2017/18) Nome: Cognome: Matricola:

RICERCA OPERATIVA (a.a. 2017/18) Nome: Cognome: Matricola: Primo appello 9//8 RICERCA OPERATIVA (a.a. 7/8) Nome: Cognome: Matricola: ) Si risolva il seguente problema di PL max x + x x + x x x x x applicando l algoritmo del Simplesso Primale, per via algebrica,

Dettagli

Problema di flusso massimo

Problema di flusso massimo p. 1/5 Problema di flusso massimo Si consideri una rete, ovvero un grafo orientato G = (V,A). Attraverso tale rete si fa viaggiare quello che chiameremo genericamente un flusso di "prodotto". A seconda

Dettagli

Metodi per la risoluzione di sistemi lineari

Metodi per la risoluzione di sistemi lineari Metodi per la risoluzione di sistemi lineari Sistemi di equazioni lineari. Rango di matrici Come è noto (vedi [] sez.0.8), ad ogni matrice quadrata A è associato un numero reale det(a) detto determinante

Dettagli

A-2 a PI. Esercizio 2. Domanda 3

A-2 a PI. Esercizio 2. Domanda 3 A-2 a PI Ricerca Operativa 1 Seconda prova intermedia È dato il problema di PL in figura. 1. Facendo uso delle condizioni di ortogonalità, dimostrare o confutare l ottimalità della soluzione x = 1; x =

Dettagli

Esercizio 2. Domanda 3

Esercizio 2. Domanda 3 A-2 a PI Ricerca Operativa 1 Seconda prova intermedia È dato il problema di PL in figura. 1. Facendo uso delle condizioni di ortogonalità, dimostrare o confutare l ottimalità della soluzione 2; 0; 2. Facendo

Dettagli

PROBLEMA DEI CAMMINI MINIMI [CORMEN ET AL. CAP. 24] Il costo di cammino minimo da un vertice u ad un vertice v è definito nel seguente modo:

PROBLEMA DEI CAMMINI MINIMI [CORMEN ET AL. CAP. 24] Il costo di cammino minimo da un vertice u ad un vertice v è definito nel seguente modo: PROBLEMA DEI CAMMINI MINIMI [CORMEN ET AL. CAP. 24] Sia G = (V,E) un grafo orientato ai cui archi è associato un costo W(u,v). Il costo di un cammino p = (v 1,v 2,...,v k ) è la somma dei costi degli archi

Dettagli

Programmazione Lineare: problema del trasporto Ing. Valerio Lacagnina

Programmazione Lineare: problema del trasporto Ing. Valerio Lacagnina Problemi di trasporto Consideriamo un problema di programmazione lineare con una struttura matematica particolare. Si può utilizzare, per risolverlo, il metodo del simplesso ma è possibile realizzare una

Dettagli

Esercitazione 6 Ancora sul Network Flow

Esercitazione 6 Ancora sul Network Flow Esercitazione 6 Ancora sul Network Flow Problema 14 (appello 28/09/2015) Un importante azienda di sviluppo software ha n progetti da portare a termine entro la fine dell anno. Il manager dell azienda stima

Dettagli

Capitolo 3 Matrici. Marco Robutti. Facoltà di ingegneria Università degli studi di Pavia. Anno accademico

Capitolo 3 Matrici. Marco Robutti. Facoltà di ingegneria Università degli studi di Pavia. Anno accademico Capitolo 3 Matrici Marco Robutti Facoltà di ingegneria Università degli studi di Pavia Anno accademico 2017-2018 Tutorato di geometria e algebra lineare Definizione (Matrice) Una matrice A M R (k, n) è

Dettagli

Alberi di copertura. Mauro Passacantando. Dipartimento di Informatica Largo B. Pontecorvo 3, Pisa

Alberi di copertura. Mauro Passacantando. Dipartimento di Informatica Largo B. Pontecorvo 3, Pisa Alberi di copertura Mauro Passacantando Dipartimento di Informatica Largo B. Pontecorvo, Pisa mpassacantando@di.unipi.it M. Passacantando TFA 0/ - Corso di Ricerca Operativa Università di Pisa / 9 Definizioni

Dettagli

Note sull algoritmo di Gauss

Note sull algoritmo di Gauss Note sull algoritmo di Gauss 29 settembre 2009 Generalità Un sistema lineare di m equazioni in n incognite x,..., x n è un espressione del tipo: a x + a 2 x 2 + + a n x n = b a 2 x + a 22 x 2 + + a 2n

Dettagli

INSTRADAMENTO: ALGORITMO DI BELLMAN-FORD

INSTRADAMENTO: ALGORITMO DI BELLMAN-FORD UNIVERSITA' DEGLI STUDI DI BERGAMO Dipartimento di Ingegneria INSTRADAMENTO: ALGORITMO DI BELLMAN-FORD FONDAMENTI DI RETI E TELECOMUNICAZIONE A.A. 2012/13 - II Semestre Esercizio 1 Sia dato il grafo G=

Dettagli

Ricerca Operativa A.A. 2007/ Esercitazione di laboratorio: Branch and Bound.

Ricerca Operativa A.A. 2007/ Esercitazione di laboratorio: Branch and Bound. Ricerca Operativa A.A. 2007/2008 17. Esercitazione di laboratorio: Branch and Bound. Luigi De Giovanni - Ricerca Operativa - 17. Esercitazione di laboratorio: Branch and Bound 17.1. Luigi De Giovanni -

Dettagli

RICERCA OPERATIVA (a.a. 2014/15) Nome: Cognome: Matricola:

RICERCA OPERATIVA (a.a. 2014/15) Nome: Cognome: Matricola: 3 o Appello /2/2 RICERCA OPERATIVA (a.a. 2/) Nome: Cognome: Matricola: ) Si risolva algebricamente il seguente problema di PL max x 2x 2 x x 2 2 x x + x 2 3 x 2 7 mediante l algoritmo del Simplesso Primale

Dettagli

Sviluppando ancora per colonna sulla prima colonna della prima matrice e sulla seconda della seconda matrice si ottiene:

Sviluppando ancora per colonna sulla prima colonna della prima matrice e sulla seconda della seconda matrice si ottiene: M. CARAMIA, S. GIORDANI, F. GUERRIERO, R. MUSMANNO, D. PACCIARELLI RICERCA OPERATIVA Isedi Esercizi proposti nel Cap. 5 - Soluzioni Esercizio 5. - La norma Euclidea di è 9 6 5 - Il versore corrispondente

Dettagli

Esercizi di Programmazione Lineare

Esercizi di Programmazione Lineare Esercizi di Programmazione Lineare 1 grafica Si consideri il seguente problema di programmazione lineare: max 3x 1 + 2x 2 s.t. + 2x 1 + x 2 4 2x 1 + x 2 2 + x 1 x 2 1 x 1, x 2 0 a) Risolvere il problema

Dettagli

1 TEORIA DELLE RETI 1. 1 Teoria delle reti. 1.1 Grafi

1 TEORIA DELLE RETI 1. 1 Teoria delle reti. 1.1 Grafi 1 TEORIA DELLE RETI 1 1 Teoria delle reti 1.1 Grafi Intuitivamente un grafo è un insieme finito di punti (nodi o vertici) ed un insieme di frecce (archi) che uniscono coppie di punti Il verso della freccia

Dettagli

Rango di una matrice e teorema di Rouché-Capelli

Rango di una matrice e teorema di Rouché-Capelli Rango di una matrice e teorema di Rouché-Capelli Sappiamo che a una matrice m n, A, è associata l applicazione lineare L A : R n R m, L A (X) = AX, X R n. Definizione 1. Lo spazio nullo di A, N (A), è

Dettagli

Ricerca Operativa A.A. 2007/ Esercitazione di laboratorio: Branch and Bound.

Ricerca Operativa A.A. 2007/ Esercitazione di laboratorio: Branch and Bound. Ricerca Operativa A.A. 2007/2008 17. Esercitazione di laboratorio: Branch and Bound. Luigi De Giovanni - Ricerca Operativa - 17. Esercitazione di laboratorio: Branch and Bound 17.1 . Luigi De Giovanni

Dettagli

Note per il corso di Geometria Corso di laurea in Ing. Edile/Architettura. 4 Sistemi lineari. Metodo di eliminazione di Gauss Jordan

Note per il corso di Geometria Corso di laurea in Ing. Edile/Architettura. 4 Sistemi lineari. Metodo di eliminazione di Gauss Jordan Note per il corso di Geometria 2006-07 Corso di laurea in Ing. Edile/Architettura Sistemi lineari. Metodo di eliminazione di Gauss Jordan.1 Operazioni elementari Abbiamo visto che un sistema di m equazioni

Dettagli

RICERCA OPERATIVA. Tema d esame del 04/12/2008 (Simulazione 1)

RICERCA OPERATIVA. Tema d esame del 04/12/2008 (Simulazione 1) RICERCA OPERATIVA Tema d esame del 04/12/2008 (Simulazione 1) COGNOME: NOME: MATRICOLA: 1. Un azienda meccanica deve pianificare il lavoro delle sue tre macchine per un dato giorno. I lotti che è possibile

Dettagli

RICERCA OPERATIVA. Stock bamboline automobiline libri peluches costo (euro)

RICERCA OPERATIVA. Stock bamboline automobiline libri peluches costo (euro) RICERCA OPERATIVA Tema d esame del 15/12/2008 (5 crediti) COGNOME: NOME: MATRICOLA: 1. Babbo Natale deve organizzare gli acquisti per le prossime festività. Sono arrivate richieste di 15000 bamboline,

Dettagli

Nome Cognome: RICERCA OPERATIVA (a.a. 2012/13) 5 o Appello 14/1/ Corso di Laurea: L Sp Matricola:

Nome Cognome: RICERCA OPERATIVA (a.a. 2012/13) 5 o Appello 14/1/ Corso di Laurea: L Sp Matricola: o Appello // RICERCA OPERATIVA (a.a. /) Nome Cognome: Corso di Laurea: L- Sp Matricola: ) Si individui un albero dei cammini minimi di radice sul grafo in figura. - - Si utilizzi l algoritmo più appropriato

Dettagli

Programmazione Matematica / A.A Soluzioni di alcuni esercizi

Programmazione Matematica / A.A Soluzioni di alcuni esercizi Programmazione Matematica / A.A. 8-9 Soluzioni di alcuni esercizi Esercizi - I 3. Aggiungiamo al problema una variabile v, e richiediamo che v soddisfi v n a ij x j b i. j= Fissato x, il minimo v che soddisfa

Dettagli

Esame di Ricerca Operativa del 09/04/2019. (Cognome) (Nome) (Numero di Matricola)

Esame di Ricerca Operativa del 09/04/2019. (Cognome) (Nome) (Numero di Matricola) Esame di Ricerca Operativa del 09/0/09 (Cognome) (Nome) (Numero di Matricola) Esercizio. (a) Risolvere tramite l algoritmo del simplesso il seguente problema di programmazione lineare: max x x x + x x

Dettagli

Flusso a Costo Minimo

Flusso a Costo Minimo Sapienza Università di Roma - Dipartimento di Ingegneria Informatica, Automatica e Gestionale Flusso a Costo Minimo Docente: Renato Bruni bruni@dis.uniroma.it Corso di: Ottimizzazione Combinatoria Dal

Dettagli

RICERCA OPERATIVA (a.a. 2016/17) Nome: Cognome: Matricola:

RICERCA OPERATIVA (a.a. 2016/17) Nome: Cognome: Matricola: Appello Straordinario 8// RICERCA OPERATIVA (a.a. /7) Nome: Cognome: Matricola: ) Si risolva il problema del flusso massimo dal nodo al nodo relativamente all istanza in figura, utilizzando l algoritmo

Dettagli

Richiami di Teoria dei Grafi. Paolo Detti Dipartimento di Ingegneria dell Informazione Università di Siena

Richiami di Teoria dei Grafi. Paolo Detti Dipartimento di Ingegneria dell Informazione Università di Siena Richiami di Teoria dei Grafi Paolo Detti Dipartimento di Ingegneria dell Informazione Università di Siena Teoria dei grafi La Teoria dei Grafi costituisce, al pari della Programmazione Matematica, un corpo

Dettagli

3.6 Metodi basati sui piani di taglio

3.6 Metodi basati sui piani di taglio 3.6 Metodi basati sui piani di taglio Problema generale di Programmazione Lineare Intera (PLI) con A matrice m n e b vettore n 1 razionali min{ c t x : x X = {x Z n + : Ax b} } Sappiamo che esiste una

Dettagli

Teoria dei Grafi Elementi di base della Teoria dei Grafi

Teoria dei Grafi Elementi di base della Teoria dei Grafi L. Pallottino, Sistemi Robotici Distribuiti - Versione del 4 Marzo 2015 42 Teoria dei Grafi Elementi di base della Teoria dei Grafi Definizione 1. Un grafo G = (V, E) è composto da un insieme finito di

Dettagli

Modelli di Programmazione Lineare. PRTLC - Modelli

Modelli di Programmazione Lineare. PRTLC - Modelli Modelli di Programmazione Lineare PRTLC - Modelli Schema delle esercitazioni Come ricavare la soluzione ottima Modelli Solver Come ricavare una stima dell ottimo Rilassamento continuo - generazione di

Dettagli

Esercitazione 2. Progettare un algoritmo che risolva tale problema in tempo O( E + V log V ).

Esercitazione 2. Progettare un algoritmo che risolva tale problema in tempo O( E + V log V ). Esercitazione 2 Problema 4: Dato un grafo G = (V, E) con pesi positivi sugli archi ed un insieme di k centri C = {c 1, c 2, c k } V, si richiede di partizionare l insieme V in k insiemi V 1, V 2, V k in

Dettagli

Istituzioni di Matematiche Modulo A (ST)

Istituzioni di Matematiche Modulo A (ST) Istituzioni di Matematiche Modulo A (ST V II foglio di esercizi ESERCIZIO. Nei seguenti sistemi lineari, discutere l insieme delle soluzioni al variare del parametro t, o dei parametri t e τ, in R. 5 x

Dettagli

CORSO DI ALGEBRA LINEARE Anno Accademico 2004/2005 Appunti su SISTEMI di EQUAZIONI LINEARI

CORSO DI ALGEBRA LINEARE Anno Accademico 2004/2005 Appunti su SISTEMI di EQUAZIONI LINEARI CORSO DI ALGEBRA LINEARE Anno Accademico 2004/2005 Appunti su SISTEMI di EQUAZIONI LINEARI Lo studente ha forse già incontrato i sistemi di equazioni lineari alla scuola secondaria Con il termine equazione

Dettagli

RICERCA OPERATIVA (a.a. 2017/18) Nome: Cognome: Matricola:

RICERCA OPERATIVA (a.a. 2017/18) Nome: Cognome: Matricola: Terzo appello //8 RICERCA OPERATIVA (a.a. 7/8) Nome: Cognome: Matricola: ) Si risolva il seguente problema di PL max x x x x x x x x x applicando l algoritmo del Simplesso Primale, per via algebrica, a

Dettagli

Esame di Ricerca Operativa del 12/06/18. Base x Degenere? y Indice Rapporti Indice uscente entrante

Esame di Ricerca Operativa del 12/06/18. Base x Degenere? y Indice Rapporti Indice uscente entrante Esame di Ricerca Operativa del /0/ (Cognome) (Nome) (Numero di Matricola) Esercizio. Effettuare due iterazioni dell algoritmo del simplesso duale: min y + y + y + y + y + y y y y + y +y = y y + y +y y

Dettagli

Introduzione soft alla matematica per l economia e la finanza. Marta Cardin, Paola Ferretti, Stefania Funari

Introduzione soft alla matematica per l economia e la finanza. Marta Cardin, Paola Ferretti, Stefania Funari Introduzione soft alla matematica per l economia e la finanza Marta Cardin, Paola Ferretti, Stefania Funari Capitolo Sistemi di equazioni lineari.8 Il Teorema di Cramer Si consideri un generico sistema

Dettagli

Metodi e Modelli per l Ottimizzazione Combinatoria Ripasso sulla Programmazione Lineare e il metodo del Simplesso (parte I)

Metodi e Modelli per l Ottimizzazione Combinatoria Ripasso sulla Programmazione Lineare e il metodo del Simplesso (parte I) Metodi e Modelli per l Ottimizzazione Combinatoria Ripasso sulla Programmazione Lineare e il metodo del Simplesso (parte I) Luigi De Giovanni Giacomo Zambelli 1 Problemi di programmazione lineare Un problema

Dettagli

RICERCA OPERATIVA (a.a. 2014/15) Nome: Cognome: Matricola:

RICERCA OPERATIVA (a.a. 2014/15) Nome: Cognome: Matricola: 3 o Appello /2/2 RICERCA OPERATIVA (a.a. 2/) Nome: Cognome: Matricola: ) Si risolva algebricamente il seguente problema di PL max x 2x 2 x x 2 2 x x + x 2 3 x 2 7 mediante l algoritmo del Simplesso Primale

Dettagli