Maurizio Patrignani seminario sull’articolo On the Single-Source Unsplittable Flow Problem di

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

description

Maurizio Patrignani seminario sull’articolo On the Single-Source Unsplittable Flow Problem di Yefim Dinitz Naveen Garg Michel X. Goemans (aprile ‘98). 2.1. 3.5. 1.0. 3.2. 1.5. 2.6. 1.7. 2.6. 3.4. 2.9. 2.2. 2.1. 2.3. 1.0. grafo diretto con capacità sugli archi. - PowerPoint PPT Presentation

Transcript of Maurizio Patrignani seminario sull’articolo On the Single-Source Unsplittable Flow Problem di

Maurizio Patrignani

seminario sull’articolo

On the Single-SourceUnsplittable 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+

2.1

2.3

2.22.9

2.61.7

1.0

1.5

1.0

2.1

2.6

3.5

3.4

3.2

il grafo si può assumere aciclico

singola sorgente sk terminali ti con demands di R+

un vertice può contenere un numero arbitrario di terminali

s

t5

t4

t3t2

t6

t1

flowsingle source - multicommodity

4.1

2.3

2.22.9

2.61.7

1.01.5

2.2

2.1

2.6

6.5

3.4

3.2

s

1.5

1.1

3.1

0.9

2.1

1.2

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

flowunsplittable - 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 iT di

2C

C

1.53.1

0.9 2.11.2

s

C

C

feasibility: esiste una soluzione

PARTITION FEASIBILITY

riduzione dal partition alla feasibility

riduzione dal partition al congestion

1.53.1

0.9 2.11.2

s

1

1

PARTITION CONGESTION

congestion: è il più piccolo fattore, moltiplicando le capacità per il quale, esiste una soluzione (confronto con C)

1.53.1

0.9 2.11.2

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)

riduzionenumero di rounds e massimizzazione

PARTITION Nº OF ROUNDS

PARTITION MAXIMIZATION

esempio di applicazionescheduling su una macchina parallela

macchinelavori

T

T

T

T

p1

p2

p4

p3

p5

pn

idea base dell’articolo

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 dmax

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 dmax

parto da un flusso (non unsplittable, frazionario) che

soddisfi tutte le richieste

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

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:

t2s t3t1

t6t5

t4

t

fase di semplificazione preliminare

f

dse f d

f - dd

• 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 fi < d

f1

f2

schema generale dell’algoritmo

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:

f1

d1

f2

d2

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 nuovoforward 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

l’algoritmo 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 forzanteattraverso l’arco possono essere trasferiti terminali per un valore pari al flusso sull’arco stesso

dopo essere diventato forzanteattraverso l’arco verrà trasferito al massimo un terminale (e questo provocherà la cancellazione dell’arco)

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-M/q

M-M/qM

M-M/q

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 è anch’esso forzante

proprietà 3.4: se e = (u,v) è un arco forzante, c’è al massimo un arco che esce da v ed è anch’esso forzante

proprietà 3.5: se un vertice v ha degli archi uscenti tutti i suoi terminali sono regolarise 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 regolarise 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

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, l’algoritmo trova cicli alternanti

lemma 3.8: finché tutti i terminali non hanno raggiunto la sorgente, l’algoritmo trova cicli alternanti

proprietà 3.4

se e = (u,v) è un arco forzante, c’è al massimo un arco che esce da v ed è anch’esso forzante

euv

nell’iterazione nella quale l’arco è 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 regolarise 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 all’iterazione i e considero l’iterazione successiva

la proprietà non può essere violata dal decremento di flusso di un arco entrante o dall’uscita di un terminale da v

supponiamo che un terminale sia portato in v

dv

proprietà 3.5 (continua)

f - ddv

non possono essere forzanti per la proprietà precedente

se v aveva più di un arco uscente

se v aveva un solo arco uscente

dv

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 terminalese avesse un solo arco entrante avrei mosso il terminale lungo quell’arco

lemma 3.8

finché tutti i terminali non hanno raggiunto la sorgente, l’algoritmo 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 sorgentesenza trovare un arco forward, da dove viene questo ramo?

minimizzazione della congestionenel caso in cui la capacità minima (cmin) sia maggiore o uguale alla domanda massima (dmax), l’algoritmo 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) + dmax

3) considero che:c(e) + dmax (+1)c(e) 2c(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

T1 Tk

tutte le richieste minori o uguali a (1-1/q)cmin possono essere soddisfatte in q tornate

tutte le richieste minori o uguali a (1-1/q)cmin possono essere soddisfatte in q tornate

tutte le capacità pari a c(e)/q

dimostrazionedel 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 dmax ,cioè (1-1/q)cmin

f(e) c(e)/q + (1-1/q)cmin

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)cmin

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 dmax

tutte le richieste nel range [d/(q-1), d] possono essere soddisfatte in q tornate, dove

0 d dmax

stessa costruzione del lemma precedentese 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 did/(q-1)

al massimo un terminale è raggiunto tramite questa copia di e nel flusso unsplittable il suo flusso f(e) è al massimo

d dmax cmin c(e)

minimizzazione del numero delle tornate

teorema finale

se dmax cmin (e la cut condition è soddisfatta), allora c’è un algoritmo polinomiale che

soddisfa tutte le richieste in 5 tornate

se dmax cmin (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)cmin = 0.5 cmin

con 3 tornate soddisfo tutti i terminali che hanno una richiesta nel range [dmax/(3-1), dmax] = [0.5 dmax, dmax]

complessità dell’algoritmoper la minimizzazione del numero

delle tornate

l’algoritmo base ha complessità O(nm + km)

per entrambe le reti la complessità è

O(qm qn + qkm) = O(q2 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 l’altra con un numero di copie pari a q´´= 3

3) soddisfo i terminali con richieste:da 0 a [1-1/( 2 )] cmin

in 2 tornateda cmin /(3 -1) fino a dmax

in 3 tornate

4) quindi soddisfo i teminali 5