Sunteți pe pagina 1din 2

Universitatea Al.I.

Cuza Iasi Facultatea de Informatic

Nume: An: Grupa:

Tehnici de proiectarea i analiza algoritmilor Test scris 01.02.10


Observaii: 1. Nu este permis consultarea bibliografiei. 2. Toate ntrebrile sunt obligatorii. 3. Fiecare ntrebare este notat cu un numr de puncte indicat n parantez. Alegerea corect a variantei la ntrebrile grila se puncteaz numai dac justificarea este total sau parial corect. 4. Nu este permis utilizarea de foi suplimentare.

1. (2p) Se consider programul: //n este un numr ntreg function f(n) if (n 1) then return n else return 5*f(n-1) - 6*f(n-2) a) S se arate c c funcia f(n) calculeaz 3n 2n pentru n b) S se calculeze timpul de execuie. Justificare.

0.

Indicaie. a) Prin inducie dupa n. b) Se afl mai nti recurena T(n) = T(n - 1) + T(n-2), care prin rezolvare sau analogie cu Fibonacci duce la complexitate exponenial.

2. (1p) Soluia dat la curs pentru limita inferioar (n log n) a algoritmilor de sortare bazai pe comparaii este dat
pentru cazul cnd rezultatul unei operaii de comparaie are dou ieiri: a*i+ < a*j+ sau a*i+ > a[j], presupunnd c toate elementele sunt distincte. Evident, c rezultatul are loc i dac ieirile sunt a*i+ <= a*j+ sau a*i+ > a*j+, respectiv a*i+ < a[j] sau a[i] >= a[j], pentru cazurile cnd elementele pot fi i egale. ntrebarea la care trebuie s rspundei este: se menine limita (n log n) dac operaia de comparaie are trei ieiri: a*i+ < a*j+ sau a*i+ = a*j+ sau a*i+ > a*j+?. Indicaie. In soluia dat la curs arborele de decizie pentru sortare este binar; n cazul descris de problem arborele devine ternar (fiecare nod intern are 3 copii). Calculele ramn la fel doar c acum logaritmul este n baza 3, dar schimbarea bazei algoritmului nu schimb ordinul de complexitate.

3. (1.5p) O list cu auto-ajustare este o structur de date liniar utilizat pentru rezolvarea problemei cutrii. Ideea
de baz este urmtoarea: de fiecare dat cnd se caut cu succes pentru un element, acesta este mutat pe prima poziie. De obicei, pentru implementarea lor se utilizeaz liste nlanuite. S se precizeze n care cazuri cutarea n liste cu ajustare este mai performant dect cutarea obinuit n liste nlnuite. Justificai. Indicaie.

Era suficient de gsit cazuri n care cutarea cu auto-ajustare este mai buna. De exemplu: presupunem c avem 100 cutari pentru k1, dup care 1000 de cutari pentru k2 i dup care 1000 de cautari pentru k3. Daca ki se gsete pe pozitia ji, atunci la cutarea secvenial (fara auto-ajustare) vom avea 100(j1 + j2 + j3) >= 6000 (cel mai favorabil) iar in cazul auto-ajustare avem j1 + j2 + j3 + 3 * 999 <= 3n-3 + 3 * 999 (cel mai nefavorabil). Evident, dac n < 1000, atunci n cazul cel mai nefavorabil pentru cutarea cu auto-ajustare este mai eficient dect cazul cel mai favorabil pentru cutarea secvenial. 4. (1.5p) S se descrie informal cum se poate utiliza algoritmul lui Floyd, care determin drumurile cele mai scurte ntre oricare dou vrfuri ale unui digraf prin paradigma programrii dinamice, pentru a numra cte drumuri (inclusiv cele infinite) sunt ntre oricare dou vrfuri.
Indicaie.

Mergnd pe aceeai idee de la determinarea drumului minim (recurena obinut prin aplicarea PO), se observ c nr. drumurilor de la i la j este produsul dintre nr.drumurilor de la i la k nr. drumurilor de la k la j.

-1-

E sufiecient de completat algoritmul care det. lung. minime cu instruciunile care numr drumurile (de precizat cum se iniializeaz i cum se actualizeaz). 5. (1.5p) S se proiecteze un algoritm divide-et-impera care nmulete n numere complexe utiliznd numai 3(n-1)
nmuliri de numere reale. Artai c algoritmul c ndeplinete condiiile cerute. Indicaie. Este asemntor cu Ex. 10.2 din carte (idei inspiratoare vin si de la 10.6). Divide: se mparte n dou subprobleme: prima subproblema - primele [n/2], a doua subproblem restul; Asamblarea: se n mulesc cele dou numere rezultate din rezolvarea subproblemelor Nr. de nmuliri: M(n) = 2*M(n/2) + c = 4*M(n/4) + 2c + c = ... = c(n-1). Mai rmnea de vzut c dou numere complexe se pot nmuli cu 3 nmuliri de numere reale. 6. (1.5p) Se consider urmtoarele dou variante pentru problema comis-voiajorului. CV-DEC CV-OPT Intrare: matricea distanelor, un buget B Intrare: matricea distanelor, un buget B Ieire: un circuit care trece prin toate oraele i a crui Ieire: cel mai scurt circuit care trece prin toate oraele. cost este B. S se arate c dac exist un algoritm polinomial care rezolv CV-DEC atunci exist un algoritm polinomial care rezolv CV-OPT. (Indicaie. Cutarea binar poate fi de ajutor.) Indicaie. Se calc. un buget minim posibil, un buget maxim posibil si apoi se face cutarea binar a bugetului optim apelnd algoritmul care rezolv CV-DEC.

-2-

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