Università degli Studi di Salerno. Note per il Corso di Algoritmi e Strutture Dati II Parte B. Docente: Ugo Vaccaro

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Università degli Studi di Salerno. Note per il Corso di Algoritmi e Strutture Dati II Parte B. Docente: Ugo Vaccaro"

Transcript

1

2 Università degli Studi di Salerno Note per il Corso di Algoritmi e Strutture Dati II Parte B Docente: Ugo Vaccaro Corso di Laurea in Informatica Anno Accademico

3

4 Indice Lezione 1: Definizione di algoritmo di approssimazione; Vertex Cover; Massimo Sottografo Aciclico; Maximum 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 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 Dualità 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-competitività di LRU; Ottimalità di LRU pag. 72 Lezione 10: Accesso e Gestione di Liste dinamiche; 2-competitività di MTF; ottimalità 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

5

6 ASDII:Parte B Lezione 1 1 Algoritmi e Strutture Dati II: Parte B Anno Accademico Docente: Ugo Vaccaro Lezione 1 Dalla Teoria della NP-Completezza abbiamo appreso che esiste una classe di problemi (NP-hard) per cui non è noto alcun algoritmo di soluzione di complessità polinomiale ed è inoltre molto improbabile che per tali problemi possa essere mai trovato un algoritmo di soluzione di complessità polinomiale. Tuttavia, la classse dei problemi NP completi contiene molti problemi di grande importanza pratica. Per essi è molto importante dover produrre 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 possono seguire quando ci si trova di fronte alla necessità di trovare soluzioni accettabili in pratica per problemi NP completi. 1. Se l input al problema dettato dalla specifica situazione pratica in cui il problema sorge è piccolo, allora si può provare a trovare la migliore soluzione mediante una ricerca esaustiva, che essenzialmente genera tutte le possibili soluzioni associate all istanza di input e poi se ne sceglie la migliore. Tale approccio genera algoritmi con complessità esponenziale. Tuttavia, se l input è piccolo, in pratica può produrre soluzioni in un tempo ragionevole. 2. Il fatto che un problema sia NP completo essenzialmente implica che è molto improbabile che esista un algoritmo di complessità polinomiale che produce la soluzione desiderata in corrispondenza ad ogni possibile istanza di input. Può capitare, però, che per specifiche particolari istanze di input, un tale algoritmo possa essere trovato. Pertanto, una analisi accurata delle possibili istanze di input che possono ragionevolmente accadere in pratica, può portare alla elaborazione di algoritmi efficienti. 3. Il terzo approccio consiste nel progettare algoritmi che producano una soluzione in tempo polinomiale, per ogni possibile istanza di input, non necessariamente di valore ottimo, ma che si discosti dal valore ottimo per poco, e che tale poco sia stimabile in funzione della taglia dell input. In questo corso seguiremo il terzo approccio. Precisiamo i concetti sopra esposti. Innanzitutto diciamo che ci occuperemo di problemi di ottimizzazione. Informalmente un problema di ottimizzazione Π è definito da: un insieme I Π di possibili istanze di input; 1 Per il momento la discussione è da intendersi ad un livello molto informale, successivamente daremo un senso preciso ai termini migliore soluzione e qualche soluzione per i problemi NP completi che considereremo.

7 ASDII:Parte B Lezione 1 2 ad ogni possibile istanza di input i I Π è associato un insieme di possibili soluzioni S Π (i). É definita inoltre una funzione costo che in corrispondenza ad ogni possibile istanza 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 di input i I Π, una soluzione di minimo costo (o massimo costo, a seconda che il problema sia di minimo o di massimo, rispettivamente), associata alla istanza i. Sia OPT Π (i) il costo di una tale soluzione. Per i problemi di ottimizzazione che studieremo in questo corso, calcolare OPT Π (i) è difficile, ovvero il corrispondente problema di decisione è NP completo (vedi ASD2 parte A). Esempio 1 Un classico esempio di problema di ottimizzazione è il problema del Minimum Spanning Tree. L insieme delle possibili istanze di input a Minimum Spanning Tree consiste di tutte le possibili coppie (G, w), dove G = (V, E) è un grafo con insieme di vertici V ed insieme di archi E, e w : E R + è una funzione peso che associa numeri non negativi agli archi nell insieme E. Per ogni possibile istanza di input i = (G, w), l insieme delle possibili soluzioni S(i) consiste di tutti i sottoalberi di G che contengono tutti i vertici in V. Ad ogni possibile soluzione s S(i) (ovvero ad ogni possibile sottoalbero T di G che contiene tutti i vertici di G) è associato come costo il valore c(s) pari alla somma dei pesi secondo la funzione w degli archi di T. Il problema di ottimizzazione consiste nel trovare per ogni i = (G, w) un albero di minimo costo in S(i). Esempio 2. Un altro classico problema di ottimizzazione è il problema del Vertex Cover. L insieme delle possibili istanze di input a Vertex Cover consiste di tutti i possibili grafi G = (V, E). Per ogni grafo G, l insieme delle possibili soluzioni ad esso associato consiste di tutti i sottoinsiemi S V tali che per ogni arco e E, almeno uno dei due vertici incidenti su e appartiene a S. Ogni tale S viene chiamato vertex cover di G. Il costo di una soluzione S V associata al grafo G corrisponde alla sua cardinalità S. Il problema di ottimizzazione consiste nel trovare per ogni grafo G un vertex cover di minima cardinalità. Informalmente, un algoritmo di approssimazione A per un problema di ottimizzazione Π produce, in tempo polinomiale ed in corrispondenza ad ogni istanza di input di Π, una soluzione di valore (costo) prossimo all ottimo, dove per prossimo intendiamo che differisce dal valore ottimo per un certo fattore, sperabilmente piccolo. Precisiamo maggiormente questi concetti, differenziando tra problemi di ottimizzazione di minimo e problemi di 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 è detto essere un algoritmo di approssimazione con fattore di approssimazione ρ per il problema di ottimizzazione Π se, per ogni istanza di input i di Π l algoritmo A produce in tempo polinomiale nella taglia dell input i una soluzione s S Π (i) tale che il valore della funzione costo sulla soluzione s soddisfi c(s) ρ( i )OP T Π (i)

8 ASDII:Parte B Lezione 1 3 Chiaramente, più prossimo a 1 è ρ( i ) e migliore è l approssimazione prodotta dall algoritmo. Analoga è la definizione di algoritmo di approssimazione per problemi di 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 è detto essere un algoritmo di approssimazione con fattore di approssimazione ρ per il problema di ottimizzazione Π se, per ogni istanza di 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) OP T Π(i) ρ( i ) Per semplicità, denoteremo con SOL il valore della soluzione prodotta dagli algoritmi di approssimazione che esamineremo, e con OP T 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 della soluzione trovata da A si discosta dal valore ottimo OP T della soluzione al più per un fattore ρ. Si pone il problema di come dimostrare questo fatto, visto che per i problemi che studieremo non conosciamo ovviamente a priori OP T né riusciamo a calcolarlo. Il trucco consiste nello stimare OP T con quantità di più facile calcolo. Vediamo come farlo nel seguente problema. VERTEX COVER Input: grafo G = (V, E) Output: sottoinsieme S V di minima cardinalità S tale che (u, v) E valga {u, v} S. L intuizione alla base di un algoritmo di approssimazione per il problema del Vertex Cover è la seguente. Se nel grafo G abbiamo un certo numero k di archi disgiunti, ovvero di archi in cui nessuno di essi è adiacente all altro, allora occorreranno almeno k vertici per 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 Vertex Cover per G deve essere grande almeno quanto ogni matching di G. Ciò vale ovviamente anche per il Vertex Cover ottimo (ovvero quello di cardinalità minima). Sia OP T la cardinalità del Vertex Cover di taglia minima. Abbiamo quindi appena dimostrato che OP T M, per ogni M matching in G. (1) Quindi la (1) ci ha permesso di ottenere una prima stima di OP T che useremo per valutare il fattore di approssimazione del nostro algoritmo. Diremo ora che un matching M è

9 ASDII:Parte B Lezione 1 4 massimale se per ogni arco e E vale che M {e} non è più un matching. L osservazione chiave è che l insieme A dei vertici che incidono sugli archi di un matching massimale formano un Vertex Cover per G. Infatti, se ciò non fosse, ovvero se esistesse un arco e E non coperto dai vertici di A, ciò vorrebbe dire che l arco e non è adiacente ad alcun arco in M, ovvero M {e} è ancora composto da archi non adiacenti, quindi M {e} è ancora un matching, contraddicendo il fatto che M è un matching massimale. Quindi, il seguente 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 valore della soluzione ritornata dall algoritmo, ovvero il numero di vertici nell insieme output dell algoritmo. Abbiamo che SOL = 2 M 2OP T per la (1) e quindi l algoritmo ha un fattore di approssimazione costante pari a 2. Resta da vedere come costruire in tempo polinomiale un matching massimale in G. Ciò è semplicemente fatto 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 É istruttivo chiedersi se è possibile migliorare il fattore di approssimazione 2, mediante un analisi più accurata dell algoritmo. La risposta è no. Si consideri il seguente esempio di grafo in cui l algoritmo da noi proposto produrrebbe una soluzione dal valore esattamente pari a 2OP T. Il grafo è un grafo bipartito con 2n nodi, in cui ogni nodo del lato sinistro è connesso ad ogni noto del lato destro. Un Vertex Cover di cardinalità minima è dato da uno dei due lati dei vertici, quindi OP T = n. D altra parte, l algoritmo considererebbe un matching massimale di cardinalità n (rappresentato ad esempio dagli archi di maggior spessore nella

10 ASDII:Parte B Lezione 1 5 figura di sopra) e di conseguenza la soluzione prodotta dall algoritmo avrebbe cardinalità SOL = 2n. Inoltre, esiste una classe di grafi in cui ogni matching massimale ha cardinalità esattamente pari alla metà di un Vertex Cover ottimale. Tale classe di grafi è composta da tutti i grafi completi 2 su n nodi, con n dispari. Da ciò si evince che se si insiste ad usare la tecnica del matching, non si potrà mai migliorare il fattore di approssimazione 2 appena provato. A tutt oggi, algoritmi di approssimazione per Vertex Cover con fattore di approssimazione costante inferiore a 2 non sono noti. Esercizio 1 Presentiamo un altro algoritmo di approssimazione per il problema del Vertex Cover con 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 è un Vertex Cover del grafo. Supponiamo per assurdo che non lo sia. Ciò implica che esiste un arco e = (u, v) E, con u e v entrambi foglie dell albero DFS. Senza perdita di generalità, supponiamo che u sia il primo tra i due vertici u, v ad essere stato visitato durante la visita DFS. Allora, per come la DFS opera, v diventerà figlio di u nell albero. Ciò contraddice il fatto che u è una foglia dell albero DFS. Sia S l insieme output dell algoritmo sopra esposto. Ci resta da provare che S 2OP T, dove OP T rappresenta la cardinalità di un Vertex Cover di taglia minima di G. Proviamo innanzitutto che nell albero DFS (e quindi anche in G) vi è un matching M di cardinalità almeno S /2. Costruiamo il matching M nel seguente modo, partendo dal nodo di livello 0 dell albero, ovvero dalla radice r. Scegliamo un figlio arbitrario u di 2 Si ricordi che un un grafo è completo se esiste un arco tra ogni coppia di vertici.

11 ASDII:Parte B Lezione 1 6 r e poniamo (r, u) in M. Iterando, al livello 1 prendiamo tutti i nodi non incidenti ad archi già posti in M, se esistono, e per ciascuno di essi scegliamo un figlio arbitrario e poniamo gli archi dei nodi al livello 1 ai loro figli cosi scelti nel matching M. Iteriamo fin quando tutti i nodi interni dell albero DFS non sono stati considerati. Abbiamo quindi costruito un matching M i cui archi incidono su ognuno degli S nodi in S. Ogni arco di M può incidere su al più due nodi di S, quindi M S /2. D altra parte, sappiamo che la cardinalità OP T di un minimo Vertex Cover per G soddisfa OP T M, quindi otteniamo che S 2OP T. Fino ad adesso abbiamo considerato problemi di minimo. Consideriamo ora un esempio di problema di ottimizzazione di massimo Esercizio 2 Consideriamo il seguente problema Massimo Sottografo Aciclico Input: grafo diretto G = (V, E) Output: sottoinsieme A E di massima cardinalità A tale che il grafo H = (V, A) non contiene cicli. Il problema è NP completo. Un algoritmo di approssimazione può essere il seguente. Scriviamo i vertici V = {1, 2,..., n} da sinistra a destra su di una linea. Poniamo in A tutti 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, e quindi o A oppure B ha cardinalità almeno E /2. Tale insieme di cardinalità almeno E /2 sarà l output del nostro algoritmo. Esso è sicuramente una soluzione valida (ovvero è un insieme di archi senza cicli in G, in quanto gli archi vanno tutti in una stessa direzione). Detta SOL la sua cardinalità, avremo che SOL E /2 OPT /2, dato che ovviamente OP T E. Pertanto, il nostro algoritmo ha un fattore di approssimazione pari a 2. Esercizio 3 Consideriamo il seguente problema

12 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 S 1, S 2, con S 1 S 2 = V, S 1 S 2 =, in modo tale che il numero di archi c(s 1, S 2 ) tra S 1 e S 2 sia massimizzato. Il problema è NP completo. Un algoritmo di approssimazione per tale problema può essere ottenuto mediante la tecnica delle ricerca locale, che consiste, data una possibile soluzione, nel tentare di migliorarla mediante piccole modifiche di tipo locale. Nel nostro caso, si parta con una arbitraria partizione di V nei due insiemi S 1 e S 2. Fin quando esiste un vertice che portato da S 1 a S 2 (o da S 2 a S 1 ) aumenta il corrente valore c(s 1, S 2 ), lo si faccia. Si termina quando non esiste alcun vertice con questa proprietà. Algoritmo per Maximum Cut Sia (S 1, S 2 ) una partizione arbitraria di V While esiste un vertice x V tale che c(s 1 {x}, S 2 {x}) > c(s 1, S 2 ) (oppure c(s 1 {x}, S 2 {x}) > c(s 1, S 2 )) do S 1 S 1 {x}, S 2 S 2 {x} (oppure S 1 S 1 {x}, S 2 S 2 {x}) Output la partizione (S 1, S 2 ) Il numero di iterazioni dell algoritmo è chiaramente al più pari a E, visto che ogni iterazione del ciclo while aumenta il valore di c(, ), e questo non può superare E. Inoltre, alla terminazione dell algoritmo, ogni vertice x V avrà almeno deg(x)/2 vertici nell altro lato della partizione, dove deg(x) è il grado di x nel grafo G. Infatti, se ciò se non fosse, allora sarebbe possibile portare x dal suo lato della partizione all altro lato della partizione ed aumentare il valore di c(s 1, S 2 ), contro l ipotesi. Quindi, usando il fatto che x V deg(x) = 2 E, otteniamo che 2c(S 1, S 2 ) = x V (numero di archi che vanno da x all altro lato della partizione) (2) x V deg(x) 2 (3)

13 ASDII:Parte B Lezione 1 8 = 1 2 E = E. (4) 2 Pertanto, il valore della soluzione S restituita dall algoritmo soddisfa SOL = c(s 1, S 2 ) E 2 OP T. 2 Può essere istruttivo generalizzare l esercizio al caso in cui si desideri trovare la partizione di 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 deg(x) = 2 E. (5) u V La (5) è ovvia, una volta che si osservi che ogni arco (u, v) viene conteggiato due volte nella somma che appare al membro sinistro della (5), la prima volta quando si somma deg(u), la seconda quando si somma deg(v).

14 ASDII:Parte B Lezione 2 9 Algoritmi e Strutture Dati II: Parte B Anno Accademico Docente: Ugo Vaccaro Lezione 2 Tra le tecniche per il progetto di algoritmi di approssimazione un ruolo importante è giocato dalla tecnica greedy. Tale tecnica produce una soluzione al problema in esame in maniera iterativa, effettuando ad ogni passo la scelta che in quel momento sembra la migliore. Detto in altri termini, se ci trovassimo di fronte ad un problema di ottimizzazione in cui occorre massimizzare una data funzione f su di un dominio D, la tecnica greedy costruirebbe in maniera iterativa una soluzione S = {s 1,..., s n } D, in maniera tale ad ogni istante i viene scelto quell elemento s i che, a paritá di condizioni 3, tra tutte le legittime scelte massimizzerebbe l incremento f(s 1,..., s i ) f(s 1,..., s i 1 ). Analogamente per problemi di minimo. Illustriamo l uso della tecnica greedy per algoritmi di approssimazione sull importante esempio del Set Cover. SET COVER Input: insieme U = {e 1,..., e n }, famiglia S = {S 1,..., S k }, con S i 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 ottimizzazione che occorrono in pratica. Anche il problema del Vertex Cover visto nella lezione precedente è un caso particolare di Set Cover. Infatti, dato un grafo G = (V, E), se poniamo U = E, e per ogni vertice v V poniamo S v = {e E : e incide su v}, otteniamo una famiglia S = {S v : v V }, con funzione costo c(s v ) = 1, per ogni v V. È facile vedere che ogni Vertex Cover A V per il grafo G corrisponde ad una qualche sottofamiglia S = {S v : v A} S che copre tutto U. Di conseguenza, un Vertex Cover di cardinalità minima è equivalente ad un Set Cover di costo minimo per la particolare istanza sopra considerata. Un naturale algoritmo per Set Cover potrebbe essere il seguente: iterativamente, aggiungi a S l insieme S S che ha il miglior (nel senso di più basso) rapporto costo/(numero 3 tali condizioni dipenderanno ovviamente dal problema in questione

15 ASDII:Parte B Lezione 2 10 di elementi di U coperti da S e non ancora coperti), rimuovi da U tutti gli elementi ricoperti da S e continua fin quando non abbiamo coperto tutto U. Più formalmente, possiamo elaborare il seguente algoritmo Algoritmo Greedy per Set Cover 1. C, S % (S è il cover che vogliamo costruire, C è l insieme degli elementi di U finora coperti) 2. While C 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 U nell ordine in cui l algoritmo li copre per la prima volta e sia e 1, e 2,..., e n tale ordinamento. Proviamo innanzitutto il seguente risultato. Lemma 1 Per ogni k {1, 2,..., n} vale che prezzo(e k ) OPT n k + 1 dove OPT è il costo della soluzione ottima a Set Cover, ovvero il costo della famiglia di minimo costo che copre tutto U. Dim. Consideriamo il momento in cui viene assegnato il prezzo all elemento e k, ovvero il momento in cui viene coperto e k per la prima volta. Ciò vuol dire che all istante precedente l elemento e k non era ancora coperto, ovvero si era in una situazione del tipo e 1,..., e s, e }{{} s+1,..., e k, e k+1,... e n. }{{} C 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 tutto U), ad un costo al più OPT. Siano S 1,..., S t tali insiemi. Vogliamo innanzitutto mostrare che esiste un i {1,..., t} tale che c(s i ) S i C OPT U C.

16 ASDII:Parte B Lezione 2 11 Infatti, se ciò non fosse, avremmo che per ogni i vale la diseguaglianza da cui t OPT c(s i ) > i=1 c(s i ) S i C > OPT U C, OPT U C Ricordiamo ora che per gli insiemi S 1,..., S t vale che ovvero da cui Ritornando alla (7) otteniamo che il che è ovviamente assurdo. t S i U C i=1 t (S i C) U C i=1 t t S i C (S i C) U C. i=1 i=1 OPT > OPT U C t S i C. (7) i=1 t S i C > OPT i=1 Riassumendo, abbiamo quindi dimostrato che esiste un insieme S i non ancora scelto dall algoritmo greedy per cui vale che c(s i ) S i 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 sceglierà sicuramente un insieme S che copre e k per cui c(s) S C OPT U C. D altra parte, quando e k verrà coperto per la prima volta, C contiene meno di k elementi (vedi la (6)), ovvero U C n k + 1. Pertanto prezzo(e k ) = c(s) S C OPT U C OPT n k + 1.

17 ASDII:Parte B Lezione 2 12 Usando questo risultato, possiamo provare che l algoritmo greedy per Set Cover ha un fattore di approssimazione pari a H n = 1 + 1/2 + 1/ /n, ovvero produce una soluzione del valore SOL per cui SOL H n OPT. (8) Ricordiamo che ogni qualvolta mettiamo un insieme S nella soluzione, il suo costo viene ripartito uniformemente tra i nuovi elementi che S copre, ponendo prezzo(e) = c(s)/( S C ), per ogni e S C, e quindi vale anche da cui e S C prezzo(e) = c(s) n prezzo(e i ) = c(s) = SOL. i=1 S S Ma prima avevamo mostrato che prezzo(e k ) OPT /(n k + 1), da cui otteniamo n SOL = prezzo(e i ) OPT n i=1 i=1 Abbiamo quindi provato la (8). 1 (1 n i + 1 = OPT ) = OPT H n. n Valutiamo ora la somma H n = n i=1 1/i in termini di quantità più familiari. Si ha H n = }{{} }{{ 3} }{{ 7} }{{ 15} n. gruppo 1 gruppo 2 gruppo 3 gruppo 4 In ciascun gruppo la somma degli elementi è maggiore di 1/2 e sicuramente al più 1. Nel gruppo i-esimo ci sono 2 i elementi. Quanti gruppi possiamo avere? Ne posso avere t + 1, dove t è il più piccolo intero per cui t n, ovvero per cui 2 t+1 1 n. Da cui segue che t + 1 = log(n + 1) < log n + 1. Abbiamo quindi t + 1 gruppi, ciascuno di essi con somma al più 1, quindi in totale al somma degli elementi in tutti i gruppi è al più log n + 1, ovvero H n < log n + 1. Possiamo quindi concludere che la soluzione proposta dall algoritmo greedy per Set Cover 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 greedy produce una soluzione che si discosta dall ottimo per un fattore pari a log n. Da ciò

18 ASDII:Parte B Lezione 2 13 discenderà che l analisi prima fatta dell algoritmo greedy non è migliorabile in generale. Sia U = {e 1,..., e n }, S = {{e 1 },..., {e n }, {e 1,..., e n }}. Inoltre, valga c({e 1 }) = 1 n, c({e 2}) = 1 n 1,..., c({e n}) = 1, c({e 1,..., e n }) = 1 + ɛ. Eseguendo l algoritmo greedy su questa istanza, l output sarà composto dagli n insiemi di cardinalità 1 ciascheduno, di costo totale pari a 1 + 1/ /n = H n, mentre la soluzione ottima ha ovviamente costo pari a 1 + ɛ. Concludiamo (per il momento) la nostra analisi del problema del Set Cover menzionando due fatti: 1. un analisi che tenga in conto di altri parametri permetterebbe di dimostrare che il valore SOL della soluzione prodotta dall algoritmo greedy soddisfa la diseguaglianza SOL < H d OPT dove d = max{ S : S S}, il che, in certi casi, è migliore della (8); 2. esistono fondate ragioni che inducono a sospettare che algoritmi di approssimazione per 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 = {u 1,..., u n }, famiglia S = {S 1,..., S m }, con S i U per i = 1,..., m; funzione profitto w : u U w(u) R + ; intero k > 0; Output: k insiemi S i1,..., S ik in S di profitto totale w(s i1... S ik ) = u S i1... S ik w(u) massimo.

19 ASDII:Parte B Lezione 2 14 Il problema può essere visto come una generalizzazione del problema dello zaino visto in ASD1. La differenza sta nel fatto che mentre nel problema dello zaino possiamo prendere un qualunque elemento di U, nel problema della Copertura Massima possiamo prendere solo gruppi di oggetti, specificati dagli insiemi in S. Un algoritmo greedy per il problema della Copertura Massima può essere quello che ad ogni passo sceglie un insieme in S che dà 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 di U effettivamente inseriti. Vogliamo provare che il valore w(c) della soluzione C restituita dall algoritmo greedy soddisfa la relazione w(c) > [ 1 ( 1 1 ) ] k OP T k ( 1 1 ) OP T, e dove e è il numero di Nepero, ovvero che l algoritmo greedy ha fattore di approssimazione (1 1/e) Proviamo innanzitutto il seguente risultato Lemma 2 Supponiamo che l algoritmo greedy prenda gli insiemi S 1,..., S k nell ordine. Allora, per ogni l = 1,..., k abbiamo ( l ) ( l 1 ) ( w S i w S i OPT w l 1 ) i=1 S i. k i=1 i=1 Dim. Alla fine del passo l 1-esimo dell algoritmo greedy abbiamo scelto l 1 insiemi S 1,..., S l 1 di profitto totale w( i=1 l 1 S i). Se a S 1,..., S l 1 aggiungiamo passo passo tutti i k insiemi della soluzione ottima, arriveremo ad un profitto almeno OPT. Di conseguenza, vi deve essere almeno un passo in cui l incremento al profitto è di almeno OPT w( i=1 l 1 S i). (9) k

20 ASDII:Parte B Lezione 2 15 Ovvero, deve esistere almeno un insieme che aggiunto ai precedenti aumenta il profitto almeno della quantità (9). D altra parte, nell algoritmo greedy viene scelto ad ogni passo sempre l insieme che massimizza l incremento del profitto. Ovvero, l insieme scelto dall algoritmo greedy ottiene sicuramente un incremento di profitto dato da almeno pari a (9), da cui il lemma. w ( l ) S i w i=1 ( l 1 i=1 S i ) Dal Lemma appena dimostrato otteniamo che ( l ) w S i i=1 ( OPT w l 1 ) i=1 S i = OPT k + + w ( l 1 k ( 1 1 ) ( l 1 ) w S i k i=1 i=1 S i ) (10) Lemma 3 Per ogni l = 1,..., k vale che ( l ) [ w S i 1 i=1 ( 1 1 ) ] l OPT (11) k Dim. Per induzione su l. Proviamolo innanzitutto per l = 1. In tal caso la (11) è equivalente a provare che w(s 1 ) OPT, k che risulta essere vera a causa della (10). Supponiamo ora la (11) vera per l, proviamola per l + 1. Si ha w ( l+1 i=1 S i ) ( l ) [ ( l+1 ) ( l )] = w S i + w S i w S i i=1 i=1 i=1 ( l ) ( ) w S i + OPT w li=1 S i (dal Lemma 2) k i=1 ( = 1 1 ) ( l ) w S i + OPT k k i=1 ( = 1 1 ) [ 1 k [ 1 ( 1 1 k ) l ] ( 1 1 ) ] l+1 OPT k OPT + OPT k (dall ipotesi induttiva)

21 ASDII:Parte B Lezione 2 16 A questo punto, ponendo l = k nel Lemma 3, otteniamo che ( k ) [ w S i = w(c) = SOL 1 i=1 ( 1 1 ) ] k OPT. k Ora, ricordando che ( lim 1 1 ) k = 1 k k e e che ( 1 1 ) k ( 1 1 ) k+1 1 k k + 1 e, otteniamo finalmente SOL = w(c) > ( 1 1 ) OPT. e Vale la pena di notare che in alcune applicazioni pratiche la implementazione del passo 2 dell algoritmo (ovvero la scelta di un S che massimizza la differenza w(c S) w(c)) può essere onerosa dal punto di vista computazionale. Pertanto, potrebbe essere fattibile solo la selezione di un insieme S che incrementa la differenza w(c S) w(c) di un fattore β < 1 dell incremento massimo. In tale caso non è difficile vedere, seguendo i passi dell analisi appena effettuata, che l algoritmo greedy assicura una soluzione dal valore SOL ( 1 β ) k ( OPT > 1 1 ) k e β OPT.

22 ASDII:Parte B Lezione 3 17 Algoritmi e Strutture Dati II: Parte B Anno Accademico Docente: Ugo Vaccaro Lezione 3 In questa lezione deriveremo algoritmi di approssimazione per alcuni classici problemi su 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, dove il costo dell albero è definito come la somma dei costi dei suoi archi. Ci sono delle similitudini tra questo problema e quello di determinare lo spanning tree di peso minimo in un grafo. Infatti, se R = V allora i due problemi coincidono esattamente. Come conseguenza, il problema dello Steiner Tree è risolubile in tempo polinomiale nel caso particolare che R = V. In generale, il problema dello Steiner Tree è NP -hard. Il seguente esempio mostra in cosa il problema dello Steiner Tree differisce dal problema del 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 mostra un Minimum Spanning Tree sui vertici richiesti, di costo totale pari a 4. All estremità destra è invece mostrato un albero di Steiner che fa uso anche di vertici non richiesti (nel caso in questione, quello centrale), di costo totale pari a Quindi, includere dei nodi non necessariamente richiesti nell albero può far abbassare il costo della soluzione. Questo è in effetti il tratto che distingue il problema del Minimum Spanning Tree dal problema dello Steiner Tree. Il fatto che nel problema dello Steiner Tree si possano scegliere o meno nodi in V R fa sí che l insieme delle

23 ASDII:Parte B Lezione 3 18 possibili soluzioni al problema aumenti enormemente, rendendo difficile l individuazione della soluzione ottima. Passiamo ora a considerare il progetto di algoritmi di approssimazione per il problema dello Steiner Tree. Per prima cosa, mostriamo che è sufficiente considerare istanze del problema in cui il grafo G = (V, E) è un grafo completo, ed in esso vale la diseguaglianza triangolare, ovvero u, v, z E w(u, v) w(u, z) + w(z, v). (12) Piò precisamente, mostreremo che se siamo in grado di produrre un algoritmo di approssimazione con fattore di approssimazione ρ per il problemo dello Steiner Tree in grafi completi in cui vale la diseguaglianza triangolare, allora siamo anche in grado di produrre un algoritmo di approssimazione con lo stesso fattore di approssimazione ρ in istanze arbitrarie del problema dello Steiner Tree. Procederemo come segue. Data una istanza I = (G, R, w) arbitraria del problema dello Steiner Tree, dove G è un grafo, R è il sottoinsieme dei vertici richiesti, e w è la funzione peso sugli archi di G, trasformiamo innanzitutto I in tempo polinomiale in una istanza I = (G, R, w ), dove G è un grafo completo sugli stessi vertici di G, l insieme dei vertici R richiesto è immutato, e la funzione peso w sugli archi (u, v) di G è definita come w (u, v) = w(e), e p(u,v) dove p(u, v) è 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) Ciò è ovvio in quanto il costo dell arco (u, v) in G è pari al costo del cammino di minimo costo tra u e v in G. Sia OP T (I) il costo della soluzione ottima in G, e sia OP T (I ) il costo della soluzione ottima in G. Come conseguenza della (13) otteniamo che OP T (I) OP T (I ). (14) Sia ora T un albero di Steiner in G, di costo minimo OP T (I ). Consideriamo il sottografo H di G composto da tutti i cammini di G che corrispondono agli archi di T. Ovviamente vale che il costo totale di H (ovvero la somma dei costi degli archi di H) è esattamente pari al costo di T. Il sottografo H non è necessariamente un albero. Eliminando da H tutti gli archi che creano cicli, otteniamo un sottoalbero A di G che copre tutti i vertici richiesti, di costo al più pari al costo di T (visto che abbiamo eliminato degli archi da T per ottenere A). Daltra parte, per definizione, il costo OP T (I) di un albero di Steiner di G è non superiore a A, pertanto otteniamo OP T (I) costo(a) costo(t ) = OP T (I ). (15) Mettendo insieme la (14) e la (15) otteniamo che OP T (I) = OP T (I ). (16)

24 ASDII:Parte B Lezione 3 19 Riassumendo, abbiamo fatto vedere che il costo di una soluzione ottima in un grafo arbitrario G è uguale al costo di una soluzione ottima in un grafo completo G facilmente ottenibile da G. Non solo, abbiamo anche fatto vedere che data una soluzione ottima in G, è 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 grafi completi, in cui valga la diseguaglianza triangolare. L algoritmo di approssimazione in tali grafi è 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. Sia S uno Steiner tree di costo minimo. Sostituiamo ogni arco (u, v) di S con la coppia di archi direzionati (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 potrá passare per piú di una volta per uno stesso vertice, e passerá sia attraverso vertici in R che attraverso vertici non in R (denotati con un circolo vuoto nella figura di sopra). Il costo di questo percorso é pari a 2OP T, visto che usiamo ogni 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 volte attraverso uno stesso vertice e per evitare di passare attraverso vertici non in R (si veda la figura di sotto). Essenzialmente, stiamo qui usando il fatto che andare direttamente da un vertice u ad un vertice v costa di meno che andarci passando attraverso un qualche vertice intermedio.

25 ASDII:Parte B Lezione 3 20 In questo modo otterremo un ciclo che attraversa tutti i vertici di R, di costo al piú 2OP T (a causa della diseguaglianza triangolare). Eliminando un qualsiasi arco da questo ciclo ci dará un albero Z che attraversa tutti e solo i vertici di R, di costo ancora inferiore, ovvero il costo di Z sará al piú 2OP T. D altra parte, il costo del Minimim Spanning Tree T (output del nostro algoritmo di approssimazione) sará per definizione inferiore al costo dell albero Z, che abbiamo prima mostrato essere inferiore a 2OP T. Otteniamo quindi che la nostra soluzione al problema dello Steiner Tree, ovvero un Minimum Spanning Tree su R, ha costo al piú 2OP T. Possiamo mostrare che esistono classi di grafi in cui il costo di un Minimum Spanning Tree é circa 2 volte il costo di uno Steiner Tree, quindi l analisi della tecnica prima esposta non puó essere essenzialmente migliorata. Consideriamo ad esempio il grafo completo G = (V, E), dove V = {1,..., n, n + 1}, insieme richiesto R = {1,..., n}, e funzione peso 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 è pari al costo di un MST su R, e quindi pari a 2(n 1) D altra parte, lo Steiner Tree di costo minimo è composto 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, cioè circa la metá del costo di un MST su R. Le tecniche appena sviluppate sono utili anche per la progettazione di algoritmi di approssimazione per il seguente importante problema: Problema del Commesso Viaggiatore (TSP).

26 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 ed una sola volta. Il problema del TSP è NP-completo ed, in generale, è difficile da approssimare. Teorema 1 Per ogni funzione ρ(n) calcolabile in tempo polinomiale, la esistenza di un algoritmo di approssimazione con fattore di approssimazione ρ(n) per TSP implica che P = NP. Dim. Proveremo che se esistesse un algoritmo di approssimazione con fattore di approssimazione ρ(n) per TSP, allora sarebbe possibile decidere in tempo polinomiale se un grafo arbitrario G possiede un ciclo Hamiltoniano, 4 problema questo notoriamente NP -completo. Sia a tale scopo G = (V, E) un grafo arbitrario, n = V. Trasformiamo G in una istanza di TSP nel modo seguente. Sia G = (V, E ) un grafo completo sullo stesso insieme dei vertici di G. Inoltre, G ha una funzione costo c : E R + sugli archi definita nel modo seguente: { (u, v) E 1, se (u, v) E, c(u, v) = C > nρ(n), se (u, v) / E. Supponiamo di avere un algoritmo di approssimazione A per il problema del TSP, con fattore di approssimazione ρ(n). Sull input G l algoritmo A produrrá una soluzione dal valore SOL. Possono accadere due casi: volta. 1. SOL < nρ(n). Sotto questa ipotesi, e per come è definito il grafo G, possiamo dire che l algoritmo A ha trovato un ciclo che visita tutti i vertici di G ed il ciclo è composto solo da archi di costo 1. Ció implica, per come sono definiti i costi degli archi di G, che il ciclo trovato da A è composto solo da archi di G. Ovvero, possiamo concludere che G possiede un ciclo Hamiltoniano. 2. SOL nρ(n). Sotto questa ipotesi, e per come è definito il grafo G, possiamo dire 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). 4 Si ricordi che un ciclo Hamiltoniano è un ciclo che attraversa tutti i vertici del grafo, una ed una sola

27 ASDII:Parte B Lezione 3 22 In conclusione, la esistenza di un algoritmo di approssimazione con fattore di approssimazione ρ(n) per TSP implica la esistenza di una procedura polinomiale per decidere se un grafo arbitrario ha un ciclo Hamiltoniano o meno, il che implicherebbe che P = NP a causa della N P -completezza del problema del ciclo Hamiltoniano. Nell ipotesi che la funzione costo sugli archi del grafo G soddisfi la diseguaglianza triangolare, è abbastanza semplice produrre un algoritmo di approssimazione per il problema del TSP con fattore di approssimazione 2. L algoritmo è simile all algoritmo di approssimazione 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 nel tour T. Il seguente esempio illustra il funzionamento dell algoritmo. L albero di sotto è il Minimum Spanning Tree costruito dall algoritmo. Su di esso costruiamo il tour T rappresentato dagli archi trattegiati, più o meno come si procedeva nel caso dello Steiner Tree. Dopodichè, in accordo all algoritmo, otteniamo un ciclo che enumera i vertici dell albero in accordo all ordine in cui essi compaiono per la prima volta nel tour T.

28 ASDII:Parte B Lezione 3 23 Per la diseguaglianza triangolare, i percorsi che vanno da un vertice direttamente ad un altro senza passare per vertici intermedi, sono di costo minore e quindi non aumentano il costo del ciclo C rispetto al costo del tour T. Proviamo ora che l algoritmo ha fattore di approssimazione pari a 2. Osserviamo innazitutto che costo(mst ) OP T. (17) Infatti, se dal ciclo di costo OP T togliamo un arco, otteniamo un alberto T, di costo inferiore al ciclo, ed in piú T avrá sicuramente costo maggiore od al piú uguale a T, che è un MST. Pertanto il costo SOL della soluzione prodotta dall algoritmo di sopra sará: SOL = costo(c) costo(t ) (a causa della diseguaglianza triangolare) = 2costo(M ST ) (per costruzione) 2OP T (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 con un migliore fattore di approssimazione. A tale scopo, è utile comprendere meglio come abbiamo ottenuto il semplice algoritmo con fattore di approssimazione pari a 2. Siamo partiti con uno MST T del grafo G ed abbiamo ottenuto un tour che visita tutti gli archi di T, essenzialmente raddoppiando gli archi di T. Ció ci costa 2 volte il costo di T. Da questo tour, abbiamo ottenuto un ciclo in G prendendo delle scorciatoie nel tour. A causa delle diseguaglianza triangolare, queste scorciatoie non hanno aumentato il costo della soluzione. La prova si concludeva con l osservazione che 2 (costo di T ) è inferiore a 2 OP T. La chiave del miglioramento dell algoritmo prima esposto risiedeá nel fatto che

29 ASDII:Parte B Lezione 3 24 sará possibile ottenere un tour che attraversa tutti i vertici di G ad un costo inferiore a 2 (costo di T ). A tale scopo abbiamo bisogno di introdurre il concetto di Tour Euleriano di un grafo. Un Tour Euleriano di un grafo G consiste in un percorso nel grafo G con vertice di partenza e vertice di arrivo coincidenti, e che attraversa tutti gli archi di G una ed una sola volta. La similaritá di questo problema con quello del ciclo Hamiltoniano è solo apparente. Mentre infatti il problema di stabilire se un grafo possiede o meno un ciclo Hamiltoniano è NP -completo, stabilire se un grafo possiede un tour Euleriano è un problema risolubile in 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 grado dispari. Dim. Proviamo innazitutto che se G = (V, E) possiede vertici di grado dispari allora G non ammette un tour Euleriano. Supponiamo quindi che G possieda un vertice x di grado dispari 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, usiamo due archi incidenti su x. Non saremmo quindi in grado di visitare tutti gli archi incidenti su x una ed una sola volta con un percorso che parte e ritorna in x, in quanto tali archi sono in numero dispari. La prova che è possibile costruire un tour Euleriano di G se G ha solo vertici di grado pari la si effettua per induzione sul numero di archi E. Se E = 1 non vi è nulla da provare. Assumiamo il teorema vero per tutti i grafi con E k, per qualche k 1, e sia G un grafo con E = k + 1. Prendiamo un arbitrario vertice x in G e scegliamolo come punto di partenza ed iniziamo a visitare il grafo, con l accortezza di non passare mai due volte su di uno stesso arco. Poichè il grado di ogni vertice v è pari, ogni volta che entriamo in un vertice v ne possiamo anche uscire. Poichè il grafo G finito, prima o poi ritorneremo nel vertice x. Se abbiamo visitato tutti gli archi di G, allora abbiamo trovato il tour Euleriano che cercavamo. Altrimenti abbiamo trovato solo un percorso che parte ed arriva in x e che ogni qualvolta è entrato in qualche vertice v ne è anche uscito. In altre parole, questo percorso ha visitato, per ogni vertice v, un numero pari di archi incidenti su 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 tour Euleriano per ipotesi induttiva. Il tour prima trovato congiunto al tour di G formano ovviamente un tour che parte e arriva in x e che visita tutti gli archi di G una ed una sola volta. Diciamo che un grafo G è Euleriano se in G vi è un tour Euleriano. A questo punto dovrebbe essere anche chiaro perchè raddoppiavamo tutti gli archi del Minimum Spanning Tree T nel primo algoritmo di approssimazione per TSP prima di trovare un tour nel grafo: raddoppiando tutti gli archi ottenevamo infatti un grafo con tutti i nodi di grado pari e quindi il tour Euleriano esisteva sicuramente. Non è detto peró che questo sia il modo piú economico per ottenere da T un grafo Euleriano. Anzi, in generale non lo è.

30 ASDII:Parte B Lezione 3 25 Banalmente, se un nodo ha giá grado pari in T non vi è alcuna necessitá di raddoppiare il suo grado. In virtú del teorema precedente, sono solo i vertici di grado dispari che sono fonte di problemi. Questi problemi li possiamo far scomparire aggiungendo un arco a ciaschedun nodo di grado dispari, ottenendo quindi un grafo con tutti i vertici di grado pari in cui costruire un tour Euleriano e poi, usando le scorciatoie e la diseguaglianza triangolare, ottenere un ciclo che attraversa tutti i vertici una ed una sola volta. Ricordiamo la seguente relazione, che abbiamo provato nella prima lezione: deg(x) = 2 E. (18) u V Immediata conseguenza della (18) è che il numero di vertici in G che hanno grado dispari è pari, visto che la quantitá al membro destro della (18) è pari. Pertanto, dato un generico grafo G, per trasformare G in un grafo Euleriano basta individuare il sottoinsieme dei vertici V di grado dispari, dividerlo in due sottoinsiemi disgiunti di cardinalitá V /2 ciascheduno, ed aggiungere un matching tra tali due sottoinsiemi. Abbiamo quindi il seguente 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 nel tour T. Analizziamo il costo della soluzione prodotta dall algoritmo. A causa della diseguaglianza triangolare, il costo SOL della soluzione prodotta non sará superiore al costo del grafo Euleriano ottenuto al passo 2 dell algoritmo, ovvero SOL costo(t ) + costo(m). Giá sappiamo che costo(t ) OP T, valutiamo quindi il costo di M. A tale scopo, effettuiamo 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 OP T. Tale ciclo C attraverserá anche tutti i vertici dell insieme V (composto dai vertici di grado dispari nel MST T usato nel passo 1 dell algoritmo), in un qualche ordine. Numeriamo i vertici di V con i numeri 1, 2,..., V secondo quest ordine di attraversamento (si veda la figura di sotto). Ora, il ciclo C per andare dal vertice 1 al vertice 2 seguirá un certo percorso (rappresentato dalla linea tratteggiata tra 1 e 2 nella figura di sopra) che, a causa della diseguaglianza

31 ASDII:Parte B Lezione V triangolare, avrá un costo del costo dell arco tra 1 e 2. Stesso discorso per il percorso che C effettuerá per andare da 2 a 3, e cosí via. In conclusione, la somma dei costi dei percorsi del ciclo C tra i vertici di {1, 2,...} = V, comprensivo del ritorno al vertice 1 sará della somma dei costi degli archi diretti tra i vertici {1, 2,...} = V. Facendo attenzione, si puó comprendere che gli archi tra i vertici di V si possono decomporre in due matching disgiunti (nella figura di sopra sono rappresentati con archi di differente spessore). Possiamo quindi dire che il costo OP T del ciclo ottimo C sará della somma dei costi dei percorsi del ciclo C tra i vertici di {1, 2,...} = V che, a sua volta, è del costo dei due matching tra i vertici di V. Almeno uno dei due matching avrá quindi costo OP T/2. A maggior ragione, il matching di costo minimo M aggiunto tra i vertici di V nel passo 2 dell algoritmo avrá costo OP T/2. Riassumendo otteniamo SOL costo(t ) + costo(m) OP T OP T 3 OP T, 2 il che conclude (finalmente) l analisi dell algoritmo. La seguente figura mostra che l analisi dell algoritmo non puó essere migliorata, ovvero esistono istanze di input su cui l algoritmo produce effettivamente una soluzione di costo pari a 3/2OP T. Il Minimum Spanning Tree trovato al Passo 1 dell algoritmo è rappresentato da archi di maggior spessore. Notiamo che ha solo due vertici di grado dispari, pertanto il matching di minimo peso che viene aggiunto tra di essi è dato dall arco di peso n/2. Abbiamo quindi che l algoritmo produce un ciclo di peso totale SOL = (n 1) + n/2.

32 ASDII:Parte B Lezione n/2 D altra parte, è 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 è forzato a produrre una soluzione di costo 3/2OP T.

Algoritmi e Strutture Dati II: Parte B Anno Accademico Lezione 5

Algoritmi e Strutture Dati II: Parte B Anno Accademico Lezione 5 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Docente: Ugo Vaccaro Lezione 5 In questa lezione inizieremo a studiare gli algoritmi di approssimazione per problemi di ottimizzazione NP-hard

Dettagli

Problemi, istanze, soluzioni

Problemi, istanze, soluzioni lgoritmi e Strutture di Dati II 2 Problemi, istanze, soluzioni Un problema specifica una relazione matematica tra dati di ingresso e dati di uscita. Una istanza di un problema è formata dai dati di un

Dettagli

Il problema del commesso viaggiatore

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

Dettagli

Cammini minimi fra tutte le coppie

Cammini minimi fra tutte le coppie Capitolo 12 Cammini minimi fra tutte le coppie Consideriamo il problema dei cammini minimi fra tutte le coppie in un grafo G = (V, E, w) orientato, pesato, dove possono essere presenti archi (ma non cicli)

Dettagli

Possibile applicazione

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

Dettagli

Minimo albero di copertura

Minimo albero di copertura apitolo 0 Minimo albero di copertura efinizione 0.. ato un grafo G = (V, E) non orientato e connesso, un albero di copertura di G è un sottoinsieme T E tale che il sottografo (V, T ) è un albero libero.

Dettagli

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

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

Dettagli

2.2 Alberi di supporto di costo ottimo

2.2 Alberi di supporto di costo ottimo . Alberi di supporto di costo ottimo Problemi relativi ad alberi hanno numerose applicazioni: progettazione di reti (comunicazione, teleriscaldamento,...) memorizzazione compatta di sequenze (DNA) diffusione

Dettagli

Note per la Lezione 4 Ugo Vaccaro

Note per la Lezione 4 Ugo Vaccaro Progettazione di Algoritmi Anno Accademico 2016 2017 Note per la Lezione 4 Ugo Vaccaro Ripasso di nozioni su Alberi Ricordiamo che gli alberi rappresentano una generalizzazione delle liste, nel senso che

Dettagli

Parte V: Rilassamento Lagrangiano

Parte V: Rilassamento Lagrangiano Parte V: Rilassamento Lagrangiano Tecnica Lagrangiana Consideriamo il seguente problema di Programmazione Lineare Intera: P 1 min c T x L I Ax > b Cx > d x > 0, intera in cui A = matrice m x n C = matrice

Dettagli

Algoritmi e Strutture Dati - II modulo Soluzioni degli esercizi

Algoritmi e Strutture Dati - II modulo Soluzioni degli esercizi Algoritmi e Strutture Dati - II modulo Soluzioni degli esercizi Francesco Pasquale 6 maggio 2015 Esercizio 1. Su una strada rettilinea ci sono n case nelle posizioni 0 c 1 < c 2 < < c n. Bisogna installare

Dettagli

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

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

Dettagli

Complementi di Analisi Matematica Ia. Carlo Bardaro

Complementi di Analisi Matematica Ia. Carlo Bardaro Complementi di Analisi Matematica Ia Carlo Bardaro Capitolo 1 Elementi di topologia della retta reale 1.1 Intorni, punti di accumulazione e insiemi chiusi Sia x 0 IR un fissato punto di IR. Chiameremo

Dettagli

Progettazione di Algoritmi

Progettazione di Algoritmi Corso di laurea in Informatica Prova scritta del: Progettazione di Algoritmi 0/06/06 Prof. De Prisco Inserire i propri dati nell apposito spazio. Non voltare la finché non sarà dato il via. Dal via avrai

Dettagli

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

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

Dettagli

LOGICA MATEMATICA PER INFORMATICA (A.A. 12/13)

LOGICA MATEMATICA PER INFORMATICA (A.A. 12/13) LOGICA MATEMATICA PER INFORMATICA (A.A. 12/13) DISPENSA N. 4 Sommario. Dimostriamo il Teorema di Completezza per il Calcolo dei Predicati del I ordine. 1. Teorema di Completezza Dimostriamo il Teorema

Dettagli

Corso di Calcolo Numerico

Corso di Calcolo Numerico Corso di Calcolo Numerico Dott.ssa M.C. De Bonis Università degli Studi della Basilicata, Potenza Facoltà di Ingegneria Corso di Laurea in Ingegneria Meccanica Risoluzione di Equazioni Algebriche Le equazioni

Dettagli

Esercizi di Matematica per la prova di ammissione alla Scuola Galileiana /16

Esercizi di Matematica per la prova di ammissione alla Scuola Galileiana /16 Esercizi di Matematica per la prova di ammissione alla Scuola Galileiana - 015/16 Esercizio 1 Per quali valori n Z \ {0} l espressione è un numero intero positivo? (n + 5)(n + 6) 6n Soluzione. Il problema

Dettagli

Alcuni Teoremi sulle funzioni continue e uniforme continuità

Alcuni Teoremi sulle funzioni continue e uniforme continuità Alcuni Teoremi sulle funzioni continue e uniforme continuità Teorema 0. Una funzione f(x) è continua in x 0 se e solo se per ogni sucessione {x n } dom(f) con x n x 0 dom(f), risulta f(x n ) f(x 0 ). (Non

Dettagli

Algoritmi di Ricerca

Algoritmi di Ricerca Algoritmi e Strutture Dati Autunno 01 Algoritmi di Ricerca Dip. Informatica ed Appl. Prof. G. Persiano Università di Salerno 1 Ricerca esaustiva 1 2 Backtrack 3 2.1 Backtrack per enumerazione......................................

Dettagli

Grafi e gruppo fondamentale di un grafo

Grafi e gruppo fondamentale di un grafo Grafi e gruppo fondamentale di un grafo Note per il corso di Geometria IV (relative alla parte dei 6 crediti) Milano, 2010-2011, M.Dedò Come trovare un grafo omotopicamente equivalente all'oggetto 3d raffigurato

Dettagli

Corso di elettrotecnica Materiale didattico: i grafi

Corso di elettrotecnica Materiale didattico: i grafi Corso di elettrotecnica Materiale didattico: i grafi A. Laudani 12 ottobre 2005 I grafi costituiscono uno strumento matematico che permette di descrivere e schematizzare una grande varietà di problemi

Dettagli

LA MATEMATICA DELLE RELAZIONI SOCIALI

LA MATEMATICA DELLE RELAZIONI SOCIALI LA MATEMATICA DELLE RELAZIONI SOCIALI ALESSIO TORTI SILVIA LAZZARI FRANCESCA GERACE FLAVIA VICICONTE ABSTRACT. Nell articolo si analizzano, utilizzando la teoria dei grafi, le diverse configurazioni che

Dettagli

3. Successioni di insiemi.

3. Successioni di insiemi. 3. Successioni di insiemi. Per evitare incongruenze supponiamo, in questo capitolo, che tutti gli insiemi considerati siano sottoinsiemi di un dato insieme S (l insieme ambiente ). Quando occorrerà considerare

Dettagli

UNIVERSITÀ DEGLI STUDI ROMA TRE Corso di Studi in Ingegneria Informatica Ricerca Operativa 1 Seconda prova intermedia 20 giugno 2014

UNIVERSITÀ DEGLI STUDI ROMA TRE Corso di Studi in Ingegneria Informatica Ricerca Operativa 1 Seconda prova intermedia 20 giugno 2014 A Ricerca Operativa 1 Seconda prova intermedia Un tifoso di calcio in partenza da Roma vuole raggiungere Rio De Janeiro per la finale del mondiale spendendo il meno possibile. Sono date le seguenti disponibilità

Dettagli

UNIVERSITÀ DEGLI STUDI ROMA TRE Corso di Studi in Ingegneria Informatica Ricerca Operativa 1 Seconda prova intermedia 17 giugno 2013

UNIVERSITÀ DEGLI STUDI ROMA TRE Corso di Studi in Ingegneria Informatica Ricerca Operativa 1 Seconda prova intermedia 17 giugno 2013 A UNIVERSITÀ DEGLI STUDI ROMA TRE Corso di Studi in Ingegneria Informatica Ricerca Operativa Seconda prova intermedia 7 giugno 0 Nome: Cognome: Matricola: Orale /06/0 ore aula N Orale 0/07/0 ore aula N

Dettagli

Algoritmo basato su cancellazione di cicli

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

Dettagli

Problema del cammino minimo

Problema del cammino minimo Algoritmi e Strutture di Dati II Problema del cammino minimo Un viaggiatore vuole trovare la via più corta per andare da una città ad un altra. Possiamo rappresentare ogni città con un nodo e ogni collegamento

Dettagli

Luca Costabile Esercizi di Logica Matematica Dispensa Calcolo Proposizionale 1

Luca Costabile Esercizi di Logica Matematica Dispensa Calcolo Proposizionale 1 Luca Costabile Esercizi di Logica Matematica Dispensa Calcolo Proposizionale 1 Esercizio 1.12 Per dimostrare che per ogni funzione esiste una formula in cui compaiono le variabili tale che la corrispondente

Dettagli

Programmazione dinamica

Programmazione dinamica Programmazione dinamica Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Violetta Lonati Programmazione

Dettagli

8. Completamento di uno spazio di misura.

8. Completamento di uno spazio di misura. 8. Completamento di uno spazio di misura. 8.1. Spazi di misura. Spazi di misura completi. Definizione 8.1.1. (Spazio misurabile). Si chiama spazio misurabile ogni coppia ordinata (Ω, A), dove Ω è un insieme

Dettagli

Algoritmi e strutture dati

Algoritmi e strutture dati Algoritmi e Strutture Dati Cammini minimi Definizioni Sia G = (V,E) un grafo orientato pesato sugli archi. Il costo di un cammino π = è dato da: Un cammino minimo tra una coppia di

Dettagli

Linguaggi di Programmazione Corso C. Parte n.3 Linguaggi Liberi da Contesto e Linguaggi Contestuali. Nicola Fanizzi

Linguaggi di Programmazione Corso C. Parte n.3 Linguaggi Liberi da Contesto e Linguaggi Contestuali. Nicola Fanizzi Linguaggi di Programmazione Corso C Parte n.3 Linguaggi Liberi da Contesto e Linguaggi Contestuali Nicola Fanizzi (fanizzi@di.uniba.it) Dipartimento di Informatica Università degli Studi di Bari Grammatiche

Dettagli

L algoritmo AKS. L algoritmo AKS. Seminario per il corso di Elementi di Algebra Computazionale. Oscar Papini. 22 luglio 2013

L algoritmo AKS. L algoritmo AKS. Seminario per il corso di Elementi di Algebra Computazionale. Oscar Papini. 22 luglio 2013 L algoritmo AKS Seminario per il corso di Elementi di Algebra Computazionale Oscar Papini 22 luglio 2013 Test di primalità Come facciamo a sapere se un numero n è primo? Definizione (Test di primalità)

Dettagli

ù ={0,1,2,3, } la cui prima funzione è contare.

ù ={0,1,2,3, } la cui prima funzione è contare. ESERCITAZIONE N.3 1 ottobre 007 I NUMERI NATURALI L'insieme dei numeri naturali è l insieme infinito ù {0,1,,3, } la cui prima funzione è contare. Abbiamo già visto che la scrittura ù {0,1,,3, } è scorretta,

Dettagli

Note sull implementazione in virgola fissa di filtri numerici

Note sull implementazione in virgola fissa di filtri numerici Note sull implementazione in virgola fissa di filtri numerici 4 settembre 2006 1 Introduction Nonostante al giorno d oggi i processori con aritmetica in virgola mobili siano molto comuni, esistono contesti

Dettagli

Sommario della lezione

Sommario della lezione Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 1/27 Sommario della lezione Ancora altri esempi di applicazione della Programmazione Dinamica: Il Problema della

Dettagli

1. equivalenze e implicazioni logiche. Esercizio 1.2. Trovare le implicazioni che legano i seguenti enunciati (x, y R):

1. equivalenze e implicazioni logiche. Esercizio 1.2. Trovare le implicazioni che legano i seguenti enunciati (x, y R): . equivalenze e implicazioni logiche Esercizio.. Trovare le implicazioni che legano i seguenti enunciati (x, y R): () x < y, () x = y, () x y, () x y, () (x y) > 0. Osserviamo subito che (x y) > 0 equivale

Dettagli

Nell informatica esistono alcuni problemi particolarmente rilevanti, poiché essi:

Nell informatica esistono alcuni problemi particolarmente rilevanti, poiché essi: Pag 24 3) Il problema della ricerca Nell informatica esistono alcuni problemi particolarmente rilevanti, poiché essi: si incontrano in una grande varietà di situazioni reali; appaiono come sottoproblemi

Dettagli

Lunghezza media. Teorema Codice D-ario prefisso per v.c. X soddisfa. L H D (X). Uguaglianza vale sse D l i. = p i. . p.1/27

Lunghezza media. Teorema Codice D-ario prefisso per v.c. X soddisfa. L H D (X). Uguaglianza vale sse D l i. = p i. . p.1/27 Lunghezza media Teorema Codice D-ario prefisso per v.c. X soddisfa L H D (X). Uguaglianza vale sse D l i = p i.. p.1/27 Lunghezza media Teorema Codice D-ario prefisso per v.c. X soddisfa L H D (X). Uguaglianza

Dettagli

Esercizi Capitolo 11 - Strutture di dati e progettazione di algoritmi

Esercizi Capitolo 11 - Strutture di dati e progettazione di algoritmi Esercizi Capitolo 11 - Strutture di dati e progettazione di algoritmi Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore

Dettagli

Derivazione numerica. Introduzione al calcolo numerico. Derivazione numerica (II) Derivazione numerica (III)

Derivazione numerica. Introduzione al calcolo numerico. Derivazione numerica (II) Derivazione numerica (III) Derivazione numerica Introduzione al calcolo numerico Il calcolo della derivata di una funzione in un punto implica un processo al limite che può solo essere approssimato da un calcolatore. Supponiamo

Dettagli

Sviluppi e derivate delle funzioni elementari

Sviluppi e derivate delle funzioni elementari Sviluppi e derivate delle funzioni elementari In queste pagine dimostriamo gli sviluppi del prim ordine e le formule di derivazioni delle principali funzioni elementari. Utilizzeremo le uguaglianze lim

Dettagli

2.6 Calcolo degli equilibri di Nash

2.6 Calcolo degli equilibri di Nash 92 2 Giochi non Cooperativi Per queste estensioni di giochi non finiti si possono provare risultati analoghi a quelli visti per i giochi finiti. Rimandiamo alla bibliografia per uno studio più approfondito

Dettagli

Euristiche per il Problema del Commesso Viaggiatore

Euristiche per il Problema del Commesso Viaggiatore Sapienza Università di Roma - Dipartimento di Ingegneria Informatica, Automatica e Gestionale Euristiche per il Problema del Commesso Viaggiatore Renato Bruni bruni@dis.uniroma.it Il materiale presentato

Dettagli

1 Principio di Induzione

1 Principio di Induzione 1 Principio di Induzione Per numeri naturali, nel linguaggio comune, si intendono i numeri interi non negativi 0, 1,, 3, Da un punto di vista insiemistico costruttivo, a partire dall esistenza dell insieme

Dettagli

UNIVERSITÀ di ROMA TOR VERGATA

UNIVERSITÀ di ROMA TOR VERGATA UNIVERSITÀ di ROMA TOR VERGATA Corso di PS-Probabilità P.Baldi Tutorato 9, 19 maggio 11 Corso di Laurea in Matematica Esercizio 1 a) Volendo modellizzare l evoluzione della disoccupazione in un certo ambito

Dettagli

1 IL LINGUAGGIO MATEMATICO

1 IL LINGUAGGIO MATEMATICO 1 IL LINGUAGGIO MATEMATICO Il linguaggio matematico moderno è basato su due concetti fondamentali: la teoria degli insiemi e la logica delle proposizioni. La teoria degli insiemi ci assicura che gli oggetti

Dettagli

Appunti del corso di Informatica 1 (IN110 Fondamenti) 7 Grafi e alberi: introduzione

Appunti del corso di Informatica 1 (IN110 Fondamenti) 7 Grafi e alberi: introduzione Università di Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica (IN0 Fondamenti) Grafi e alberi: introduzione Marco Liverani (liverani@mat.uniroma.it)

Dettagli

3.4 Metodo di Branch and Bound

3.4 Metodo di Branch and Bound 3.4 Metodo di Branch and Bound Consideriamo un generico problema di Ottimizzazione Discreta dove X è la regione ammissibile. (P ) z = max{c(x) : x X} Metodologia generale di enumerazione implicita (Land

Dettagli

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

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

Dettagli

Capitolo 1. Gli strumenti. 1.1 Relazioni

Capitolo 1. Gli strumenti. 1.1 Relazioni Capitolo 1 Gli strumenti Consideriamo un insieme X. In geometria siamo abituati a considerare insiemi i cui elementi sono punti ad esempio, la retta reale, il piano cartesiano. Più in generale i matematici

Dettagli

Sommario. Caratterizzazione alternativa di NP: il verificatore polinomiale esempi di problemi in NP

Sommario. Caratterizzazione alternativa di NP: il verificatore polinomiale esempi di problemi in NP Sommario Caratterizzazione alternativa di NP: il verificatore polinomiale esempi di problemi in NP I conjecture that there is no good algorithm for the traveling salesman problem. My reasons are the same

Dettagli

Note sulle classi di complessità P, NP e NPC per ASD (DRAFT)

Note sulle classi di complessità P, NP e NPC per ASD (DRAFT) Note sulle classi di complessità P, NP e NPC per ASD 2010-11 (DRAFT) Nicola Rebagliati 20 dicembre 2010 1 La complessità degli algoritmi Obiettivo principale della teoria della complessità: ottenere una

Dettagli

Lezione 4. Problemi trattabili e soluzioni sempre più efficienti. Gianluca Rossi

Lezione 4. Problemi trattabili e soluzioni sempre più efficienti. Gianluca Rossi Lezione 4 Problemi trattabili e soluzioni sempre più efficienti Gianluca Rossi Trattabile o intrattabile? Consideriamo ora il problema, ben noto a tutti gli studenti a partire dalla scuola media, di calcolare

Dettagli

2.3 Cammini ottimi. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

2.3 Cammini ottimi. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1 . Cammini ottimi E. Amaldi Fondamenti di R.O. Politecnico di Milano .. Cammini minimi e algoritmo di Dijkstra Dato un grafo orientato G = (N, A) con una funzione di costo c : A c ij R e due nodi s e t,

Dettagli

Progettazione di algoritmi

Progettazione di algoritmi Progettazione di algoritmi Discussione dell'esercizio [labirinto] Nel testo dell'esercizio abbiamo considerato come lunghezza del percorso il numero di bivi ma possiamo stimare meglio la lunghezza reale

Dettagli

VISITA IL SITO PER ALTRO MATERIALE E GUIDE

VISITA IL SITO  PER ALTRO MATERIALE E GUIDE COPYRIGHT SEGO LICENSE Questo documento viene fornito così come è: se pensate che faccia schifo problemi vostri, nessuno vi obbliga a leggerlo. Se pensate che sia qualcosa di positivo e/o avete suggerimenti

Dettagli

A.A CORSO DI ALGEBRA 1. PROFF. P. PIAZZA, E. SPINELLI. SOLUZIONE ESERCIZI FOGLIO 5.

A.A CORSO DI ALGEBRA 1. PROFF. P. PIAZZA, E. SPINELLI. SOLUZIONE ESERCIZI FOGLIO 5. A.A. 2015-2016. CORSO DI ALGEBRA 1. PROFF. P. PIAZZA, E. SPINELLI. SOLUZIONE ESERCIZI FOGLIO 5. Esercizio 5.1. Determinare le ultime tre cifre di n = 13 1625. (Suggerimento. Sfruttare il Teorema di Eulero-Fermat)

Dettagli

11.4 Chiusura transitiva

11.4 Chiusura transitiva 6 11.4 Chiusura transitiva Il problema che consideriamo in questa sezione riguarda il calcolo della chiusura transitiva di un grafo. Dato un grafo orientato G = hv,ei, si vuole determinare il grafo orientato)

Dettagli

Limiti di successioni

Limiti di successioni Capitolo 5 Limiti di successioni 5.1 Successioni Quando l insieme di definizione di una funzione coincide con l insieme N costituito dagli infiniti numeri naturali 1, 2, 3,... talvolta si considera anche

Dettagli

ALGEBRA I: ASSIOMI DI PEANO E PROPRIETÀ DEI NUMERI NATURALI

ALGEBRA I: ASSIOMI DI PEANO E PROPRIETÀ DEI NUMERI NATURALI ALGEBRA I: ASSIOMI DI PEANO E PROPRIETÀ DEI NUMERI NATURALI 1. GLI ASSIOMI DI PEANO Come puro esercizio di stile voglio offrire una derivazione delle proprietà elementari dei numeri naturali e delle operazioni

Dettagli

Grafi (non orientati e connessi): minimo albero ricoprente

Grafi (non orientati e connessi): minimo albero ricoprente .. Grafi (non orientati e connessi): minimo albero ricoprente Una presentazione alternativa (con ulteriori dettagli) Problema: calcolo del minimo albero di copertura (M.S.T.) Dato un grafo pesato non orientato

Dettagli

Riassumiamo le proprietà dei numeri reali da noi utilizzate nel corso di Geometria.

Riassumiamo le proprietà dei numeri reali da noi utilizzate nel corso di Geometria. Capitolo 2 Campi 2.1 Introduzione Studiamo ora i campi. Essi sono una generalizzazione dell insieme R dei numeri reali con le operazioni di addizione e di moltiplicazione. Nel secondo paragrafo ricordiamo

Dettagli

Corso di Analisi Numerica

Corso di Analisi Numerica Corso di Laurea in Ingegneria Informatica Corso di 3 - PROBLEMI DI INTERPOLAZIONE Lucio Demeio Dipartimento di Scienze Matematiche 1 Interpolazione: Polinomio di Lagrange 2 3 Introduzione Problemi di interpolazione

Dettagli

Esercizi per il corso Matematica clea

Esercizi per il corso Matematica clea Esercizi per il corso Matematica clea Daniele Ritelli anno accademico 008/009 Lezione : Numeri naturali e principio di induzione Esercizi svolti. Provare che + + + n. Provare che + + + n n(n + ) n(n +

Dettagli

Esercizi per il corso di. Logistica I. a.a Daniela Favaretto. Dipartimento di Matematica Applicata Università Ca Foscari di Venezia

Esercizi per il corso di. Logistica I. a.a Daniela Favaretto. Dipartimento di Matematica Applicata Università Ca Foscari di Venezia sercizi per il corso di Logistica I a.a. - aniela avaretto ipartimento di Matematica pplicata Università a oscari di Venezia sercizio Individuare un albero di supporto di lunghezza minima (SST) sul seguente

Dettagli

IL TEOREMA FONDAMENTALE DELL ARITMETICA: DIMOSTRAZIONE VELOCE.

IL TEOREMA FONDAMENTALE DELL ARITMETICA: DIMOSTRAZIONE VELOCE. IL TEOREMA FONDAMENTALE DELL ARITMETICA: DIMOSTRAZIONE VELOCE. PH. ELLIA Indice Introduzione 1 1. Divisori di un numero. 1 2. Il Teorema Fondamentale dell Aritmetica. 2 3. L insieme dei numeri primi è

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Analisi Asintotica Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino Un graduale processo di astrazione Passo 1: abbiamo ignorato il costo effettivo

Dettagli

Esercizi sui sistemi di equazioni lineari.

Esercizi sui sistemi di equazioni lineari. Esercizi sui sistemi di equazioni lineari Risolvere il sistema di equazioni lineari x y + z 6 x + y z x y z Si tratta di un sistema di tre equazioni lineari nelle tre incognite x, y e z Poichè m n, la

Dettagli

Linguaggi e Grammatiche Liberi da Contesto

Linguaggi e Grammatiche Liberi da Contesto N.Fanizzi-V.Carofiglio Dipartimento di Informatica Università degli Studi di Bari 22 aprile 2016 1 Linguaggi Liberi da Contesto 2 Grammatiche e Linguaggi Liberi da Contesto G = (X, V, S, P) è una grammatica

Dettagli

NOTE SULLE FUNZIONI CONVESSE DI UNA VARIABILE REALE

NOTE SULLE FUNZIONI CONVESSE DI UNA VARIABILE REALE NOTE SULLE FUNZIONI CONVESSE DI UNA VARIABILE REALE ROBERTO GIAMBÒ 1. DEFINIZIONI E PRIME PROPRIETÀ In queste note saranno presentate alcune proprietà principali delle funzioni convesse di una variabile

Dettagli

Grafi: definizioni e visite

Grafi: definizioni e visite Grafi: definizioni e visite Grafi (non orientati) Grafo (non orientato): G = (V, E) V = nodi (o vertici) E = archi fra coppie di nodi distinti. Modella relazioni fra coppie di oggetti. Parametri della

Dettagli

Programmazione Lineare Intera. Programmazione Lineare Intera p. 1/4

Programmazione Lineare Intera. Programmazione Lineare Intera p. 1/4 Programmazione Lineare Intera Programmazione Lineare Intera p. 1/4 Programmazione Lineare Intera Problema di PLI in forma standard: max cx Ax = b x 0, x I n I insieme degli interi. Regione ammissibile:

Dettagli

Corso di Laurea in Matematica Geometria 2. Foglio di esercizi n. 2 a.a Soluzioni

Corso di Laurea in Matematica Geometria 2. Foglio di esercizi n. 2 a.a Soluzioni Corso di Laurea in Matematica Geometria 2 Foglio di esercizi n. 2 a.a. 2015-16 Soluzioni Gli esercizi sono presi dal libro di Manetti. Per svolgere questi esercizi, studiare con cura i paragrafi 3.5, 3.6,

Dettagli

Giovanna Carnovale. October 18, Divisibilità e massimo comun divisore

Giovanna Carnovale. October 18, Divisibilità e massimo comun divisore MCD in N e Polinomi Giovanna Carnovale October 18, 2011 1 Divisibilità e massimo comun divisore 1.1 Divisibilità in N In questa sezione introdurremo il concetto di divisibilità e di massimo comun divisore

Dettagli

Successioni, massimo e minimo limite e compattezza in R

Successioni, massimo e minimo limite e compattezza in R Università di Roma Tor Vergata Corso di Laurea in Scienze e Tecnologie per i Media Successioni, massimo e minimo limite e compattezza in R Massimo A. Picardello BOZZA 10.11.2011 21:24 i CAPITOLO 1 Successioni

Dettagli

Gli insiemi N, Z e Q. I numeri naturali

Gli insiemi N, Z e Q. I numeri naturali Università Roma Tre L. Chierchia 1 Gli insiemi N, Z e Q Il sistema dei numeri reali (R, +,, ) può essere definito tramite sedici assiomi: quindici assiomi algebrici (si veda ad esempio 2.3 in [Giusti,

Dettagli

Progettazione di Algoritmi

Progettazione di Algoritmi Corso di laurea in Informatica Prova scritta del: Progettazione di Algoritmi 29/01/2016 Prof. De Prisco Inserire i propri dati nell apposito spazio. Non voltare la finché non sarà dato il via. Dal via

Dettagli

Precorsi di matematica

Precorsi di matematica Precorsi di matematica Francesco Dinuzzo 12 settembre 2005 1 Insiemi Il concetto di base nella matematica moderna è l insieme. Un insieme è una collezione di elementi. Gli elementi di un insieme vengono

Dettagli

Appunti su Indipendenza Lineare di Vettori

Appunti su Indipendenza Lineare di Vettori Appunti su Indipendenza Lineare di Vettori Claudia Fassino a.a. Queste dispense, relative a una parte del corso di Matematica Computazionale (Laurea in Informatica), rappresentano solo un aiuto per lo

Dettagli

Esercizi riguardanti limiti di successioni e di funzioni

Esercizi riguardanti limiti di successioni e di funzioni Esercizi riguardanti iti di successioni e di funzioni Davide Boscaini Queste sono le note da cui ho tratto le esercitazioni del giorno 0 Novembre 20. Come tali sono ben lungi dall essere esenti da errori,

Dettagli

Università degli Studi di Roma Tor Vergata. Principio di induzione matematica

Università degli Studi di Roma Tor Vergata. Principio di induzione matematica Università degli Studi di Roma Tor Vergata. Principio di induzione matematica Il Principio di induzione matematica è una tecnica di dimostrazione che permette la dimostrazione simultanea di infinite affermazioni.

Dettagli

Esercizi di Algoritmi e Strutture Dati

Esercizi di Algoritmi e Strutture Dati Esercizi di Algoritmi e Strutture Dati Moreno Marzolla marzolla@cs.unibo.it Ultimo aggiornamento: 3 novembre 2010 1 Trova la somma/1 Scrivere un algoritmo che dati in input un array A[1... n] di n interi

Dettagli

04 - Logica delle dimostrazioni

04 - Logica delle dimostrazioni Università degli Studi di Palermo Facoltà di Economia CdS Sviluppo Economico e Cooperazione Internazionale Appunti del corso di Matematica 04 - Logica delle dimostrazioni Anno Accademico 013/014 D. Provenzano,

Dettagli

2. ALGORITMO DEL SIMPLESSO

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

Dettagli

Cercare il percorso minimo Ant Colony Optimization

Cercare il percorso minimo Ant Colony Optimization Cercare il percorso minimo Ant Colony Optimization Author: Luca Albergante 1 Dipartimento di Matematica, Università degli Studi di Milano 4 Aprile 2011 L. Albergante (Univ. of Milan) PSO 4 Aprile 2011

Dettagli

Grafi (orientati): cammini minimi

Grafi (orientati): cammini minimi Grafi (orientati): cammini minimi Una breve presentazione Definizioni Sia G=(V,E) un grafo orientato con costi w sugli archi. Il costo di un cammino π= è dato da: Un cammino minimo tra

Dettagli

Dati e Algoritmi 1: A. Pietracaprina. Grafi (II parte)

Dati e Algoritmi 1: A. Pietracaprina. Grafi (II parte) Dati e Algoritmi 1: A. Pietracaprina Grafi (II parte) 1 Breath-First Search (algoritmo iterativo) Si assume una rappresentazione tramite liste di adiacenza. L ordine con cui si visitano i vicini di un

Dettagli

a) Determinare il dominio, i limiti agli estremi del dominio e gli eventuali asintoti di f. Determinare inoltre gli zeri di f e studiarne il segno.

a) Determinare il dominio, i limiti agli estremi del dominio e gli eventuali asintoti di f. Determinare inoltre gli zeri di f e studiarne il segno. 1 ESERCIZI CON SOLUZIONE DETTAGLIATA Esercizio 1. Si consideri la funzione f(x) = e x 3e x +. a) Determinare il dominio, i limiti agli estremi del dominio e gli eventuali asintoti di f. Determinare inoltre

Dettagli

DAI NUMERI NATURALI AI NUMERI RAZIONALI

DAI NUMERI NATURALI AI NUMERI RAZIONALI DAI NUMERI NATURALI AI NUMERI RAZIONALI 1. L insieme dei numeri naturali Nel sistema assiomatico ZF, l Assioma dell infinito stabilisce che: Esiste un insieme A, i cui elementi sono insiemi e tale che

Dettagli

A lezione sono stati presentati i seguenti passi per risolvere un problema:

A lezione sono stati presentati i seguenti passi per risolvere un problema: Calcolo delle radici di un polinomio Problema: Dati i coefficienti a,b,c di un polinomio di 2 grado della forma: ax^2 + bx + c = 0, calcolare le radici. A lezione sono stati presentati i seguenti passi

Dettagli

Indici multilivello dinamici (B-alberi e B + -alberi) Alberi di ricerca - 1. Un esempio. Alberi di ricerca - 3. Alberi di ricerca - 2

Indici multilivello dinamici (B-alberi e B + -alberi) Alberi di ricerca - 1. Un esempio. Alberi di ricerca - 3. Alberi di ricerca - 2 INDICI MULTILIVELLO DINAMICI Indici multilivello dinamici (B-alberi e B + -alberi) Gli indici multilivello dinamici (B-alberi e B + -alberi) sono casi speciali di strutture ad albero. Un albero è formato

Dettagli

Insiemi, Numeri, Terminologia. Prof. Simone Sbaraglia

Insiemi, Numeri, Terminologia. Prof. Simone Sbaraglia Insiemi, Numeri, Terminologia Prof. Simone Sbaraglia Corso Rapido di Logica Matematica La logica formale definisce le regole cui deve obbedire qualsiasi teoria deduttiva. Una proposizione e` una affermazione

Dettagli

SOLUZIONI DEL 1 0 TEST DI PREPARAZIONE ALLA 1 a PROVA INTERMEDIA

SOLUZIONI DEL 1 0 TEST DI PREPARAZIONE ALLA 1 a PROVA INTERMEDIA SOLUZIONI DEL 1 0 TEST DI PREPARAZIONE ALLA 1 a PROVA INTERMEDIA 1 Esercizio 0.1 Dato P (A) = 0.5 e P (A B) = 0.6, determinare P (B) nei casi in cui: a] A e B sono incompatibili; b] A e B sono indipendenti;

Dettagli

Grafi (non orientati e connessi): minimo albero ricoprente

Grafi (non orientati e connessi): minimo albero ricoprente Grafi (non orientati e connessi): minimo albero ricoprente Una breve presentazione Definizioni Sia G=(V,E) un grafo non orientato e connesso. Un albero ricoprente di G è un sottografo T G tale che: T è

Dettagli

La fattorizzazione e la phi di Eulero

La fattorizzazione e la phi di Eulero La fattorizzazione e la phi di Eulero Di Cristiano Armellini, cristiano.armellini@alice.it Supponiamo di voler trovare i fattori p, q del numero intero n (anche molto grande). Dalla Teoria dei numeri sappiamo

Dettagli

Sommario della lezione

Sommario della lezione Sommario della lezione Cammini minimi in grafi Applicazioni Algoritmi Alberi ricoprenti minimi in grafi Applicazioni Algoritmi Università degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno

Dettagli

1 Se X e Y sono equipotenti, Sym(X) e Sym(Y ) sono isomorfi

1 Se X e Y sono equipotenti, Sym(X) e Sym(Y ) sono isomorfi In ogni esercizio c è la data del giorno in cui l ho proposto. 1 Se X e Y sono equipotenti, Sym(X) e Sym(Y ) sono isomorfi Se X è un insieme indichiamo con Sym(X) l insieme delle biiezioni X X. Si tratta

Dettagli

Capitolo IV SPAZI VETTORIALI EUCLIDEI

Capitolo IV SPAZI VETTORIALI EUCLIDEI Capitolo IV SPAZI VETTORIALI EUCLIDEI È ben noto che in VO 3 si possono considerare strutture più ricche di quella di spazio vettoriale; si pensi in particolare all operazioni di prodotto scalare di vettori.

Dettagli