Algoritmi e Strutture Dati

Slides:



Advertisements
Presentazioni simili
Algoritmi e Strutture Dati
Advertisements

1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 19 - Tecniche risolutive per problemi intrattabili Alberto Montresor Università di Trento This.
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 7 - Tabelle hash Alberto Montresor Università di Trento This work is licensed under the Creative.
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Didattica e Fondamenti degli Algoritmi e della Calcolabilità Terza giornata: principali classi di complessità computazionale dei problemi Guido Proietti.
NP completezza. Problemi decisionali I problemi decisionali sono una classe di problemi dove per ogni possibile ingresso un algoritmo deve scegliere una.
1/20 NP completezza. 2/20 Problemi astratti Un problema è un’entità astratta (es. il TSP). Una istanza del problema è un suo caso particolare in cui vengono.
Tecniche Algoritmiche/1 Divide et Impera Moreno Marzolla
Teorema di Ramsey Introduzione Teorema di Schur Upper bound, Lower bound facile Lezione 5 dal libro di Babai & Frankl: Linear Algebra Methods in Combinatorics.
Disequazioni in una variabile. LaRegola dei segni La disequazione A(x) · B(x) > 0 è soddisfatta dai valori di per i quali i due fattori A(x) e B(x) hanno.
La funzione seno è una corrispondenza biunivoca nell’intervallo
© 2007 SEI-Società Editrice Internazionale, Apogeo
= 2x – 3 x Definizione e caratteristiche
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Progettare algoritmi veloci usando strutture dati efficienti
Funzioni crescenti e decrescenti
Algoritmi Avanzati a.a.2015/2016 Prof.ssa Rossella Petreschi
Branch and Bound Lezione n°19 Prof.ssa Rossella Petreschi
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Branch and Bound Lezione n°14 Prof.ssa Rossella Petreschi
Progettare algoritmi veloci usando strutture dati efficienti
Approssimazione Lezione n°20 Prof.ssa Rossella Petreschi
Le disequazioni DEFINIZIONE DISEQUAZIONI EQUIVALENTI
Logica binaria Moreno Marzolla
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi
4 < 12 5 > −3 a < b a > b a ≤ b a ≥ b
Progettazione di una base di dati relazionale
IL CONCETTO DI ALGORITMO
Lezione n°17 Prof.ssa Rossella Petreschi
Cluster Analysis Definizione di Classificazione: operazione concettuale condotta adottando un solo criterio (detto fondamento della divisione) per individuare.
Insiemi di punti: altre caratteristiche
Lo studio completo di una funzione
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
Usi (meno scontati) della visita DFS
Algoritmi approssimati
K4 è planare? E K3,3 e K5 sono planari? Sì!
Approssimazione Lezione n°15 Prof.ssa Rossella Petreschi
per rappresentare grafi
IL CONCETTO DI ALGORITMO
Programmare.
Lezione n°18 Prof.ssa Rossella Petreschi
ABBINAMENTO Lezione n°13
Algoritmi e Strutture Dati
Lezione n°6 Prof.ssa Rossella Petreschi
Branch and Bound Lezione n°18 Prof.ssa Rossella Petreschi
Ordinamento in tempo lineare
Schema generale, visita in ampiezza e profondità.
Algoritmi e Strutture Dati
Strapazziamo le immagini…
Algoritmi e Strutture Dati
Usi (meno scontati) della visita DFS
Progettare algoritmi veloci usando strutture dati efficienti
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Teoria della computabilità
Backtracking Lezione n°17 Prof.ssa Rossella Petreschi
Esercizio Dato un albero binario, definiamo altezza minimale di un nodo v la minima distanza di v da una delle foglie del suo sottoalbero, definiamo invece.
Algoritmi e Strutture Dati
HeapSort Stesso approccio incrementale del selectionSort Tipo di dato
Modello matematico per la risoluzione dei problemi
Algoritmi.
Programmazione Procedurale
Transcript della presentazione:

Algoritmi e Strutture Dati Capitolo 18 - Teoria dell’NP-Completezza Alberto Montresor Università di Trento This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/2.5/ or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.

Rompicapo DOMINO LIMITATO (SQUARE TILING) Dati un intero positivo n ed un insieme finito D di m tipi di “tessere orientate”, cioè di quadrati di lato unitario, divisi in quattro parti dalle diagonali con ciascun quarto colorato con un colore, è possibile ricoprire un’area quadrata di lato n con copie delle tessere in D in modo che: nessuna tessera e` “ruotata”; una particolare tessera d ∈ D occupa la posizione piu` in basso a sinistra due tessere che si toccano hanno i lati adiacenti dello stesso colore?

Rompicapo Alcune osservazioni Per dati di ingresso banali è possibile risolvere il problema “a colpo d’occhio” E’ possibile trovare un algoritmo O(2n) basato su backtrack (“prova tutte le possibilità”) Si può fare di meglio? Non c’è ancora risposta Non è noto alcun algoritmo migliore di quello di “forza bruta” Si suppone che tale algoritmo non esista

Problemi nella stessa situazione COLORAZIONE (COLORING). Dati un grafo non orientato ed un intero k, è possibile colorarne i nodi usando al più k colori in modo che ogni nodo sia colorato diversamente dai nodi adiacenti? CRICCA (CLIQUE). Dati un grafo non orientato ed un intero k, esiste un sottoinsieme di almeno k nodi tutti mutuamente adiacenti?

Problemi nella stessa situazione COMMESSO VIAGGIATORE (TRAVELING SALESPERSON, TSP). Date n città, le distanze tra esse, ed un intero k, è possibile partire da una città, attraversare ogni città esattamente una volta tornando alla città di partenza, percorrendo una distanza totale non superiore a k?

Problemi nella stessa situazione PROGRAMMAZIONE LINEARE 0/1 (0/1 LINEAR PROGRAMMING). Data una matrice A di elementi interi e di dimensione m × n, ed un vettore b di m elementi interi, esiste un vettore x di n elementi 0/1 tale che Ax ≤ b? SODDISFATTIBILITA` (SATISFIABILITY). Data un’espressione booleana in forma normale congiuntiva, esiste un’assegnazione di valori di verità vero/falso alle variabili booleane che rende l’espressione vera?

Certificato polinomiale un algoritmo che, data una presunta soluzione del problema, verifica in tempo polinomiale che tale soluzione sia effettivamente una soluzione che dà risposta sì

Non determinismo Algoritmo non deterministico algoritmo che, posto di fronte alla necessità di prendere una “decisione”, ha la “virtu` magica” di scegliere sempre la strada giusta! In termini equivalenti, è come se l’algoritmo, di fronte a più alternative, le seguisse tutte contemporaneamente, generando più “copie” di se stesso. Ciascuna copia procede la computazione, indipendentemente dalle altre, seguendo una e una sola delle alternative possibili. Istruzioni elementari (O(1)) choice(C), che sceglie arbitrariamente un elemento dell’insieme finito C; failure, che blocca la computazione in uno stato di “fallimento”; success, che blocca la computazione in uno stato di “successo”.

Non determismo

Albero delle scelte

Non determinismo - schema generale

Non determinismo tramite enumerazione Poiché il non determinismo non è realistico, occorre “simulare” il comportamento di una procedura non deterministica con una deterministica. L’approccio da seguire è già noto: enumerazione basata su backtrack, per esplorare sistematicamente l’albero delle scelte corrispondente alla computazione deterministica

Non determinismo tramite enumerazione

Le classi P e NP Ipotesi necessarie per trattare i problemi in modo omogeno: i problemi siano di tipo decisionale; il linguaggio di programmazione sia dotato delle operazioni choice, success e failure; la codifica dei numeri utilizzati nel calcolo sia concisa, ovvero si adotti una rappresentazione in base b > 1 Le tre ipotesi non sono affatto restrittive Un problema decisionale non può essere più difficile di un problema simile di ricerca o ottimizzazione Esempio: cricca Pseudocodice è un linguaggio di programazione “universale” Se b>1, dimensione dell’input nelle diverse basi è polinomialmente correlata

Le classi P e NP Classe P la classe di tutti i problemi decisionali risolvibili in tempo polinomiale con algoritmi deterministici; Classe NP la classe di tutti i problemi decisionali risolvibili in tempo polinomiale con algoritmi non deterministici Note: P è contenuta in NP Non si sa se NP è contenuta in P (ovvero le due classi coincidono) oppure no

Riducibilità polinomiale Definizione Siano A e B due problemi decisionali. Si dice che A si riduce in tempo polinomiale a B, e si scrive A ∝ B, se esiste una funzione f di trasformazione f: (dati d’ingresso per A) → (dati d’ingresso per B) tale che: f è computabile in tempo polinomiale con un algoritmo deterministico; x è un dato d’ingresso per cui A dà risposta sì se e solo se f(x) è un dato d’ingresso per cui B dà risposta sì

Riducibilità polinomiale Alcune conseguenze Se B ∈ NP, allora anche A ∈ NP. Per risolvere A con un algoritmo polinomiale non deterministico su un dato x, basta trasformare x in f(x) e risolvere il problema B sul dato f(x): l’algoritmo risultante è ovviamente polinomiale non deterministico. Se B ∈ P, allora anche A ∈ P Si opera come nel caso precedente e poiché f è computabile con un algoritmo polinomiale deterministico, l’algoritmo risultante è polinomiale deterministico Se una limitazione inferiore alla complessità di A è Ω(p(n)) e la trasformazione f richiede al più tempo O(p(n)), allora Ω(p(n)) è anche una limitazione inferiore alla complessità di B

Riducibilità polinomiale Domino lineare Semplificazione del domino limitato, in cui si chiede di coprire un’area di lunghezza n e altezza unitaria Può essere trasformato in un problema di visita di grafo orientato

Teorema di Cook-Levin Teorema 18.1 (Cook-Levin) Ogni problema in NP si riduce in tempo polinomiale al domino limitato. NP-completezza Un problema A e` detto NP-arduo se B ∝ A per ogni problema B ∈ NP. A è detto NP-completo se, oltre ad essere NP-arduo, appartiene ad NP Esempio Il domino limitato è NP-completo Ma non è il solo problema ad essere NP-completo

Prove di NP-Completezza Per dimostrare che A è NP-completo non è necessario dimostrare che B ∝ A per ogni problema in NP E’ sufficiente dimostrare A ∈ NP Esiste un problema B, già notoriamente NP-completo, tale per cui B ∝ A Esempi cricca è NP-completo soddisfattibilità è NP-completo programmazione lineare 0/1 è NP-completo

Ulteriori problemi NP-completi

Ulteriori problemi NP-completi

Relazioni fra i problemi visti finora

Algoritmi e Strutture Dati Capitolo 19 - Tecniche risolutive per problemi intrattabili Alberto Montresor Università di Trento This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/2.5/ or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.

Introduzione Cosa fare con un problema NP-completo? “Chi si accontenta gode” Bisogna saper rinunciare a qualcosa Generalità: per particolari valori di input, il problemao potrebbe essere trattabile Algoritmi pseudo-polinomiali Ottimalità: si cercano soluzioni non troppo distanti da quella ottima Algoritmi di approssimazione Efficienza: si cercano soluzioni esponenziali che “potano” lo spazio di ricerca Algoritmi branch-&-bound Formalità: soluzioni che “sembrano” comportarsi bene, anche se non vi è prova matematica del loro comportamento Algoritmi euristici

Algoritmi psuedo-polinomiali Somma di sottoinsieme (Subset sum) Dati un insieme A={a1,...,an} di interi positivi ed un intero positivo k, esiste un sottoinsieme S di indici in {1, . . . , n} tale che ∑i∈S ai = k? Risoluzione basata su programmazione dinamica Vettore booleano M[0 ... k+1]

Algoritmi pseudo-polinomiali Esempio Complessità O(nk) che non è polinomiale nella dimensione del problema Assumiamo ai ≤ k (altrimenti potrebbe essere banalmente eliminato) Dimensione dei dati: O(n log k) Se k è polinomiale in n - O(nc) - allora complessità è polinomiale - O(nc+1) Se k è esponenziale, allora la complessità è esponenziale - O(n2n)

Algoritmi pseudo-polinomiali Elaborazione in tempo reale (real-time) Problemi in cui la correttezza non dipende solo dal valore del risultato, ma anche da quando tale risultato è prodotto Problemi scheduling Input: Insieme di processi da eseguire, caratterizzati dal periodo (ogni quando questi processi vanno eseguiti) dalla deadline (entro quando questi processi vanno eseguiti) Scheduling real-time basato su prelazione (preemption) basato su priorità (priority-driven)

Algoritmi pseudo-polinomiali Real-time-scheduling Dato un insieme {p1, . . . , pn} di processi periodici, dove ciascun pi ha tempo di computazione Ci e periodo Ti (interi con 0 < Ci ≤ Ti), è possibile eseguire tutte le occorrenze periodiche dei processi per mezzo di un algoritmo con prelazione guidato da priorità in modo che ciascuna occorrenza periodica di ogni processo sia completamente eseguita prima della successiva occorrenza dello stesso processo, cioè entro la fine del suo periodo? Esempio Un processo con periodicità 3 dovrà essere eseguito una volta nell’intervallo [0,3], una nell’intervallo [3,6], una nell’intervallo [6,9], e così via.

Algoritmi pseudo-polinomiali Algoritmo Rate-Monotonic (Liu, Layland 1972) Ogni processo è assegnata una priorità in accordo al tasso di richieste (inverso del periodo)

Algoritmi pseudo-polinomiali Domanda Sotto quali condizioni un problema NP-completo può essere risolto con un algoritmo polinomiale per valori “piccoli” dei dati in ingresso? Dato un problema decisionale P con insieme di dati di ingresso I d - Lunghezza della stringa che codifica I # - Il più grande numero intero che appare in I Esempi: Somma di sottoinsieme: I ={n,k,a1,...,an}, # = max{n,k,maxi{ai}}, d = O(n log #) Commesso viaggiatore: I ={n,k,[dij]}, # = max{n,k,maxij{dij}}, d = O(n2 log#) Cricca: I ={n,m,k,G=(V,E)}, #=max{n,m,k}, d=O(n+m+log#) 3131

Problemi fortemente NP-completi Definizione Sia Pp il problema P ristretto ai d’ingresso per cui # è limitato superioremente dalla funzione polinomiale p(d). P è fortemente NP-completo se Pp è NP-completo Somma di sottoinsieme non è fortemente NP-completo Se # = n il problema è risolubile in tempo polinomiale, mentre se # = k, allora # non può essere limitato superiormente da alcun polinomio in d = O(n log k); Commesso viaggiatore è fortemente NP-completo resta NP-completo anche quando dij ∈ {1,2}, 1 ≤ i,j ≤ n, e k = n; in tal caso, # = n, ovviamente limitato superiormente da un polinomio in d = O(n2 log n); Cricca è fortemente NP-completa k può essere assunto minore o uguale ad n (se k > n, la risposta del problema è sempre no) e quindi # è limitato superiormente da un polinomio in d = O(n+m+ log (m+n)).

Problemi fortemente NP-completi In pratica: sono “fortemente” NP-completi tutti quei problemi che possono essere dimostrati NP-completi con riduzioni che non usano numeri interi esponenzialmente grandi sono “debolmente” NP-completi quei problemi la cui dimostrazione di intrattabilità dipende pesantemente da riduzioni che usano numeri interi esponenzialmente grandi Esempio: Problemi fortemente NP-completi: Domino limitato, Cricca, Soddisfattibilità, Programmazione Lineare 0/1, Insieme Indipendente, Commesso Viaggiatore Problemi debolmente NP-completi: Somma di Sottoinsieme, Partizione e Zaino

Algoritmi pseudo-polinomiali Definizione Un algoritmo che risolve un certo problema P, per qualsiasi dato I d’ingresso, in tempo polinomiale p(#, d) ha complessità pseudopolinomiale. Esempio: algoritmo subsetSum() ha complessità pseudopolinomiale Teorema Nessun problema fortemente NP-completo può essere risolto da un algoritmo pseudopolinomiale, a meno che non sia P = NP

Algoritmi di approssimazione Problemi di ottimizzazione Molti sono NP-hard, perché il corrispondente problema decisionale è NP-completo Ma chi si accontenta gode: se non riusciamo ad ottenere l’ottimo, potremmo accontarci di una soluzione che non disti troppo dall’ottimo Approssimazione assoluta Dato un problema di ottimizzazione P, con funzione costo non negativa c, un algoritmo di approssimazione assoluta fornisce una soluzione ammissibile x′ il cui costo si discosta da quello della soluzione ottima x∗ per uno scarto relativo garantito e limitato da una costante.

Algoritmi di approssimazione Bin-packing Dato un insieme A = {a1, . . . , an} di interi positivi (i “volumi” di n “oggetti”) ed un intero positivo k (la “capacita`” di una “scatoletta”), si vuole trovare una partizione di {1,...,n} nel minimo numero di sottoinsiemi disgiunti (le “scatolette”) tali che ∑i∈S ai ≤ k per ogni insieme S della partizione.

Algoritmi di approssimazione Algoritmo first-fit Oggetti considerati in un ordine qualsiasi Ciascun oggetto è assegnato alla prima scatoletta che lo può contenere First-fit è un algoritmo di approssimazione assoluta Se il numero N di scatolette usato da First-fit è maggiore di 1, allora tale numero è minore di Infatti, non possono esistere due scatolette riempite per più di metà Quindi, N < 2N* Alcune note: E’ possibile dimostrare che N < 17/10N*+2 Si può dimostrare che con first-fit decreasing (considerando i valori in ordine decrescente) si ha N < 11/9N*+4

Algoritmi di approssimazione Commesso Viaggiatore con Disuguaglianze Triangolari (∆tsp ). Date n città e le distanze dij tra esse, tali che dij ≤ dik + dkj per 1 ≤ i, j, k ≤ n, trovare un percorso che, partendo da una qualsiasi città, attraversi ogni città esattamente una volta e ritorni alla città di partenza, in modo che la distanza complessiva percorsa sia minima Note: La versione decisionale di ∆tsp è NP-completa Infatti, la dimostrazione di NP-completezza di tsp si applica anche a questo problema

Algoritmi di approssimazione Come arrivare ad un algoritmo di approssimazione ∆tsp corrisponde a trovare un circuito Hamiltoniano di costo minimo in un grafo Kn di n nodi, non orientato, pesato e completo Si individua un minimo albero di copertura Se ne percorrono gli archi due volte Per poi “saltare” quelli già visitati

Algoritmi di approssimazione Algoritmi per ∆tsp Ne esistono di migliori; Christofides (1976) ne propone uno che fornisce, in tempo polinomiale, una soluzione x′ tale che c(x′) ≤ 3c(x∗)/2 Non-approssimabilità Per molti problemi di ottimizzazione, trovare una soluzione approssimata è tanto difficile quanto trovarne una ottima! Questo è vero, per esempio, per le versioni di ottimizzazione di Cricca, Colorazione e Commesso Viaggiatore Teorema 19.2. Non esiste alcun algoritmo di approssimazione assoluta per Commesso Viaggiatore tale che c(x′) ≤ sc(x∗), con s intero positivo, a meno che P = NP.

Algoritmi di approssimazione In taluni casi, è possibile progettare algoritmi che producono soluzioni approssimate il cui scarto dall’ottimo non è una costante, bensì un valore fornito in input che può essere reso arbitrariamente piccolo. In altri termini, comunque si scelga un ε piccolo a piacere, con 0 < ε ≤ 1, tali algoritmi producono in tempo polinomiale nella dimensione del problema, ma in genere esponenziale in 1/ε, una soluzione ammissibile x′ tale che

Algoritmi di approssimazione Somma di sottoinsieme (versione di ottimizzazione) Dati un insieme A={a1,...,an} di interi positivi ed un intero positivo k, trovare un sottoinsieme S di indici in {1, . . . , n} tale che ∑i∈S ai ≤ k e ∑i∈S ai sia massima? Sia ε = (1/h+1) con h>0 Oppure h = (1-ε)/ε Algoritmo Si generano tutti i sottoinsiemi di dimensione al più h Si cerca fra questi quello di valore massimo

Algoritmi di approssimazione Alcuni ragionamenti su complessità Vi sono n(n-1)(n-2)... (n-m+1)/m! ≤ nm sottoinsiemi {1,...,n} di dimensione m Il ciclo (1) è ripetuto volte Il ciclo (2) è ripetuto n volte Costo computazionale: O(hnh+1) Polinomiale in n Esponenziale in h (e quindi in 1/ε) Approssimazione apSubsetSum() fornisce una soluzione x′ = maxSol di costo c(x′) = max tale che |c(x′)− c(x∗)|/|c(x∗)| ≤ ε

Algoritmi branch-&-bound Approccio basato su enumerazione Si modifica la procedura enumerazione() per evitare scelte che si rivelino incapaci di generare la soluzione ottima Assunzioni Problema di minimizzazione Ogni sequenza di scelte abbia costo non negativo Funzione lb(S,i) (lower-bound) dipende dalle scelte già fatte S[1...i] limite inferiore al costo delle soluzioni ammissibili generabili aggiungendo scelte a S[1...i] In questo modo, è possibile mantenersi la migliore soluzione ammissibile trovata fino ad un certo punto, con costo minCost; se lb(S,i)>minCost, allora si può evitare di generare ed esplorare il sottoalbero radicato a quella scelta

Branch-&-bound S[i-1] S[i] S[i] lb(S,i)>minCost S[n] minCost