Teoria della Complessità Computazionale. Obiettivo: classifcare i problemi (risolubili con algoritmi) in base alle risorse di calcolo che richiedono per essere risolti. Risorse: tempo e spazio (memoria) di calcolo. Modelli di calcolo: per lo più MT multinastro con nastro di input di sola lettura. Risultati fondamentali: relazioni tra modelli di macchina relazioni tra determinismo e nondeterminismo relazioni tra spazio e tempo gerarchie di classi caratterizzazione dei problemi trattabili (risolubili effcientemente in pratica) e dei confni del concetto di trattabilità computazionale NP-completezza. Accettazione/riconoscimento di linguaggi in tempo/spazio Def. M (det. o nondet.) accetta una stringa x in τ passi se dalla confgurazione iniziale si arriva ad una fnale in al più τ passi. Def. M (det. o nondet.) accetta un linguaggio L in tempo t(n) se accetta L e se accetta stringhe di lunghezza n in t(n) passi. Def. L è accettabile in tempo t(n) (det. o non det.) se esiste una macchina deterministica (o non deterministica) che lo accetta in tempo t(n). Def. M (det.) rifuta una stringa x in τ passi se dalla confgurazione iniziale arriva ad una massimale non fnale in al più τ passi. Def. M (det.) riconosce (decide) un linguaggio L in tempo t(n) se ogni stringa di lunghezza n viene accettata in t(n) passi se appartiene ad L e rifutata in t(n) passi se non appartiene ad L Def. L è decidibile in tempo t(n) se esiste una macchina deteministica che lo decide (riconosce) in tempo t(n). Oss. Identiche defnizioni valgono per lo spazio di lavoro utilizzato, che non include le celle utilizzate per la rappresentazione dell input. Lo spazio di lavoro utilizzato è defnito su A. come il numero totale di celle utilizzate sui nastri di lavoro, mentre su H. come il numero massimo di celle utilizzate sui nastri di lavoro.
Data una funzione f: N ->N possiamo defnire le seguenti classi di complessità: DTIME (f(n)): insieme dei linguaggi riconosciuti da una MTM deterministica in tempo al più O(f(n)); DSPACE (f(n)): insieme dei linguaggi riconosciuti da una MTM deterministica in spazio al più O(f(n)). NTIME (f(n)): insieme dei linguaggi accettati da una MTM non deterministica in tempo al più O(f(n)); NSPACE (f(n)): insieme dei linguaggi accettati da una MTM non deterministica in spazio al più O(f(n)). N.B. Se ci riferiamo a modelli di macchina diversi dalle macchine di Turing multinastro con nastro di input di sola lettura dobbiamo indicarlo esplicitamente. Classi di complessità notevoli Per queste due classi il modello di MT ha nastro di input di sola lettura e nastro di output di sola scrittura: L = LOGSPACE = DSPACE(log n) NLOGSPACE = NSPACE(log n) P = k DTIME (nk) PSPACE = k DSPACE(nk) NP = k NTIME (nk) NPSPACE = k NSPACE(nk) EXPTIME = k DTIME(2nk ) NEXPTIME = k NTIME(2nk ) Separazione tra le classi spaziali e temporali. Def. Una funzione totale non decrescente f: N N è chiamata: - tempo- costruibile se: - esiste una MTM che per ogni istanza di lunghezza n si ferma dopo aver eseguito esattamente f(n) passi - f(n) n+1 Informalmente si può dire che la MTM sa contare esattamente fno a f(n). - spazio-costruibile se: - esiste una MTM che per ogni istanza di lunghezza n si ferma dopo aver usato esattamente f(n) celle di lavoro - f(n) log 2 (n+1) Informalmente si può dire che la MTM sa marcare esattamente f(n) celle, senza utilizzarne altre. Praticamente tutte le funzioni che crescono suffcientemente sono sia tempo che spazio costruibili. Se f e g lo sono, lo sono anche f+g, f*g, f g ; anche n k, k 1 è sia tempo che spazio costruibile.
Relazioni tra modelli di macchina DTIME (t(n)) DTIME RAM (t(n) log(t(n))) mod. costi log. pag.258 DTIME RAM (t(n)) DTIME (t 2 (n)) pag.259 Relazioni tra spazio e tempo di MTM deterministiche DTIME (t(n)) DSPACE (t(n)) Ogni passo può al più richiedere una nuova cella di memoria. DSPACE (s(n)) DTIME (c s(n) ) s(n) log 2 (n+1), c N Su una quantità s(n) di nastro una MTM con k nastri di lavoro può al più operare per t' passi distinti con t' (n+1) s(n) k Q Γ b s(n) 2 s(n) s(n) k Q Γ b s(n) c s(n), con la costante c che dipende dal numero di stati e di caratteri della macchina. N.B. Queste relazioni valgono anche per MTM non deterministiche. Relazioni tra macchine non deterministiche e deterministiche NTIME (t(n)) DTIME (t(n) 2 t(n) ) pag.219 Basta ricordare il risultato del teorema relativo alla simulazione di una macchina nondeterministica con una deterministica [..Se M accetta una stringa x in t passi, M' la accetta in O(t d T) passi] ed osservare che è possibile usare sempre grado di non-determinismo d = 2. NTIME (t(n)) DSPACE (t(n)) con t(n) tempo-costruibile pag.337 Dim. Sia d = 2 il grado di non-det. della macchina non deterministica. La macchina deterministica, che simula quella non deterministica, usa sul nastro dei percorsi uno spazio di lavoro t(n) e, per ogni possibile percorso, simula esattamente t(n) passi della macchina non deterministica usando spazio O(t(n)); lo stesso spazio può essere riutilizzato in tutti i cammini di computazione. Cosa possiamo dire per lo spazio dal modello non det. a quello det.? Innanzitutto che: NSPACE (s(n)) DSPACE (c s(n) ) se s(n) log 2 (n+1) Infatti se la macchina non det. usa s(n) celle e compie t(n) passi, allora la macchina deterministica che effettua la simulazione usa sul nastro dei percorsi s'(n) t(n) celle (se d=2) e sull altro nastro di lavoro usa s(n) celle, per un totale di t(n) + s(n) celle. D'altra parte se la macchina nondeterministica usa s(n) celle tutto ciò che possiamo dire sul suo tempo (v. rag. prec.) e' che t(n) c s(n). Il teorema di Savitch dice che possiamo fare molto meglio. Vanno prima dimostrati il lemma seguente (Lemma 8.3 a pag 330) e la complessità del problema decisionale seguente.
Lemma (pag. 330): Sia M una MT (det/non det) che accetta L in spazio s(n), s(n) spazio-costruibile. Esiste una MT M' (det/non det) con un nastro in più che accetta L in spazio O(s(n)) e che si ferma per ogni input. Il problema decisionale dell'esistenza di un cammino orientato da un nodo s ad un nodo t in un grafo orientato di n nodi ed m archi si può risolvere, nel modello RAM a costi uniformi, in tempo O(m+n) oppure con spazio di lavoro O(log n). Ne seguono i due risultati seguenti. Teorema di Savitch. NSPACE (s(n)) DSPACE (s(n) 2 ) se s(n) spazio-costruibile pag.339 Infne dimostriamo anche che: NSPACE (s(n)) DTIME (c s(n) ) c N, se s(n) spazio-costruibile pag.336 Teoremi di gerarchia Siano s1, s2 due funzioni : N N, s2 spazio-costruibile, tali che: lim n s1(n) / s2(n) = 0 Allora esiste un linguaggio L tale che: L DSPACE(s1(n)) ma L DSPACE(s2(n)). Siano t1, t2 due funzioni : N N, t2 tempo-costruibile, tali che: limn t1(n)(log t1(n)) / t2(n) = 0 Allora esiste un linguaggio L tale che: L DTIME(t1(n)) ma L DTIME(t2(n)). Gerarchia delle classi di complessità notevoli E aperto se le inclusioni della gerarchia sono proprie. Alcune devono esserlo poiché, grazie ai teoremi di gerarchia, possiamo affermare le seguenti separazioni tra classi: i) P EXPTIME ii) LOGSPACE PSPACE Le relazioni tra macchine deterministiche e non deterministiche e il teorema di Savitch ci permettono di asserire che: iii) PSPACE = NPSPACE iv) P NP Infne le relazioni tra classi spaziali e classi temporali ci permettono di asserire che: v) PSPACE EXPTIME vi) NP NPSPACE = PSPACE vii) LOGSPACE P NB Per classi di tempo esponenziale, con n = 10, 2n2 = 2100; se l unità fosse di 10 ns. il tempo sarebbe 1014 secoli.
Classi di complessità più elevate Classi doppiamente esponenziali 22 n (per n = 10, 22 n = 21000); complessità della decisione di teoremi dell'aritmetica di Presbuger Classi triplamente, quadruplamente...esponenziali 222... 2n (sono chiamate funzioni elementari le funzioni che, per input n, richiedono tempo 222... 2n con una catasta di k esponenziali) Classi che, per input n, richiedono tempo: 222...2 con una catasta di n esponenziali: complessità di decisione dell'equivalenza di espressioni regolari con negazione. NB Siamo ancora nel campo delle funzioni ricorsive primitive. Tipi di problemi Data una funzione f: I P (O) che associa ad una istanza x I un insieme f(x) di possibili output possiamo considerare i problemi di: calcolo: dato x I determinare f(x) decisione: dato x I decidere se esiste y f(x) ricerca: dato x I cercare un y O tale che y f(x) enumerazione: dato x I determinare f(x) ottimizzazione: data una metrica su O e dato x I determinare y f(x) che sia ottimo in f(x) rispetto alla metrica Complessità dei problemi di decisione Ogni problema di decisione P, dopo aver codifcato ragionevolmente le istanze in input e standardizzato l'output (SI, NO), può essere formulato come un problema di riconoscimento di un linguaggio. Al problema P, che ha istanze I P = Y P N P, si associa si associa l insieme Y P delle istanze-sì del problema. Se le istanze sono codifcate ragionevolmente su un alfabeto Σ, risolvere P è equivalente a riconoscere il linguaggio L P delle stringhe di Σ* che codifcano le istanze-sì Y P del problema. (Si può sempre assumere che siano riconoscibili in modo effciente tutte le stringhe di Σ* che non descrivono alcuna istanza (positiva o negativa) del problema.) I concetti di complessità di problemi di decisione possono anche essere traslati a problemi di enumerazione o a problemi di ottimizzazione.
Esempio di standardizzazione di un problema decisionale P Istanza: grafo G, intero k Proprietà: G ha un sottografo completo di k nodi? Y P ={ (G = < N, A >, k) esiste un sottoinsieme N' N tale che N' = k ed il sottografo indotto da N' è completo},. Scegliamo una codifca ragionevole delle istanze. Risolvere P equivale a riconoscere il linguaggio L P {0, 1, #, &} * : L P = {c(g) & b(k) dove c(g) e' una stringa in {0,1, #} * che codifca un grafo G, b(k) e' la rappresentazione binaria dell'intero k ed infne G ha un sottografo completo di k nodi } Schema di codifca ragionevole: - rappresenta un intero in base b 2 - rappresenta un insieme fnito enumerando le codifche degli elementi - rappresenta una relazione binaria enumerando le codifche delle coppie - rappresenta un grafo come insiemi di nodi ed di archi Lunghezza di una istanza di un problema: numero di caratteri necessari a rappresentarla in uno schema di codifca predefnito. Due schemi di codifca c, c per un problema sono polinomialmente correlati se esistono due polinomi p, p tali che, per ogni istanza I del problema : c(i) p ( c (I) ) c (I) p( c(i) ) Assumeremo, senza specifica ulteriore, di adottare schemi di codifica ragionevoli. La complessità di un algoritmo risulta invariante, a meno di un polinomio, al variare dello schema. Faremo analisi asintotiche.