Maurizio Patrignani seminario sullarticolo On the Single-Source Unsplittable Flow Problem di Yefim Dinitz Naveen Garg Michel X. Goemans (aprile 98)

Slides:



Advertisements
Presentazioni simili
Premessa: si assume di aver risolto (correttamente
Advertisements

Algoritmi e Strutture dati Mod B
Depth-first search Visita in profondità di un grafo Algoritmo Esempio
Algoritmi e Strutture Dati
Il problema del cammino minimo tra 2 nodi in un grafo non cooperativo
Il problema del minimo albero ricoprente in un grafo non cooperativo
Algoritmi e Strutture Dati (Mod. B)
Algoritmi e Strutture Dati (Mod. B)
Problemi di soddisfacimento di vincoli Maria Simi a.a. 2005/2006.
Algoritmi e Strutture Dati
Cammini minimi con una sorgente
Depth-first search Visita in profondità di un grafo Algoritmo Esempio
Università degli Studi di Cagliari
Algoritmi e Strutture Dati
Il problema del cammino minimo tra 2 nodi in un grafo con archi privati.
Università degli Studi di Roma Tor Vergata
Il problema del minimo albero ricoprente in un grafo con archi privati.
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:
Meccanismi one-parameter. Riepilogo Archi di un grafo controllati da agenti egoistici Solo lagente conosce il peso associato al proprio arco Obiettivo:
Macchine non completamente specificate
Algoritmi Paralleli e Distribuiti a.a. 2008/09
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
Il problema del cammino minimo tra 2 nodi in un grafo con archi privati.
Algoritmi e Strutture Dati
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.
CORSO DI PROGRAMMAZIONE II Introduzione alla ricorsione
Algoritmi e Strutture Dati (Mod. B)
Algoritmi e Strutture Dati (Mod. B)
Trovare il percorso minimo da b ad ogni altro vertice
Grafi.
Modelli e Algoritmi per la Logistica
Algoritmi e Strutture Dati
Algoritmi greedy Gli algoritmi greedy in genere non sono esatti, cioè determinano soluzioni non necessariamente ottime Per il problema dell’albero ricoprente.
Intelligenza Artificiale
Convergence to Approximate Nash Equilibria in Congestion Games
Radix-Sort(A,d) // A[i] = cd...c2c1
Lezioni di Ricerca Operativa Corso di Laurea in Informatica
Prof. Cerulli – Dott.ssa Gentili
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Prof. Cerulli – Dott.ssa Gentili
Lezione n° 18: Maggio Problema del trasporto: formulazione matematica Anno accademico 2008/2009 Prof. Cerulli – Dott.ssa Gentili Lezioni di.
Web Communities and their identificaton
Cammini minimi da un sorgente
Capitolo 6 Alberi di ricerca Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Strutture dati per.
Capitolo 13 Cammini minimi: Ordinamento topologico Algoritmi e Strutture Dati.
Università degli Studi di Roma Tor Vergata
Claudio Arbib Università dell’Aquila Ricerca Operativa Metodo del simplesso per problemi di distribuzione single-commodity.
Capitolo 12 Minimo albero ricoprente Algoritmi e Strutture Dati.
Flusso Massimo Applicazione di algoritmi
Capitolo 12 Minimo albero ricoprente: Algoritmo di Kruskal Algoritmi e Strutture Dati.
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.
Codici prefissi Un codice prefisso è un codice in cui nessuna parola codice è prefisso (parte iniziale) di un’altra Ogni codice a lunghezza fissa è ovviamente.
Automi temporizzati.
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 11 Grafi e visite di grafi Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Strutture di controllo
Capitolo 12 Minimo albero ricoprente: Algoritmo di Kruskal Algoritmi e Strutture Dati.
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.
Transcript della presentazione:

Maurizio Patrignani seminario sullarticolo On the Single-Source Unsplittable Flow Problem di Yefim Dinitz Naveen Garg Michel X. Goemans (aprile 98)

grafo diretto con capacità sugli archi grafo diretto G(V,E) capacità degli archi c : E R il grafo si può assumere aciclico

singola sorgente s k terminali t i con demands d i R + un vertice può contenere un numero arbitrario di terminali s t 5 t 4 t 3 t 2 t 6 t 1 flow single source - multicommodity

s unsplittable: si richiede che ogni commodity segua un solo path dalla sorgente al rispettivo terminale fractional: il valore del flusso su un arco è un numero reale f : E R + 0 flow unsplittable - fractional

quattro diversi problemi feasibility: esiste un flusso (fractional, unsplittable) che soddisfa tutte le richieste senza violare i vincoli sulle capacità degli archi? congestion: qualè il più piccolo valore, tale che moltiplicando tutte le capacità per, il problema ha una soluzione? number of rounds: quante tornate sono necessarie per soddisfare tutte le richieste? maximization: trovare un sottoinsieme T dei terminali per il quale il problema è risolvibile e che massimizza i T d i

2C C s C C feasibility: esiste una soluzione PARTITION FEASIBILITY riduzione dal partition alla feasibility

riduzione dal partition al congestion s 1 1 PARTITION CONGESTION congestion: è il più piccolo fattore, moltiplicando le capacità per il quale, esiste una soluzione (confronto con C)

s C number of rounds: n rounds sono sufficienti per soddisfare in maniera unsplittable le richieste (confronto n con 2) maximization: posso soddisfare in maniera unsplittable una quantità di richieste complessivamente pari a T (confronto T con C) riduzione numero di rounds e massimizzazione PARTITION Nº OF ROUNDS PARTITION MAXIMIZATION

esempio di applicazione scheduling su una macchina parallela macchine lavori T T T T p1p1 p2p2 p4p4 p3p3 p5p5 pnpn

idea base dellarticolo lo trasformo in un flusso unsplittable che vìola i vincoli sulle capacità (trovo quindi una soluzione non ammissibile) di una quantità che nel caso peggiore è pari alla richiesta massima d max parto da un flusso (non unsplittable, frazionario) che soddisfi tutte le richieste

per ogni insieme di vertici S (che non includa la sorgente) la richiesta totale dei terminali in S vale al massimo la capacità totale degli archi entranti in S cut condition esiste una soluzione frazionaria al problema del multicommodity flow non unsplittable, con capacità sugli archi, se e solo se la seguente condizione è verificata: t 2 s t 3 t 1 t 6 t 5 t 4 t

fase di semplificazione preliminare f d se f d f - d d quando un arco raggiunge un valore del flusso pari a zero viene rimosso quando un terminale raggiunge la sorgente viene rimosso quando un vertice rimane sconnesso viene rimosso d raggiungo uno stato in cui tutti i terminali residui sono regolari terminale regolare i f i < d f1f1 f2f2

schema generale dellalgoritmo fase di semplificazione preliminare ricerca ciclo alternante travaso di flusso contrazione è rimasta solo la sorgente? fine si no

invariante invariante: ogni vertice contenente terminali ne ha almeno uno regolare e ha almeno due archi entranti piuttosto che imporre la regolarità di tutti i terminali, nel seguito si farà riferimento ad una condizione meno vincolante: f1f1 d1d1 f2f2 d2d2

ricerca del ciclo alternante vertice scelto casualmente arco uscente scelto casualmente vado avanti quanto posso (il grafo è aciclico!) vado indietro fino a che devo (fino a che incontro vertici che hanno solamente archi entranti). Quando incontro un arco uscente inizio un nuovo forward path arco entrante scelto casualmente privo di archi uscenti forward path backward path

chiusura del ciclo alternante mi fermo non appena raggiungo un vertice già incontrato può accadere che un forward path intersechi un altro forward path un forward path intersechi un backward path un backward path intersechi un forward path sicuramente un terminale qui

travaso del flusso decremento il flusso sui forward path e lo incremento sui backward path della stessa quantità questo travaso conserva il bilancio del flusso entrante ed uscente di ogni vertice di quanto decremento-incremento? finché non si verifica una di queste due condizioni: condizione (1) asciugo il flusso su un forward edge

condizione (2) rendo irregolare un terminale regolare chiamo forzanti gli archi appartenuti ad un backward path in almeno una iterazione (anche se non hanno mai fatto parte di un ciclo alternante) travaso del flusso

ritiro un terminale t lungo un arco e se: 1) e è forzante ed f(e) = d contrazione 2) e non è forzante ed f(e) d

risultato fondamentale lalgoritmo trova un flusso unsplittable tale che il flusso totale attraverso ciascun arco eccede la sua capacità (in effetti il suo flusso iniziale) di una quantità minore della richiesta massima prima di diventare forzante attraverso larco possono essere trasferiti terminali per un valore pari al flusso sullarco stesso dopo essere diventato forzante attraverso larco verrà trasferito al massimo un terminale (e questo provocherà la cancellazione dellarco) la somma dei flussi di tutti i terminali, eccetto al più uno, su uno stesso arco e è minore del flusso iniziale su e corollario

tightness M M-M/q M s M M M M M M M in questa rete un flusso unsplittable, vìola necessariamente la capacità su qualche arco di M-M/q al crescere di q la quantità M/q tende a zero

running time fase di semplificazione preliminare ricerca ciclo alternante travaso di flusso contrazione è rimasta solo la sorgente? fine si no O(n) rimuove almeno un arco O(m) O(k) O(kn) complessivi O(nm + km) m = |E|n = |V|k = nº term.

correttezza proprietà 3.4: se e = (u,v) è un arco forzante, cè al massimo un arco che esce da v ed è anchesso forzante proprietà 3.5: se un vertice v ha degli archi uscenti tutti i suoi terminali sono regolari se un vertice v non ha archi uscenti ha al massimo un terminale irregolare proprietà 3.5: se un vertice v ha degli archi uscenti tutti i suoi terminali sono regolari se un vertice v non ha archi uscenti ha al massimo un terminale irregolare invariante: ogni vertice contenente terminali ha almeno un terminale regolare e almeno due archi entranti lemma 3.8: finché tutti i terminali non hanno raggiunto la sorgente, lalgoritmo trova cicli alternanti

proprietà 3.4 se e = (u,v) è un arco forzante, cè al massimo un arco che esce da v ed è anchesso forzante e u v nelliterazione nella quale larco è diventato forzante, ciò è vero per come ho costruito il cliclo alternante nessun nuovo arco viene aggiunto durante le iterazioni successive (gli archi vengono solo tolti) per rimozione la proprietà non può essere violata

proprietà 3.5 se un vertice v ha degli archi uscenti tutti i suoi terminali sono regolari se un vertice v non ha archi uscenti ha al massimo un terminale irregolare dimostrazione per induzione passo base: dopo la fase di semplificazione preliminare la proprietà è certamente soddisfatta passo induttivo: suppongo che la proprietà sia soddisfatta alliterazione i e considero literazione successiva la proprietà non può essere violata dal decremento di flusso di un arco entrante o dalluscita di un terminale da v supponiamo che un terminale sia portato in v

d v proprietà 3.5 (continua) f - d d v non possono essere forzanti per la proprietà precedente se v aveva più di un arco uscente se v aveva un solo arco uscente d v nessuno forzante? caso precedente al massimo un terminale può essere portato in v v aveva solo terminali regolari (ipotesi induttiva) ora ne può avere uno irregolare (ma non ha più archi uscenti)

invariante ogni vertice contenente terminali ha almeno un terminale regolare e almeno due archi entranti se un vertice ha archi uscenti allora tutti i suoi terminali sono regolari (proprietà 3.5) se ha più di un terminale allora almeno uno è regolare (sempre per la proprietà 3.5) rimane il caso in cui il vertice non ha archi uscenti e ha un solo terminale se avesse un solo arco entrante avrei mosso il terminale lungo quellarco

lemma 3.8 finché tutti i terminali non hanno raggiunto la sorgente, lalgoritmo trova cicli alternanti nel costruire il forward path mi fermo su un vertice che non ha archi uscenti (buon senso) ha terminali (invariante) ha almeno due archi entranti s se arrivo alla sorgente senza trovare un arco forward, da dove viene questo ramo?

minimizzazione della congestione nel caso in cui la capacità minima (c min ) sia maggiore o uguale alla domanda massima (d max ), lalgoritmo visto trova un flusso di congestione al massimo 2 se la cut condition non è soddisfatta 1) trovo (binary search) il valore 1, moltiplicando per il quale le capacità, la cut condition è verificata 2) applico il metodo descritto e trovo un flusso (unsplittable) tale che: f(e) c(e) + d max 3) considero che: c(e) + d max ( +1)c(e) 2 c(e) siccome la congestione ottima (unsplittable flow) non può essere minore di (splittable flow) se ne deduce che il mio algoritmo mi fornisce una soluzione 2 approssimata

minimizzazione del numero delle tornate primo lemma S T1T1 TkTk tutte le richieste minori o uguali a (1-1/q)c min possono essere soddisfatte in q tornate tutte le capacità pari a c(e)/q

dimostrazione del lemma precedente una soluzione trovata con il metodo descritto precedentemente vìola la capacità c(e)/q di un arco e di una quantità inferiore a d max,cioè (1-1/q)c min f(e) c(e)/q + (1-1/q)c min c(e)/q + (1-1/q)c(e) = c(e) solo una copia del grafo originale è interessata dal routing di un terminale ergo in q tornate soddisfo tutte le richieste minori o uguali a (1-1/q)c min

minimizzazione del numero delle tornate secondo lemma tutte le richieste nel range [d/(q-1), d] possono essere soddisfatte in q tornate, dove 0 d d max stessa costruzione del lemma precedente se c(e) dq/(q-1) f(e) c(e)/q + d c(e)/q + c(e)(q-1)/q = c(e) altrimenti se c(e) < dq/(q-1) la capacità nelle copie del grafo è c(e)/q, cioè è minore di d/(q-1) al massimo un terminale è raggiunto tramite questa copia di e nel flusso unsplittable il suo flusso f(e) è al massimo d d max c min c(e)

minimizzazione del numero delle tornate teorema finale se d max c min (e la cut condition è soddisfatta), allora cè un algoritmo polinomiale che soddisfa tutte le richieste in 5 tornate combinazione del primo lemma con q=2 e del secondo lemma con q=3 con 2 tornate soddisfo tutti i terminali che hanno una richiesta minore o uguale a (1-1/2)c min = 0.5 c min con 3 tornate soddisfo tutti i terminali che hanno una richiesta nel range [d max /(3-1), d max ] = [0.5 d max, d max ]

complessità dellalgoritmo per la minimizzazione del numero delle tornate lalgoritmo base ha complessità O(nm + km) per entrambe le reti la complessità è O(qm qn + qkm) = O(q 2 mn + q km) quindi: O(4mn + 2km) + O(9mn + 3km) la complessità asintotica rimane: O(mn + km)

minimizzazione del numero delle tornate in assenza di cut condition 1) trovo (binary search) il valore 1, moltiplicando per il quale le capacità, la cut condition è verificata il numero minimo di tornate deve essere almeno perché sovrapponendo n tornate ho una congestione al più n 2) costruisco due reti: una con un numero di copie pari a q´ = 2 e laltra con un numero di copie pari a q´´= 3 3) soddisfo i terminali con richieste: da 0 a [1-1/( 2 )] c min in 2 tornate da c min /(3 -1) fino a d max in 3 tornate 4) quindi soddisfo i teminali 5