Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
1
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 or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
2
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?
3
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
4
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?
5
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?
6
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?
7
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ì
8
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”.
9
Non determismo
10
Albero delle scelte
11
Non determinismo - schema generale
12
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
13
Non determinismo tramite enumerazione
14
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
15
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
16
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ì
17
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
18
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
19
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
20
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
21
Ulteriori problemi NP-completi
22
Ulteriori problemi NP-completi
23
Relazioni fra i problemi visti finora
24
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 or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
25
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
26
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]
27
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)
28
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)
29
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.
30
Algoritmi pseudo-polinomiali
Algoritmo Rate-Monotonic (Liu, Layland 1972) Ogni processo è assegnata una priorità in accordo al tasso di richieste (inverso del periodo)
31
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
32
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)).
33
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
34
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
35
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.
36
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.
37
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
38
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
39
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
40
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.
41
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
42
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
43
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∗)| ≤ ε
44
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
45
Branch-&-bound S[i-1] S[i] S[i] lb(S,i)>minCost S[n] minCost
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.