200 likes | 370 Views
Classi di Complessita`. - problemi di decisione. - linguaggio Pascal-like. - codifiche dati “concisa”. Classi P e NP. P : classe dei problemi di decisione per la cui soluzione esistono algoritmi deterministici di complessita` polinomiale nella dimensione dei dati in input.
E N D
Classi di Complessita` - problemi di decisione - linguaggio Pascal-like - codifiche dati “concisa” Classi P e NP P: classe dei problemi di decisione per la cui soluzione esistono algoritmi deterministici di complessita` polinomiale nella dimensione dei dati in input NP: classe dei problemi di decisione per la cui soluzione esistono algoritmi nondeterministici di complessita` polinomiale nella dimensione dei dati in input
NP NP = P P Per i problemi in NP non sono ancora stati trovati algoritmi deterministici di soluzione di complessita` polinomiale, ma esistono algoritmi di certificazione deterministici di complessita` polinomiale. Si puo` allora dire che NP e` la classe dei problemi per cui esistono certificati polinomiali. Ovviamente P NP, ma non si sa se la contenenza e` propria: PNP oppure no: P = NP
f sia calcolabile con un algoritmo deterministico di complessita` polinomiale Per ogni x IA, A risponde “si” sull’input x se e solo se B risponde “si” sull’input f (x) Riducibilita`polinomiale Un proplema A e` polinomialmente riducibile ad un problema B: A B se Esiste una funzione f che trasforma le istanze in input per A in istanze in input per B: f : IA IB tale che A(x) B(f(x))
Teorema 1. A B and B NP A NP 2. A B and B P A P Teorema di Cook-Levin Q: Q NP Q Domino-limitato Corollario P = NP Domino-limitato P Definizione - Q e` NP-arduo se Q`: Q` NP Q` Q - Q e` NP-completo se 1. Q e` NP-arduo 2. Q NP
Per dimostrare che un problema R e` NP-arduo basta dimostrare che un problema Q NP-arduo e` polinomialmente riducibile a R Infatti: La relazione e` transitiva: Q R and R S Q S Allora: Se Q e` NP-arduo e Q R si ha (Q`: Q` NP Q` Q) and Q R Q`: Q` NP Q` R, cioe` R e` NP-arduo
“ esiste una copertura della scacchiera ?” “esiste una cricca di dimensione n x n nel grafo G ?” Domino-limitato Cricca Cricca Domino-limitato Scacchiera n x n m tessere Grafo G con: - n x n x m vertici: vhij - archi (vhij , vh’i’j’) indicano che le tessere dh , dh’ possono stare nelle posizioni i,j e i’,j’
Domino-limitato soddisfacibilita` Si deve costruire una formula booleana in forma normale congiuntiva tale che la risposta alla domanda “ la formula e` soddisfacibile ?” sia si se e solo se “esiste una copertura legale per la scacchiera” Usiamo una variabile per ricordare una particolare tessera in una particolare posizione (esattamente come i vertici nella riduzione da Domino-limitato a Cricca): uhij il valore true di uhij indichera` che la tessera dh e` nella posizione i,j della scacchiera
Dovremo percio` esprimere i vincoli per una copertura legale della scacchiera: u000 1. d0 e` nella posizione 0,0 2. Esattamente una tessera in ogni posizione 2.1. Almeno una tessera in ogni posizione and 0i,jn-1 (or 0hm-1 uhij) 2.2. Al piu` una tessera in ogni posizione and 0i,jn-1 (and 0h,h’m-1 (not uhijor notuh’ij))
3. Escludere che due tessere dh e dh’ che non possono essere adiacenti lo siano 3.1. orizzontalmente and 0in-1 0jn-2 (and h,h’ (not uhijor notuh’ij+1)) 3.2. verticalmente and 0in-2 0jn-1 (and h,h’ (not uhijor notuh’i+1j))
ESEMPIO Costruiamo la formula booleana per la seguente istanza di Domino-limitato Scacchiera 2 x 2 Tessere: d0 d1
u000 1 and ( (u000or u100) (u001or u101) and (u011or u111) ) 2.1 and (u010 or u110) and and ( (not u000or notu100) and (not u010or notu110) and (not u001or notu101) (not u011or notu111) and ) 2.2 and ( (not u000or notu001) and (not u010or notu011) and (not u100or notu101) and (not u110or notu111) ) 3.1 and ( (not u000or notu010) and (not u001or notu011) and (not u100or notu110) and (not u101or notu111) ) 3.2 u000, u100, u001, u101, u010, u110, u011, u111
((u000 or u100) and (u001or u101) u000 and and (u010 or u110) and ( ( not u000or notu100) and ( not u001 or (u011or u111) ) and notu101) and (not u010or notu110) and (not u011or notu111) ) and ( (notu000 or notu001) and (not u010or notu011) and (not u100or notu101) and (notu110or notu111) ) ( (notu000 or and (not u001or notu011) and (not u100or notu110) and notu010) and (notu101or notu111) ) La formula risulta vera per la seguente assegnazione di valori di verita` alle variabili: u000 = true u100 = false u101 = true u001 = false u110 = true u010 = false u011 = true u111 = false
Teorema di Cook-Levin Insieme indipendente Partizione Scheduling Multiprocessore Somma di Sottinsieme Zaino Problemi in NP Domino-limitato Cricca Soddisfacibilità Circuito Hamiltoniano Commesso Viaggiatore
Insieme indipendente Cricca G non orientato V E Gc non orientato Vc = V Ec = {(u, w) / (u, w) E} “Esiste un sottoinsieme di almeno k vertici a coppie connessi da archi ?” “Esiste un sottoinsieme di almeno k vertici mutuamente non connessi da archi ?” Insieme indipendente: Dati G non orientato e k intero positivo “Esiste un sottoinsieme di almeno k vertici mutuamente non connessi da archi ?”
Circuito Hamiltoniano Commesso viaggiatore Gcomp non orientato Vcomp = V Ecomp = {(r, t) / r, t Vc} W(u,v) = 1 se (u,v) E W(u,v) = 2 se (u,v) E G non orientato V E “Esiste in G un ciclo che attraversa ogni vertice una e una sola volta ?” “Esiste un percorso di costo al massimo uguale al numero di vertici?” Circuito Hamiltoniano: Dato G non orientato “Esiste un ciclo che attraversi ogni vertice una e una sola volta ?”
Partizione Scheduling Multiprocessore Somma di Sottinsieme Zaino Partizione: Dato un insieme di interi positivi A = {a1, a2,…, an} “esiste un sottoinsieme S degli indici {1, 2,…, n} tale che iS ai = iS ai ?”
Partizione Scheduling multiprocessore ti = ai A = {a1, a2,…, an} m = 2 d = (1/2) i{1,…,n} ai “esiste un sottoinsieme S degli indici {1, 2,…, n}tale che iS ai = iS ai ?” “E` possibile eseguire tutti i programmi in al piu` d unita` di tempo ?” Scheduling multiprocessore: Dati n programmi {p1, p2,…, pn}, ognuno dei quali, pi, richiede tempo d’esecuzione ti, intero positivo, m processori identici e un intero d. “E` possibile eseguire tutti i programmi in al piu` d unita` di tempo ?”
Partizione Zaino pi = vi = ai A = {a1, a2,…, an} c = k = (1/2) i{1,…,n} ai “esiste un sottoinsieme S degli indici {1, 2,…, n}tale che iS ai = iS ai ?” “esiste un sottoinsieme S degli indici {1, 2,…, n}tale che i S vi c e i S pi k ?” Zaino: Dati un insieme O = {o1, o2,…, on} di oggetti, ad ognuno dei quali, oi, sono associati un profitto pi e un volume vi, interi positivi, due interi positivi c (capacita`) e k (obiettivo) “esiste un sottoinsieme S degli indici {1, 2,…, n} tale che i S vi c e i S pi k ?”
Partizione Somma di sottoinsieme A = {a1, a2,…, an} A = {a1, a2,…, an} k = (1/2) i{1,…,n} ai “esiste un sottoinsieme S degli indici {1, 2,…, n}tale che iS ai = iS ai ?” “esiste un sottoinsieme S degli indici {1, 2,…, n}tale che i S ai =k ?” Somma di sottoinsieme: Dati un insieme di interi A = {a1, a2,…, an} e un intero positivo k “esiste un sottoinsieme S degli indici {1, 2,…, n} tale che i S ai =k ?”
NP-completi NP P PEXP P-SPAZIOEXP-SPAZIOE NPNEXP EXP-SPAZIO E NEXP EXP P-SPAZIO