Sunteți pe pagina 1din 7

AA Problem Pool

8 ianuarie 2012

Cuprins
1 Notaii de complexitate, recurene 2 Analiz amortizat 3 Invariani la ciclare 4 Inducie structural 5 Nedeterminism 6 Decidabilitate 1 3 3 4 6 7

Notaii de complexitate, recurene

Not : n absena altor precizri, se consider c soluiile recurenelor trebuie furnizate utiliznd aproximri strnse (notaia ). 1. Treceti in dreptul ecarei intrari din tabelul de mai jos cea mai precisa relatie dintre f si g , alegand dintre O, , , o, : f (n) n3 + 3 n + 1 lg n n2n n lg n 100n + lg n g (n) n4 n 3n lg5 n lg n2 n + lg2 n f (n) = . . . (g (n))

Justicati ecare alegere facuta. 2. Creati o ordonare a functiilor urmatoare astfel incat, daca f (n) O(g (n)), atunci f (n) sa apara inaintea lui g (n) in ordonare. Mentionati daca exista functii care au aceeasi crestere asimptotica. Justicati ordonarea propusa. n2 , n lg n, n3 + lg n, n, n2 + 2n lg n, lg lg n, 17 lg n, 10n3/2 , n5 n4 + 2n, 5n2 lg lg n, 3n2 + n3 lg n, n + 6 lg n 3. Rezolvati urmatoarele recurente folosind metoda iteratiei: 1

A(n) = 2A(n/4) +

B (n) = 3B (n/3) + n2 4. Fie recurena T (n) = T (n/2) + T (n/4) + (n2 ). Identicai o aproximare strns a soluiei ecuaiei de mai sus, utiliznd metoda arborilor de recuren. Apoi, vericai soluia gsit, folosind metoda substituiei. 5. Rezolvai recurenele: (a) T (n) = T ( n) + 1 (b) T (n) = n T ( n) + 2011n (c) T (n) = T (n/2 + n) + n

6. Rezolvai recurena T (n) = T (n/3) + T (n/6) + (n

lg n

).

Indicaie : Mrginii inferior i superior membrul drept al egalitii de mai sus, pentru a obine recurene rezolvabile prin metoda master. 7. Se considera un vector cu n numere reale X [0 . . . n1]. Notam cu RM QX (l, r) (Range Minimum Query 1 ) urmatoarea problema: Sa se gaseasca cea mai mica valoare din subvectorul X [l, r], cu 0 l < r n 1. O instanta a problemei RM QX (l, r) poate rezolvata folosind un algoritm traditional de calculare a minimului pentru vectorul X [l, r]. (a) Care este complexitatea rezolvarii RM QX (l, r) in aceasta situatie ? (b) Se observa cu usurinta ca, pentru o secventa de m intrebari RM QX (l, r), abordarea de mai sus devine inecienta. Putem reduce complexitatea rezolvarii celor m intrebari, adaugand o etapa de preprocesare a vectorului X . Scrieti un algoritm de preprocesare a vectorului X , care asigura un timp O(1) pentru a raspunde la intrebari RM QX (l, r). Care este complexitatea acestuia ? (Puteti folosi orice tip de structuri de date pentru memorarea valorilor minime). (c) Algoritmul de preprocesare de la punctul anterior va avea o complexitate spatiala mare. Pentru a o reduce, e urmatoarea alternativa: impartim vectorul X in n/k subvectori de lungime k (la care se adauga un posibil ultim subvector de dimensiune < k ). Pentru ecare dintre acesti subectori, vom calcula minimul si il vom retine intr-un vector M ax. Scrieti un algoritm de preprocesare, care construieste vectorul M ax. Pe baza acestuia, scrieti un algoritm care rezolva RM QX (l, r). (d) Analizati complexitatea rezolvarii a m intrebari RM QX (l, r), pe baza algoritmului de mai sus. (e) Cum inuenteaza valoarea k complexitatea rezolvarii RM QX (l, r) ? Identicati valorile k pentru cazurile cele mai favorabile si defavorabile.
1 http://en.wikipedia.org/wiki/Range_Minimum_Query

Analiz amortizat
1. Se considera o implementare a unei cozi FIFO (First In First Out), folosind doua stive S1 si S2 . Stiva are operatiile PUSH si POP, iar costul ecarei operatii este 1. Coada are operatiile ENQUEUE si DEQUEUE, implementate astfel: ENQUEUE( x ) { do PUSH( x ) on S1 } DEQUEUE( ) { i f ( S2 i s empty ) { POP( ) a l l e l e m e n t s from S1 and PUSH them i n S2 } do POP( ) on S2 and r e t u r n t h e r e s u l t } (a) Exemplicati continutul cozii FIFO (si implicit al stivelor) pentru o secventa oarecare (aleasa de voi) de operatii ENQUEUE si DEQUEUE; (b) Identicati costul mediu pentru o secventa de operatii ENQUEUE si DEQUEUE, folosind metoda agregarii; (c) Identicati costul amortizat pentru operatiile ENQUEUE si DEQUEUE folosind metoda creditelor; (d) Identicati o functie de potential pentru coada FIFO astfel incat costurile amortizate care rezulta pe baza acesteia sa e cele identicate la punctul anterior. 2. Se considera o stiva implementata folosind un vector. Operatiile denite pentru stiva sunt push si pop. Totusi, cand se adauga un element in stiva (push) si vectorul este plin, trebuie sa se aloce un nou vector si sa se copieze elementele din vectorul vechi in cel nou, iar apoi se va folosi vectorul nou pe post de stiva. (a) Care este complexitatea operatiilor push si pop in cazul cel mai defavorabil ? Justicati. (b) Daca dimensiunea vectorului se incrementeaza cu 1 atunci cand este necesar un vector mai mare, care este costul total pentru n operatii si care este costul mediu (amortizat) al unei operatii pe stiva, folosind metoda agregarii ? (c) Daca dimensiunea vectorului se dubleaza atunci cand este necesar un vector mai mare, care este costul total pentru n operatii si care este costul mediu (amortizat) al unei operatii pe stiva, folosind metoda agregarii ?

Invariani la ciclare
1. Demonstrai corectitudinea algoritmului bubble sort, utiliznd invariani la ciclare. 3

Algoritmul 1 BubbleSort(A, n) 1: for i = 1 to n 1 do 2: for j = n downto i + 1 do 3: if A[j ] < A[j 1] then 4: A[j ] A[j 1] 5: end if 6: end for 7: end for

2. Algoritmul lui Euclid primeste doua valori intregi A, B si calculeaza cel mai mare divizor comun: b = B, a = A, r = B w h i l e ( b != 0 ) { r = a mod b a = b b = r } Demonstrati corectitudinea Algoritmului lui Euclid folosind invarianti la ciclare.

Inducie structural
1. Fie tipul de date BT ree denit prin constructorii: BT Empty : BT ree . BT N ode : BT ree T BT ree si denitiile: f lattenT ree(t) : BT ree List (F 1)f lattenT ree(BT Empty ) = [] (F 2)f lattenT ree(BT N ode(lef t, i, right)) = f lattenT ree(lef t)++[i]++f lattenT ree(right) numBT Elem(t) : BT ree N (N 1)numBT Elem(BT Empty ) = 0 (N 2)numBT Elem(BT N ode(lef t, i, right)) = 1+numBT Elem(lef t)+ numBT Elem(right) length(l) : LIST N (L1)length([]) = 0 (L2)length(h : t) = 1 + length(t) Constructorul h : t sta pentru cons(h, t), pentru tipul LIST, [] reprezinta un constructor nular (lista vida), iar [a] sta pentru o lista cu un element.

Operatorul ++ se refera la concatenarea a doua liste. El respecta urmatoarea proprietate: Fie L1 , L2 doua liste. Atunci length(L1 ++L2 ) = length(L1 ) + length(L2 ). Sa se demonstreze ca: T BT Rree.numBT Elem(t) = length(f lattenT ree(t)) 2. Fie limbajul restricionat al logicii cu predicate de ordinul I, cu urmtoarele categorii de expresii: Termeni: Constante i Variabile: Dac x este o constant sau o variabil, atunci x este un termen; Aplicaii de funcii: Dac f este o funcie i t1 , . . . , tn sunt termeni, atunci f (t1 , . . . , tn ) este un termen. Exemple: succesor (4): ntoarce succesorul lui 4, i anume 5; +(2, x): semnic aplicaia funciei de adunare asupra numerelor 2 i x, i, totodat, suma lor; Atomi: Dac P este un predicat i t1 , . . . , tn sunt termeni, atunci P (t1 , . . . , tn ) este un atom. Exemple: Impar (3); Varsta (ion , 20); = (+(2, 3), 5); Formule: Dac x este o variabil, A un atom, iar F i G formule, atunci urmtoarele sunt, de asemenea, formule: Fals, adevrat: , ; Atomi: A; Negaii: F ; Conjuncii: (F G); Cuanticri: x.F .

Formulele au asociate valori de adevr. De exemplu, e formula F x . ( ( x , s ) s . = (+( x , 1), s )) .


x1 x2 s1 s2 G x3 s3

Not : F conine, pentru o lizibilitate sporit, cuanticatorul existenial, care nu este inclus n limbajul restricionat descris. Cu toate acestea, ea poate rescris echivalent, astfel: F x.( (x, s) s. = (+(x, 1), s)). Formula F arm c, oricum am alege un numr x, acesta este mai mare sau egal cu un numr xat, s, i exist un alt numr, numit tot s, care constituie succesorul acestuia. De remarcat c apariia s1 , pe de o parte, i apariiile s2 i s3 , pe de alta, sunt independente, referindu-se, de fapt, la valori diferite: s1 este aceeai pentru toate valorile lui x, n timp ce s2 5

i s3 pot depinde de valorile particulare. Mai mult, am putea redenumi apariiile s2 i s3 , de exemplu, prin t, pstrnd semnicaia formulei. Nu acelai lucru s-ar putea spune i despre apariia s1 . Aceasta ar putea avea o semnicaie global, ind legat la o anumit valoare. n domeniul numerelor naturale, F este adevrat dac legm variabila s (corespunznd apariiei s1 ) la valoarea 0, i fals altfel. n domeniul numerelor ntregi, F este ntotdeauna fals, deoarece ar trebui s legm variabila s la cel mai mic numr ntreg, care nu exist. O apariie x a unei variabile x se numete legat ntr-o formul, dac x apare n oricare din situaiile: x . . . ., deci imediat dup cuanticator; x. . . . x . . ., deci ntr-o formul n care x este cuanticat. O variabil se numete legat ntr-o formul, dac toate apariiile ei sunt legate n acea formul. Altfel, se numete liber. Exemple: n formula F , toate apariiile lui x sunt legate, din moment ce formula ncepe cu x. Prin urmare, x este legat n F ; Prin opoziie, n formula G, toate apariiile lui x sunt libere, deoarece x nu este cuanticat. Prin urmare, x este liber n G; n schimb, n formulele F i G, apariia s1 este liber, n timp ce apariiile s2 i s3 sunt legate. Prin urmare, s este liber n F i G. Fie operatorii FV (free variables ) i BV (bound variables ), astfel nct, pentru formula F , FV (F ) ntoarce mulimea variabilelor libere din formula F , iar BV (F ) mulimea variabilelor legate din aceeai formul. Cerine: (a) Identicai tipurile de date din descrierea de mai sus, alturi de constructorii de baz, preciznd signatura i felul acestora (nulari, externi, interni); (b) Denii signaturile i axiomele corespunztoare operatorilor FV i BV ; (c) Demonstrai, prin inducie structural, c, pentru orice formul F , FV (F ) BV (F ) = .

Nedeterminism
1. Demonstrai c problema 2-SAT este n P: 2-SAT Este o formul FNC, n care ecare termen conine doi literali, satisabil? 2. Fie problemele de mai jos. Sunt ele n P? FNC-tautologie Este o formul FNC adevrat pentru orice legare a variabilelor sale? FND-tautologie Similar, unde o fromul FND (forma normal disjunctiv ) conine SAU ntre termeni i I n interiorul termenilor. 6

3. Scriei un algoritm nedeterminist care veric dac, ntr-un graf neorientat, exist un drum simplu ntre dou noduri xate, de cost cel puin k . Care este complexitatea angelic a algoritmului? 4. Scriei un algoritm nedeterminist care veric dac o mulime de numere poate partiionat n dou submulimi, avnd sumele elementelor egale. Care este complexitatea angelic a algoritmului? 5. Pentru oricare din cei doi algoritmi de mai sus, scriei un algoritm determinist echivalent i analizai complexitatea lui. 6. Demonstrati ca urmatoarele probleme sunt NP-complete: k-Vertex-Cover ; Set-Cover ; Independent-Set In cadrul demonstratiei, se stie ca problema 3-SAT este NP-completa. Nu se cunosc (si nu pot folosite) alte rezultate. Demonstratiile pot facute in orice ordine, iar rezultatele pot folosite in demonstratiile ulterioare. (Spre exemplu, dupa demonstratia NP-completitudinii lui Set-Cover, se pot construi reduceri plecand de la aceasta problema).

Decidabilitate
1. Demonstrati ca problema terminarii unui program care primeste, ca intrare, propria sa codicare, este semidecidabila. 2. Demonstrai c reuniunea i intersecia a dou mulimi recursive sunt recursive. 3. Demonstrai c reuniunea i intersecia a dou mulimi recursiv-numrabile sunt recursiv-numrabile.

S-ar putea să vă placă și