101

Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro
Page 2: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

Universita degli Studi di Salerno

Note per il Corso di

Algoritmi e Strutture Dati IIParte B

Docente: Ugo Vaccaro

Corso di Laurea in Informatica – Anno Accademico 2004-2005

Page 3: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro
Page 4: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

Indice

Lezione 1:Definizione di algoritmo di approssimazione; Vertex Cover; Massimo Sottografo Aciclico; Maxi-

mum Cut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .pag. 1

Lezione 2:Set Cover; Copertura Massima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pag. 9

Lezione 3:Steiner Tree; TSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .pag. 17

Lezione 4:K-Centro; PTAS; FPTAS; Zaino 0-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pag. 28

Lezione 5:Algoritmi di approssimazione via arrotondamento della soluzione di sistemi di PL; Vertex Cover;

Set Cover; Set Multicover; Hitting Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pag. 36

Lezione 6:Arrotondamento probabilistico; Set Cover; Max-Sat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pag. 45

Lezione 7:Principio della Dualita in Programmazione Lineare; Set Cover via Dual Fitting; Hitting Set via

slackness primale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pag. 54

Lezione 8:Algoritmi di approssimazione via Primale-Duale; Vertex Cover; Set Cover . . . . . . . . . . . . . pag. 65

Lezione 9:Algoritmi on-line; Analisi competitiva di algoritmi; Gestione della Cache; 2-competitivita di LRU;

Ottimalita di LRU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pag. 72

Lezione 10:Accesso e Gestione di Liste dinamiche; 2-competitivita di MTF; ottimalita di MTF . . . . pag. 81

Lezione 11:Scheduling on-line; Bin Packing on-line; Analisi competitiva del Problema dell’affitto di sci e del

Problema della Compravendita di azioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pag. 89

Page 5: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro
Page 6: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 1 1

Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005

Lezione 1

Docente: Ugo Vaccaro

Dalla Teoria della NP-Completezza abbiamo appreso che esiste una classe di problemi(NP-hard) per cui non e noto alcun algoritmo di soluzione di complessita polinomiale ede inoltre molto improbabile che per tali problemi possa essere mai trovato un algoritmodi soluzione di complessita polinomiale. Tuttavia, la classse dei problemi NP completicontiene molti problemi di grande importanza pratica. Per essi e molto importante doverprodurre una “qualche soluzione”, independentemente dal fatto che la soluzione “migliore”sia difficile da trovare o meno.1 Tipicamente, ci sono tre differenti approcci che si possonoseguire quando ci si trova di fronte alla necessita di trovare soluzioni accettabili in praticaper problemi NP completi .

1. Se l’input al problema dettato dalla specifica situazione pratica in cui il problemasorge e piccolo, allora si puo provare a trovare la “migliore” soluzione medianteuna ricerca esaustiva, che essenzialmente genera tutte le possibili soluzioni associateall’istanza di input e poi se ne sceglie la migliore. Tale approccio genera algoritmicon complessita esponenziale. Tuttavia, se l’input e piccolo, in pratica puo produrresoluzioni in un tempo ragionevole.

2. Il fatto che un problema sia NP completo essenzialmente implica che e molto im-probabile che esista un algoritmo di complessita polinomiale che produce la soluzionedesiderata in corrispondenza ad ogni possibile istanza di input. Puo capitare, pero, che per “specifiche” particolari istanze di input, un tale algoritmo possa esseretrovato. Pertanto, una analisi accurata delle possibili istanze di input che possono“ragionevolmente” accadere in pratica, puo portare alla elaborazione di algoritmiefficienti.

3. Il terzo approccio consiste nel progettare algoritmi che producano una soluzionein tempo polinomiale, per ogni possibile istanza di input, non necessariamente divalore ottimo, ma che si discosti dal valore ottimo per “poco”, e che tale “poco” siastimabile in funzione della taglia dell’input.

In questo corso seguiremo il terzo approccio.Precisiamo i concetti sopra esposti. Innanzitutto diciamo che ci occuperemo di prob-

lemi di ottimizzazione. Informalmente un problema di ottimizzazione Π e definito da:

• un insieme IΠ di possibili istanze di input;

1Per il momento la discussione e da intendersi ad un livello molto informale, successivamente daremoun senso preciso ai termini “migliore soluzione” e “qualche soluzione” per i problemi NP completi checonsidereremo.

Page 7: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 1 2

• ad ogni possibile istanza di input i ∈ IΠ e associato un insieme di possibili soluzioniSΠ(i). E definita inoltre una funzione costo che in corrispondenza ad ogni possibileistanza di input i ∈ IΠ associa ad ogni soluzione s ∈ SΠ(i) un costo c(s) ∈ R+.

In linea di principio, l’obiettivo sarebbe di trovare in maniera efficiente, per ogni istanza diinput i ∈ IΠ, una soluzione di minimo costo (o massimo costo, a seconda che il problemasia di minimo o di massimo, rispettivamente), associata alla istanza i. Sia OPTΠ(i) ilcosto di una tale soluzione. Per i problemi di ottimizzazione che studieremo in questocorso, calcolare OPTΠ(i) e difficile, ovvero il corrispondente problema di decisione e NPcompleto (vedi ASD2 parte A).

Esempio 1 Un classico esempio di problema di ottimizzazione e il problema del MinimumSpanning Tree . L’insieme delle possibili istanze di input a Minimum Spanning Treeconsiste di tutte le possibili coppie (G,w), dove G = (V,E) e un grafo con insieme divertici V ed insieme di archi E, e w : E → R+ e una funzione peso che associa numeri nonnegativi agli archi nell’insieme E. Per ogni possibile istanza di input i = (G,w), l’insiemedelle possibili soluzioni S(i) consiste di tutti i sottoalberi di G che contengono tutti ivertici in V . Ad ogni possibile soluzione s ∈ S(i) (ovvero ad ogni possibile sottoalbero Tdi G che contiene tutti i vertici di G) e associato come costo il valore c(s) pari alla sommadei pesi secondo la funzione w degli archi di T . Il problema di ottimizzazione consiste neltrovare per ogni i = (G,w) un albero di minimo costo in S(i).

Esempio 2. Un altro classico problema di ottimizzazione e il problema del VertexCover . L’insieme delle possibili istanze di input a Vertex Cover consiste di tutti ipossibili grafi G = (V,E). Per ogni grafo G, l’insieme delle possibili soluzioni ad essoassociato consiste di tutti i sottoinsiemi S ⊆ V tali che per ogni arco e ∈ E, almeno unodei due vertici incidenti su e appartiene a S. Ogni tale S viene chiamato vertex cover diG. Il costo di una soluzione S ⊆ V associata al grafo G corrisponde alla sua cardinalita|S|. Il problema di ottimizzazione consiste nel trovare per ogni grafo G un vertex cover diminima cardinalita .

Informalmente, un algoritmo di approssimazione A per un problema di ottimizzazioneΠ produce, in tempo polinomiale ed in corrispondenza ad ogni istanza di input di Π, unasoluzione di valore (costo) “prossimo” all’ottimo, dove per prossimo intendiamo che dif-ferisce dal valore ottimo per un certo fattore, sperabilmente piccolo. Precisiamo maggior-mente questi concetti, differenziando tra problemi di ottimizzazione di minimo e problemidi ottimizzazione di massimo.

Definizione. Sia Π un problema di ottimizzazione di minimo, e sia ρ : N → R+, conρ(n) ≥ 1, per ogni n ∈ N . Un algoritmo A e detto essere un algoritmo di approssimazionecon fattore di approssimazione ρ per il problema di ottimizzazione Π se, per ogni istanzadi input i di Π l’algoritmo A produce in tempo polinomiale nella taglia dell’input |i| unasoluzione s ∈ SΠ(i) tale che il valore della funzione costo sulla soluzione s soddisfi

c(s) ≤ ρ(|i|)OPTΠ(i)

Page 8: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 1 3

Chiaramente, piu prossimo a 1 e ρ(|i|) e migliore e l’approssimazione prodottadall’algoritmo. Analoga e la definizione di algoritmo di approssimazione per problemidi ottimizzazione di massimo.

Definizione. Sia Π un problema di ottimizzazione di massimo, e sia ρ : N → R+, conρ(n) ≥ 1, per ogni n ∈ N . Un algoritmo A e detto essere un algoritmo di approssimazionecon fattore di approssimazione ρ per il problema di ottimizzazione Π se, per ogni istanzadi input i di Π l’algoritmo A produce in tempo polinomiale in |i| una soluzione s ∈ SΠ(i)tale che il valore della funzione costo sulla soluzione s soddisfi

c(s) ≥ OPTΠ(i)

ρ(|i|)Per semplicita , denoteremo con SOL il valore della soluzione prodotta dagli algoritmi

di approssimazione che esamineremo, e con OPT il valore della soluzione ottima.Dalla definizione di algoritmi di approssimazione discende che per provare che un

algoritmo A abbia un fattore di approssimazione ρ occorre provare che il costo dellasoluzione trovata da A si discosta dal valore ottimo OPT della soluzione al piu per unfattore ρ. Si pone il problema di come dimostrare questo fatto, visto che per i problemiche studieremo non conosciamo ovviamente a priori OPT ne riusciamo a calcolarlo. Il“trucco” consiste nello stimare OPT con quantita di piu facile calcolo. Vediamo comefarlo nel seguente problema.

VERTEX COVER

• Input:

– grafo G = (V,E)

• Output: sottoinsieme S ⊆ V di minima cardinalita |S| tale che ∀(u, v) ∈ E valga{u, v} ∩ S 6= ∅.

L’intuizione alla base di un algoritmo di approssimazione per il problema del VertexCover e la seguente. Se nel grafo G abbiamo un certo numero k di archi disgiunti, ovverodi archi in cui nessuno di essi e adiacente all’altro, allora occorreranno almeno k verticiper coprirli tutti. Ora, un insieme M ⊆ E di archi disgiunti viene chiamato matching.L’osservazione appena fatta ci permette di trarre la seguente conclusione: ogni VertexCover per G deve essere grande almeno quanto ogni matching di G. Cio vale ovviamenteanche per il Vertex Cover ottimo (ovvero quello di cardinalita minima). Sia OPT lacardinalita del Vertex Cover di taglia minima. Abbiamo quindi appena dimostrato che

OPT ≥ |M |, per ogni M matching in G. (1)

Quindi la (1) ci ha permesso di ottenere una prima stima di OPT che useremo per valutareil fattore di approssimazione del nostro algoritmo. Diremo ora che un matching M e

Page 9: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 1 4

massimale se per ogni arco e ∈ E vale che M ∪{e} non e piu un matching. L’osservazionechiave e che l’insieme A dei vertici che incidono sugli archi di un matching massimaleformano un Vertex Cover per G. Infatti, se cio non fosse, ovvero se esistesse un arcoe ∈ E non coperto dai vertici di A, cio vorrebbe dire che l’arco e non e adiacente ad alcunarco in M , ovvero M ∪ {e} e ancora composto da archi non adiacenti, quindi M ∪ {e} eancora un matching, contraddicendo il fatto che M e un matching massimale. Quindi, ilseguente algoritmo produce un Vertex Cover .

• Costruisci un matching massimale M in G

• Output tutti i vertici che toccano gli archi di M

Valutiamo ora il fattore di approssimazione dell’algoritmo. Sia SOL il valoredella soluzione ritornata dall’algoritmo, ovvero il numero di vertici nell’insieme outputdell’algoritmo. Abbiamo che

SOL = 2|M |≤ 2OPT per la (1)

e quindi l’algoritmo ha un fattore di approssimazione costante pari a 2. Resta da vederecome costruire in tempo polinomiale un matching massimale in G. Cio e semplicementefatto mediante il seguente algoritmo.

Algoritmo per la costruzione di un matching massimale

• M ← e, (e arco qualunque di E)

• Cancella nel grafo G tutti gli archi adiacenti a e

• Itera nel grafo rimanente fin a quando non diventa vuoto

• Output M

E istruttivo chiedersi se e possibile migliorare il fattore di approssimazione 2, medianteun’analisi piu accurata dell’algoritmo. La risposta e no. Si consideri il seguente esempio digrafo in cui l’algoritmo da noi proposto produrrebbe una soluzione dal valore esattamentepari a 2OPT .

Il grafo e un grafo bipartito con 2n nodi, in cui ogni nodo del lato sinistro e connesso adogni noto del lato destro. Un Vertex Cover di cardinalita minima e dato da uno dei duelati dei vertici, quindi OPT = n. D’altra parte, l’algoritmo considererebbe un matchingmassimale di cardinalita n (rappresentato ad esempio dagli archi di maggior spessore nella

Page 10: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 1 5

figura di sopra) e di conseguenza la soluzione prodotta dall’algoritmo avrebbe cardinalitaSOL = 2n. Inoltre, esiste una classe di grafi in cui ogni matching massimale ha cardinalitaesattamente pari alla meta di un Vertex Cover ottimale. Tale classe di grafi e compostada tutti i grafi completi2 su n nodi, con n dispari. Da cio si evince che se si insiste adusare la tecnica del matching, non si potra mai migliorare il fattore di approssimazione2 appena provato. A tutt’oggi, algoritmi di approssimazione per Vertex Cover confattore di approssimazione costante inferiore a 2 non sono noti.

Esercizio 1Presentiamo un altro algoritmo di approssimazione per il problema del Vertex Covercon fattore di approssimazione pari a 2. L’algoritmo consiste dei seguenti passi:

Algoritmo alternativo per il calcolo del Vertex Cover

• Esegui una DFS sul grafo G

• Output: l’insieme S costituito da tutti i vertici dell’albero DFS tranne le foglie.

Mostriamo innanzitutto che l’insieme S output dall’algoritmo e un Vertex Cover delgrafo. Supponiamo per assurdo che non lo sia. Cio implica che esiste un arco e = (u, v) ∈E, con u e v entrambi foglie dell’albero DFS. Senza perdita di generalita , supponiamo cheu sia il primo tra i due vertici u, v ad essere stato visitato durante la visita DFS. Allora,per come la DFS opera, v diventera figlio di u nell’albero. Cio contraddice il fatto che ue una foglia dell’albero DFS.

Sia S l’insieme output dell’algoritmo sopra esposto. Ci resta da provare che |S| ≤2OPT , dove OPT rappresenta la cardinalita di un Vertex Cover di taglia minima diG. Proviamo innanzitutto che nell’albero DFS (e quindi anche in G) vi e un matchingM di cardinalita almeno |S|/2. Costruiamo il matching M nel seguente modo, partendodal nodo di livello 0 dell’albero, ovvero dalla radice r. Scegliamo un figlio arbitrario u di

2Si ricordi che un un grafo e completo se esiste un arco tra ogni coppia di vertici.

Page 11: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 1 6

r e poniamo (r, u) in M . Iterando, al livello 1 prendiamo tutti i nodi non incidenti adarchi gia posti in M , se esistono, e per ciascuno di essi scegliamo un figlio arbitrario eponiamo gli archi dei nodi al livello 1 ai loro figli cosi scelti nel matching M . Iteriamo finquando tutti i nodi interni dell’albero DFS non sono stati considerati. Abbiamo quindicostruito un matching M i cui archi incidono su ognuno degli |S| nodi in S. Ogni arco diM puo incidere su al piu due nodi di S, quindi |M | ≥ |S|/2. D’altra parte, sappiamo chela cardinalita OPT di un minimo Vertex Cover per G soddisfa OPT ≥ |M |, quindiotteniamo che |S| ≤ 2OPT .

Fino ad adesso abbiamo considerato problemi di minimo. Consideriamo ora un esempiodi problema di ottimizzazione di massimo

Esercizio 2Consideriamo il seguente problema

Massimo Sottografo Aciclico

• Input:

– grafo diretto G = (V,E)

• Output: sottoinsieme A ⊆ E di massima cardinalita |A| tale che il grafo H = (V,A)non contiene cicli.

Il problema e NP completo . Un algoritmo di approssimazione puo essere il seguente.Scriviamo i vertici V = {1, 2, . . . , n} da sinistra a destra su di una linea. Poniamo in Atutti gli archi di G della forma (i, j) con i < j, ed in B tutti gli archi della forma (i, j)con i > j. Ovviamente, A ∪ B = E, e A ∩ B = ∅. Di conseguenza, |A| + |B| = |E|, equindi o A oppure B ha cardinalita almeno |E|/2. Tale insieme di cardinalita almeno |E|/2sara l’output del nostro algoritmo. Esso e sicuramente una soluzione valida (ovvero e uninsieme di archi senza cicli in G, in quanto gli archi vanno tutti in una stessa direzione).Detta SOL la sua cardinalita , avremo che

SOL ≥ |E|/2 ≥ OPT /2,

dato che ovviamente OPT ≤ |E|. Pertanto, il nostro algoritmo ha un fattore di approssi-mazione pari a 2.

Esercizio 3Consideriamo il seguente problema

Page 12: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 1 7

Maximum Cut

• Input:

– grafo non diretto G = (V,E)

• Output: partizione dell’insieme dei vertici V in due sottoinsiemi S1, S2, con S1 ∪S2 = V , S1 ∩ S2 = ∅, in modo tale che il numero di archi c(S1, S2) tra S1 e S2 siamassimizzato.

Il problema e NP completo . Un algoritmo di approssimazione per tale problema puoessere ottenuto mediante la tecnica delle ricerca locale, che consiste, data una possibilesoluzione, nel tentare di migliorarla mediante “piccole” modifiche di tipo locale. Nel nostrocaso, si parta con una arbitraria partizione di V nei due insiemi S1 e S2. Fin quando esisteun vertice che portato da S1 a S2 (o da S2 a S1) aumenta il corrente valore c(S1, S2), losi faccia. Si termina quando non esiste alcun vertice con questa proprieta.

Algoritmo per Maximum Cut

Sia (S1, S2) una partizione arbitraria di V

While esiste un vertice x ∈ V tale che

c(S1 ∪ {x}, S2 − {x}) > c(S1, S2) (oppure c(S1 − {x}, S2 ∪ {x}) > c(S1, S2))

do S1 ← S1 ∪ {x}, S2 ← S2 − {x} (oppure S1 ← S1 − {x}, S2 ← S2 ∪ {x})

• Output la partizione (S1, S2)

Il numero di iterazioni dell’algoritmo e chiaramente al piu pari a |E|, visto che ogniiterazione del ciclo while aumenta il valore di c(·, ·), e questo non puo superare |E|. Inoltre,alla terminazione dell’algoritmo, ogni vertice x ∈ V avra almeno deg(x)/2 vertici nell’altrolato della partizione, dove deg(x) e il grado di x nel grafo G. Infatti, se cio se nonfosse, allora sarebbe possibile portare x dal suo lato della partizione all’altro lato dellapartizione ed aumentare il valore di c(S1, S2), contro l’ipotesi. Quindi, usando il fatto che∑x∈V deg(x) = 2|E|, otteniamo che

2c(S1, S2) =∑

x∈V(numero di archi che vanno da x all’altro lato della partizione) (2)

≥∑

x∈V

deg(x)

2(3)

Page 13: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 1 8

=1

22|E| = |E|. (4)

Pertanto, il valore della soluzione S restituita dall’algoritmo soddisfa

SOL = c(S1, S2) ≥ |E|2≥ OPT

2.

Puo essere istruttivo generalizzare l’esercizio al caso in cui si desideri trovare la partizionedi V in k classi con il massimo numero di archi tra vertici appartenenti a classi differenti.

Concludiamo la lezione con la prova del fatto che

u∈Vdeg(x) = 2|E|. (5)

La (5) e ovvia, una volta che si osservi che ogni arco (u, v) viene conteggiato due voltenella somma che appare al membro sinistro della (5), la prima volta quando si sommadeg(u), la seconda quando si somma deg(v).

Page 14: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 2 9

Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005

Lezione 2

Docente: Ugo Vaccaro

Tra le tecniche per il progetto di algoritmi di approssimazione un ruolo importante egiocato dalla tecnica greedy. Tale tecnica produce una soluzione al problema in esamein maniera iterativa, effettuando ad ogni passo la scelta che in quel momento sembra lamigliore. Detto in altri termini, se ci trovassimo di fronte ad un problema di ottimizzazionein cui occorre massimizzare una data funzione f su di un dominio D, la tecnica greedycostruirebbe in maniera iterativa una soluzione S = {s1, . . . , sn} ⊆ D, in maniera tale adogni istante i viene scelto quell’elemento si che, a “parita di condizioni”3, tra tutte le le-gittime scelte massimizzerebbe l’incremento f(s1, . . . , si)− f(s1, . . . , si−1). Analogamenteper problemi di minimo.

Illustriamo l’uso della tecnica greedy per algoritmi di approssimazione sull’importanteesempio del Set Cover .

SET COVER

• Input:

– insieme U = {e1, . . . , en}, famiglia S = {S1, . . . , Sk}, con Si ⊆ U , per i = 1, . . . , k;

– funzione costo c : S ∈ S → c(S) ∈ R+;

• Output: sottofamiglia S ′ ⊆ S di costo c(S ′) =∑S∈S′ c(S) minimo tale che⋃

S∈S′ S ⊇ U .

Il problema del Set Cover include, come casi particolari, molti problemi di ottimiz-zazione che occorrono in pratica. Anche il problema del Vertex Cover visto nella lezioneprecedente e un caso particolare di Set Cover . Infatti, dato un grafo G = (V,E), seponiamo U = E, e per ogni vertice v ∈ V poniamo Sv = {e ∈ E : e incide su v}, otte-niamo una famiglia S = {Sv : v ∈ V }, con funzione costo c(Sv) = 1, per ogni v ∈ V . Efacile vedere che ogni Vertex Cover A ⊆ V per il grafo G corrisponde ad una qualchesottofamiglia S ′ = {Sv : v ∈ A} ⊆ S che copre tutto U . Di conseguenza, un VertexCover di cardinalita minima e equivalente ad un Set Cover di costo minimo per laparticolare istanza sopra considerata.

Un naturale algoritmo per Set Cover potrebbe essere il seguente: iterativamente, ag-giungi a S ′ l’insieme S ∈ S che ha il miglior (nel senso di piu basso) rapporto costo/(numero

3tali condizioni dipenderanno ovviamente dal problema in questione

Page 15: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 2 10

di elementi di U coperti da S e non ancora coperti), rimuovi da U tutti gli elementi ricop-erti da S e continua fin quando non abbiamo coperto tutto U . Piu formalmente, possiamoelaborare il seguente algoritmo

Algoritmo Greedy per Set Cover

1. C ← ∅, S ′ ← ∅

% (S ′ e il cover che vogliamo costruire, C e l’insieme degli elementi di U finora coperti)

2. While C 6= U do

• Trova l’insieme S ∈ S con il valore c(S)/(|S − C|) minimo

• Sia α← c(S)/(|S − C|) tale valore minimo

• Per ogni e ∈ S − C poni prezzo(e) ← α

• Poni S ′ ← S ′ ∪ {S}, C ← C ∪ S

3. Output S ′

Analizziamo ora le performances dell’algoritmo. Numeriamo gli elementi di Unell’ordine in cui l’algoritmo li copre per la prima volta e sia e1, e2, . . . , en tale ordina-mento. Proviamo innanzitutto il seguente risultato.

Lemma 1 Per ogni k ∈ {1, 2, . . . , n} vale che

prezzo(ek) ≤OPT

n− k + 1

dove OPT e il costo della soluzione ottima a Set Cover , ovvero il costo della famigliadi minimo costo che copre tutto U .

Dim. Consideriamo il momento in cui viene assegnato il prezzo all’elemento ek, ovveroil momento in cui viene coperto ek per la prima volta. Cio vuol dire che all’istanteprecedente l’elemento ek non era ancora coperto, ovvero si era in una situazione del tipo

e1, . . . , es,︸ ︷︷ ︸C

es+1, . . . , ek, ek+1, . . . en.︸ ︷︷ ︸U−C

(6)

Tutti gli insiemi della soluzione ottima non presi e messi in S ′ dall’algoritmo greedy,copriranno tutto U − C (visto che tutti gli insiemi della soluzione ottima coprono tuttoU), ad un costo al piu OPT . Siano S1, . . . , St tali insiemi. Vogliamo innanzitutto mostrareche esiste un i ∈ {1, . . . , t} tale che

c(Si)

|Si − C|≤ OPT

|U − C| .

Page 16: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 2 11

Infatti, se cio non fosse, avremmo che per ogni i vale la diseguaglianza

c(Si)

|Si − C|>

OPT

|U − C| ,

da cui

OPT ≥t∑

i=1

c(Si) >OPT

|U −C|t∑

i=1

|Si − C|. (7)

Ricordiamo ora che per gli insiemi S1, . . . , St vale che

t⋃

i=1

Si ⊇ U − C

ovverot⋃

i=1

(Si − C) ⊇ U − C

da cuit∑

i=1

|Si − C| ≥ |t⋃

i=1

(Si − C)| ≥ |U − C|.

Ritornando alla (7) otteniamo che

OPT >OPT

|U − C|t∑

i=1

|Si − C| > OPT

il che e ovviamente assurdo.

Riassumendo, abbiamo quindi dimostrato che esiste un insieme Si non ancora sceltodall’algoritmo greedy per cui vale che

c(Si)

|Si − C|≤ OPT

|U − C| .

L’algoritmo greedy sceglie ad ogni passo un insieme S che ha il miglior rapporto c(S)/(|S−C|). Pertanto, l’algoritmo scegliera sicuramente un insieme S che copre ek per cui

c(S)

|S − C| ≤OPT

|U −C| .

D’altra parte, quando ek verra coperto per la prima volta, C contiene meno di k elementi(vedi la (6)), ovvero |U − C| ≥ n− k + 1. Pertanto

prezzo(ek) =c(S)

|S − C| ≤OPT

|U − C| ≤OPT

n− k + 1.

Page 17: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 2 12

Usando questo risultato, possiamo provare che l’algoritmo greedy per Set Cover haun fattore di approssimazione pari a Hn = 1 + 1/2 + 1/3 + · · ·+ 1/n, ovvero produce unasoluzione del valore SOL per cui

SOL ≤ HnOPT . (8)

Ricordiamo che ogni qualvolta mettiamo un insieme S nella soluzione, il suo costo vieneripartito uniformemente tra i nuovi elementi che S copre, ponendo prezzo(e) = c(S)/(|S−C|), per ogni e ∈ S −C, e quindi vale anche

e∈S−Cprezzo(e) = c(S)

da cuin∑

i=1

prezzo(ei) =∑

S∈S′c(S) = SOL .

Ma prima avevamo mostrato che prezzo(ek) ≤ OPT /(n− k + 1), da cui otteniamo

SOL =n∑

i=1

prezzo(ei) ≤ OPTn∑

i=1

1

n− i+ 1= OPT

(1 +

1

2+

1

3+ · · · + 1

n

)= OPT Hn.

Abbiamo quindi provato la (8).

Valutiamo ora la somma Hn =∑ni=1 1/i in termini di quantita piu familiari. Si ha

Hn =1

1︸︷︷︸gruppo 1

+1

2+

1

3︸ ︷︷ ︸gruppo 2

+1

4+

1

5+

1

6+

1

7︸ ︷︷ ︸gruppo 3

+1

8+

1

9+

1

10+ · · · + 1

15︸ ︷︷ ︸gruppo 4

+ · · · + 1

n.

In ciascun gruppo la somma degli elementi e maggiore di 1/2 e sicuramente al piu 1. Nelgruppo i-esimo ci sono 2i elementi. Quanti gruppi possiamo avere? Ne posso avere t+ 1,dove t e il piu piccolo intero per cui 1 + 2 + 22 + · · ·+ 2t ≥ n, ovvero per cui 2t+1 − 1 ≥ n.Da cui segue che t+ 1 = dlog(n+ 1)e < log n+ 1. Abbiamo quindi t+ 1 gruppi, ciascunodi essi con somma al piu 1, quindi in totale al somma degli elementi in tutti i gruppi e alpiu log n+ 1, ovvero

Hn < log n+ 1.

Possiamo quindi concludere che la soluzione proposta dall’algoritmo greedy per SetCover ha un valore SOL per cui

SOL < (1 + log n)OPT .

Presentiamo ora un esempio di una istanza di Set Cover su cui l’algoritmo greedyproduce una soluzione che si discosta dall’ottimo per un fattore pari a log n. Da cio

Page 18: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 2 13

discendera che l’analisi prima fatta dell’algoritmo greedy non e migliorabile in generale.Sia

U = {e1, . . . , en}, S = {{e1}, . . . , {en}, {e1, . . . , en}}.Inoltre, valga

c({e1}) =1

n, c({e2}) =

1

n− 1, . . . , c({en}) = 1, c({e1, . . . , en}) = 1 + ε.

Eseguendo l’algoritmo greedy su questa istanza, l’output sara composto dagli n insiemidi cardinalita 1 ciascheduno, di costo totale pari a 1 + 1/2 + . . . + 1/n = Hn, mentre lasoluzione ottima ha ovviamente costo pari a 1 + ε.

Concludiamo (per il momento) la nostra analisi del problema del Set Cover menzio-nando due fatti:

1. un’analisi che tenga in conto di altri parametri permetterebbe di dimostrare che ilvalore SOL della soluzione prodotta dall’algoritmo greedy soddisfa la diseguaglianza

SOL < HdOPT

dove d = max{|S| : S ∈ S}, il che, in certi casi, e migliore della (8);

2. esistono fondate ragioni che inducono a sospettare che algoritmi di approssimazioneper Set Cover con fattore di approssimazione del tipo (1 − ε) log n, non esistono,qualunque sia il valore del parametro ε.

Algoritmo Greedy per il problema della Copertura Massima

Vediamo ora un’ applicazione dell’algoritmo greedy a problemi di ottimizzazione massimo.Consideriamo il cosiddetto problema della Copertura Massima .

Copertura Massima

• Input:

– insieme U = {u1, . . . , un}, famiglia S = {S1, . . . , Sm}, con Si ⊆ U per i = 1, . . . ,m;

– funzione profitto w : u ∈ U → w(u) ∈ R+;

– intero k > 0;

• Output: k insiemi Si1 , . . . , Sik in S di profitto totale w(Si1 ∪ . . . ∪ Sik) =∑u∈Si1∪...∪Sik w(u) massimo.

Page 19: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 2 14

Il problema puo essere visto come una generalizzazione del problema dello zaino visto inASD1. La differenza sta nel fatto che mentre nel problema dello zaino possiamo prendereun qualunque elemento di U , nel problema della Copertura Massima possiamo prenderesolo gruppi di oggetti, specificati dagli insiemi in S. Un algoritmo greedy per il problemadella Copertura Massima puo essere quello che ad ogni passo sceglie un insieme in Sche da il maggior incremento al profitto attuale.

Algoritmo per Copertura Massima

1. C ← ∅

2. for i = 1 to k do

seleziona S ∈ S che massimizza il valore w(C ∪ S)− w(C)

3. C ← C ∪ S

4. Output C

Osserviamo che l’incremento del profitto avviene solo in relazione ai nuovi elementi diU effettivamente inseriti. Vogliamo provare che il valore w(C) della soluzione C restituitadall’algoritmo greedy soddisfa la relazione

w(C) ≥[1−

(1− 1

k

)k]OPT

>

(1− 1

e

)OPT,

dove e e il numero di Nepero, ovvero che l’algoritmo greedy ha fattore di approssimazione(1− 1/e) ≈ 0.632....

Proviamo innanzitutto il seguente risultato

Lemma 2 Supponiamo che l’algoritmo greedy prenda gli insiemi S1, . . . , Sk nell’ordine.Allora, per ogni ` = 1, . . . , k abbiamo

w

(⋃

i=1

Si

)− w

(`−1⋃

i=1

Si

)≥

OPT − w(⋃`−1

i=1 Si)

k.

Dim. Alla fine del passo ` − 1-esimo dell’algoritmo greedy abbiamo scelto ` − 1 insiemiS1, . . . , S`−1 di profitto totale w(∪`−1

i=1Si). Se a S1, . . . , S`−1 aggiungiamo passo passo tutti ik insiemi della soluzione ottima, arriveremo ad un profitto almeno OPT . Di conseguenza,vi deve essere almeno un passo in cui l’incremento al profitto e di almeno

OPT − w(∪`−1i=1Si)

k. (9)

Page 20: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 2 15

Ovvero, deve esistere almeno un insieme che aggiunto ai precedenti aumenta il prof-itto almeno della quantita (9). D’altra parte, nell’algoritmo greedy viene scelto ad ognipasso sempre l’insieme che massimizza l’incremento del profitto. Ovvero, l’insieme sceltodall’algoritmo greedy ottiene sicuramente un incremento di profitto dato da

w

(⋃

i=1

Si

)− w

(`−1⋃

i=1

Si

)

almeno pari a (9), da cui il lemma.

Dal Lemma appena dimostrato otteniamo che

w

(⋃

i=1

Si

)≥

OPT −w(⋃`−1

i=1 Si)

k+ w

(`−1⋃

i=1

Si

)

=OPT

k+

(1− 1

k

)w

(`−1⋃

i=1

Si

)(10)

Lemma 3 Per ogni ` = 1, . . . , k vale che

w

(⋃

i=1

Si

)≥[1−

(1− 1

k

)`]OPT (11)

Dim. Per induzione su `. Proviamolo innanzitutto per ` = 1. In tal caso la (11) eequivalente a provare che

w(S1) ≥ OPT

k,

che risulta essere vera a causa della (10).Supponiamo ora la (11) vera per `, proviamola per `+ 1. Si ha

w

(`+1⋃

i=1

Si

)= w

(⋃

i=1

Si

)+

[w

(`+1⋃

i=1

Si

)− w

(⋃

i=1

Si

)]

≥ w

(⋃

i=1

Si

)+

OPT − w(⋃`

i=1 Si)

k(dal Lemma 2)

=

(1− 1

k

)w

(⋃

i=1

Si

)+

OPT

k

≥(

1− 1

k

)[1−

(1− 1

k

)`]OPT +

OPT

k(dall’ipotesi induttiva)

=

[1−

(1− 1

k

)`+1]

OPT

Page 21: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 2 16

A questo punto, ponendo ` = k nel Lemma 3, otteniamo che

w

(k⋃

i=1

Si

)= w(C) = SOL ≥

[1−

(1− 1

k

)k]OPT .

Ora, ricordando che

limk→∞

(1− 1

k

)k=

1

e≈ 0.632...

e che (1− 1

k

)k≤(

1− 1

k + 1

)k+1

≤ 1

e,

otteniamo finalmente

SOL = w(C) >

(1− 1

e

)OPT .

Vale la pena di notare che in alcune applicazioni pratiche la implementazione del passo2 dell’algoritmo (ovvero la scelta di un S che massimizza la differenza w(C ∪ S)− w(C))puo essere onerosa dal punto di vista computazionale. Pertanto, potrebbe essere fattibilesolo la selezione di un insieme S che incrementa la differenza w(C ∪ S) − w(C) di unfattore β < 1 dell’incremento massimo. In tale caso non e difficile vedere, seguendo i passidell’analisi appena effettuata, che l’algoritmo greedy assicura una soluzione dal valore

SOL ≥(

1− β

k

)kOPT >

(1− 1

)OPT .

Page 22: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 3 17

Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005

Lezione 3

Docente: Ugo Vaccaro

In questa lezione deriveremo algoritmi di approssimazione per alcuni classici problemisu grafi pesati. Iniziamo con il considerare il seguente problema

Steiner Tree

• Input:

– grafo G = (V,E)

– funzione peso w : E → R+ sugli archi

– sottoinsieme R ⊆ V

• Output: sottoalbero di G di minimo costo totale che copra tutti i vertici di R, doveil costo dell’albero e definito come la somma dei costi dei suoi archi.

Ci sono delle similitudini tra questo problema e quello di determinare lo spanning treedi peso minimo in un grafo. Infatti, se R = V allora i due problemi coincidono esattamente.Come conseguenza, il problema dello Steiner Tree e risolubile in tempo polinomiale nelcaso particolare che R = V . In generale, il problema dello Steiner Tree e NP -hard. Ilseguente esempio mostra in cosa il problema dello Steiner Tree differisce dal problemadel Minimum Spanning Tree . Consideriamo il grafo a sinistra nella figura di sotto,in cui solo i vertici anneriti sono richiesti. La figura immediatamente a destra mostraun Minimum Spanning Tree sui vertici richiesti, di costo totale pari a 4. All’estremitadestra e invece mostrato un albero di Steiner che fa uso anche di vertici non richiesti (nelcaso in questione, quello centrale), di costo totale pari a 3.

2 2

2

11

12 2 1

1 1

Quindi, includere dei nodi non necessariamente richiesti nell’albero puo far abbassareil costo della soluzione. Questo e in effetti il tratto che distingue il problema del Min-imum Spanning Tree dal problema dello Steiner Tree . Il fatto che nel problemadello Steiner Tree si possano scegliere o meno nodi in V − R fa sı che l’insieme delle

Page 23: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 3 18

possibili soluzioni al problema aumenti enormemente, rendendo difficile l’individuazionedella soluzione ottima.

Passiamo ora a considerare il progetto di algoritmi di approssimazione per il problemadello Steiner Tree . Per prima cosa, mostriamo che e sufficiente considerare istanze delproblema in cui il grafo G = (V,E) e un grafo completo, ed in esso vale la diseguaglianzatriangolare, ovvero

∀u, v, z ∈ E w(u, v) ≤ w(u, z) + w(z, v). (12)

Pio precisamente, mostreremo che se siamo in grado di produrre un algoritmo di ap-prossimazione con fattore di approssimazione ρ per il problemo dello Steiner Tree ingrafi completi in cui vale la diseguaglianza triangolare, allora siamo anche in grado diprodurre un algoritmo di approssimazione con lo stesso fattore di approssimazione ρ inistanze arbitrarie del problema dello Steiner Tree .

Procederemo come segue. Data una istanza I = (G,R,w) arbitraria del problemadello Steiner Tree , dove G e un grafo, R e il sottoinsieme dei vertici richiesti, e w e lafunzione peso sugli archi di G, trasformiamo innanzitutto I in tempo polinomiale in unaistanza I ′ = (G′, R,w′), dove G′ e un grafo completo sugli stessi vertici di G, l’insieme deivertici R richiesto e immutato, e la funzione peso w ′ sugli archi (u, v) di G′ e definita come

w′(u, v) =∑

e∈p(u,v)w(e),

dove p(u, v) e un cammino di peso totale minimo tra i vertici u e v nel grafo G.Osserviamo ora che per ogni arco (u, v) ∈ G, vale che

w(u, v) ≥ w′(u, v). (13)

Cio e ovvio in quanto il costo dell’arco (u, v) in G′ e pari al costo del cammino di minimocosto tra u e v in G. Sia OPT (I) il costo della soluzione ottima in G, e sia OPT (I ′) ilcosto della soluzione ottima in G′. Come conseguenza della (13) otteniamo che

OPT (I) ≥ OPT (I ′). (14)

Sia ora T ′ un albero di Steiner in G′, di costo minimo OPT (I ′). Consideriamo il sottografoH di G composto da tutti i cammini di G che corrispondono agli archi di T ′. Ovviamentevale che il costo totale di H (ovvero la somma dei costi degli archi di H) e esattamentepari al costo di T ′. Il sottografo H non e necessariamente un albero. Eliminando da Htutti gli archi che creano cicli, otteniamo un sottoalbero A di G che copre tutti i verticirichiesti, di costo al piu pari al costo di T ′ (visto che abbiamo eliminato degli archi da T ′

per ottenere A). Daltra parte, per definizione, il costo OPT (I) di un albero di Steiner diG e non superiore a A, pertanto otteniamo

OPT (I) ≤ costo(A) ≤ costo(T ′) = OPT (I ′). (15)

Mettendo insieme la (14) e la (15) otteniamo che

OPT (I) = OPT (I ′). (16)

Page 24: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 3 19

Riassumendo, abbiamo fatto vedere che il costo di una soluzione ottima in un grafo ar-bitrario G e uguale al costo di una soluzione ottima in un grafo completo G′ facilmenteottenibile da G. Non solo, abbiamo anche fatto vedere che data una soluzione ottima in G ′,e semplice ottenere da essa una soluzione ottima nell’istanza originale G. Di conseguenza,possiamo limitarci a progettare algoritmi per il problema dello Steiner Tree in graficompleti, in cui valga la diseguaglianza triangolare. L’algoritmo di approssimazione in taligrafi e molto semplice.

Algoritmo di approssimazione per Steiner Tree

1. Costruisci un Minimum Spanning Tree T sui vertici in R del grafo input G

2. Return T

Dimostriamo che l’algoritmo sopra esposto ha fattore di approssimazione pari a 2. SiaS uno Steiner tree di costo minimo. Sostituiamo ogni arco (u, v) di S con la coppia di archidirezionati (u, v) e (v, u) e si proceda ad una visita di tutti i nodi del grafo cosı ottenuto(si veda la figura di sotto).

Il percorso relativo alla visita potra passare per piu di una volta per uno stesso vertice,e passera sia attraverso vertici in R che attraverso vertici non in R (denotati con un circolovuoto nella figura di sopra). Il costo di questo percorso e pari a 2OPT , visto che usiamoogni arco di S esattamente due volte (una volta in un verso, e la seconda nell’altro verso).A questo punto, usiamo la diseguaglianza triangolare per evitare di passare due volteattraverso uno stesso vertice e per evitare di passare attraverso vertici non in R (si vedala figura di sotto).

Essenzialmente, stiamo qui usando il fatto che andare direttamente da un vertice u adun vertice v costa di meno che andarci passando attraverso un qualche vertice intermedio.

Page 25: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 3 20

In questo modo otterremo un ciclo che attraversa tutti i vertici di R, di costo al piu 2OPT(a causa della diseguaglianza triangolare). Eliminando un qualsiasi arco da questo cicloci dara un albero Z che attraversa tutti e solo i vertici di R, di costo ancora inferiore,ovvero il costo di Z sara al piu 2OPT . D’altra parte, il costo del Minimim Spanning TreeT (output del nostro algoritmo di approssimazione) sara per definizione inferiore al costodell’albero Z, che abbiamo prima mostrato essere inferiore a 2OPT . Otteniamo quindiche la nostra soluzione al problema dello Steiner Tree , ovvero un Minimum SpanningTree su R, ha costo al piu 2OPT .

Possiamo mostrare che esistono classi di grafi in cui il costo di un Minimum SpanningTree e circa 2 volte il costo di uno Steiner Tree , quindi l’analisi della tecnica primaesposta non puo essere essenzialmente migliorata. Consideriamo ad esempio il grafo com-pleto G = (V,E), dove V = {1, . . . , n, n+ 1}, insieme richiesto R = {1, . . . , n}, e funzionepeso sugli archi w : E → R+ cosı definita

∀(i, j) ∈ E w(i, j) =

{1 se i = n+ 1,2 altrimenti.

Il costo della soluzione prodotta dal nostro algoritmo di approssimazione e pari al costodi un MST su R, e quindi pari a 2(n− 1) D’altra parte, lo Steiner Tree di costo minimo ecomposto da tutti gli archi dal nodo n+ 1 (non richiesto) a tutti gli altri nodi del grafo.Tale Steiner Tree ha costo totale pari a n, cioe circa la meta del costo di un MST su R.

Le tecniche appena sviluppate sono utili anche per la progettazione di algoritmi diapprossimazione per il seguente importante problema: Problema del Commesso Vi-aggiatore (TSP).

Page 26: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 3 21

TSP

• Input:

– grafo G = (V,E)

– funzione costo c : E → R+ sugli archi

• Output: un ciclo di minimo costo totale che attraversa tutti i vertici di G una eduna sola volta.

Il problema del TSP e NP-completo ed, in generale, e difficile da approssimare.

Teorema 1 Per ogni funzione ρ(n) calcolabile in tempo polinomiale, la esistenza di unalgoritmo di approssimazione con fattore di approssimazione ρ(n) per TSP implica cheP = NP .

Dim. Proveremo che se esistesse un algoritmo di approssimazione con fattore di ap-prossimazione ρ(n) per TSP, allora sarebbe possibile decidere in tempo polinomiale seun grafo arbitrario G possiede un ciclo Hamiltoniano,4 problema questo notoriamenteNP -completo.

Sia a tale scopo G = (V,E) un grafo arbitrario, n = |V |. Trasformiamo G in unaistanza di TSP nel modo seguente. Sia G′ = (V,E′) un grafo completo sullo stesso insiemedei vertici di G. Inoltre, G′ ha una funzione costo c : E ′ → R+ sugli archi definita nelmodo seguente:

∀(u, v) ∈ E ′ c(u, v) =

{1, se (u, v) ∈ E,C > nρ(n), se (u, v) /∈ E.

Supponiamo di avere un algoritmo di approssimazione A per il problema del TSP, confattore di approssimazione ρ(n). Sull’input G′ l’algoritmo A produrra una soluzione dalvalore SOL. Possono accadere due casi:

1. SOL < nρ(n). Sotto questa ipotesi, e per come e definito il grafo G′, possiamodire che l’algoritmo A ha trovato un ciclo che visita tutti i vertici di G′ ed il ciclo ecomposto solo da archi di costo 1. Cio implica, per come sono definiti i costi degliarchi di G′, che il ciclo trovato da A e composto solo da archi di G. Ovvero, possiamoconcludere che G possiede un ciclo Hamiltoniano.

2. SOL ≥ nρ(n). Sotto questa ipotesi, e per come e definito il grafo G′, possiamodire che il grafo G non possiede un ciclo Hamiltoniano. Infatti, se lo possedesse,vorrebbe dire che la soluzione ottima del problema del TSP in G′ ha valore pari a n,contraddicendo il fatto che l’algoritmo A ha fattore di approssimazione pari a ρ(n).

4Si ricordi che un ciclo Hamiltoniano e un ciclo che attraversa tutti i vertici del grafo, una ed una solavolta.

Page 27: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 3 22

In conclusione, la esistenza di un algoritmo di approssimazione con fattore di approssi-mazione ρ(n) per TSP implica la esistenza di una procedura polinomiale per decidere seun grafo arbitrario ha un ciclo Hamiltoniano o meno, il che implicherebbe che P = NP acausa della NP -completezza del problema del ciclo Hamiltoniano.

Nell’ ipotesi che la funzione costo sugli archi del grafo G soddisfi la diseguaglianzatriangolare, e abbastanza semplice produrre un algoritmo di approssimazione per il prob-lema del TSP con fattore di approssimazione 2. L’algoritmo e simile all’algoritmo diapprossimazione per Steiner Tree .

Algoritmo di approssimazione per TSP

1. Costruisci un Minimum Spanning Tree T del grafo input G

2. Sostituisci ogni arco (u, v) di T con la coppia di archi (u, v) e (v, u)

3. Costruisci un tour T del grafo cosı ottenuto, passando attraverso tutti i suoi archi

4. Output il ciclo C che visita i vertici di G nell’ordine della loro prima apparizione neltour T .

Il seguente esempio illustra il funzionamento dell’algoritmo. L’albero di sotto e ilMinimum Spanning Tree costruito dall’algoritmo. Su di esso costruiamo il tour Trappresentato dagli archi trattegiati, piu o meno come si procedeva nel caso dello SteinerTree .

Dopodiche, in accordo all’algoritmo, otteniamo un ciclo che enumera i verticidell’albero in accordo all’ordine in cui essi compaiono per la prima volta nel tour T .

Page 28: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 3 23

Per la diseguaglianza triangolare, i percorsi che vanno da un vertice direttamente ad unaltro senza passare per vertici intermedi, sono di costo minore e quindi non aumentano ilcosto del ciclo C rispetto al costo del tour T .

Proviamo ora che l’algoritmo ha fattore di approssimazione pari a 2. Osserviamoinnazitutto che

costo(MST ) ≤ OPT. (17)

Infatti, se dal ciclo di costo OPT togliamo un arco, otteniamo un alberto T ′, di costoinferiore al ciclo, ed in piu T ′ avra sicuramente costo maggiore od al piu uguale a T , chee un MST. Pertanto il costo SOL della soluzione prodotta dall’algoritmo di sopra sara:

SOL = costo(C)≤ costo(T ) (a causa della diseguaglianza triangolare)

= 2costo(MST ) (per costruzione)

≤ 2OPT (per la (17)),

il che prova che l’algoritmo ha un fattore di approssimazione pari a 2.

Ci poniamo ora il problema di elaborare un algoritmo per il problema del TSP conun migliore fattore di approssimazione. A tale scopo, e utile comprendere meglio comeabbiamo ottenuto il semplice algoritmo con fattore di approssimazione pari a 2. Siamopartiti con uno MST T del grafo G ed abbiamo ottenuto un tour che visita tutti gli archidi T , essenzialmente raddoppiando gli archi di T . Cio ci costa 2 volte il costo di T . Daquesto tour, abbiamo ottenuto un ciclo in G prendendo delle ”scorciatoie” nel tour. Acausa delle diseguaglianza triangolare, queste scorciatoie non hanno aumentato il costodella soluzione. La prova si concludeva con l’osservazione che 2·(costo di T ) e inferiore a2 · OPT . La chiave del miglioramento dell’algoritmo prima esposto risiedea nel fatto che

Page 29: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 3 24

sara possibile ottenere un tour che attraversa tutti i vertici di G ad un costo inferiore a2·(costo di T ). A tale scopo abbiamo bisogno di introdurre il concetto di Tour Eulerianodi un grafo.

Un Tour Euleriano di un grafo G consiste in un percorso nel grafo G con vertice dipartenza e vertice di arrivo coincidenti, e che attraversa tutti gli archi di G una ed una solavolta. La similarita di questo problema con quello del ciclo Hamiltoniano e solo apparente.Mentre infatti il problema di stabilire se un grafo possiede o meno un ciclo Hamiltonianoe NP -completo, stabilire se un grafo possiede un tour Euleriano e un problema risolubilein tempo polinomiale. Possiamo infatti provare il seguente risultato.

Teorema 2 Il grafo G possiede un tour Euleriano se e solo se G non ha vertici di gradodispari.

Dim. Proviamo innazitutto che se G = (V,E) possiede vertici di grado dispari allora Gnon ammette un tour Euleriano. Supponiamo quindi che G possieda un vertice x di gradodispari e scegliamo x come ipotetico punto di partenza e di arrivo del tour Euleriano.Osserviamo che ogni volta che con questo percorso usciamo da x e vi ritorniamo, usiamodue archi incidenti su x. Non saremmo quindi in grado di visitare tutti gli archi incidentisu x una ed una sola volta con un percorso che parte e ritorna in x, in quanto tali archisono in numero dispari.

La prova che e possibile costruire un tour Euleriano di G se G ha solo vertici di gradopari la si effettua per induzione sul numero di archi |E|. Se |E| = 1 non vi e nulla daprovare. Assumiamo il teorema vero per tutti i grafi con |E| ≤ k, per qualche k ≥ 1, esia G un grafo con |E| = k + 1. Prendiamo un arbitrario vertice x in G e scegliamolocome punto di partenza ed iniziamo a visitare il grafo, con l’accortezza di non passare maidue volte su di uno stesso arco. Poiche il grado di ogni vertice v e pari, ogni volta cheentriamo in un vertice v ne possiamo anche uscire. Poiche il grafo G finito, prima o poiritorneremo nel vertice x. Se abbiamo visitato tutti gli archi di G, allora abbiamo trovatoil tour Euleriano che cercavamo. Altrimenti abbiamo trovato solo un percorso che parteed arriva in x e che ogni qualvolta e entrato in qualche vertice v ne e anche uscito. In altreparole, questo percorso ha visitato, per ogni vertice v, un numero pari di archi incidentisu v. Togliamo gli archi di tale percorso da G, rimane un grafo G′ con un numero di archi≤ k, ed ogni vertice di G′ ha ovviamente grado pari. Il grafo G′ ammette quindi un tourEuleriano per ipotesi induttiva. Il tour prima trovato congiunto al tour di G ′ formanoovviamente un tour che parte e arriva in x e che visita tutti gli archi di G una ed una solavolta.

Diciamo che un grafo G e Euleriano se in G vi e un tour Euleriano. A questo puntodovrebbe essere anche chiaro perche raddoppiavamo tutti gli archi del Minimum SpanningTree T nel primo algoritmo di approssimazione per TSP prima di trovare un tour nelgrafo: raddoppiando tutti gli archi ottenevamo infatti un grafo con tutti i nodi di gradopari e quindi il tour Euleriano esisteva sicuramente. Non e detto pero che questo sia ilmodo piu economico per ottenere da T un grafo Euleriano. Anzi, in generale non lo e .

Page 30: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 3 25

Banalmente, se un nodo ha gia grado pari in T non vi e alcuna necessita di raddoppiareil suo grado. In virtu del teorema precedente, sono solo i vertici di grado dispari chesono fonte di problemi. Questi problemi li possiamo far scomparire aggiungendo un arcoa ciaschedun nodo di grado dispari, ottenendo quindi un grafo con tutti i vertici di gradopari in cui costruire un tour Euleriano e poi, usando le scorciatoie e la diseguaglianzatriangolare, ottenere un ciclo che attraversa tutti i vertici una ed una sola volta.

Ricordiamo la seguente relazione, che abbiamo provato nella prima lezione:∑

u∈Vdeg(x) = 2|E|. (18)

Immediata conseguenza della (18) e che il numero di vertici in G che hanno grado disparie pari, visto che la quantita al membro destro della (18) e pari. Pertanto, dato un genericografo G, per trasformare G in un grafo Euleriano basta individuare il sottoinsieme deivertici V ′ di grado dispari, dividerlo in due sottoinsiemi disgiunti di cardinalita |V ′|/2ciascheduno, ed aggiungere un matching tra tali due sottoinsiemi. Abbiamo quindi ilseguente nuovo algoritmo di approssimazione per TSP.

Algoritmo di approssimazione per TSP – fattore di approssimazione 3/2

1. Costruisci un Minimum Spanning Tree T del grafo input G

2. Calcola un matching perfetto M di minimo costo sui vertici di grado dispari di T .Aggiungi M a T per ottenere un grafo Euleriano

3. Costruisci un tour euleriano T del grafo ottenuto al passo precedente

4. Output il ciclo C che visita i vertici di G nell’ordine della loro prima apparizione neltour T .

Analizziamo il costo della soluzione prodotta dall’algoritmo. A causa della dis-eguaglianza triangolare, il costo SOL della soluzione prodotta non sara superiore al costodel grafo Euleriano ottenuto al passo 2 dell’algoritmo, ovvero

SOL ≤ costo(T ) + costo(M).

Gia sappiamo che costo(T ) ≤ OPT , valutiamo quindi il costo di M . A tale scopo, effet-tuiamo le seguenti osservazioni. Consideriamo la soluzione ottima al problema dello TSP,ovvero il ciclo C che attraversa tutti i vertici del grafo con un costo totale OPT . Tale cicloC attraversera anche tutti i vertici dell’insieme V ′ (composto dai vertici di grado disparinel MST T usato nel passo 1 dell’algoritmo), in un qualche ordine. Numeriamo i verticidi V ′ con i numeri 1, 2, . . . , |V ′| secondo quest’ordine di attraversamento (si veda la figuradi sotto).

Ora, il ciclo C per andare dal vertice 1 al vertice 2 seguira un certo percorso (rappresen-tato dalla linea tratteggiata tra 1 e 2 nella figura di sopra) che, a causa della diseguaglianza

Page 31: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 3 26

1 2

3 4

|V’|

triangolare, avra un costo ≥ del costo dell’arco tra 1 e 2. Stesso discorso per il percorsoche C effettuera per andare da 2 a 3, e cosı via. In conclusione, la somma dei costi deipercorsi del ciclo C tra i vertici di {1, 2, . . .} = V ′, comprensivo del ritorno al vertice 1sara ≥ della somma dei costi degli archi diretti tra i vertici {1, 2, . . .} = V ′. Facendoattenzione, si puo comprendere che gli archi tra i vertici di V ′ si possono decomporre indue matching disgiunti (nella figura di sopra sono rappresentati con archi di differentespessore). Possiamo quindi dire che il costo OPT del ciclo ottimo C sara ≥ della sommadei costi dei percorsi del ciclo C tra i vertici di {1, 2, . . .} = V ′ che, a sua volta, e ≥ delcosto dei due matching tra i vertici di V ′. Almeno uno dei due matching avra quindi costo≤ OPT/2. A maggior ragione, il matching di costo minimo M aggiunto tra i vertici di V ′

nel passo 2 dell’algoritmo avra costo ≤ OPT/2. Riassumendo otteniamo

SOL ≤ costo(T ) + costo(M) ≤ OPT +1

2OPT ≤ 3

2OPT,

il che conclude (finalmente) l’analisi dell’algoritmo.

La seguente figura mostra che l’analisi dell’algoritmo non puo essere migliorata, ovveroesistono istanze di input su cui l’algoritmo produce effettivamente una soluzione di costopari a 3/2OPT.

Il Minimum Spanning Tree trovato al Passo 1 dell’algoritmo e rappresentato daarchi di maggior spessore. Notiamo che ha solo due vertici di grado dispari, pertanto ilmatching di minimo peso che viene aggiunto tra di essi e dato dall’arco di peso bn/2c.Abbiamo quindi che l’algoritmo produce un ciclo di peso totale

SOL = (n− 1) + bn/2c.

Page 32: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 3 27

.......

1

1 1 1

111 1

1 1

11

11

11

1

n/2

D’altra parte, e facile vedere che il ciclo ottimo nel grafo di sopra ha peso esattamente n.Da cui segue che nel grafo di sopra il nostro algoritmo e forzato a produrre una soluzionedi costo 3/2OPT .

Page 33: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 4 28

Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005

Lezione 4

Docente: Ugo Vaccaro

In questa lezione deriveremo un algoritmo di approssimazione per il seguente problema.Approfitteremo dell’occasione per introdurre una nuova tecnica per il progetto di algoritmidi approssimazione, che va sotto il nome di Pruning Parametrico.

K-Centro

• Input:

– grafo completo G = (V,E)

– funzione costo c : E → R+ sugli archi, soddisfacente la diseguaglianza triangolare

– intero k > 0

• Output: insieme S ⊆ V , |S| = k, che minimizza maxv∈V {connect(v, S)}, doveconnect(v, S) = minu∈S c(v, u).

L’assunzione che la funzione costo sugli archi di G soddisfi la diseguaglianza triango-lare e necessaria, altrimenti si puo dimostrare che il problema del K-Centro non puoessere approssimato a meno di un qualsiasi fattore α(n) polinomialmente computabile,assumendo che P 6= NP . Elaboreremo un algoritmo di approssimazione per il problemadei K-Centro usando la tecnica del Pruning Parametrico. Tale tecnica e basata sulleseguenti considerazioni. Se conoscessimo il costo di una soluzione ottima ad un problema,potremmo eliminare le parti non rilevanti dell’input e pertanto semplificare la ricerca diuna buona soluzione. Ad esempio, se sapessimo che il costo di un ciclo di costo minimo inuna istanza di TSP fosse 100, potremmo eliminare dal grafo tutti gli archi di costo superi-ore a 100, in quanto essi sicuramente non interverranno nella soluzione ottima. Purtroppo,calcolare il costo di una soluzione ottima e esattamente la parte difficile dei problemi diottimizzazione NP-hard. La tecnica del Pruning Parametrico cerca di evitare questa dif-ficolta nel modo seguente. Supponiamo, per fare un esempio, di considerare un problemadi ottimizzazione di minimo. Viene scelto un parametro t (che puo essere interpretatocome un tentativo iniziale di stimare il valore della soluzione ottima). Per ogni valore di t,eliminiamo dalla istanza di input I sotto esame tutte le parti che sicuramente non inter-vengono in una qualche soluzione di costo ≤ t. Denotiamo con I(t) tale istanza ridotta.L’algoritmo consiste in due passi: nel primo passo la famiglia di istanze I(t) viene usataper calcolare una limitazione inferiore per OPT , si esso t∗ (questo calcolo viene tipica-

Page 34: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 4 29

mente fatto nel modo seguente: se si riesce in qualche modo a far vedere che in I(t∗) non vie soluzione al problema, allora e chiaro che occorre aggiungere altre parti a I(t∗) e quindiOPT sara sicuramente ≥ t∗). Nel secondo passo, si trova una soluzione in I(αt∗), per unopportuno valore di α. Cio portera ad una soluzione di valore SOL ≤ αt∗ ≤ αOPT .

Per vedere come applicare la tecnica del Pruning Parametrico al problema dei K-Centro , procediamo nel modo seguente. Ordiniamo gli archi del grafo G = (V,E) inordine crescente di costo, ovvero poniamo E = {e1, . . . , em}, con c(e1) ≤ . . . ≤ c(em).Definiamo Gi = (V,Ei), dove Ei = {e1, . . . , ei}. Un insieme dominante in un grafoH = (U,F ) e un sottoinsieme S ⊆ F tale che ogni vertice in U − S e adiacente a qualchevertice in S. Sia dom(H) la cardinalita di un insieme dominante in H di cardinalitaminima. E abbastanza ovvio verificare che il problema del K-Centro e equivalente atrovare il piu piccolo indice i tale che il grafo Gi contiene un insieme dominante dicardinalita ≤ k, ovvero che Gi contenga k “stelle” (cioe alberi di altezza 1) che ricopronotutto l’insieme V . Se i∗ e tale piu piccolo indice, allora e ovvio che c(ei∗) e il costo di unK-Centro ottimo. Denoteremo con OPT tale valore c(ei∗).

Il problema con la procedura di sopra consiste nel fatto che determinare se un grafocontiene un insieme dominante di una data cardinalita e esso stesso un problema NP-hard. Cercheremo di aggirare questa difficolta lavorando su grafi in cui si possa stimaretali cardinalita con parametri di piu facile calcolo.

Dato un grafo H = (U,F ), definiamo il quadrato di H, e lo denoteremo con H 2, comeil grafo che contiene gli stessi vertici di H e per ogni coppia di vertici u, v, esiste un arcoin H2 tra u e v se e solo se nel grafo H c’e un cammino di lunghezza al piu 2 tra gli stessivertici u e v. Ricordiamo infine che un insieme I ⊆ U e detto indipendente se ∀u, v ∈ Ivale che (u, v) /∈ F . Il seguente risultato ci dara un modo per limitare inferiormente ilvalore di OPT .

Lemma 4 Dato un grafo H = (U,F ), sia I un generico insieme indipendente in H 2.Vale che

|I| ≤ dom(H).

Dim. Sia D un insieme dominante di cardinalita minima in H. Da quanto detto inprecedenza, cio implica che esistono |D| stelle che ricoprono tutti i vertici di H. I verticiin ciascuna di queste stelle sono ovviamente connessi da cammini di lunghezza al piu due.Per definizione, nel grafo H2 tali cammini si trasformano in archi, pertanto ogni stella inH si trasforma in un piccolo sottografo grafo completo in H 2 (ovvero in un sottografo incui esistono archi tra ogni coppia di vertici). Un qualsivoglia insieme indipendente I di H 2

non puo contenere piu di un vertice di ciascuno di questi sottografi completi (altrimentinon sarebbe composto da vertici non collegati da archi). Pertanto, la cardinalitdi di unqualsiasi insieme indipendente I di H2 non puo essere piu grande del numero |D| di stelleche ricoprono H. Cio implica il risultato del lemma.

Prima di introdurre l’algoritmo per il problema del K-Centro , ricordiamo che unsottoinsieme I di vertici e detto massimale indipendente se I e indipendente ed inoltre per

Page 35: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 4 30

ogni vertice u vale che I ∪ {u} non e piu indipendente. Mentre il calcolo di un insiemeindipendente di cardinalita massima e un altro problema NP-Hard, il calcolo di un insiememassimale indipendente e agevole e lo si puo effettuare mediante una semplice proceduragreedy:

Algoritmo per il calcolo di un insieme massimale indipendente

• Si scelga nel grafo un vertice arbitrario u e lo si inserisca in I;

• si eliminino dal grafo il vertice u e tutti i suoi vicini;

• si iteri il procedimento sul grafo rimanente, fin quando esso non diventi vuoto.

• Return I.

Presentiamo ora l’algoritmo di approssimazione per il problema del K-Centro .

Algoritmo di approssimazione per K-Centro

1. Costruisci i grafi G21, G

22, . . . , G

2m.

2. Calcola un insieme massimale indipendente Mi in ciascun grafo G2i .

3. Trova il piu piccolo intero i tale che |Mi| ≤ k, sia esso j.

4. Return Mj.

Vogliamo provare che questo algoritmo ha un fattore di approssimazione 2. Proviamoinnanzitutto il seguente risultato che ci da una limitazione inferiore al valore OPT .

Lemma 5 Per l’indice j definito dall’algoritmo, vale che

c(ej) ≤ OPT.

Dim. Dalla definizione dell’indice j abbiamo che per ogni indice ` < j vale che |M`| > k.Pertanto, dal Lemma 4 abbiamo che dom(G`) ≥ |M`| > k. Ricordando che i∗ e il piupiccolo indice i per cui dom(Gi) ≤ k, abbiamo che i∗ > `, e quindi i∗ ≥ j. Ma OPT =c(ei∗), e ricordando che i pesi c(es) degli archi erano crescenti nell’indice s, abbiamo chec(ej) ≤ c(ei∗) = OPT .

Possiamo ora provare il seguente

Teorema 3 L’algoritmo ha un fattore di approssimazione 2 per il problem del K-Centro.

Page 36: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 4 31

Dim. Partiamo con l’effettuare l’osservazione chiave che un qualunque insieme indipen-dente massimale I in un grafo e anche un insieme dominante. Infatti, se non lo fosse,vorrebbe dire che esisterebbe un vertice u che non e adiacente ad alcun vertice in I,pertanto potrebbe essere inserito in I e l’insieme I continuerebbe a rimanere un insiemeindipendente, contraddicendo la massimalita di I. Sulla base di questa osservazione, pos-siamo concludere che l’insieme Mj restituito dall’algoritmo e un insieme dominante dicardinalita al piu k in G2

j . In altri termini, esistono |Mj | “stelle” in G2j , centrate sui vertici

di Mj , che ricoprono tutti i vertici del grafo. Ricordando che ogni arco in G2j corrisponde

ad un cammino di lunghezza al piu 2 in Gj , e che vale la diseguaglianza triangolare, ab-biamo che ogni arco di queste stelle ha peso al piu pari a 2c(ej). Ricordando che il costoSOL della soluzione e pari al costo dell’arco piu costoso che si e usato, abbiamo che, invirtu del Lemma 5, vale

SOL ≤ 2c(ej) ≤ 2OPT,

il che prova il Teorema.

Si puo provare che esistono esempi su cui l’algoritmo da noi proposto produce effet-tivamente una soluzione di costo pari a 2 volte l’ottimo. Consideriamo infatti il grafocompleto G = (V,E), con U = {1, 2, . . . , n, n + 1}, con funzione costo c(i, j) sugli archicosı definita

c(i, j) =

{1 se i = n+ 12 altrimenti.

Per k = 1, la soluzione ottima consiste nello scegliere il singolo vertice n+1, che e connessoad ogni altro vertice da un arco di peso 1, pertanto avremmo OPT = 1 in questo caso.D’altra parte, l’algoritmo produrrebbe un indice j = n ed in questo caso G2

n sarebbedi nuovo un grafo completo. Se, per sfortuna, scegliessimo come insieme indipendentemassimale un vertice s 6= n + 1, avremmo che il costo della soluzione ritornata sarebbepari a 2, ovvero 2 volte il costo di OPT .

Proviamo ora che il fattore di approssimazione 2 appena ottenuto non e essenzialmentemigliorabile.

Teorema 4 Se esistesse un algoritmo di approssimazione con fattore di approssimazionepari a 2− ε per il problema del K-Centro , per un qualche ε > 0, allora P = NP .

Dim. Proveremo che se fosse possibile in tempo polinomiale produrre una approssimazionedel problema del K-Centro a meno di un fattore 2− ε, allora sarebbe possibile in tempopolinomiale decidere se un arbitrario grafo possiede un insieme dominante di cardinalitaal piu k. Dalla NP-completezza del problema degli insiemi dominanti, si ha la tesi.

Sia G = (V,E) un grafo arbitrario, definiamo il grafo completo G′(V,E′) e la funzionecosto c : E ′ → R+ come

∀(u, v) ∈ E ′ c(u, v) =

{1 se (u, v) ∈ E2 se (u, v) /∈ E .

Il grafo G′ soddisfa la diseguaglianza triangolare. Notiamo inoltre che

Page 37: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 4 32

1. se dom(G) ≤ k allora la soluzione ottima per il problema del K-Centro in G′ havalore 1 (infatti se esiste un insieme dominante D di cardinalita al piu k in G, allorain G′ ogni vertice puo essere connesso a vertici in D mediante archi di peso pari a1, e meglio non si puo fare).

2. se dom(G) > k, allora la soluzione ottima per il problema del K-Centro in G ′ havalore pari a 2 (infatti, l’ipotesi che dom(G) > k ci forza necessariamente ad usarearchi in G′ non presenti in G, e quindi di peso 2 in G′).

Supponiamo ora di avere un algoritmo polinomiale di approssimazione per il problema delK-Centro che in tempo polinomiale produce una soluzione di valore SOL ≤ (2−ε)OPT .Eseguiamo tale algoritmo sull’istanza G′ = (V,E′) appena definita. L’algoritmo restituiraun valore SOL. Possono verificarsi due casi:

1. SOL < 2. Allora necessariamente OPT = 1 e quindi, per quanto prima detto,dom(G) ≤ k.

2. SOL > 2. Allora necessariamente OPT = 2 e quindi, per quanto prima detto,dom(G) > k.

Avremmo quindi una procedura polinomiale per determinare se dom(G) ≤ k o meno, dacui la tesi del Teorema.

Tra le varie questioni studiate fin’ora, abbiamo anche scoperto che esistono problemidi ottimizzazione che non possono essere approssimati al di sotto di una certa soglia, ameno di improbabili conseguenze, quali P = NP . Vogliamo vedere nel seguito di questalezione che esistono anche problemi di ottimizzazione NP -hard la cui soluzione ottima puoessere invece approssimata con un fattore di approssimazione arbitrariamente prossimo ad1. In un certo senso, tra tutti i problemi NP -hard, questo sono per cosı dire i piu facili.Precisiamo innanzitutto i concetti in questione.

Sia Π un problema di ottimizzazione NP -hard. Diremo che un algoritmo di approssi-mazione A e uno schema di approssimazione per Π se avendo in input (I, ε), dove I e unaistanza di input di Π e ε > 0 e un parametro d’errore, esso produce una soluzione s divalore SOL(I, ε) tale che

• SOL(I, ε) ≤ (1 + ε)OPT (I), nel caso in cui Π sia un problema di minimo;

• SOL(I, ε) ≥ (1− ε)OPT (I), nel caso in cui Π sia un problema di massimo.

L’algoritmo A e detto schema di approssimazione polinomiale, (abbreviato in PTAS) seper ogni fissato ε, il suo tempo di esecuzione e polinomiale nella taglia dell’istanza I.

La definizione appena data permette che il tempo di esecuzione di A dipenda arbi-trariamente da ε. La seguente definzione e piu stringente. Diremo che l’algoritmo A euno schema di approssimazione pienamente polinomiale (abbreviato in FPTAS) se A e unPTAS ed inoltre il suo tempo di esecuzione e polinomiale sia in |I| che in 1/ε.

Page 38: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 4 33

Problemi di ottimizzazione che ammettono PTAS, o FPTAS, possono essere approssi-mati ad un qualsivoglia fattore arbitrariamente prossimo a 1. Vediamo un esempio di taliproblemi.

Zaino 0-1

• Input:

– insieme S = {a1, . . . , an} di oggetti;

– funzione peso w : a ∈ S → w(a) ∈ R+;

– funzione profitto p : a ∈ S → p(a) ∈ R+;

– capacita di carico totale B ∈ R+.

• Output: sottoinsieme S ′ ⊆ S tale che∑a∈S′ w(a) ≤ B, e di profitto p(S ′) =∑

a∈S′ p(a) massimo.

Innanzitutto presentiamo un algoritmo esatto per il problema dello Zaino 0-1, basatosulla Programmazione Dinamica. Sia P = maxa∈S p(a). Per ogni indice i ∈ {1, . . . , n} evalore p ∈ {1, . . . , nP}, sia Si,p un sottoinsieme di {a1, . . . , ai} di peso totale minimo, edil cui profitto totale sia esattamente p. Sia A(i, p) il peso

∑a∈Si,p w(a) dell’insieme Si,p.

Porremo per convenzione A(i, p) =∞ se un tale insieme Si,p non esiste. Ovviamente perogni p ∈ {1, . . . , nP} vale che A(1, p) = w(a1) se p(a1) = p, A(1, p) = ∞ altrimenti. Ingenerale avremo

A(i+ 1, p) =

{min{A(i, p), w(ai+1) +A(i, p− p(ai+1))} se p(ai+1) < p,A(i, p) altrimenti.

(19)

Il nostro problema originario, ovvero quello di calcolare il massimo profitto ottenibilecon sottoinsiemi di peso totale al piu B sara quindi dato da

max{p : A(n, p) ≤ B}. (20)

Il calcolo di A(n, p) puo essere fatto dal seguente algoritmo, basandoci sulla equazione diricorrenza (19). Pertanto tutti i valori A(i, p) possono essere calcolati in tempo O(n2P ), equindi nello steso tempo possiamo calcolarci (20), e risolvere il problema dello Zaino 0-1.

Page 39: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 4 34

Calcolo di A(n, P ) via Programmazione Dinamica

P = maxi p(ai)for i← 1 to n do

A(i, 0)← 0for p← 1 to nP do

A(1, p)←{w(ai) se p(ai) = p∞ altrimenti.

for i← 2 to n dofor p← 1 to nP do

if p(ai) ≤ p thenA(i, p)← min{A(i − 1, p), w(ai) +A(i− 1, p− p(ai))}

elseA(i, p)← A(i− 1, p).

Cio ovviamente non implica che abbiamo trovato un algoritmo polinomiale per il prob-lema dello Zaino 0-1, che e un problema NP -completo. Infatti, il nostro algoritmo e ingenerale esponenziale nella taglia dell’input, che e O(log n + log P ). Se il valore di Pfosse piccolo, ad esempio P = O(n), allora il nostro algoritmo sarebbe sı polinomiale. Iltrucco quindi per ottenere uno PTAS per il problema dello Zaino 0-1 si basa quindiproprio su questa osservazione: ignoriamo una parte dell’input, ovvero una parte dei bitsche rappresentano i valori dei profitti degli oggetti. La parte che ignoriamo dipendera dalvalore del parametro di errore ε che siamo disposti a tollerare. In questo modo, otterremouna nuova istanza per il problema dello Zaino 0-1in cui i valori dei profitti degli oggettipossono essere visti come numeri limitati da un polinomio in n e 1/ε. Cio ci permetteradi ottenere una soluzione di profitto almeno (1− ε)OPT , in tempo polinomiale in n e 1/ε.

FPTAS per Zaino 0-1

1. Dato ε > 0, sia K = εPn

2. Per ogni oggetto ai, sia p′(ai) = bp(ai)/Kc

3. Applica la Programmazione Dinamica sull’istanza di input con questi nuovi profitti,e sia S′ la soluzione ottima ottenuta

4. Output S ′

Proviamo innanzitutto che

p(S′) ≥ (1− ε)OPT.Osserviamo che per ogni elemento a ∈ S si ha

p(a) ≥ Kp′(a) = K

⌊p(a)

K

⌋> K

(p(a)

K− 1

)= p(a)−K, (21)

Page 40: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 4 35

in quanto per ogni numero x vale che bxc > x− 1.Sia O la soluzione ottima al problema originale, ovvero al problema con gli oggetti di

profitto p(a), a ∈ S, e valutiamo il profitto totale di O mediante i nuovi profitti p ′(a).Avremo

Kp′(O) = K∑

a∈Op′(a)

>∑

a∈O(p(a)−K) (in virtu della (21))

=∑

a∈Op(a)−

a∈OK

≥ p(O)− nK (poiche la somma contiene al piu n termini).

Da cio, e ricordando la definizione di K e di p′, abbiamo che

SOL = p(S′) =∑

a∈S′p(a)

≥∑

a∈S′Kp′(a) (dalla (21))

= Kp′(S′)

≥ Kp′(O) (in quanto S e ottima per i profitti p′)

≥ p(O)− nK = OPT − nK= OPT − εP≥ (1− ε)OPT,

dove l’ultima diseguaglianza segue dal fatto che ovviamente OPT ≥ P .

Ci resta solo da provare che l’algoritmo proposto e polinomiale in n e 1/ε. A talfine, ricordiamo che abbiamo applicato la programmazione dinamica alla nuova istanza diinput, pertanto il tempo di esecuzione sara

O(n2P ′) = O(n2bP/Kc) = O(n2bn/εc),

il che e polinomiale in n e 1/ε.

Page 41: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 5 36

Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005

Lezione 5

Docente: Ugo Vaccaro

In questa lezione inizieremo a studiare gli algoritmi di approssimazione per problemidi ottimizzazione NP-hard in un contesto piu ampio di quanto fatto finora. Introdurremouna tecnica di portata molto generale per il progetto di algoritmi di approssimazione erivedremo alcuni degli algoritmi che abbiamo studiato, reinterpretandoli all’interno delnuovo contesto. La tecnica di cui intendiamo parlare e la Programmazione Lineare (PL).E ragionevole affermare che una gran parte della teoria degli algoritmi di approssimazione,come e nota a tutt’oggi, e basata sull PL. A titolo di esempio, iniziamo con il considerareuna generalizzazione del problema del Vertex Cover introdotto nella prima lezione.

VERTEX COVER

• Input:

– grafo G = (V,E)

– funzione peso w : V → R+

• Output: sottoinsieme S ⊆ V di minimo peso w(S) =∑u∈S w(u) tale che ∀(u, v) ∈

E valga {u, v} ∩ S 6= ∅.

Ritroviamo il vecchio problema del Vertex Cover studiato in precedenza nel casoin cui la funzione peso cui vertici sia tale che w(u) = 1 per ogni u ∈ V .

Formuliamo il problema appena enunciato attraverso la PL. Per prima cosa descriviamouna qualsiasi possibile soluzione S ⊆ V = {v1, . . . , vn} mediante un vettore binario x =(x(v1), . . . , x(vn)) tale che

x(vi) =

{1 se vi ∈ S0 se vi 6∈ S.

(22)

Il problema di trovare un Vertex Cover di peso minimo in G puo essere quindiformulato come

minimizzare∑

v∈Vx(v)w(v) (23)

soggetto a x(u) + x(v) ≥ 1 ∀(u, v) ∈ E (24)

x(v) ∈ {0, 1} ∀u ∈ V . (25)

Page 42: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 5 37

Il vincolo (25) (comunemente chiamato vincolo di interezza) ci assicura che ogni possibilevettore soluzione x abbia componenti a valori binari, e quindi x definisca un sottoinsiemeS ⊆ V attraverso la (22). Il vincolo (24) ci assicura che per ogni arco (u, v) ∈ E almenouna delle due componenti x(u), x(v) del vettore x abbia valore pari a 1. Cio altresı as-sicura che ∀(u, v) ∈ E almeno uno tra u e v appartenga all’insieme S corrispondente alvettore x, ovvero che S e un Vertex Cover di G. Pertanto il problema di PL (23) eperfettamente equivalente al problema del Vertex Cover di minimo peso prima enun-ciato. Ovviamente, benche scritto in questa forma il problema continua ad essere difficile,ovvero non risolvibile in tempo polinomiale (se P 6= NP ). L’approccio che seguiremoconsiste nel derivare un nuovo sistema di PL, differente da (23) (ma ad esso collegato),di “facile” soluzione, indi dedurre dalla soluzione al nuovo problema di PL una soluzione(sperabilmente “buona”) al problema originale di PL.

Il nuovo problema di PL che formuliamo lo si ottiene rilassando (ovvero indebolendo)il vincolo di interezza (25), e sostituendolo con un semplice vincolo di non negativita dellevariabili x(v), ∀v ∈ V . Otteniamo quindi il seguente problema di PL

minimizzare∑

v∈Vx(v)w(v) (26)

soggetto a x(u) + x(v) ≥ 1 ∀(u, v) ∈ E (27)

x(v) ∈ [0, 1] ∀u ∈ V . (28)

Questo e un problema standard di PL, risolubile ottimalmente in tempo polinomiale.Quindi, in tempo polinomiale nella taglia del sistema e possibile trovare il vettore x∗ =(x∗(v1), . . . , x∗(vn)) che massimizza la funzione obiettivo

∑v∈V x(v)w(v) e che rispetta en-

trambi i vincoli (27) e (28). Denotiamo con OPTR il valore ottimo della funzione obiettivodel sistema di PL (26) in corrispondenza al vettore x∗, ovvero OPTR =

∑v∈V x

∗(v)w(v).Denotiamo con OPT il valore minimo (ottimo) della funzione obiettivo del sistema di PLa vincoli interi (23), ovvero OPT e il minimo peso di un Vertex Cover di G. Dato chenel sistema (26) minimizziamo la stessa funzione obiettivo di (23), ma su di una regionepiu ampia, avremo che

OPTR ≤ OPT. (29)

Vogliamo adesso scoprire se e possibile ottenere dal vettore soluzione x∗ del sistema (26)un vettore x a componenti binarie che rispetti tutti i vincoli del sistema (23), ed in cor-rispondenza del quale la funzione obiettivo di (23) assuma un valore al piu pari ad αOPTR,per qualche valore α ragionevolmente piccolo. Se riuscissimo in cio, allora in virtu della(29) avremmo ottenuto un vettore soluzione al sistema (23) per cui la funzione obiettivoassume valore al piu αOPT . In altri termini, avremmo ottenuto un Vertex Cover diG di peso pari al piu ad α per il peso del Vertex Cover ottimo (cioe di minimo peso).Ovvero, otterremmo un algoritmo di approssimazione per Vertex Cover in grafi pesaticon coefficiente di approssimazione pari ad α.

Procediamo nel seguente modo. Dato il vettore x∗, definiamo il vettore x a componenti

Page 43: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 5 38

intere nel seguente modo

∀v ∈ V x(v) =

{1 se x∗(v) ≥ 1/2,0 se x∗(v) < 1/2.

(30)

Mostriamo innanzitutto che S = {v : x(v) = 1} e un Vertex Cover di G. Poicheil vettore x∗ soddisfa i vincoli del sistema di PL (26), (in particolare soddisfa la (27))abbiamo che ∀(u, v) ∈ E o vale che x∗(u) ≥ 1/2 oppure che x∗(v) ≥ 1/2. Pertanto, dalla(30) abbiamo che per ogni arco (u, v) ∈ E o vale che x(u) = 1, oppure x(v) = 1 (nota cheentrambe le relazioni possono valere). Ovvero, dalla definizione di S si ha che per ogniarco (u, v) ∈ E o vale che u ∈ S oppure che v ∈ S, cioe S e un Vertex Cover di G.Valutiamo ora il peso di S. Si ha che esso e pari a

u∈Vx(u)w(u) ≤

u∈V2x∗(u)w(u) = 2OPTR ≤ 2OPT.

In conclusione, l’algoritmo sopra esposto che costruisce un Vertex Cover di G “ar-rotondando” la soluzione ottima del sistema di PL (26), restituisce una soluzione di valoreal piu 2OPT . Ovvero, abbiamo ottenuto un algoritmo di approssimazione per VertexCover in grafi pesati con fattore di approssimazione pari a 2.

Applichiamo ora la stessa tecnica al problema del

SET COVER

• Input:

– insieme U = {e1, . . . , en}, famiglia S = {S1, . . . , Sm}, con Si ⊆ U ;

– funzione costo c : S ∈ S → c(S) ∈ R+;

• Output: sottofamiglia S ′ ⊆ S di costo c(S ′) =∑S∈S′ c(S) minimo tale che⋃

S∈S′ S ⊇ U .

Formuliamo innanzitutto il problema mediante la PL. Ad ogni sottofamiglia S ′ ⊆ Sassociamo un vettore binario x(S ′) = (x(S1), . . . , x(Sm)) tale che

x(Si) =

{1 se Si ∈ S ′0 se Si 6∈ S ′.

(31)

Il costo della famiglia S ′ si esprimera come∑S∈S′ x(S)c(S), il vincolo che gli insiemi in

S ′ coprano tutto U lo si esprime con la diseguaglianza

S:e∈Sx(S) ≥ 1 ∀e ∈ U.

Page 44: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 5 39

Pertanto, il problema del Set Cover lo si potra esprimere con il seguente sistema di PL

minimizzare∑

S∈Sx(S)c(S) (32)

soggetto a∑

S:e∈Sx(S) ≥ 1 ∀e ∈ U (33)

x(S) ∈ {0, 1} ∀S ∈ S. (34)

Il primo passo per derivare un algoritmo di approssimazione consiste nel passare allaversione rilassata del sistema (32), in cui i vincoli di interezza (34) sulle variabili x(S)vengono sostituiti con dei semplici vincoli di non negativita. La versione rilassata di (32)e

minimizzare∑

S∈Sx(S)c(S) (35)

soggetto a∑

S:e∈Sx(S) ≥ 1 ∀e ∈ U (36)

x(S) ∈ [0, 1] ∀S ∈ S. (37)

Il problema di PL (35) e risolubile in tempo polinomiale. Sia x∗ = (x∗(S1), . . . , x∗(Sm)) ilvettore soluzione che minimizza la funzione obiettivo di (35) sotto i vincoli (36) e (37), esia OPTR il valore (minimo) della funzione obiettivo di (35) in corrispondenza al vettorex∗. La relazione che sussiste tra OPTR ed il valore OPT della soluzione ottima al sistema(35) e

OPTR ≤ OPT. (38)

In generale, la diseguaglianza puo essere anche stretta. Consideriamo infatti il seguenteesempio. Sia U = {e, f, g}, S = {S1, S2, S3}, con S1 = {e, f}, S2 = {f, g}, S3 = {e, g}.Inoltre supponiamo che c(S1) = c(S2) = c(S3) = 1. E impossibile coprire U con un soloinsieme, mentre lo e con due insiemi. Pertanto OPT = 2. E facile inoltre verificare che ilvettore x = (x(S1), x(S2), x(S3)) = (1/2, 1/2, 1/2) soddisfa i vincoli di (35). Pertanto,

OPTR ≤∑

S∈Sx(S)c(S) =

1

2+

1

2+

1

2=

3

2< 2 = OPT.

Vediamo ora come sia possibile ottenere una soluzione al sistema di PL (32) (non neces-sariamente ottima, ma per cui il valore della funzione obiettivo non si discosti troppo daquello ottimo) a partire da x∗, soluzione ottima del sistema (35). Per ogni elemento e ∈ Usia f(e) = numero di insiemi S ∈ S che contengono e, e sia f = maxe∈U f(e). Definiamoquindi il vettore x = (x(S1), . . . , x(Sm)) nel seguente modo

x(Si) =

{1 se x∗(Si) ≥ 1/f0 se x∗(Si) < 1/f .

(39)

In altri termini, stiamo proponendo il seguente algoritmo per il problema del Set Cover.

Page 45: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 5 40

1. Risolvi il sistema di PL rilassato, sia x∗ la sua soluzione ottima;2. Output la famiglia S ′ ⊆ S, dove S ′ = {S ∈ S : x∗(S) ≥ 1/f}.

Proviamo innanzitutto che l’algoritmo produce un Set Cover , ovvero che il vettorex = (x(S1), . . . , x(Sm)) soddisfa i vincoli del sistema (32) (o, come si dice in gergo, chex e una soluzione ammissibile di (32). Partiamo dal fatto che il vettore x∗ e soluzioneammissibile a (35). In particolare, cio implica che

∑S:e∈S x

∗(S) ≥ 1, ∀e ∈ U . D’altraparte, dalla definizione del parametro f , si ha che la somma

∑S:e∈S x

∗(S) contiene alpiu f termini, quindi esiste almeno un S che contiene e ∈ U e per cui x∗(S) ≥ 1/f . Diconseguenza, per la (31) vale che ∀e ∈ U esiste almeno un S ∈ S che contiene e e per cuiil valore x(S) viene posto a 1. Cio implica che S ′ = {S : x(S) = 1} = {S ∈ S : x∗(S) ≥1/f} e un Set Cover , ovvero che

∑S:e∈S x(S) ≥ 1, per ogni e ∈ U . Che il vettore x

soddisfi anche il vincolo di interezza e ovvio.

Valutiamo ora il costo della soluzione prodotta dall’algoritmo, ovvero valutiamo ilvalore della funzione obiettivo del sistema (32) in corrispondenza al vettore x definitodalla (39). Ricordiamo che per definizione abbiamo x(S) ≤ fx∗(S), ∀S ∈ S. Si ha quindi

SOL =∑

S∈Sx(S)c(S) ≤

S∈Sfx∗(S)c(S)

= f∑

S∈Sx∗(S)c(S) = fOPTR ≤ fOPT.

Il che implica che abbiamo ottenuto un algoritmo di approssimazione per Set Covercon fattore di approssimazione pari a f . In alcuni casi, tale fattore di approssimazione emigliore di quello derivato nella Lezione 2, mediante l’algoritmo greedy.

La tecnica dell’arrotondamento della soluzione ottima alla versione rilassata di unproblema di PL con vincoli di interezza sulle variabili puo ovviamente essere applicataanche in altre situazioni. Consideriamo la seguente generalizzazione del problema del SetCover .

SET MULTICOVER

• Input:

– insieme U = {e1, . . . , en}, famiglia S = {S1, . . . , Sm}, con Si ⊆ U ;

– funzione costo c : S ∈ S → c(S) ∈ R+;

– vettore di interi a = (ae1 , . . . , aen).

• Output: sottofamiglia S ′ ⊆ S di costo c(S ′) =∑S∈S′ c(S) minimo tale che ogni

elemento e ∈ U appartenga ad almeno ae distinti insiemi in S ′.

Page 46: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 5 41

Ritroviamo il problema del Set Cover nel caso in cui il vettore a sia a = (1, . . . , 1).Formuliamo Set MultiCover come problema di PL. Avremo

minimizzare∑

S∈Sx(S)c(S) (40)

soggetto a∑

S:e∈Sx(S) ≥ ae ∀e ∈ U (41)

x(S) ∈ {0, 1} ∀S ∈ S. (42)

La versione rilassata del problema (40) sara

minimizzare∑

S∈Sx(S)c(S) (43)

soggetto a∑

S:e∈Sx(S) ≥ ae ∀e ∈ U (44)

x(S) ∈ [0, 1] ∀S ∈ S. (45)

Sia ora, come in precedenza, f = maxe∈U f(e), dove f(e) = numero di sottoinsiemi S inS che contengono e ∈ U . Sia x∗ = (x∗(S1), . . . , x∗(Sm)) una soluzione ottima al problema(43) rilassato. Vale ovviamente che

OPTR =∑

S∈Sx∗(S)c(S) ≤ OPT,

dove OPT e il valore ottimo del problema di PL originario (ovvero il costo di un SetMultiCover di costo minimo). Definiamo il vettore x = (x(S1), . . . , x(Sm)) nel seguentemodo

∀S ∈ S x(S) =

{1 se x∗(S) ≥ 1/f0 se x∗(S) < 1/f .

(46)

Il vettore x cosı definito e una soluzione ammissibile al sistema (40). Infatti, sappiamoche per ipotesi ∑

S:e∈Sx∗(S) ≥ ae, ∀e ∈ U,

inoltre ∀e ∈ U la somma∑S:e∈S x

∗(S) consta di al piu f termini, ciascheduno di valoreal piu 1. Pertanto, per ogni e ∈ U la somma

∑S:e∈S x

∗(S) contiene almeno ae terminidi valore almeno pari a 1/f . Di conseguenza, il vettore x definito dalla (46) soddisfa larelazione ∑

S:e∈Sx(S) ≥ ae ∀e ∈ U, (47)

inoltre vale che x(S) ≤ fx∗(S), ∀S ∈ S. Quindi il costo della famiglia S ′ = {S : x(S) = 1}(che e un legittimo Set MultiCover in virtu della (47)) e pari a

costo(S ′) =∑

S∈Sx(S)c(S) ≤

S∈Sfx∗(S)c(S)

= f∑

S∈Sx∗(S)c(S) = fOPTR ≤ fOPT.

Page 47: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 5 42

Concludiamo la lezione considerando il seguente problema di ottimizzazione:

HITTING SET

• Input:

– insieme U = {e1, . . . , en}, famiglia S = {S1, . . . , Sm} di sottoinsiemi di U ,

– funzione costo c : e ∈ U → R+,

– vettore di interi a = (a(S1), . . . , a(Sm)).

• Output: sottoinsieme H ⊆ U di costo c(H) =∑e∈H c(e) minimo tale che

|H ∩ S| ≥ a(S) ∀S ∈ S.

Si noti che il problema e una generalizzazione del problema del Vertex Cover con-siderato all’inizio di questa Lezione. Si ritrova infatti il problema del Vertex Cover nelcaso in cui ciascun Si ∈ S ha cardinalita |Si| = 2, ed il vettore a e composto da tutti 1.

Vogliamo derivare un algoritmo di approssimazione per Hitting Set con fattore diapprossimazione k, dove k = maxS∈S |S|. Per prima cosa formuliamo il problema mediantela PL.

minimizzare∑

e∈Ux(e)c(e) (48)

soggetto a∑

e∈Sx(e) ≥ a(S) ∀S ∈ S (49)

x(e) ∈ {0, 1} ∀e ∈ U. (50)

La versione rilassata del problema (48) sara

minimizzare∑

e∈Ux(e)c(e) (51)

soggetto a∑

e∈Sx(e) ≥ a(S) ∀S ∈ S (52)

x(e) ∈ [0, 1] ∀e ∈ U. (53)

Sia x∗ = (x∗(e1), . . . , x∗(en)) una soluzione ottima al problema (51) rilasato. Valeovviamente che

OPTR =∑

e∈Ux∗(e)c(e) ≤ OPT,

dove OPT e il valore ottimo del problema di PL originario (ovvero il costo di un HittingSet di costo minimo). Definiamo il vettore x = (x(e1), . . . , x(en)) nel seguente modo

∀e ∈ U x(S) =

{1 se x∗(e) ≥ 1/k0 se x∗(e) < 1/k.

(54)

Page 48: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 5 43

Il vettore x cosı definito e una soluzione ammissibile al sistema (48). Infatti, sappiamoche per ipotesi ∑

e∈Sx∗(e) ≥ a(S), ∀S ∈ S,

inoltre ∀S ∈ S la somma∑e∈S x

∗(e) consta di al piu k termini, ciascheduno di valore alpiu 1. Pertanto, per ogni S ∈ S la somma

∑e∈S x

∗(e) contiene almeno a(S) termini divalore almeno pari a 1/k. Infatti, se cio non fosse, ovvero se la somma contenesse al piua(S)− 1 termini di valore almeno pari a 1/k, avremmo che∑

e∈Sx∗(e) =

e∈S:x(e)∗≥1/k

x∗(e) +∑

e∈S:x(e)∗<1/k

x∗(e) (55)

≤ a(S)− 1 +∑

e∈S:x(e)∗<1/k

x∗(e) (56)

(in quanto ogni elemento della somma e ≤ 1) (57)

< a(S)− 1 + 1 (in quanto la somma contiene al piu k termini )(58)

= a(S) (59)

Per quanto appena provato, il vettore x definito dalla (54) soddisfa la relazione∑

e∈Sx(e) ≥ a(S) ∀S ∈ S, (60)

inoltre vale che x(e) ≤ kx∗(e), ∀e ∈ U . Quindi il costo dell’insieme H = {e : x(e) = 1}(che e un legittimo Hitting Set in virtu della (60)) e pari a

c(H) =∑

e∈Ux(e)c(e)

≤∑

e∈Ukx∗(e)c(e)

= k∑

e∈Ux∗(e)c(e)

= kOPTR

≤ kOPT.

Concludiamo la lezione riassumendo il principio generale mediante il quale abbiamoottenuto gli di algoritmi di approssimazione descritti in questa lezione:

• formulare il problema di ottimizzazione come un problema di PL,

• rilassare i vincoli di interezza ed ottenere un problema di PL risolubile in tempopolinomiale,

• arrotondare a valori interi le componenti della soluzione ottima al problema di PLrilassato per ottenere una soluzione ammissibile al problema originale.

Page 49: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 5 44

La bonta (o meno) della soluzione al problema originale cosı ottenuta dipende inmaniera critica da che criterio si e usato per arrotondare la soluzione ottime del prob-lema rilassato. Il criterio usato in questa lezione e molto semplice ed intuitivo, ma haportata limitata (ovvero non sempre produce soluzioni intere di “buon” valore). Nellalezione prossima vedremo una tecnica di arrotondamento di piu ampia applicabilita .

Page 50: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 6 45

Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005

Lezione 6

Docente: Ugo Vaccaro

Nella lezione scorsa abbiamo introdotto una tecnica basata sulla PL per il progetto dialgoritmi di approssimazione. Essenzialmente, la tecnica e composta da tre passi.

1. Formulare il problema come problema di PL a vincoli interi;

2. Rilassare il vincolo di interezza e ottenere un normale problema di PL, risolubile intempo polinomiale;

3. Usare la soluzione ottima al problema rilassato per ottenere in tempo polinomiale unasoluzione ammissibile al problema di PL a vincoli interi. La soluzione al problemacon vincoli interi dovra essere tale da avere un valore prossimo al valore ottimo delproblema rilassato.

Considerando ad esempio un problema di ottimizzazione di minimo con OPTR parial valore della soluzione ottima al problema rilassato, se fossimo in grado di trovare unasoluzione al problema di PL con vincoli interi di valore SOL pari al piu a αOPTR, al-lora avremmo immediatamente ottenuto un algoritmo di approssimazione con fattore diapprossimazione pari ad α. Infatti, sappiamo che vale la relazione OPTR ≤ OPT =valoredella soluzione ottima al problema di PL con vincoli interi.

La parte complessa della procedura sopra esposta e ovviamente il passo 3. Nella lezionescorsa abbiamo visto come esso possa essere implementato, in alcuni casi, arrotondando avalori interi le componenti della soluzione ottima al problema rilassato. Come effettuarel’arrotondamento dipende criticamente dal problema in questione. In questa lezione ve-dremo un criterio abbastanza generale su come effettuare l’arrotondamento. Supponiamodi avere a disposizione una funzione random(·) cosı definita:

random:p ∈ [0, 1]→ random(p) ∈ {0, 1}random(p) = 1 con probabilita prandom(p) = 0 con probabilita 1− p.

La tecnica in questione per convertire una soluzione ottima al problema di PL rilassatoin una “buona” soluzione al problema di PL a vincoli interi e la seguente

Page 51: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 6 46

Arrotondamento probabilistico

1. Formula il problema in esame mediante un sistema di PL a vincoli interi e convariabili xi ∈ {0, 1} nella funzione obiettivo.

2. Rilassa il problema, risolvilo ottimalmente e siano x∗i ∈ [0, 1] i valori del vettoreottimo di soluzione.

3. Assegna valori interi alle variabili xi nel modo seguente

if random(x∗i ) = 1 then xi ← 1;

else xi ← 0.

In altri termini, interpretiamo i valori x∗i come probabilita di porre le variabili xi a 0oppure a 1 nel sistema di PL a vincoli interi. Il passo successivo consiste nello stimare diquanto il valore della soluzione intera si discosta da OPTR.

Applichiamo questa tecnica al problema del Set Cover . Ricordiamo il problema

SET COVER

• Input:

– insieme U = {e1, . . . , en}, famiglia S = {S1, . . . , Sm}, con Si ⊆ U , per i = 1, . . . ,m;

– funzione costo c : S ∈ S → c(S) ∈ R+;

• Output: sottofamiglia S ′ ⊆ S di costo c(S ′) =∑S∈S′ c(S) minimo tale che⋃

S∈S′ S ⊇ U .

la sua formulazione via PL a vincoli interi

minimizzare∑

S∈Sx(S)c(S) (61)

soggetto a∑

S:u∈Sx(S) ≥ 1 ∀u ∈ U (62)

x(S) ∈ {0, 1} ∀S ∈ S. (63)

e la corrispondente versione rilassata del problema di PL

minimizzare∑

S∈Sx(S)c(S) (64)

Page 52: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 6 47

soggetto a∑

S:u∈Sx(S) ≥ 1 ∀u ∈ U (65)

x(S) ∈ [0, 1] ∀S ∈ S. (66)

Sia x = (x(S1), . . . , x(Sm)) una soluzione ottima al problema rilassato (64). In accordoallo schema di algoritmo prima enunciato, costruiamo una possibile soluzione intera alsistema (61), ponendo la i-esima variabile a 1 con probabilita pari al valore x(Si), eda 0 con probabilita pari a 1 − x(Si). In altri termini, stiamo costruendo una possibilesoluzione S ′ ⊆ S al problema del Set Cover inserendo l’insieme Si in S ′ con probabilitapari a x(Si), per ogni i = 1, . . . ,m. Di conseguenza, il costo medio E[c(S ′)] della soluzioneS ′ ⊆ S e :

E[c(S ′)] =∑

S∈Sc(S)Pr{S sia stato inserito in S ′}

=∑

S∈Sc(S)x(S) = OPTR.

Stimiamo ora la probabilita che S ′ sia effettivemente un cover, ovvero stimiamo la proba-bilita che valga l’evento

U ⊆⋃

S∈S′S.

Dato un generico u ∈ U , siano Si1 , . . . , Sik tutti e solo gli elementi di S che contengono u.Avremo allora

Pr{u sia coperto da S ′} = 1− Pr{u non sia coperto da S ′}= 1− Pr{nessun insieme Sij , j = 1, . . . , k e stato inserito in S ′}= 1− Pr{Si1 non e stato inserito in S ′} · . . .

. . . · Pr{Sik non e stato inserito in S ′}= 1− (1− x(Si1))(1 − x(Si2)) . . . (1− x(Sik)).

Ricordiamo ora che i valori x(Si1), x(Si2) . . . x(Sik) soddisfano la condizione

k∑

j=1

x(Sij ) ≥ 1,

cio in quanto gli insiemi Si1 , Si2 , . . . Sik sono tutti quelli e solo che contengono u ∈ U ,e pertanto i valori x(Si1), x(Si2) . . . x(Sik) soddisfano la (65). Sotto tale ipotesi, faremovedere che

(1− x(Si1))(1 − x(Si2)) . . . (1− x(Sik)) ≤(

1− 1

k

)k. (67)

Per il momento, assumiamo che la diseguaglianza di sopra valga, pertanto abbiamo che

Pr{u sia coperto da S ′} ≥ 1−(

1− 1

k

)k≥ 1− 1

e,

Page 53: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 6 48

dove abbiamo usato il fatto che

limk→∞

(1− 1

k

)k=

1

e,

ed inoltre (1− 1

k

)k≤(

1− 1

k + 1

)k+1

≤ 1

e.

Abbiamo quindi ottenuto che

Pr{u non sia coperto da S ′} ≤ 1

e.

Ripetiamo d log n volte l’esperimento casuale di scegliere S ′ in accordo alle probabilitax(Si), dove d e scelto in modo tale che (1/e)d log n ≤ 1/(4n). In altre parole, costruiamoindipendentemente l’una dall’altra d log n sottofamiglie S ′1, . . . ,S ′d logn, dove la probabilitache il generico insieme Si ∈ S venga inserito nella generica sottofamiglia S ′t, e semprex(Si), per ogni i = 1, . . . ,m e per ogni t = 1, . . . , d log n. Sia infine C = S ′1 ∪ . . . ∪ S ′d log n.Dato un generico elemento u ∈ U , avremo che

Pr{u non e coperto da C} = Pr{u non e coperto da nessun S ′i, i = 1, . . . , d log n}

=d log n∏

i=1

Pr{u non e coperto da S ′i}

≤d log n∏

i=1

(1

e

)

≤ 1

4n(per come abbiamo scelto d)

Di conseguenza, la probabilita che C non sia un cover per U e

Pr{C non e un cover per U} = Pr{ui non e coperto da C, per qualche i = 1, . . . , d log n}

≤n∑

i=1

Pr{ui non e coperto da C}

≤n∑

i=1

1

4n=

1

4

Inoltre, il costo medio E[c(C)] di C soddisfa

E[c(C)] =d log n∑

i=1

E[c(S ′i)] ≤ d log nOPTR,

dove abbiamo usato il fatto che la media di una somma di variabili casuali e la sommadelle medie delle singole variabili casuali. Ricordiamo ora la diseguaglianza di Markov, la

Page 54: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 6 49

quale afferma che data una variabile casuale X, con media E[X] ed un valore t, vale:

Pr{X ≥ t} ≤ E[X]

t.

Applicando la diseguaglianza di Markov alla variabile casuale c(C), con t = 4d log nOPTR,otteniamo

Pr{c(C) ≥ 4d log nOPTR} ≤E[c(C)]

4d log nOPTR≤ 1

4.

Mettendo tutto insieme possiamo valutare la probabilita degli eventi a noi sfavorevoli,ovvero che C non sia un cover o che C abbia un costo > 4d log nOPTR. Avremo quindi

Pr{C non e un cover per U oppure abbia costo c(C) ≥ 4d log nOPTR}≤ Pr{C non e un cover per U}+ Pr{c(C) ≥ 4d log nOPTR}≤ 1

4+

1

4=

1

2

Di conseguenza, la probabilita che l’algoritmo ci dia l’output che noi desideriamo, ovveroche C sia un cover e che contemporaneamente abbia un costo ≤ 4d log nOPTR e pari a 1meno la probabilita di sopra, ovvero e almeno 1/2.

Quindi, la probabilita che le scelte casuali effettuate dall’algoritmo abbiano prodotto uncover di U di costo totale ≤ 4d log nOPTR e almeno 1/2. Cio implica che il numero mediodi volte che dobbiamo eseguire l’algoritmo per avere il cover di U che desideriamo, ovvero didi costo ≤ 4d log nOPTR, e al piu 2. Questo conclude la prova che l’arrotondamento prob-abilistico produce un Set Cover di U di costo O(log n)OPTR = O(log n)OPT , quindiconfrontabile con il costo della soluzione prodotta dall’algoritmo greedy che, ricordiamo,era limitato superiormente da (log n+ 1)OPT .

Page 55: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 6 50

Prova della diseguaglianza di Markov per variabili casuali discrete.Supponiamo che la variabile casuale X assuma al piu n valori. Si ha

E[X] =n∑

k=1

kPr{X = k} ≥n∑

k=t

kPr{X = k} ≥ tn∑

k=t

Pr{X = k} = tP r{X ≥ t}.

Prova della (67). Vogliamo massimizzare∏ki=0(1− xi) sotto il vincolo che

∑ki=0 xi ≥ 1.

Si ha

1

klog

k∏

i=0

(1− xi) =1

k

k∑

i=0

log(1− xi)

≤ log1

k

k∑

i=0

(1− xi) (dalla diseguaglianza di Jensen)

= logk −∑k

i=0(1− xi)k

≤ logk − 1

k= log

(1− 1

k

).

Ovvero,

logk∏

i=0

(1− xi) ≤ k log

(1− 1

k

)= log

(1− 1

k

)k,

il che e perfettamente equivalente a cio che intendevamo provare.

Nel resto di questa lezione applicheremo la tecnica dell’arrotondamento probabilisticoal problema del MaxSat .

MAX SAT

• Input:

– n variabili booleane x1, . . . , xn

– m clausole C1, . . . , Cm, dove ogni Ci e un OR di letterali, ovvero Ci = αi1∨. . .∨αik ,ed ogni αij e una qualche variabile booleana xs od un suo negato

– pesi w(Ci) ≥ 0 per ogni clausola Ci

• Output: un assegnamento di valori di verita VERO/FALSO alle xi che massimizzila somma dei pesi delle clausole Ci soddisfatte.

Page 56: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 6 51

Ricordiamo i 3 passi costituenti la tecnica dell’arrotondamento probabilistico, ed ap-plichiamoli a MaxSat .

Passo 1. Modelliamo MaxSat con il seguente problema di PL a variabili intere, in cuiintroduciamo una variabile z(C) per ogni clausola C, ed una variabile yi per ogni variabilebooleana xi. Il significato delle variabili z(C) e yi e il solito

∀C z(C) =

{1 se C e soddisfatta,0 se C non e soddisfatta,

∀i yi =

{1 se xi ha valore di verita VERO,0 se xi ha valore di verita FALSO.

Inoltre, per ogni clausola C, sia I+(C) l’insieme degli indici i delle variabili booleanexi che compaiono in C in forma non negata, e sia analogamente I−(C) l’insieme degliindici j delle variabili booleane xj che compaiono in C in forma negata. Pertanto, laclausola C e soddisfatta se e solo se almeno una delle variabili xi con i ∈ I+(C) assumevalore VERO, oppure almeno una delle variabili xj con j ∈ I−(C) assume valore FALSO.Ricordando le definizioni delle variabili z(C) e yi, avremo che z(C) = 1 se e solo se almenouna delle variabili yi con i ∈ I+(C) assume valore 1, oppure almeno una delle variabili yicon i ∈ I−(C) assume valore 0.

Avremo allora il seguente sistema di PL che formalizza il problema MaxSat .

massimizzare∑

C

w(C)z(C) (68)

soggetto a∑

i∈I+(C)

yi +∑

i∈I−(C)

(1− yi) ≥ z(C) ∀C (69)

yi ∈ {0, 1} ∀i (70)

0 ≤ z(C) ≤ 1 ∀C. (71)

Passo 2. Rilassa i vincoli yi ∈ {0, 1}, ∀i a 0 ≤ yi ≤ 1, ∀i.Passo 3. Applicando la tecnica dell’arrotondamento probabilistico otteniamo il seguentealgoritmo

Arrotondamento probabilistico per MAX SAT

Risolvi il sistema (68), sia (y∗, z∗) la soluzione ottimafor i← 1 to n do

if random(y∗i ) = 1xi ← 1

elsexi ← 0

In altri termini, nel precedente algoritmo interpretiamo ciascun valore y∗i come laprobabilita di porre la variabile booleana xi ad 1 (ovvero, a valore TRUE).

Page 57: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 6 52

Per definizione, avremo che la clausola C non sara soddisfatta se e solo se tutte levariabili con indici in I+(C) sono state poste a valore 0 e tutte le variabili con indici inI−(C) a valore 1. Abbiamo quindi

Pr{C soddisfatta } = 1−Pr{C non soddisfatta } = 1−∏

j∈I+(C)

(1− y∗j ) ·∏

j∈I−(C)

y∗j . (72)

Per valutare in maniera precisa la espressione (72) abbiamo bisogno di alcuni risultatiintermedi. Supponiamo di avere un insieme di numeri S, con |S| = k, e sia data unapartizione di S in due insiemi A,B ⊆ S, con A ∪ B = S, e A ∩ B = ∅. Supponiamo chevalga ∑

a∈Aa+

b∈B(1− b) ≥ z, (73)

per qualche numero z. Allora vale anche

k − z ≥∑

a∈Aa+

b∈B(1− b)

=∑

a∈A1 +

b∈B1−

a∈A−∑

b∈B(1− b)

=∑

a∈A(1− a) +

b∈B(1− 1 + b) =

a∈A(1− a) +

b∈Bb.

Ricordando la diseguaglianza tra la media aritmetica e geometrica, che ci dice

∑ki=1 βik

≥(

k∏

i=1

βi

) 1k

, ∀βi,

otteniamo

k − zk≥ 1

k

a∈A(1− a) +

b∈Bb

a∈A(1− a) ·

b∈Bb

1k

,

ovvero (1− z

k

)k≥∏

a∈A(1− a) ·

b∈Bb.

Ritorniamo al nostro problema originario ed applichiamo i risultati appena ottenuti. Ab-

biamo che

Pr{C soddisfatta } = 1−∏

j∈I+(C)

(1− y∗j ) ·∏

j∈I−(C)

y∗j

≥ 1−(

1− z∗(C)

k

)k

≥ 1−(

1

e

)z∗(C)

,

Page 58: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 6 53

dove k e il numero di variabili nella clausola C. Possiamo osservare che per valori di xcompresi tra 0 ed 1 la curva di equazione 1 − (1/e)x e sempre maggiore della retta diequazione (1− 1/e)x (vedi figura).

1

1−1/e

(1−1/e)x

1−(1/e)x

Pertanto

Pr{C soddisfatta } ≥(

1− 1

e

)z∗(C).

Il costo medio della soluzione prodotta dall’algoritmo, ovvero il valor medio E della sommadei pesi delle clausole soddisfatte in conseguenza dell’assegnamento di valori di verita sopradefinito sara quindi

E =∑

C

Pr{C soddisfatta }w(C)

≥(

1− 1

e

)∑

C

w(C)z∗(C)

=

(1− 1

e

)OPTR ≥

(1− 1

e

)OPT.

Concludendo, l’algoritmo basato sulla tecnica dell’arrotondamento probabilistico pro-duce una soluzione che si discosta da quella ottima di un fattore moltiplicativo pari a(1 − 1/e). Ci limitiamo qui a menzionare che molti degli algoritmi ottenibili con la tec-nica dell’arrotondamento probabilistico possono essere “derandomizzati”, ovvero possonoessere trasformati in algoritmi completamente deterministici, senza alcuna perdita di per-formance.

Page 59: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 7 54

Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005

Lezione 7

Docente: Ugo Vaccaro

Nelle lezioni scorse abbiamo visto varie applicazioni della PL al progetto di algoritmidi approssimazione per problemi di ottimizazione NP-hard. Essenzialmente abbiamo vistoche in certi casi, arrotondando a valori interi la soluzione ottima del sistema di PL rilas-sato, si poteva ottenere una soluzione abbastanza buona al sistema di PL a vincoli interi.L’arrotondamento poteva essere sia deterministico che probabilistico. In questa lezione enella prossima vedremo altre tecniche per ottenere algoritmi di approssimazioni, semprebasati sull PL, ma che sfruttano altri principi. Le tecniche che studeriemo hanno unavalidita piu generale rispetto a quelle viste nelle lezioni precedenti, e sono basate su Prin-cipio delle Dualita della Programmazione Lineare. Illustriamo tale principio attraverso unsemplice esempio. Supponiamo di avere il seguente sistema di PL:

minimizzare 7x1 + x2 + 5x3 (74)

soggetto a x1 − x2 + 3x3 ≥ 10 (75)

5x1 + 2x2 − x3 ≥ 6 (76)

x1, x2, x3 ≥ 0 (77)

Notiamo che in questo esempio tutti i vincoli sono del tipo “≥ ” e tutte le variabili sonovincolate ad essere non negative. Questa e la forma standard dei problemi di minimiz-zazione di PL e una semplice trasformazione ci permette di scrivere ogni sistema di PL diminimo in questo modo. Ricordiamo che ogni soluzione del sistema, ovvero ogni assegna-mento di valori alle variabili che soddisfi tutti i vincoli e detta una soluzione ammissibile.Sia z∗ il valore ottimo del sistema di PL di sopra, e chiediamoci “E z∗ ≤ α?”, dove α eun dato numero. Per esempio, chiediamoci se z∗ e minore o tutt’al piu uguale a 30. Uncertificato Si per questa domanda e semplicemente una soluzione ammissibile al sistemadi PL per cui la funzione obiettivo assume valore 30. Ad esempio, x = (2, 1, 3) costituisceun tale certificato in quanto x soddisfa tutti i vincoli del sistema di PL ed il valore dellafunzione obiettivo in corrispondenza ad x e 7 · 2 + 1 + 5 · 3 = 30. Pertanto, ogni certificatoSi fornisce una limitazione superiore al valore z∗.

Come possiamo fornire un certificato No alla stessa domanda “E z∗ ≤ α?”, ovverocome possiamo determinare una limitazione inferire al valore z∗? Nel nostro esempio unalimitazione inferiore la possiamo ottenere dal primo vincolo del sistema. Infatti, poichele variabili sono costrette ad assumere valori non negativi e poiche la funzione obiettivo etale che

7x1 + x2 + 5x3 ≥ x1 − x2 + 3x3

≥ 10 (dalla (75))

Page 60: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 7 55

abbiamo sicuramente che la funzione obiettivo vale almeno 10 in corrispondenza ad ognisoluzione ammissibile del sistema. Cio ovviamente implica che z∗ ≥ 10. Una migliorelimitazione inferiore a z∗ la si puo ottenere considerando entrambi i vincoli del sistemadi PL (74). Infatti possiamo dedurre che

7x1 + x2 + 5x3 ≥ (x1 − x2 + 3x3) + (5x1 + 2x2 − x3)

≥ 10 + 6 (dalla (75) e (76))

Pertanto, per ogni soluzione ammissibile la funzione obiettivo vale almeno 16, e quindipossiamo affermare che z∗ ≥ 16. L’idea puo ovviamente essere estesa. Per esempio,possiamo osservare che

7x1 + x2 + 5x3 ≥ 2 · (x1 − x2 + 3x3) + (5x1 + 2x2 − x3)

≥ 2 · 10 + 6 (dalla (75) e (76))

ed ottenere, per lo stesso ragionamento di prima, che z∗ ≥ 26. Nulla ci impedisce diprocedere ulteriormente ed andare quindi alla ricerca di moltiplicatori y1 e y2, uno perciascun vincolo del sistema (74), in modo tale che

7x1 + x2 + 5x3 ≥ y1 · (x1 − x2 + 3x3) + y2 · (5x1 + 2x2 − x3)

≥ y1 · 10 + y2 · 6 (dalla (75) e (76))

Ovviamente, affinche y1 · 10 + y2 · 6 sia una valida limitazione inferiore al valore dellafunzione obiettivo 7x1 + x2 + 5x3 occorre che i valori y1 e y2 soddisfino i vincoli

y1 + 5y2 ≤ 7

−y1 + 2y2 ≤ 1

3y1 − y2 ≤ 5

Visto che vogliamo trovare la migliore limitazione inferiore al valore della funzione obiettivo7x1 + x2 + 5x3, ci troviamo di fronte al seguente problema

massimizzare 10y1 + 6y2 (78)

soggetto a y1 + 5y2 ≤ 7 (79)

−y1 + 2y2 ≤ 1 (80)

3y1 − y2 ≤ 5 (81)

y1, y2 ≥ 0 (82)

Ovvero, abbiamo un ulteriore sistema di PL, chiaramente collegato a (74). Chiamiamo ilsistema (74) il programma primale ed il sistema (78) il programma duale. Per costruzione,ogni soluzione ammissibile al duale fornisce una limitazione inferiore al valore ottimo delprimale. Ovviamente vale anche il viceversa: ogni soluzione ammissibile al primale for-nisce una limitazione superiore al valore ottimo del duale. Pertanto, se potessimo trovare

Page 61: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 7 56

0 26ottimo duale= ottimo primale

soluzioni del duale soluzioni del primale

soluzioni ammissibili al duale ed al primale le cui funzioni obiettivo coincidono di valore,allora entrambe le soluzioni devono essere ottime. Nel nostro esempio, x = (7/4, 0, 11/4),e y = (2, 1) entrambe fanno assumere valore 26 alle relative funzioni obiettivo; pertantosono entrambe ottime. La figura di sotto esemplifica la situazione:

Le considerazioni appena svolte ovviamente non si applicano solo all’esempio discusso,ma valgono per ogni sistema di PL, e costituiscono il teorema centrale della program-mazione lineare: il teorema delle dualita della programmazione lineare.

Per poterlo enunciare formalmente, consideriamo il seguente problema di minimo comeprogramma primale (avremmo potuto equivalentemente partire con un programma dimassimo come primale).

minimizzaren∑

j=1

cjxj

soggetto an∑

j=1

aijxj ≥ bi i = 1, . . . ,m

xj ≥ 0 j = 1, . . . , n

dove aij , bi e cj sono numeri. Introduciamo la variabile duale yi per ogni disequazione nelsistema di sopra. Otteniamo quindi il seguente programma duale

massimizzarem∑

i=1

biyi

soggetto am∑

i=1

aijyi ≤ cj j = 1, . . . , n

yi ≥ 0 i = 1, . . . ,m

Teorema 5 (della dualita nella PL) Il programma primale assume valore ottimo finitose e solo se il programma duale assume valore ottimo finito. Se x∗ = (x∗1, . . . , x

∗n) e

y∗ = (y∗1 , . . . , y∗m) sono soluzioni ottime per il primale e per il duale, rispettivamente,

alloran∑

j=1

cjx∗j =

m∑

i=1

biy∗i .

Page 62: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 7 57

Ritornando all’esempio con cui abbiamo iniziato la lezione, abbiamo osservato che percostruzione valeva che ogni soluzione ammissibile al programma duale fornisce una lim-itazione inferiore al valore ottimo del primale. In effetti, ogni soluzione ammissibile alprogramma duale fornisce una limitazione inferiore al valore assunto dalla funzione obiet-tivo in corrispondenza ad ogni soluzione ammissibile del primale. Proviamolo formalmenteed in generale.

Teorema 6 (della dualita debole) Se x = (x1, . . . , xn) e y = (y1, . . . , ym) sonosoluzioni ammissibili al programma primale e duale, rispettivamente, allora

n∑

j=1

cjxj ≥m∑

i=1

biyi. (83)

Dim. Poiche y e una soluzione ammissibile al duale, e le variabili xj sono non negative,abbiamo

n∑

j=1

cjxj ≥n∑

j=1

(m∑

i=1

aijyi

)xj. (84)

Analogamente, poiche x e una soluzione ammissibile al primale, e le variabili yi sono nonnegative, abbiamo

m∑

i=1

n∑

j=1

aijxj

yi ≥

m∑

i=1

biyi. (85)

Il teorema e quindi dimostrato una volta che si osservi che

n∑

j=1

(m∑

i=1

aijyi

)xj =

m∑

i=1

n∑

j=1

aijxj

yi.

Dal teorema della dualita della PL, x e y sono entrambe soluzioni ottime se e solo se(83) vale con il segno della eguaglianza. Cio accade se e solo sia (84) e (85) valogono conil segno dell’eguaglianza. Pertanto, otteniamo il seguente risultato circa la struttura dellesoluzioni ottime:

Teorema 7 (Condizioni complementari di slackness) Siano x e y soluzioni ammis-sibili al primale ed al duale, rispettivamente. Allora, x e y sono entrambe ottimali se esolo se entrambe le seguenti condizioni sono soddisfatte:

Condizioni complementari di slackness primaliPer ogni 1 ≤ j ≤ n: o vale che xj = 0 oppure

∑mi=1 aijyi = cj; e

Condizioni complementari di slackness dualiPer ogni 1 ≤ i ≤ m: o vale che yi = 0 oppure

∑ni=1 aijxj = bj;

Page 63: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 7 58

Le condizioni complementari di slackness giocheranno un ruolo fondamentale nel progettodi algoritmi di approssimazione basati su PL, come vedremo nella prossima lezione.

Nel resto di questa lezione useremo le tecniche appena introdotte per presentare unaanalisi alternativa (e leggermente migliorata) dell’algoritmo greedy per Set Cover vistonella Lezione 2. Risultera anche maggiormente chiaro il procedimento mediante il qualeveniva stimato il valore OPT della soluzione ottima a Set Cover .

Il procedimento che seguiremo e il seguente.5 Dato un algoritmo per Set Covercercheremo di dedurre da esso una assegnazione di valori alle variabili del sistema duale alsistema di PL che descrive Set Cover . Tale assegnazione dovra rendere il valore dellafunzione obiettivo del duale uguale al valore SOL prodotto dall’algoritmo greedy, ovveropari al valore della funzione obiettivo del primale in corrispondenza al vettore ammissibileottenibile dalla soluzione prodotta da greedy. Ricordiamo che la relazione tra le quantitaOPTR, OPT , e SOL e raffigurata nella figura di sotto

soluzioni al duale rilassato soluzioni al primale rilassato

soluzioni al primale intero

OPTOPTR SOL

La soluzione di valore SOL cosı ottenuta al duale non sara in generale ammissibile(si trova infatti al di fuori della regione di ammissibilita del duale). Il passo successivoconsistera nel dividere la soluzione del duale per un fattore F in modo tale da diminuirneil valore da SOL a SOL/F e renderla ammissibile (vedi figura di sotto)

Avremmo pertanto mostrato che per il valore SOL della soluzione a Set Coverprodotta dall’algoritmo greedy vale che

SOL = F ·(SOL

F

)≤ F ·OPTR ≤ F · OPT

a causa del Teorema debole della dualita e del fatto che la soluzione al duale di valoreSOL/F e adesso ammissibile, e quindi di valore ≤ OPTR ≤ OPT . Mettendo tuttoinsieme, abbiamo di fatto provato che il nostro procedimento e in effetti un algoritmo diapprossimazione con fattore di approssimazione F .

5Illustreremo il procedimento usando Set Cover come sempio. Si noti pero che esso, in linea diprincipio, e applicabile ad ogni problema.

Page 64: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 7 59

soluzioni al duale rilassato soluzioni al primale rilassato

soluzioni al primale intero

OPTOPTR SOLSOL/F

Applichiamo ora quanto detto. Ricordiamo la formulazione di Set Cover via PL

minimizzare∑

S∈Sx(S)c(S)

soggetto a∑

S:e∈Sx(S) ≥ 1 ∀e ∈ U

x(S) ∈ {0, 1} ∀S ∈ S.

La versione rilassata del sistema di PL e

minimizzare∑

S∈Sx(S)c(S)

soggetto a∑

S:e∈Sx(S) ≥ 1 ∀e ∈ U

x(S) ≥ 0 ∀S ∈ S.

Introducendo una variabile ye per ogni vincolo del problema otteniamo il programma duale

massimizzare∑

e∈Uye (86)

soggetto a∑

e:e∈Sye ≤ c(S) ∀S ∈ S (87)

ye ≥ 0 ∀e ∈ U. (88)

Come possiamo interpretare il duale? Un modo intuitivo di pensare il sistema di PL (86) equello di immaginare che le variabili ye rappresentino “roba” che abbiamo “impacchettato”in ogni elemento corrispondente e ∈ U , e stiamo cercando di massimizzare l’ammontaredi roba impacchettata, sotto la condizione che l’ammontare di roba impacchettata inogni S ∈ S, data da

∑e:e∈S ye, non debba superare la “capacita ” dell’insieme S, qui

rappresentata dal suo costo c(S).

Page 65: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 7 60

L’interpretazione appena data al duale di dovrebbe aiutare nel nostro primo obi-ettivo che, ricordiamo, consiste nel dedurre dall’algoritmo greedy per Set Coverun’assegnazione di valori alle variabili del sistema duale di PL, ovvero alle ye, ∀e ∈ U , taleche il valore SOL della soluzione prodotta dall’algoritmo greedy sia esprimibile come

SOL =∑

e∈Uye.

E il momento di ricordare l’algoritmo greedy per Set Cover

Algoritmo Greedy per Set Cover

1. C ← ∅, S ′ ← ∅ % (S ′ e il cover che vogliamo costruire, C e l’insieme degli elementi di U finora

coperti)

2. While C 6= U do

• Trova l’insieme S ∈ S con il valore c(S)/(|S − C|) minimo

• Sia α← c(S)/(|S − C|) tale valore minimo

• Per ogni e ∈ S − C poni prezzo(e) ← α

• Poni S ′ ← S ′ ∪ {S}, C ← C ∪ S

3. Output S ′

Piu importante ancora e ricordare che nella Lezione 2 abbiamo provato che

SOL =∑

e∈Uprezzo(e).

Ecco quindi trovato l’assegnamento alle variabili ye che cercavamo: bastera porre

ye = prezzo(e) ∀e ∈ U

ed avremoSOL =

e∈Uye.

Ovviamente, non e certo detto che tale assegnazione di valori alle variabili ye sia ammissi-bile, ovvero che rispetti il vincolo (87). Infatti, dall’analisi dell’algoritmo greedy effettuatenella Lezione 2 cio che sappiamo valere e

e ricoperti per la prima volta da S

prezzo(e) =∑

e ricoperti per la prima volta da S

ye = c(S) ∀S ∈ S

il che implica che la diseguaglianza del vincolo (87) in generale non vale (essendo il membrosinistro della diseguaglianza (87) una somma su di un numero di termini in generale mag-giore). Eseguiamo allora il secondo passo del procedimento che abbiamo prima descritto,

Page 66: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 7 61

ovvero dividiamo i valori ye per un’opportuna quantita in modo da ottenere una soluzioneammissibile per il duale (86). Poniamo

∀e ∈ U ze =yeHn

=prezzo(e)

Hn. (89)

dove Hn =∑ni=0 1/i. Proviamo ora che il vettore z definito dalla (89) e una soluzione

ammissibile al sistema di PL duale dato da (86). A tal fine occorre provare che∑

e∈Sze ≤ c(S) ∀S ∈ S. (90)

La prova ricalca una analoga prova effettuata nella Lezione 2. Consideriamo un genericoS ∈ S e numeriamo i suoi elementi nell’ordine in cui essi vengono coperti per la prima voltadall’algoritmo greedy. Sia quindi S = {e1, . . . , ek}. Consideriamo l’istante in cui l’elementoei viene ricoperto per la prima volta. Cio vuol dire che in questo passo dell’algoritmol’insieme S contiene almeno k − i + 1 elementi non coperti. Pertanto, l’insieme S stessopotrebbe coprire ei ad un costo medio ≤ c(S)/(k − i + 1). Poiche l’algoritmo greedysceglie ad ogni passo l’insieme X ∈ S che ha il miglior rapporto costo/(numero di elementiche ricopre per la prima volta), ne segue che l’insieme scelto dall’algoritmo greedy avraun costo medio di copertura sicuramente ≤ c(S)/(k − i + 1). Cio implica anche cheprezzo(ei) ≤ c(S)/(k − i+ 1), ovvero

zei ≤1

Hn· c(S)

k − i+ 1.

Sommando su tutti gli elementi di S otteniamo

k∑

i=1

zei ≤c(S)

Hn·(

1

k+

1

k − 1+ . . . + 1

)

=Hk

Hnc(S) ≤ c(S)

e quindi il vettore z e ammissibile per il duale.

A questo punto, ricordando dalla Lezione 2 che il valore SOL della soluzione ritornatadall’algoritmo greedy e pari a

∑e∈U prezzo(e), otteniamo

SOL =∑

e∈Uprezzo(e)

= Hn

e∈Uze (dalla (89))

≤ HnOPTR (in quanto z e ammissibile per il duale)

≤ HnOPT.

Abbiamo quindi (ri)provato che l’algoritmo greedy ha un fattore di approssimazione Hn.

Due osservazioni sono in ordine

Page 67: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 7 62

1. Questo modo di procedere ci fa meglio capire qual e la limitazione inferiore a OPTche usammo a suo tempo per valutare il fattore di approssimazione dell’algoritmogreedy per Set Cover . Infatti, che (

∑e∈U prezzo(e)/Hn) sia ≤ OPT discende

ora immediatamente dal fatto che (∑e∈U prezzo(e)/Hn) e il valore della funzione

obiettivo del duale in corrispondenza ad una soluzione ammissibile di esso. Pertantola diseguaglianza (

∑e∈U prezzo(e)/Hn) ≤ OPT e una immediata conseguenza del

Teorema della dualita debole .

2. Questo modo di procedere ci permette di ottenere in maniera semplice anche unaanalisi pio precisa dell’algoritmo greedy. Poniamo infatti

t = maxS∈cS

|S| e Ht =t∑

i=1

1

i.

E semplice verificare che il vettore z definito dalle componenti

ze =prezzo(e)

Ht∀e ∈ U

e soluzione ammissibile al duale (86). Da cio segue che

SOL =∑

e∈Uprezzo(e) ≤ HtOPT

che e in generale migliore della limitazione SOL ≤ HnOPT.

In quel che segue illustreremo brevemente una tecnica per derivare un algoritmo diapprossimazione direttamente dal duale del sistema di PL che descrive il problema in ques-tione (invece di usare il duale solo come strumento nell’analisi di un algoritmo ottenuto aparte, come abbiamo appena fatto di sopra). Descriveremo la tecnica prendendo come es-empio il problema dell’ Hitting Set . Ricordiamo innanzitutto il problema dell’HittingSet (in versione semplificata).

HITTING SET

• Input:

– insieme U = {e1, . . . , en}, famiglia S = {S1, . . . , Sm} di sottoinsiemi di U ,

– funzione costo c : e ∈ U → R+,

• Output: sottoinsieme H ⊆ U di costo c(H) =∑e∈H c(e) minimo tale che

|H ∩ S| ≥ 1 ∀S ∈ S.

Page 68: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 7 63

La sua formulazione via PL e la seguente.

minimizzare∑

e∈Ux(e)c(e) (91)

soggetto a∑

e∈Sx(e) ≥ 1 ∀S ∈ S (92)

x(e) ∈ {0, 1} ∀e ∈ U. (93)

La versione rilassata del problema (91) e

minimizzare∑

e∈Ux(e)c(e) (94)

soggetto a∑

e∈Sx(e) ≥ 1 ∀S ∈ S (95)

x(e) ≥ 0 ∀e ∈ U. (96)

Introducendo una variabile yS per ogni vincolo (95), otteniamo il seguente sistema di PLduale a (94)

massimizzare∑

S∈SyS (97)

soggetto a∑

S:e∈SyS ≤ c(e) ∀e ∈ U (98)

yS ≥ 0 ∀S ∈ S. (99)

L’algoritmo che proponiamo per Hitting Set costruisce una soluzione H ⊆ U nelseguente modo: vengono messi in H tutti e solo quegli elementi e ∈ U per cui il cor-rispondente vincolo ∑

S:e∈SyS ≤ c(e)

del duale e soddisfatto con il segno di eguaglianza. Qual’e la intuizione dietro questo mododi procedere? Cio che stiamo in effetti facendo e la cosa seguente: stiamo costruendo unasoluzione a Hitting Set (ovvero al sistema di PL che lo rappresenta) ponendo la variabilex(e) al valore 1 (ovvero ponendo e nella soluzione) se e solo se

∑S:e∈S yS = c(e). In altri

termini, stiamo costruendo una soluzione a valori interi al primale imponendo inoltre cheessa soddisfi la condizione di slackness primale. Abbiamo quindi il seguente algoritmo

Algoritmo per Hitting Set via Duale

1. Risolvi il sistema di PL duale (97), e sia y la sua soluzione ottima2. H ← ∅3. for e ∈ U

if∑S:e∈S yS = c(e)

then H ← H ∪ {e}4. Return H

Page 69: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 7 64

Mostriamo che l’insieme H ritornato dall’algoritmo, ovvero l’insieme

H = {e ∈ U :∑

S:e∈SyS = c(e)} (100)

e una soluzione per il probleam dell’Hitting Set , ovvero vale che ∀S ∈ cS si haH∩S 6= ∅.Se infatti fosse H ∩ T = ∅ per qualche T ∈ S, cio vorrebbe dire che

∀u ∈ T∑

S:u∈SyS < c(u).

Osserviamo ora che la variabile yT compare nei vincoli di sopra del sistema di PL duale(97) e solo nei vincoli di sopra. Quindi, potremmo aumentare il valore della variabile yT ,in modo tale che i corrispondenti vincoli del sistema (97) siano ancora soddisfatti. Macio equivale a dire che possiamo trovare un’altra soluzione al sistema (97) migliore di y,contro la ipotizzata ottimalita della soluzione y.

Stimiamo infine il fattore di approssimazione dell’algoritmo proposto. Abbiamo

SOL =∑

e∈Hc(e)

=∑

e∈H

S:e∈SyS (dalla (100))

=∑

S

|H ∩ S|yS .

L’ultima uguaglianza la si ottiene in quanto ogni yS compare nella somma una volta perogni e ∈ H che appartiene anche a S. Se quindi sapessimo che esiste un α tale che ogniqualvolta yS > 0 allora |H ∩ S| ≤ α, allora otterremmo

SOL =∑

S

|H ∩ S|yS

≤ α∑

S

yS

≤ αOPTR (in quanto y e ammissibile per il duale)

≤ αOPT

Per esempio, detto k = max{|S| : S ∈ S}, otteniamo banalmente che α ≤ k, e quindiotterremmo un’altro algoritmo di approssimazione per Hitting Set con fattore di ap-prossimazione k, diverso dall’algoritmo considerato nella Lezione 5.

Page 70: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 8 65

Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005

Lezione 8

Docente: Ugo Vaccaro

Ricordiamo ancora una volta il nostro “meta-algoritmo” per il progetto di algoritmi diapprossimazione:

1. Formula il problema in questione come un problema di PL a vincoli interi

2. Rilassa il problema, sostituendo i vincoli di interezza con semplici vincoli di nonnegativita

3. Usa la soluzione al problema rilassato per ottenere una soluzione al problema avincoli interi, di valore prossimo all’ottimo

Nelle lezioni scorse abbiamo visto vari metodi per implementare il passo 3. In questalezione ne vedremo un’ulteriore, abbastanza simile all’ultimo metodo visto ed applicatonella lezione scorsa. Intendiamo riferirci all’uso diretto del duale e delle condizioni comple-mentari di slackness, cosı come usate per progettare un algoritmo di approssimazione perHitting Set . La differenza con il metodo che vedremo oggi consiste nel fatto che esso,invece di risolvere innanzitutto il sistema duale e poi usare la sua soluzione e le condizionicomplementari di slackness per costruire una soluzione intera al primale, costruisce passopasso una soluzione al duale, imponendo che la condizione complementare di slacknessduale sia sempre soddisfatta. Il metodo risulta essere maggiormente flessibile di quellovisto nella lezione scorsa, in quanto nella costruzione della soluzione del duale (visto chela realizziamo noi) ci permette in linea teorica di poter conto di addizionali informazioniche potremmo eventualmente avere sulla struttura del problema di ottimizzazione sottoesame. Inotre risulta essere piu veloce in pratica, in quanto non richiede la soluzione pre-liminare di un sistema di PL. Useremo la formulazione di PL del problema in questionesolo come una guida per il progetto e l’analisi dell’algoritmo. Il metodo generale (che vasotto il nome di Primale-Duale) lo possiamo descrivere nella Figura 1 appresso presentata.

Per illustrare l’applicazione dello schema della Figura 1 ad algoritmi di approssi-mazione, applichiamo il metodo al primo problema di ottimizzazione visto in questo corso:Vertex Cover . Ricordiamo il problema

Page 71: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 8 66

NO

SI

Incrementa y mantenendola sua ammissibilita’

Esiste x soluzione intera ammissibile per ilprimale e slack. complementarea y?

y 0, x 0

StopOutput x

Figure 1: Schema generale per Primale Duale

VERTEX COVER

• Input:

– grafo G = (V,E), V = {v1, . . . , vn}, E = {e1, . . . , em}

• Output: sottoinsieme S ⊆ V di minima cardinalita |S| tale che ∀(u, v) ∈ E valga{u, v} ∩ S 6= ∅.

La sua formulazione via PL e :

minimizzare∑

v∈Vxv (101)

soggetto a xu + xv ≥ 1 ∀e = (u, v) ∈ E (102)

xv ∈ {0, 1} ∀u ∈ V . (103)

Il corrispondente sistema rilassato e

minimizzare∑

v∈Vxv (104)

Page 72: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 8 67

soggetto a xu + xv ≥ 1 ∀e = (u, v) ∈ E (105)

xv ∈ [0, 1] ∀u ∈ V . (106)

Per derivare il duale di (104) introduciamo una variabile duale ye per ogni vincolo (105),ottenendo il sistema

massimizzare∑

e∈Eye (107)

soggetto a∑

e:v∈eye ≤ 1 ∀v ∈ V (108)

ye ∈ [0, 1] ∀e ∈ E. (109)

E istruttivo, per un momento, osservare una particolare classe di soluzioni al sistema (107).Sia M un matching del grafo G, ovvero una collezione di archi disgiunti di G. Definiamoil vettore z = (ze1 , . . . , zem) come

zei =

{1 se ei ∈M ,0 se ei /∈M .

E semplice verificare che z e una soluzione ammissibile al sistema (107), in particolare chesoddisfa i vincoli (108), proprio perche , corrispondendo z ad un matching in G, su ognivertice v ∈ V incide uno ed un solo arco di M . Pertanto, dal Teorema debole della dualitaabbiamo che

|M | =∑

e∈Eze ≤ OPT,

dove OPT e il valore della soluzione ottima al sistema di PL (101), ovvero OPT e lacardinalita di un Vertex Cover per G di cardinalita minima. Ritroviamo quindi, comeconseguenza del Teorema della dualita debole, la limitazione inferiore alla cardinalita delVC di cardinalita minima derivato nella Lezione 1.

Vediamo ora come e possibile derivare un algoritmo di approssimazione per VertexCover usando lo schema generale Primale-Duale illustrato nella Figura 1. Lo schema cisuggerisce di partire con una soluzione y ammissibile per il duale (107), in cui tutte lecomponenti sono poste a 0, ed una soluzione non ammissibile x al primale intero (101) incui tutte le componenti sono poste a 0. Se x non e ammissibile (e fin quando lo sara ),vuol dire che ∃e = (u, v) ∈ E tale che il relativo vincolo (102) non e soddisfatto, ovverovale

xu + xv = 0. (110)

Allora, sempre in accordo allo schema generale Primale-Duale della Figura 1, incrementi-amo la corrispondente variabile duale ye il piu possibile, mantenendo il rispetto dei vincolidel duale, ed in modo tale che il vincolo (108) sia soddisfatto con l’uguaglianza. In altritermini, nel nostro caso specifico del Vertex Cover , stiamo ponendo ye = 1. Poiche lo

Page 73: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 8 68

schema generale Primale-Duale ci impone che le condizioni di slackness primali debbanoessere sempre soddisfatte, dobbiamo porre anche

xu = xv = 1,

in quanto adesso i vincoli duali ∑

e:v∈eye ≤ 1

sono soddisfatti con l’uguaglianza sia per il vertice u che per il vertice v. In altre parole,stiamo mettendo sia il vertice u che il vertice v nella costruenda soluzione S per il problemadel Vertex Cover .

Iteriamo il procedimento: ogni qualvolta troviamo un vincolo nel primale intero cheil vettore x non soddisfa ancora (ovvero, troviamo un qualche e = (u, v) ∈ E per cuixu + xv = 0), poniamo ye = 1 nella soluzione del duale, imponendo poi che le condizionidi slackness primali siano soddisfatte per x, cioe incrementiamo le componenti xu e xv a1.

Prima o poi otterremo una soluzione intera x che soddisfa tutti i vincoli del primale(101), con x che soddisfa anche

v∈Vxv =

v∈V

(∑

e:v∈eye

)xv (111)

=∑

e∈E

(∑

v∈exv

)ye (112)

≤ 2∑

e∈Eye (113)

≤ 2OPTR ≤ 2OPT (114)

dove la uguaglianza (111) vale in quanto∑e:v∈e ye = 1 per costruzione, per tutti i vertici

v per cui xv = 1; la uguaglianza (112) la si ottiene riorganizzando la somma; la dis-eguaglianza (113) vale in quanto il vettore x e ammissibile per il primale e quindi soddisfatutti i vincoli di (101).

Abbiamo quindi (ri)ottenuto un algoritmo di approssimazione con fattore 2 per ilproblema del Vertex Cover . Una analisi attenta di esso ci informa che l’algoritmoappena ottenuto, mediante il metodo Primale-Duale, e perfettamente analogo a quellopresentato nella Lezione 1. Infatti, nell’algoritmo appena derivato noi inseriamo nellasoluzione S, ad ogni passo dell’algoritmo, entrambi i vertici u e v corrispondenti ad unarco e = (u, v) per cui abbiamo posto ye = 1 nel duale. D’altra parte, il vettore y e semprecostretto ad essere una soluzione ammissibile a (107), ovvero deve rispettare i vincoli

e:v∈eye ≤ 1 ∀v ∈ V.

Page 74: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 8 69

Questo implica che ∀v ∈ V uno solo degli ye nella somma di sopra puo assumere valore 1,cioe uno solo degli ye corrispondenti ad archi e incidenti su v puo essere posto ad 1. Diconseguenza, l’insieme A = {e : ye = 1} e una collezione di archi disgiunti (un matching),per ogni iterazione dell’algoritmo. Al completamento dell’algoritmo l’insieme A e ovvia-mente un matching massimale, mentre la soluzione S prodotta dall’algoritmo corrispondeevidentemente all’insieme dei vertici incidenti sugli archi del matching massimale A.

Applichiamo ora la tecnica Primale-Duale al problema del Set Cover . Ricordiamola sua formulazione

SET COVER

• Input:

– insieme U = {e1, . . . , en}, famiglia S = {S1, . . . , Sk}, con Si ⊆ U , per i = 1, . . . , k;

– funzione costo c : S ∈ S → c(S) ∈ R+;

• Output: sottofamiglia S ′ ⊆ S di costo c(S ′) =∑S∈S′ c(S) minimo tale che⋃

S∈S′ S ⊇ U .

La sua formulazione via PL e

minimizzare∑

S∈Sx(S)c(S) (115)

soggetto a∑

S:e∈Sx(S) ≥ 1 ∀e ∈ U (116)

x(S) ∈ {0, 1} ∀S ∈ S. (117)

La versione rilassata del sistema di PL e

minimizzare∑

S∈Sx(S)c(S) (118)

soggetto a∑

S:e∈Sx(S) ≥ 1 ∀e ∈ U (119)

x(S) ≥ 0 ∀S ∈ S. (120)

Introducendo una variabile ye per ogni vincolo del problema otteniamo il programma duale

massimizzare∑

e∈Uye (121)

soggetto a∑

e:e∈Sye ≤ c(S) ∀S ∈ S (122)

ye ≥ 0 ∀e ∈ U. (123)

Page 75: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 8 70

Il seguente algoritmo implementa la strategia Primale-Duale per il problema del SetCover .

Algoritmo Primale-Duale per SET COVER

I ← ∅

ye ← 0 ∀e ∈ U

While ∃e ∈ U tale che e /∈ ⋃j∈I Sj do

Sia ` l’indice per il quale il minh:e∈Sh{c(Sh)−∑a∈Sh ya} e raggiunto

ε` ← c(S`)−∑a∈S` ya

ye ← ye + ε`

I ← I ∪ {`}

Return I

Lemma 6 L’algoritmo Primale-Duale ritorna un set cover.

Proof. Ovvio, in quanto la condizione di terminazione per il ciclo While e proprio chesi sia raggiunto un set cover.

Lemma 7 L’algoritmo Primale-Duale costruisce una soluzione y ammissibile per il duale.

Proof. Procediamo per induzione sui cicli dell’algoritmo. Il caso base e ovvio in quantoall’inizio vale ovviamente

a∈Shye = 0 ≤ c(Sh), ∀h = 1, . . . m.

Per il passo induttivo, assumiamo induttivamente che entrando in una iterazione del cicloWhile avevamo ∑

a∈Shye ≤ c(Sh), ∀h = 1, . . . m. (124)

La sola variabile duale il cui valore e incrementato dall’esecuzione del ciclo While e lavariabile ye (dove e e un elemento per cui e /∈ ⋃j∈I Sj), pertanto tutte le diseguaglianze(124) per gli insiemi Sh tali che e /∈ Sh rimangono inalterate e quindi continuano a valere.Se invece e ∈ Sh, allora per la nostra scelta dell’indice ` abbiamo che

a∈Shya + ε` =

a∈Shya + (c(S`)−

a∈S`ya)

≤∑

a∈Shya + (c(Sh)−

a∈Shya)

= c(Sh)

Page 76: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 8 71

Pertanto, i vincoli del duale sono soddisfatti anche dopo l’esecuzione del ciclo While, equindi, per il principio di induzione, anche alla terminazione dell’algoritmo.

Lemma 8 Se j ∈ I allora∑e∈Sj ye = c(Sj).

Proof. Se in un qualche passo abbiamo aggiunto j a I, allora per come opera l’algoritmo,abbiamo anche aumentato ye, per qualche e ∈ Sj, tale da rendere il vincolo

∑e∈Sj ye ≤

c(Sj) soddisfatto con l’uguaglianza.

Teorema 8 L’algoritmo Primale-Duale per Set Cover e un algoritmo di approssi-mazione con fattore di approssimazione f , dove f = maxe∈U f(e), e f(e) = numero diinsiemi S ∈ S che contengono e.

Proof. Abbiamo

SOL =∑

j∈Ic(Sj)

=∑

j∈I

e∈Sjye

=∑

e∈Uye|{j : e ∈ Sj}

≤ f ·∑

e∈Uye

≤ f · OPT

dove la prima uguaglianza e per definizione, la seconda a causa del Lemma 8, la terzain quanto la variabile ye compare nella somma tante volte quanti sono gli insiemi Sj checontengono il corrispondente e, la quarta per definizione di f , e l’ultima per il Teoremadella dualita debole.

Concludiamo la lezione affermando che la tecnica Primale-Duale sembra essere atutt’oggi la metodologia piu efficace per il progetto di algoritmi di approssimazione. Si evisto in tempi recenti che vari algoritmi derivati negli anni scorsi mediante procedimentiad hoc, sono in realta interpretabili come esempi di algoritmi Primale-Duale. Inoltre, inmolti casi, la tecnica Primale-Duale ha prodotto algoritmi di approssimazione che risultanoessere, a tutt’oggi, i migliori sia in termini di fattore di approssimazione, che in termini dicomplessita computazionale.

Page 77: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 9 72

Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005

Lezione 9

Docente: Ugo Vaccaro

Finora abbiamo studiato algoritmi di approssimazione per problemi computazional-mente difficili, (ovvero problemi di ottimizzazione la cui la versione decisionale e NP-HARD). Per questi problemi ad ogni possibile istanza di input e associato un insieme dipossibili soluzioni e la difficolta consiste nel trovare per ogni istanza di input una soluzioneche abbia costo minimo, se il problema e un problema di minimizzazione, o profitto mas-simo (se il problema e un problema di massimizzazione). Per tali problemi di ottimiz-zazione abbiamo studiato varie tecniche per produrre soluzioni che non si discostasseromolto da quella ottima. Tutta la teoria finora sviluppata si basa su una assunzione cru-ciale, e cioe che l’input al problema sia interamente noto prima che l’algoritmo inizi lesua computazioni. Tuttavia, in pratica non e sempre cosı, ovvero in molte situazioni diinteresse pratico l’ input al problema ci viene data sequenzialmente, poco per volta, edogni volta che riceviamo una nuova parte dell’input, ci viene anche richiesto di produrreuna parte dell’ output, senza ovviamente conoscere il resto della sequenza input.

Il primo esempio di problemi siffatti che studieremo e il problema della gestione effi-ciente della paginazione della memoria cache. Ricordiamo che i calcolatori sono dotati dimemorie (secondaria, cache, RAM) aventi caratteristiche diverse, sia per quanto riguardala dimensione che i tempi di accesso. Inoltre, dal punto di vista concettuale i diversi tipi dimemoria possono essere organizzati in una gerarchia realizzata in base al principio di lo-calizzazione temporale e spaziale: le pagine (ovvero unita di memoria a dimensione fissata)usate piu spesso e quelle che si trovano in locazioni di memoria vicine, vengono caricatenella memoria piu veloce (la cache) in modo da garantirne un recupero immediato al mo-mento in cui vengono richieste. In particolare, quando la CPU richiede un dato, inizia lasua ricerca dalla memoria cache (la piu veloce ma anche la piu piccola). Nel caso di esitonegativo della ricerca (cio avviene quando il dato non e recuperato in quanto la pagina chelo contiene non e presente nella cache), la ricerca continua alla memoria RAM, la quale sioccupa di inviare alla cache la pagina contenente il dato richiesto. Una richiesta di accessoad un dato non presente in alcuna pagina nella cache (ed il conseguente spostamento dellapagina che contiene il dato dalla RAM alla cache) viene denominato page fault. La ges-tione di un page fault e generalmente onerosa, in quanto richiede la esecuzione di svariateoperazioni ausiliarie, e sarebbe quindi opportuno avere politiche di gestione della memoriache minimizzino il numero di page fault. Il problema della paginazione della cache entra ingioco proprio nella gestione di page faults, in quanto se la cache e piena occorre eliminarequalche pagina da essa per far posto alla nuova pagina, contenente il dato richiesto, cheoccorre spostare dalla RAM alla cache. Sarebbe desiderabile avere un metodo che ci dica,all’occorrere di page faults, quale pagina espellere dalla cache in modo tale che il numero

Page 78: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 9 73

totale dei page faults venga minimizzato.

Per vedere come cio possa essere realizzato, occorre precisare ulteriormente i terminidel problema.

Abbiamo

• una memoria RAM contenente n pagine P1, . . . , Pn

• una memoria cache che puo contenere ad ogni istante k pagine, dove si assume ingenerale che k sia molto piu piccolo di n

• una sequenza di richieste σ = σ(1)σ(2) . . . σ(m), dove ogni σ(i), per i = 1, . . . m,rappresenta una richiesta ad una qualche pagina P ∈ {P1, . . . , Pn}

• un costo costo(σ(i)) per soddisfare la richiesta σ(i), definito come

costo(σ(i)) =

{1 se la pagina richiesta /∈ ga alla cache0 se la pagina richiesta ∈ gia alla cache.

Il problema e progettare un algoritmo che decida, ad ogni page-fault, quale pagina espelleredalla memoria cache, al fine di minimizzare il numero totale di page-fault della sequenzadelle pagine richieste. In altri temini, cerchiamo un un algoritmo che minimizzi il costo

costo(σ) =m∑

i=1

costo(σ(i))

per ogni possibile sequenza di richieste σ.

Si presentano immediatamente due difficolta di tipo pratico e concettuale:

1. Come progettare l’algoritmo?Stiamo chiedendo di sviluppare un algoritmo che minimizzi il numero di page-faultsenza pero conoscere quali sono le richieste future alla richiesta che ha creato ilfault. Noi non conosciamo la parte dell’input dell’algoritmo successiva alla richiestacorrente di pagina, quindi in base a quale criterio l’algoritmo dovra scegliera lapagina da espellere? Cio che in altri termini stiamo dicendo, e che in generalesembra difficile progettare algoritmi che operino bene sul futuro senza conoscerlo.

2. Come misurare la “bonta” dell’algoritmo, ovvero il costo in cui incorre?Finora abbiamo sempre analizzato la complessita computazionale degli algoritmisulla base del loro comportamento nel caso peggiore. Ma nella situazione che stiamoora studiando cio non ha ovviamente senso. Infatti, tutti gli algoritmi, anche ilmigliore, nel caso peggiore andranno malissimo. Supponiamo infatti di avere ungenerico algoritmo A e supponiamo che in corrispondenza di un dato page faultl’algoritmo A decida di espellere la pagina P dalla cache. Nel caso peggiore potrebbeaccadere che la stessa pagina P venga immediatamente richiesta, creando quindi unnuovo page fault. Allora l’algoritmo A per poter portare di nuovo P nella memoria

Page 79: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 9 74

cache dovra espellere un’altra pagina, sia essa P ′, che potrebbe essere ovviamentela nuova pagina richiesta all’istante successivo, creando un nuovo page fault, e cosıvia. In altri termini, qualunque sia il comportamento dell’algoritmo A, e semprevero che nel caso peggiore esiste una sequenza σ di m richieste a pagine che possonocostringere A ad effettuare m page fault. Il succo di queste considerazioni e che seadottassimo il comportamento dell’algoritmo nel caso peggiore come misura dellacomplessita dell’algoritmo, allora tutti gli algoritmi avrebbero la stessa complessita.

E chiaro che quanto appena detto (ovvero valutare gli algoritmi in questo scenario secondoil loro comportamento nel caso peggiore) non ha alcun senso.

In pratica, inoltre, si vede che gli algoritmi di paging realmente usati dai sistemioperativi innanzitutto non incorrono in numeri elevati di page fault, ed inoltre differentialgoritmi tendono ad esibire diverse compessita . Possiamo quindi dire che nel caso dialgoritmi che devono operare ed effettuare scelte sotto la ipotesi di conoscenza parzialedell’input e di ignoranza dell’input futuro che si possa presentare, e errato utilizzare il lorocomportamento nel caso peggiore come misura della loro efficienza.

L’aspetto realmente nuovo di questo scenario risiede nel fatto che l’input all’algoritmoviene fornito passo-passo, in maniera sequenziale. Pertanto, sarebbe sensato valutarequanto si perde, ovvero quanto costa, passare dalla conoscenza totale dell’input a quellaparziale o sequenziale. Introduziamo quindi un nuovo strumento per l’analisi degli algo-ritmi, chiamata

Analisi Competitiva di Algoritmi.

Un algoritmo on-line e un algoritmo A cui viene presentata una sequenza

σ = σ(1)σ(2). . . σ(m)

di richieste, e l’algoritmo effettua una decisione in corrispondenza di ogni richiesta σ(i),basandosi solo sulla conoscenza delle richieste note finora σ(j), j ≤ i.

Sia costA(σ) il costo dell’algoritmo on-line A sulla sequenza σ (il costo dipendera dallaparticolare applicazione sotto esame, ad esempio nel caso del paging sara il numero totale dipage-fault cui l’algoritmo A incorre quando la sequenza σ di richieste a pagine di memoriagli viene data in input). L’algoritmo on-line A e detto un algoritmo c-competitivo seesistono delle costanti c ed a tali che per ogni sequenza input σ vale che:

costA(σ) ≤ c× costOPT (σ) + a

dove costOPT (σ) e il costo del migliore algoritmo off-line, ovvero del miglior algoritmo cheopera conoscendo tutta la sequenza input σ fin dall’inizio.

La definizione appena data misura correttamente quanto costa “l’ ignoranza” del fu-turo, ovvero il passaggio da algoritmi off-line ad algoritmi on-line. Quindi se A e un

Page 80: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 9 75

algoritmo on-line c-competitivo, allora esso, su ogni sequenza input, non costera mai piudi c volte l’algoritmo ottimo off-line che conosce fin dall’inizio tutta la sequenza (checostituisce ovviamente la situazione ideale ma irrealistica in pratica).

Torniamo al problema del paging. Il problema centrale dell’algoritmo e decidere adogni istante quale pagina eventualmente espellere dalla memoria cache, senza conoscere lerichieste future. Vari algoritmi sono stati proposti per risolvere il problema, tra i piu notied usati nella pratica vi sono i tre seguenti:

• LRU (Least Recently Used): ad ogni page-fault espelli dalla cache la pagina lacui ultima richiesta e piu antica;

• FIFO (First In First Out): ad ogni page-fault espelli la pagina che e stata posta,nella memoria cache, per prima tra le k che adesso vi risiedono;

• LIFO (Last In First Out): ad ogni page-fault espelli dalla cache la pagina che vie stata posta per ultima tra le k che adesso vi risiedono.

Vale il seguente risultato.

Teorema 9 L’algoritmo LRU e k-competitivo, ovvero vale che

costLRU(σ) ≤ k × costOPT (σ),

per ogni possibile sequenza di richieste σ.

Tale teorema e valido anche per l’algoritmo FIFO. Per questi due algoritmi e dunquedimostrabile che i rapporti costLRU(σ)/costOPT (σ) e costFIFO(σ)/costOPT (σ) non diver-gono, ma sono limitati dal valore k (la dimensione della memoria cache), qualunque sia lasequenza di richieste σ, e comunque essa sia lunga.

E inoltre dimostrabile, invece, che l’algoritmo LIFO non e c-competitivo, per qualsiasivalore del parametro c. In altri termini, l’algoritmo LIFO, su particolari sequenze dirichieste σ, puo produrre un numero di page-fault che non e limitato superiormente dalnumero di page-fault dell’algoritmo ottimo moltiplicato per c, qualunque sia il valore c.Ovvero, il rapporto costLIFO(σ)/costOPT (σ), per particolari sequenze di richieste σ, cresceindefinitamente, al crescere della lunghezza di σ.

Passiamo ora alla dimostrazione del teorema.

Sia σ = σ(1)σ(2) . . . σ(m) la sequenza di richieste di input. Partizioniamo la sequenzadi richieste σ in fasi

F (0), F (1), . . . , F (i), . . .

La definizione di fase e la seguente. Ogni fase F (i) e composta da una sottosequenza dirichieste consecutive di σ su cui l’algoritmo LRU ha esattamente k page-fault, e cio e vero∀i ≥ 1, mentre nella fase F (0) l’algoritmo LRU ha al piu k page-fault. La suddivisione

Page 81: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 9 76

in fasi e effettuabile nel seguente modo: esaminiamo la sequenza σ dalla fine e, in basealle richieste, contiamo il numero di page-fault in cui LRU e incorso. Appena ne abbiamoesattamente k allora raggruppiamo le richieste in una fase, e continuiamo in questo modocon ulteriori raggruppamenti. Alla fine otterremo una ultima fase, F (0), corrispondentead un numero di page fault ≤ k, (infatti se cio non fosse potremmo dividere le richiestein due fasi diverse).

Mostriamo innanzitutto la seguente asserzione circa il comportamento dell’algoritmo off-line ottimo (qualunque esso sia) sulle fasi sopra definite.

In ogni fase F (i), i ≥ 0, l’algoritmo ottimo ha almeno un page-fault. (125)

Prima di provare la asserzione (125) esaminiamone una sua immediata ed importanteconseguenza. Calcoliamo costLRU(σ). Avremo

costLRU(σ) = numero di page fault che LRU commette su σ

≤ k × numero di fasi

= k × (s+ 1)

D’altra parte la (125) implica che l’algoritmo ottimo ha almeno s+1 faults in totale quandogli viene sottoposta la sequenza di richieste σ (infatti l’algoritmo ottimo avra almeno unpage fault per ognuna delle (s+ 1) fasi F (i)), pertanto

costOPT (σ) ≥ (s+ 1).

Mettendo insieme le due diseguaglianze di sopra otteniamo:

costLRU(σ) ≤ k × (s+ 1)

≤ k × costOPT (σ),

che e esattamente l’enunciato del Teorema che vogliamo dimostrare. Ci resta quindi daprovare la (125).

A tal fine supporremo, senza perdita di generalita che sia LRU che l’algoritmo off-line ottimo partano con lo stesso contenuto nella memoria cache. Quindi appena unarichiesta in σ provochera il primo page fault per LRU (ed ovviamente cio avverra incorrispondenza ad una richiesta nella fase F (0)), tale richiesta provochera anche il primopage fault per l’algoritmo off-line ottimo. Ci resta quindi da provare la (125) solo peri ≥ 1. Piu precisamente, proveremo che in corrispondenza alle richieste della fase F (i),un qualunque algoritmo, e quindi in particolare anche quello ottimo, avra almeno un pagefault.

Consideriamo la generica fase F (i), i ≥ 1. Essa corrispondera alle richieste che vannoda σ(ti) a σ(ti+1−1), per qualche coppia di indici ti e ti+1. Sia P l’ultima pagina richiestanella fase F (i − 1), quindi la pagina P sicuramente risiede nella memoria cache all’iniziodella fase F (i). Proviamo che:

Page 82: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 9 77

F (i) contiene almeno k richieste a pagine distinte e diverse da P (126)

Di nuovo, prima di provare la (126) discutiamo una sua immediata conseguenza. Sevale la (126), allora un qualunque algoritmo avra necessariamente un page fault nellafase F (i). Infatti, all’inzio della fase F (i) la pagina P e presente nella cache, e quindi lealtre k pagine distinte e diverse da P che sono richieste in F (i) non potranno essere tuttepresenti, almeno una di esse non lo sara , e quindi almeno un page fault avverra appenala corrispondente richiesta a tale pagina si presenta nella fase F (i). Pertanto, la (126)implica la (125), e conseguentemente il Teorema.

Dimostriamo quindi la (126) al fine di completare la dimostrazione del Teorema.

Ricordiamo che nella fase F (i) sono avvenute k page-fault per l’algoritmo LRU. Ciovuol dire che ci sono state k richieste a pagine che non risiedevano nella memoria cachedi LRU. Se tali pagine richieste sono tutte distinte tra loro e tutte diverse da P , allora la(126) e ovviamente dimostrata. Altrimenti si puo verificare uno dei seguenti due casi.

1. Le k richieste che hanno provocato i k page fault di LRU nella fase F (i) sono tuttediverse da P ma non sono tutte distinte tra loro. In altri termini, l’algoritmo LRUtra i suoi k page-fault ne ha due su una stessa pagina Q.

Ragioniamo allora nel seguente modo. Nella sequenza di richieste in F (i) ad uncerto punto ci sara il primo page-fault sulla pagina Q, e quindi la pagina Q verraportata nella memoria cache. Dopodiche avremo il secondo page-fault sulla stessapagina Q . Cio vuol evidentemente dire che la pagina Q era stata precedentementeespulsa dalla memoria cache. Come era potuto accadere cio ? Era ovviamente ac-caduto che ad un certo momento tra tutte le k pagine residenti nella memoria cache,la pagina Q era diventata la pagina acceduta piu lontanamente (cio perche stiamousando applicato l’algoritmo LRU). Detto in altre parole, cio che e accaduto e chedopo aver portato Q in memoria cache per la prima volta in conseguenza di unarichiesta alla pagina Q, vi sono state k − 1 richieste a pagine distinte da Q e tra diloro (che hanno fatto diventare Q la pagina acceduta piu lontanamente nel passatotra tutte le k residenti nella cache) poi vi e stata l’espulsione di Q in conseguenza diun’altra richiesta distinta ad una pagina non risiedente in memoria. In totale, dalmomento dell’inserimento di Q per la prima volta in memoria cache fino alla suaespulsione vi sono state almeno 1 + (k − 1) + 1 = k + 1 richieste a pagine distinte.Tra tali k + 1 richieste a pagine tutte distinte tra di loro, una sola puo essere perla pagina P , ovvero ve ne sono sicuramente almeno k distinte tra di loro e distintedalla pagina P , provando la (126).

2. Le k richieste che hanno provocato le k page fault di LRU nella fase F (i) sonotutte distinte tra di loro ma non sono tutte diverse da P. In altri termini, l’algoritmoLRU nella fase F (i) non fallisce mai due volte sulla stessa pagina, ma tra i suoik page fault e incluso anche uno causato da una richiesta alla pagina P.

Page 83: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 9 78

Il ragionamento e analogo a prima. Abbiamo che all’inzio della fase F (i) la pag-ina P e in memoria cache, per ipotesi. Poi vi e un page fault causato da unarichiesta alla pagina P . Cio vuol evidentemente dire che P era stata nel frattempoespulsa dalla cache. Ovvero, in accordo alla regola LRU, era accaduto che dopol’inserimento di P nella memoria cache alla fine della fase F (i − 1), vi erano statek − 1 richieste a pagine distinte da P e tra di loro (che hanno fatto diventare P lapagina acceduta piu lontanamente nel passato tra tutte le k residenti nella cache)poi vi e stata l’espulsione di P in conseguenza di un’altra richiesta distinta da P aduna pagina non risiedente in memoria. La cosa importante e che la pagina P allafine della fase F (i − 1) e in memoria cache, e poi durante la fase F (i) vi sono statealmeno k richieste a pagine non risiedenti in memoria e distinte da P , provando la(126) in tutti i possibili casi.

Si puo dimostrare che anche l’algoritmo FIFO e k-competitivo, procedendo in manieraperfettamente analoga a quanto fatto nel teorema appena dimostrato. Un altro risultatointeressante e il seguente, che mostra la ottimalita di LRU e FIFO tra gli algoritmicompetitivi per il problema del paging.

Teorema 10 Non esistono algoritmi per il problema del paging che siano k ′-competitivi,per un qualsiasi k′ < k.

Proof. Definiamo il seguente algoritmo off-line per il problema del paging:

• LFD: ad ogni page-fault espelli la pagina la cui prossima richiesta e piu lontana nelfuturo.

In particolare, si puo dimostrare che questo e il miglior algoritmo off-line, ma cio non enecessario ai fini della dimostrazione del teorema. Proviamo invece che per ogni sequenzaσ di richieste a pagine nell’insieme {P1, . . . , Pk, Pk+1} vale che:

costLFD(σ) ≤ |σ|k

(127)

dove |σ| e il numero di richieste nella sequenza σ.

Dimostriamo la (127). A tal fine, notiamo innanzitutto che ogni richiesta σ(i) siriferisce o ad una pagina gia nella memoria cache o all’unica pagina correntemente al difuori della memoria cache. Cio a causa della ipotesi che σ e una sequenza di richiestea pagine nell’insieme {P1, . . . , Pk, Pk+1}. Supponiamo ora che ad un certo istante, incorrispondenza alla richiesta σ(i), l’algoritmo LFD espella P . Ricordiamo che l’algoritmoLFD espelle sempre la pagina che verra richiesta piu lontanamente nel tempo futuro, tratutte le pagine attualmente risiedenti nella memoria cache. Quindi, se P viene espulsa daLFD in conseguenza della richiesta σ(i), cio implica che vi saranno, dopo la richiesta σ(i),

Page 84: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 9 79

necessariamente almeno k − 1 successive richieste alle altre pagine diverse da P , che peripotesi stanno gia in memoria, e quindi non creano alcun page fault. In altri termini, perogni k richieste consecutive della sequenza σ, possiamo avere al piu un page fault. Ovvero,

il numero di page fault di LFD e ≤ |σ|k

e quindi la (127) e dimostrata. Possiamo ora completare la dimostrazione del teorema.

Supponiamo di avere una generica sequenza σ = σ(1)σ(2) . . . σ(n) e consideriamo unarbitrario algoritmo on-line ALG. Specificheremo le σ(i) passo passo, a seconda delle de-cisioni su quali pagine da espellere dalla cache abbia preso l’algoritmo ALG. Supponiamoquindi che in corrispondenza ad una richiesta σ(i) alla pagina Pk+1, l’algoritmo ALGabbia deciso di di espellere dalla cache la pagina Pi. Assumiamo che σ(i+ 1) corrispondaad una richiesta alla pagine appena espulsa Pi. Vi sara ovviamente un page fault, conconseguente espulsione di una qualche pagina Pj . Possiamo allora assumere che σ(i + 2)corrisponda ad una richiesta a Pj , e cosı via, nel senso che in σ ogni successiva richiestaad un page fault si riferisce alla pagina precedentemente espulsa. Su una tale sequenza dirichieste σ l’algoritmo ALG avra n − k page fault (per le prime k richieste non ci sonopage-fault) e quindi

costALG(σ) = n− k.Se per assurdo l’algoritmo on line ALG fosse k ′-competitivo, per qualche valore k ′ < k,allora avremmo

costALG(σ) ≤ k′ × costOPT (σ) + a (128)

per qualche costante a e per ogni sequenza di richieste σ. D’altra parte, abbiamo appenamostrato che per una particolare sequenza di richieste σ di lunghezza n vale che

costALG(σ) = n− k

mentre per l’algoritmo LFD, in virtu della (127), per la stessa sequenza σ vale che

costLFD(σ) ≤ n

k.

La diseguaglianza di sopra implica anche che

costOPT (σ) ≤ costLFD(σ) ≤ n

k.

Pertanto, se fosse vera la (128) avremmo anche

n− k = costALG

≤ k′ × costOPT (σ) + a

≤ k′ ×(n

k

)+ a

Page 85: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 9 80

il che implicherebbe la diseguaglianza

n− k ≤ k′ × nk

+ a.

Cio e ovviamente assurdo per valori di n sufficientemente grandi, visto che il rapporto k ′/ke strettamente minore di 1. Possiamo quindi rigettare la ipotesi assurda, e concludere chenon esistono algoritmi k′-competitivi per il problema del paging, qualunque sia il valorek′ < k.

Page 86: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 10 81

Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005

Lezione 10

Docente: Ugo Vaccaro

In questa lezione continueremo a studiare algoritmi on-line. Considereremo il seguenteproblema

Aggiornamento di Liste

Il problema dell’aggiornamento di liste consiste nel mantenere una struttura datidizionario mediante una lista non ordinata. Dato un insieme di elementi rappresentatida una lista lineare, assumiamo di ricevere una sequenza σ = σ(1) . . . σ(m) di richieste,dove ogni richiesta σ(i) e una delle tre possibili operazioni

1. accesso ad un elemento della lista,

2. inserzione di un nuovo elemento nella lista,

3. cancellazione di un elemento dalla lista.

Stimiamo i costi di ciascuna delle tre operazioni sopra descritte.

• Per accedere ad un elemento, un algoritmo generico inizia la ricerca dalla testa dellalista e procede sequenzialmente fin quando l’elemento desiderato non viene trovato.Pertanto, se l’elemento da accedere si trova nella posizione i all’interno della lista,possiamo assumere che il costo per servire una richiesta di accesso e pari a i.

• Per inserire un nuovo elemento nella lista, l’algoritmo prima scandisce l’intera listaper verificare che l’elemento non e gia presente, e quindi inserice l’elemento in ques-tione alla fine della lista. Pertanto, se il numero di elementi nella lista primadell’inserzione e pari ad n, possiamo assumere che il costo per servire una richi-esta di inserimento e pari a n+ 1.

• Per cancellare un elemento dalla lista l’algoritmo prima effettua una ricerca pertrovare l’elemento, poi lo cancella. Pertanto, se l’elemento da cancellare si trovanella posizione i all’interno della lista, possiamo assumere che il costo per servireuna richiesta di cancellazione e pari a i.6

6Tecnicamente dovremmo dire che il costo per cercare, inserire, e cancellare e O(i), O(n) e O(i), rispet-tivamente, in quanto ogni operazione richiede anche un certo numero costante di operazioni ausiliarie(ad es., aggiornamento di puntatori della lista, etc.). Per semplicita , ignoreremo questi dettagli che nonmodificano la reale natura del problema.

Page 87: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 10 82

Mentre l’algoritmo effettua le operazioni necessarie per soddisfare una richiesta, esso puoanche scambiare di posizione gli elementi all’interno della lista, al fine di ridurre il costo persoddisfare eventuali richieste future. Ad esempio, immediatemente dopo aver eseguito unaoperazione di accesso o di inserzione di un elemento, l’algoritmo potrebbe voler spostarelo stesso elemento in una nuova posizione piu vicina alla testa della lista. Assumiamo chequesta operazione non ci costi nulla, e chiameremo questo tipo di operazioni scambi gratis.Usando scambi gratis l’algoritmo puo in linea di principio ridurre il costo per soddisfaresuccessive richieste. Il motivo per cui assumiamo che gli scambi gratis non costino nullaall’algoritmo risiede nel fatto che il “grosso” del lavoro e stato gia effettuato con l’accessoo l’inserimento dell’elemento, e quindi il suo eventuale spostamento verso la testa dellalista non rappresenta un onere ulteriore significativo. Un altro tipo di modifica all’ordinedegli elementi della lista puo essere effettuato mediante scambi di due specifici elementiadiacenti nella lista. Il costo di ciascuno di questi scambi e posto ad 1, e chiameremoquesto tipo di operazioni scambi pagati.

Il nostro obiettivo e quello di progettare un algoritmo che, in corrispondenza aduna sequenza di richieste σ = σ(1) . . . σ(m), il cui costo individuale di servizio e statoprima definito, riorganizzi la lista in modo da minimizzare il costo totale costo(σ) =∑mi=0 costo(σ(i)). L’idea intuitiva e di riorganizzare la lista spostando gli elementi piu

frequentemente acceduti verso la testa della lista. Anche in questo caso una analisidell’algoritmo basata sul suo comportamento nel caso peggiore non ha senso, in quanto esempre possibile avere una sequenza di richieste σ costantemente all’ultimo elemento dellalista. Su tali sequenze, ogni algoritmo avrebbe costo pari a m volte la lunghezza dellalista. Di nuovo, quindi, ha senso effettuare l’analisi del comportamento di algoritmi per ilproblema dell’aggiornamento delle lista mediante il concetto di competitivita .

Tra gli algoritmi per l’aggiornamento di liste, probabilmente i piu noti sono i seguenti

• Move-to-Front (MTF): Muovi l’elemento richiesto alla testa della lista.

• Transpose: Scambia l’elemento richiesto con quello immediatamente precedentenella lista.

• Frequency-Count: Mantieni un contatore delle frequenza di accesso per ciascunelemento della lista. Ogni qualvolta un elemento e acceduto incrementa il suo conta-tore di 1. Mantieni la lista in modo tale che gli elementi appaiono sempre nell’ordinedi frequenze di accesso non crescente.

Proveremo il seguente risultato.

Teorema 11 L’algoritmo MTF e 2-competitivo, ovvero per ogni sequenza di richieste σvale che

costoMTF(σ) ≤ 2 · costoOPT (σ),

dove costoOPT (σ) e il costo dell’algoritmo ottimo off-line che conosce tutta la sequenza σfin dall’inizio.

Page 88: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 10 83

Proof. Consideriamo una arbitraria sequenza di richieste di accesso σ = σ(1) . . . σ(m).Confronteremo il comportamento di MTF e dell’algoritmo ottimo (chiamiamolo OPT )off line su ciascuna richiesta σ(i) della sequanza σ usando una funzione ausiliaria Φ chedefiniamo di sotto.

Diremo che una coppia di elementi x e y formano una inversione se x occorre primadi y nella lista di MTF, mentre x occorre dopo di y nella lista di OPT . Assumeremo chegli algoritmi MTF e OPT partano con la stessa lista.

Per ogni valore di t, 1 ≤ t ≤ m, sia costoMTF(t) il costo in cui incorre l’algoritmoMTF nel servire la richiesta σ(t), e sia analogamente costoOPT (t) il costo in cui incorrel’algoritmo OPT nel servire la richiesta σ(t). Inoltre, sia Φ(t) il numero di inversioni che sihanno dopo che la richiesta σ(t) e stata servita. In virtu del fatto che gli algoritmi MTFe OPT partono con la stessa identica lista, possiamo senz’altro assumere per convenzioneche Φ(0) = 0. Mostreremo innanzitutto che

∀ t costoMTF(t) + Φ(t)− Φ(t− 1) ≤ 2costoOPT (t)− 1. (129)

Prima di provare la validita della formula (129), esaminiamone una sua importante con-seguenza. Abbiamo

costoMTF(σ) =m∑

t=1

costoMTF(t) (130)

≤m∑

t=1

(2costoOPT (t)− 1− Φ(t) + Φ(t− 1)) (dalla (129)) (131)

= 2costoOPT (σ)−m− Φ(m) + Φ(0) (132)

≤ 2costoOPT (σ), (133)

dove l’ultima diseguaglianza la si ottiene in quanto Φ(0) = 0 e Φ(m) ≥ 0. Pertanto, vistoche la (129) implica l’enunciato del Teorema, concentriamoci sulla prova della (129).

Supponiamo per il momento che σ(i) sia una richiesta di accesso ad un elemento kidella lista. Sia ti la posizione dell’elemento ki nella lista di MTF prima che la richiestaσ(t) venga esaminata, ed analogamente sia si la posizione dell’elemento ki nella lista diOTP prima che la richiesta σ(t) venga esaminata. Sia inoltre Pi il numero di scambipagati che l’algoritmo OPT decide di usare nell’eseguire la richiesta σ(i) (si ricordi chel’algoritmo MTF non usa scambi pagati). Abbiamo quindi

costoMTF(i) = ti costoOPT (i) = si + Pi. (134)

Per provare la (129) distinguiamo due casi.

• I Caso: ti > si.Supponiamo per il momento che l’algoritmo OPT non esegua scambi pagati, ovveroPi = 0. Quindi solo l’elemento acceduto ki puo cambiare posizione, e pertanto solo il

Page 89: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 10 84

numero di inversioni che coinvolgono ki puo cambiare. Prima che ki cambi posizione,vi sono almeno ti−si inversioni del tipo (x, ki), ovvero ci sono almeno ti−si elementiche sono posizionati prima di ki nella lista di MTF, ma che vengono dopo di ki nellalista di OPT, e quindi il numero di inversioni che coivolgono l’elemento ki e almenopari a ti− si. Sia X il numero di inversioni rimanenti, ovvero il numero di inversioniche non coinvolgono l’elemento ki. Abbiamo quindi che

Φ(t− 1) ≥ ti − si +X.

Per definizione, l’algoritmo MTF porta ki alla testa della lista, mentre OPT porteraki in una qualunque delle posizioni 1, 2, . . . , si. Pertanto, dopo la esecuzione dellarichiesta σ(i) ci saranno al piu si − 1 inversioni che coinvolgono l’elemento ki, cioeci saranno al piu si − 1 elementi che sono posizionati prima di ki nella lista di OPTma che vengono dopo ki nella lista di MTF. Il numero X di inversioni nella lista chenon coinvolgevano ki e ovviamente rimasto immutato, visto che abbiamo spostatodi posizione solo l’elemento ki (si veda la figura di sotto).

OPT ki b a c

si

MTF a b c ki

t iit−si

QuindiΦ(t) ≤ si − 1 +X.

In altri termini, abbiamo osservato che

Φ(t)− Φ(t− 1) ≤ (si − 1)− (ti − si).

Dalla (134), e ricordando che Pi = 0, otteniamo

costoMTF(t) + Φ(t)−Φ(t− 1) = ti + Φ(t)− Φ(t− 1)

≤ ti + (si − 1)− (ti − si)= 2si − 1

= 2costoOPT (t)− 1

Page 90: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 10 85

e quindi la (129) e provata nel caso in cui Pi = 0. Se invece Pi > 0, osserviamo cheognuno dei Pi scambi pagati puo far aumentare la differenza Φ(t)−Φ(t−1) al piu 1,in quanto uno scambio pagato puo creare una sola inversione che prima non c’era.Pertanto, abbiamo che in generale vale

Φ(t)− Φ(t− 1) ≤ (si − 1)− (ti − si) + Pi.

Dalla (134) otteniamo

costoMTF(t) + Φ(t)− Φ(t− 1) = ti + Φ(t)− Φ(t− 1)

≤ ti + (si − 1)− (ti − si) + Pi

= 2si − 1 + Pi

≤ 2si + 2Pi − 1

= 2costoOPT (t)− 1

e quindi la (129) e provata in generale.

• II Caso: ti ≤ si.Ragionando come prima possiamo concludere che:1) prima di eseguire la richiesta σ(i) ci sono almeno si− ti inversioni del tipo (x, ki)(cioe Φ(t− 1) ≥ si − ti +X, dove X ha lo stesso significato di prima, ovvero contail numero di inversioni che non coinvolgono ki),2) dopo che MTF ha portato ki alla testa della lista e che OPT ha spostato ki inqualche posizione compresa tra 1, . . . , si, ci saranno al piu si − 1 inversioni dellaforma (x, ki) (cioe Φ(t) ≤ si − 1 +X),3) dopo che OPT ha eseguito i suoi Pi scambi pagati, possiamo avere al piu altrePi inversioni. Di conseguenza

costoMTF(t) + Φ(t)− Φ(t− 1) = ti + Φ(t)− Φ(t− 1)

≤ ti + (si − 1)− (si − ti) + Pi

= 2ti − 1 + Pi

≤ 2si + Pi − 1

≤ 2si + 2Pi − 1

= 2costoOPT (t)− 1.

e quindi la (129) e provata anche in questo caso.

Ci resta da considerare il caso in cui la richiesta σ(i) possa essere una richiesta diinserzione o di cancellazione. Nel caso in cui σ(i) e una richiesta di inserzione, alloraabbiamo

costoMTF(t) = n+ 1 e costoOPT (t) = n+ 1,

dove n e la lunghezza della lista prima della inserzione. Inoltre, e semplice osservare chenessuna nuova inversione viene creata dalla inserzione, pertanto

Φ(t)− Φ(t− 1) = 0.

Page 91: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 10 86

Le due ultime uguaglianze provano la (129) anche nel caso in cui la richiesta σ(i) e unarichiesta di inserzione.

La prova della (129) nel caso in cui la richiesta σ(i) sia di una cancellazione e moltosimile alla corrispondente prova nel caso in cui a richiesta σ(i) sia di accesso. Basta soloosservare che la cancellazione di un elemento non crea nuove inversioni, ed elimina tuttequelle che coinvolgevano l’elemento cancellato. Pertanto, se ad esempio la richiesta σ(i)di cancellazione fosse relativa ad un elemento ki che si trova nella posizione ti della listadi MTF e nella posizione si della lista di OPT, allora per quanto osservato prima, cisono almeno ti − si inversioni del tipo (x, ki) che saranno tutte eliminate a causa dellacancellazione di ki, se ti > si, (ce ne saranno invece almeno si − ti eliminate se ti ≤ si).Pertanto, sotto l’ipotesi che Pi = 0, avremo che

Φ(t)− Φ(t− 1) ≤ −(ti − si), se ti > si,

mentreΦ(t)− Φ(t− 1) ≤ −(si − ti), se ti ≤ si,

e procedendo come prima proveremmo la (129). Se Pi > 0, entrambe le espressioni sisopra possono crescere al piu di Pi, ma anche il costo costoOPT (t) crescerebbe della stessaquantita , quindi come prima possiamo dedurre che la (129) vale.

Avendo quindi provato la (129) in tutti i casi possibili, possiamo concludere che MTFe 2-competitivo.

Possiamo provare che il fattore di competitivita 2 non e essenzialmente migliorabile.Consideriamo un generico algoritmo on-line A, e costruiamo una sequenza σ di m richiestedi accesso, ciascuna richiedente l’elemento posizionato alla coda della lista mantenuta daA. E chiaro che il costo di un tale algoritmo su di una tale sequenza σ soddisfa la relazione

costoA(σ) = nm,

dove n e il numero di elementi della lista. In altre parole, abbiamo osservato che per ognialgoritmo on-line A esiste una particolare sequenza di m richieste che lo forza ad avere uncosto di nm.

Consideriamo ora l’algoritmo B off-line che, conoscendo σ per intera fin dall’inizio sicalcola la frequenza di accesso di ciascun elemento, ovvero per ciascun elemento della listasi calcola il numero di volte in cui esso verrebbe richiesto in σ. Cio fatto, usando gli scambipagati, puo ordinare la lista nell’ordine dettato dalle frequenze decrescenti (cioe mettenella testa l’elemento maggiormente acceduto, e via via fin quando non mette nell’ultimaposizione l’elemento che verrebbe richiesto il minor numero di volte). Questa operazionecosta a B al piu n(n− 1)/2 (per esempio, l’algoritmo B potrebbe usare BubbleSort perordinare la lista in accordo alle frequenze decrescenti). Avendo adesso la lista ordinata,gli m accessi richiesti da σ costeranno all’algoritmo B una quantita pari a

n∑

i=1

ifi,

Page 92: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 10 87

dove fi e il numero di volte che l’elemento posizionato nella posizione i della lista di Bdeve essere acceduto. Poiche B ha disposto i suoi elementi nella lista in modo tale chef1 ≥ f2 ≥ . . . ≥ fn, si puo dimostrare che

n∑

i=1

ifi ≤m

n

n∑

i=1

i =m(n+ 1)

2.

Da cio otteniamo che per ogni sequenza di richieste σ, per l’algoritmo OPT off-line valeche

costoOPT (σ) ≤ costoB(σ) ≤ m(n+ 1)

2+n(n− 1)

2,

ovvero

costoOPT (σ)− n(n− 1)

2≤ m(n+ 1)

2.

Di conseguenza, in corrispondenza alla particolare sequenza di richieste σ sopra definita,vale che

costoA(σ) = mn

=m(n+ 1)

2· 2n

(n+ 1)

≥ 2n

(n+ 1)·[costoOPT (σ) − n(n− 1)

2

]

=

(2− 2

n+ 1

)costoOPT (σ)− n

n+ 1· n(n− 1)

≥(

2− 2

n+ 1

)costoOPT (σ)− n(n− 1).

I termini in n sono negligibili rispetto a costoA(σ) e costoOPT (σ) (in quanto possiamoconsiderare una sequenza di richieste σ molto lunga), inoltre se la lista contiene un numerodi elementi n sufficientemente grande anche il termine 2/(n+ 1) diventa non significativo.Pertanto, possiamo concludere che il fattore di competitivita 2 raggiunto dall’algoritmoMTF e essenzialmente ottimo.

Ci resterebbe da provare che

n∑

i=1

ifi ≤m

n

n∑

i=1

i,

sotto l’iptesi che f1 ≥ f2 ≥ . . . ≥ fn. Se f1 = f2 = . . . = fn, allora necessariamente valeche fi = m/n per ogni i = 1, . . . , n e quindi la formula e provata.

Supponiamo quindi che non tutti gli fi sono uguali tra di loro. Ad esempio, esistonoindici k e j, con k < j tali che fk > fj. Definiamo nuovi f ′i nel seguente modo

f ′i =

fk − 1 se i = kfj + 1 se i = jfi altrimenti.

Page 93: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 10 88

Calcoliamo

n∑

i=1

ifi −n∑

i=1

if ′i = kfk + jfj − kf ′k − jf ′j

= kfk + jfj − k(fk − 1)− j(fj + 1)

= k − j< 0.

Pertanto,n∑

i=1

ifi <n∑

i=1

if ′i .

La morale della storia di sopra e la seguente: se esistono fk e fj tali che fk 6= fj, allorapossiamo definire nuovi f ′i in cui la differenza tra f ′k e f ′j e “diminuita”, e la somma

∑ni=1 if

′i

e aumentata. Possiamo effettuare questo procedimento, e quindi aumentare sempre lasomma, fin quando non ci saranno piu differenze tra gli fi, ovvero fi = m/n, per ogni i.In corrispondenza a tali valori di fi avremo raggiunto il valore massimo della somma. Ilche equivale a dire che

n∑

i=1

ifi ≤m

n

n∑

i=1

i.

Page 94: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 11 89

Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005

Lezione 11

Docente: Ugo Vaccaro

In questa lezione vedremo alcune applicazioni della tecnica greedy al progetto di algo-ritmi on-line. Vediamo il primo esempio

SCHEDULING DI JOB

• Input:

– m macchine M1, . . . ,Mm

– una sequenza σ di job σ = J1, . . . , Jn, di durata p(J1), . . . , p(Jn), rispettivamente.

• Output: un’assegnazione di job a macchine in modo tale che sia minimizzato iltempo entro il quale tutti i job vengono eseguiti.

Piu precisamente, assumiamo che i job costituenti la sequenza σ si presentino in inputall’algoritmo A in successione. In corrispondenza ad ogni job Js, s = 1, . . . , n, l’algoritmodovra immediatamente decidere a quale delle macchine Mk, k = 1, . . . ,m, assegnarlo. SiaSik l’insieme dei job assegnati dall’algoritmo A alla macchina Mk, in corrispondenza allasottosequenza J1, . . . , Ji dei job. Il carico della generica macchina Mk dopo che l’algoritmoA ha processato la sottosequenza J1, . . . , Ji dei job sara quindi

Lik(A) =∑

J∈Sik

p(J),

ed il makespan dell’algoritmo A sara

L(A) = maxk=1,...,m

Lnk(A).

Cerchiamo un algoritmo on-line A che abbia L(A) minimo.

La tecnica greedy ci suggerisce immediatamente il seguente algoritmo:

Assegna il job Js, s = 1, . . . , n, alla macchina Mk per cui

Ls−1k = min{Ls−1

1 , . . . , Ls−1m },

ovvero alla macchina correntemente con il minor carico.

Page 95: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 11 90

Vogliamo provare che

∀σ costogreedy(σ) ≤ 2costoOPT (σ), (135)

dove costogreedy(σ) e il makespan dell’algoritmo greedy in corrispondenza di σ, e

costoOPT (σ) e il corrispondente costo dell’algoritmo ottimo off-line.

Osserviamo inannzitutto le seguenti due limitazioni inferiori a costoOPT (σ). Vale

∀σ costoOPT (σ) ≥ maxs=1,...,n

p(Js), (136)

e

∀σ costoOPT (σ) ≥ 1

m

n∑

s=1

p(Js). (137)

La (136) e ovvia. La (137) la si ottiene una volta che si osservi che (1/m)∑ns=1 p(Js)

rappresenta il tempo necessario per eseguire tutti i job. Visto che abbiamo a disposizionem macchine, almeno una di esse dovra lavorare per un tempo pari a (1/m)

∑ns=1 p(Js).

Supponiamo ora che l’algoritmo greedy abbia effettuato una certa assegnazione di joballe macchine, risultante in un dato carico Ln1 , . . . , L

nm. Sia Mh la macchina con il carico

massimo, e sia Jt l’ultimo job ad essa assegnato dall’algoritmo greedy. In altri termini,stiamo assumendo che

costogreedy(σ) = Lnh.

Sosteniamo che per il valore Lnh vale che

∀i Lni ≥ Lnh − p(Jt). (138)

Infatti, al momento in cui viene assegnato il job Jt alla macchina Mh, essa risulta essere lameno carica (per come opera l’algoritmo greedy), da cui la (138). Dalla (138) otteniamo

W =m∑

i=1

Lni ≥m∑

i=1

(Lnh − p(Jt)) = m(Lnh − p(Jt)) (139)

da cui

Lnh − p(Jt) ≤W

m. (140)

Osserviamo ora chen∑

i=1

p(Ji) =m∑

k=1

Lnk ,

pertanto

costogreedy(σ) = Lnh

≤ W

m+ p(Jt)

=1

m

n∑

s=1

p(Js) + p(Jt)

≤ costoOPT (σ) + costoOPT (σ) (dalla (136) e (137))

Page 96: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 11 91

il che completa la dimostrazione di (135).

Esaminiamo ora il seguente problema, risolvibile anch’esso attraverso la tecnica greedy.

BIN PACKING ON-LINE

• Input:

– una sequenza σ = σ(1) . . . σ(m), dove ogni σ(i) rappresenta un oggetto di tagliaai, con 0 < ai ≤ 1;

– un insieme di contenitori B1, . . . , Bb, b ≥ m, ciascuno di capacita pari a 1.

• Output: un’assegnazione di tutti gli oggetti in σ a contenitori, con la condizioneche la somma delle taglie degli oggetti assegnati a ciascun contenitore non superi 1,e che minimizzi il numero totale di contenitori usati.

Un possibile algoritmo on-line per questo problema puo essere il seguente:

ALGORITMO NEXT-FIT

j ← 1for i = 1, . . . ,m do

aggiungi l’oggetto σ(i) in Bj , se ci va ,else poni j ← j + 1 e inserisci σ(i) in Bj.

Sia costoNEXT-FIT(σ) il numero di contenitori usati dall’algoritmo greedy NEXT-FIT per impacchettare tutti gli oggetti in σ, e sia costoOPT (σ) il corrispondente numerodi contenitori usato dall’algoritmo ottimo off-line che conosce tutta la sequenza di richiestefin dall’inizio. Vogliamo provare che

costoNEXT-FIT(σ) ≤ 2costoOPT (σ) + 1.

Osserviamo innazitutto che

costoOPT (σ) ≥m∑

i=1

ai,

in quanto occorre sicuramente usare un numero di contenitori superiore alla somma totaledelle dimensioni degli oggetti in σ. Consideriamo la soluzione prodotta dall’algoritmogreedy, e supponiamo che esso abbia usato i contenitori

B1, . . . , Bs,

Page 97: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 11 92

e quindi costoNEXT-FIT(σ) = s. L’osservazione chiave e che

∀j∑

σ(ai)∈Bjai +

σ(ai)∈Bj+1

ai ≥ 1, ∀j = 1, . . . s− 1. (141)

Infatti, se cio non fosse, non avremmo usato il nuovo contenitore Bj+1 ma avremmo messotutti gli oggetti in Bj . Conseguenza della (141) e che

m∑

k=1

ak =∑

σ(ai)∈B1

ai +∑

σ(ai)∈B2

ai + . . . +∑

σ(ai)∈Bsai

≥ 1 + . . . + 1︸ ︷︷ ︸(s−1)/2volte

(raggruppando le somme a due a due consecutivamente)

=s− 1

2.

Da cui

costoNEXT-FIT(σ) = s ≤ 2n∑

k=1

ak + 1 ≤ 2costoOPT (σ) + 1.

L’approccio suggerito dall’analisi degli algoritmi on-line puo essere utile anche in altricontesti. Uno di questi riguarda classici problemi della Teoria delle Decisioni. Ci limitiamo,in questa lezione, a presentare ed analizzare due semplici esempi.

Esempio 1: Affitto sci. Il problema puo essere descritto come segue. Sia N > 1un intero. Una persona deve usare un equipaggiamento (sci) per un qualche numero T digiorni, 1 ≤ T ≤ N . Assumiamo che il valore N sia noto alla persona, ma che T non lo sia(esso puo infatti dipendere da ovvi fattori non dipendenti dalla volonta della persona) .All’inizio di ogni giorno, e noto alla persona in questione se gli occorrono o meno gli sciper la giornata. Pertanto, la persona deve effetuare una scelta tra le seguenti due opzioni:

1. Affittare gli sci per la giornata, ad un costo assumiamo pari ad 1;

2. Comprare gli sci, ad un costo pari ad un certo valore B � 1.

Ovviamente, una volta che la persona abbia acquistato gli sci, non incorrera in ulteriorispese nei giorni successivi in cui decidera ancora di sciare. Potrebbe, pero , decidere di nonvoler piu sciare (tutto dipende dal valore incognito di T ). Il costo totale in cui la personaincorre e ovviamante pari all’eventuale numero di giorni in cui ha affitato gli sci , piu ilcosto dell’acquisto degli stessi. Si pone, pertanto, il problema di stabilire una strategiache minimizzi il costo, senza pero conoscere il futuro (ovvero, il valore T dei giorni in cuieffettivamente si sciera ).

In questo caso, l’algoritmica on-line puo essere di aiuto. Consideriamo un genericoalgoritmo Ai che effettua la seguente decisione: stabilisce un intero i ≥ 0, affitta gli sci peri giorni e, se ha ancora voglia di sciare dopo tale periodo, li acquista. Abbiamo ovviamente

costoAi =

{T se T ≤ i;i+B se T > i.

(142)

Page 98: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 11 93

La strategia ottima che conosce il futuro, ovvero T , decidera ovviamente di comprare glisci se il periodo effettivo T in cui si sciera e > B, decidera di affittarli giorno per giorno,in caso contrario. Pertanto

costoOPT = min{B, T}. (143)

Voggliamo provare che il miglior algoritmo consiste nello scegliere i = B − 1. In tal casoabbiamo

costoAB−1=

{T se T ≤ B − 1;2B − 1 se T > B − 1.

(144)

Inoltre

costoOPT =

{T se T ≤ B − 1;B se T > B − 1.

(145)

Abbiamo pertanto che qualunque sia il valore incognito di T , vale che

costoAB−1≤ 2B − 1

BcostoOPT =

(2− 1

B

)costoOPT . (146)

Proviamo ora che nessun altra scelta del valore di i puo portare a coefficienti di compet-itivita migliori di quello appena trovato. Distinguiamo due casi.

• Caso 1: i ≤ B − 1.Nell’ipotesi che T = i+ 1, abbiamo

costoAicostoOPT

=i+B

min{T,B}

=i+B

min{i+ 1, B}

=i+B

i+ 1

= 1 +B − 1

i+ 1

≥ 1 +B − 1

B

= 2− 1

B.

Quindi il coefficiente di competitivita non e migliorato.

• Caso 2: i > B − 1.Nell’ipotesi che T = i+ 1, abbiamo

costoAicostoOPT

=i+B

min{T,B}

=i+B

min{i+ 1, B}

=i+B

B

Page 99: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 11 94

= 1 +i

B≥ 2.

Anche in questo caso il coefficiente di competitivita non e migliorato.

Deduciamo quindi che la scelta ottima consiste nello scegliere i = B − 1.

Esempio 2: Compravendita di azioni. Supponiamo di avere un’azione, il cuiprezzo e noto poter variare tra due valori m e M , con 0 < m < M entrambi noti apriori. All’inizio di ogni giornata i-esima i = 1, 2, . . . , veniamo a conoscenza del valorevi ∈ [m,M ] giornaliero dell ’azione, e dobbiamo decidere se vendere l’azione, e quindirealizzare un profitto vi, oppure mantenere il possesso dell’azione. Qual e la strategiamigliore, ovvero quella che ci massimizza il profitto? Anche in questo caso ci troviamo difronte ad un probleam suscettibile di analisi mediante l’algoritmica on-line.

Una generica strategia potrebbe essere la seguente: si stabilisca a priori un valorep ∈ [m,M ], si venda l’azione il primo giorno in cui vi ≥ p, altrimenti si mantenga l’azione.Come scegliere il valore p in modo da massimizzare il nostro profitto? Sia pmax il val-ore massimo assunto da vi durante tutto il periodo in considerazione. Ovviamente, noinon conosciamo tale valore pmax. Possono capitare due casi, a seconda della relazionesussistente tra il valore p che abbiamo noi scelto ed il valore incognito pmax.

• Caso 1: p ≤ pmax.In tal caso, ci sara un giorno in cui vi ≥ p, e pertanto realizzeremo un profitto p.Potrebbe accadere, pero , che il valore dell’azione continui a crescere ed arrivi alvalore massimo M . L’algoritmo ottimo off-line vendera l’azione esattamente quandoessa varraM . Quindi, il rapporto tra il profitto dell’algoritmo on-line e dell’algoritmoottimo off-line e p/M .

• Caso 1: p > pmax.In tal caso, non ci sara mai un giorno in cui vi ≥ p, quindi non venderemmo maiper tutta la durata del periodo in questione. Potrebbe accadere, pertanto, chealla fine del periodo l’azione valga m, quindi questo e il profitto che realizzeremo.L’algoritmo ottimo off-line, invece, vendera appena l’azione vale pmax, realizzandoun profitto appunto pari a pmax. Il rapporto tra il profitto dell’algoritmo on-line edell’algoritmo ottimo off-line e in questo caso m/pmax, che puo ovviamente esserearbitrariamente prossimo a m/p.

Il miglior algoritmo on-line e sicuramente quello che scegliera p in modo tale che vi siabilanciamento tra le due possibili situazioni, ovvero per cui valga

p

M=m

p,

ovvero scegliera il valore p pari ap =√mM.

Page 100: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

ASDII:Parte B — Lezione 11 95

Detto in altri termini, l’algoritmo on-line ottimo e quello che decide, giorno per giorno,di vendere l’azione se il suo valore vi e ≥

√mM , e che decide di mantenere il possesso

dell’azione in caso contrario. Il fattore di competitivita di un tale algoritmo e pari a√M/m.

Page 101: Universit a degli Studi di Salernouv/ASD2/tutto.pdf · ASDII:Parte B | Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Lezione 1 Docente: Ugo Vaccaro

96

References

[1] V. Vazirani, Approximation Algorithms, Springer Verlag, 2001.

[2] D. Hochbaum, Approximation Algorithms for NP-Hard Problems, Wadsworth Pub-lishing Company, 1996.

[3] A. Borodin, R. El-Yaniv, Online Computation and Competitive Analysis, CambridgeUniversity Press, 1998.