Sunteți pe pagina 1din 5

Universitatea Alexandru Ioan Cuza, Iaşi

Facultatea de Informatică
Proiectarea Algoritmilor - Test Scris (Reexaminare) (17 iunie 2020)
Varianta de test pentru studentul Schita Solutie pentru GHINDARU N. DIANA-LORENA

Redactat, i rezolvarea pe maxim 4 pagini A4, conform procedurii de examinare online prezentată pe site-ul cursului.
După ce terminat, i, scanat, i paginile ı̂ntr-un singur fis, ier .PDF de dimensiune de maxim 4MB s, i ı̂ncărcat, i fis, ierul la adresa
https://docs.google.com/forms/d/e/1FAIpQLSfXIbbjSOJlAXxKjeVY_Rm3VrJh7Bmn9gqyZbqUXC2UFvsyJg/viewform?
usp=sf_link (trebuie să vă conectat, i folosind un cont Google). Pe 17 iunie 2020, la ora 14h30, formularul va fi ı̂nchis
s, i nu vet, i putea ı̂ncărca rezolvări după această oră.

Test scris
Completat, i de mână pe foaia de examen următoarele informat, ii.

Nume: . . . . . . . . . . . . . . . . . . . . . . . .
Grupa: . . . . . . . . .
Declarat, ie de onestitate
Subsemnatul, . . . . . . . . . . . . . . . . . . . . . . . . , student al Facultăt, ii de Informatică, Universitatea Alexandru Ioan Cuza,
declar că rezolvarea care urmează ı̂mi apart, ine ı̂n integralitate s, i că cunosc regulamentul universităt, ii referitor la
sanct, iunile posibile (inclusiv nepromovarea disciplinei, exmatriculare) aplicate ı̂n caz de fraudă sau tentativă de fraudă.

Data: . . . . . . . . . . . . . . . . . . . . . . . . Semnătură . . . . . . . . . . . . . . . . . . . . . . . .
Rezolvat, i următoarele exercit, ii. Nu copiat, i cerint, a, dar scriet, i numărul itemului la care răspundet, i.
Q1 Analiza s, i proiectarea algoritmilor - elemente de bază.
Se consideră următorul algoritm, care primes, te la intrare un tablou 5-dimensional M [1..n][1..n][1..n][1..n][1..n]:
s = 0;
for (i = 100; i <= n - 999999; i += 3) {
| for (j = n - 100; j >= 1; j -= 2) {
| | for (k = n; k >= 100; k -= 3) {
| | | for (x = n - 100; x >= 3; x /= 3) {
| | | | for (y = 999999; y <= n - 100; y *= 2) { // atentie la detalii
| | | | | if (M[i][j][k][x][y] > 10) { // in for-urile de mai sus
| | | | | | s = 1;
| | | | | | break;
| | | | | }
| | | | }
| | | | if (s == 1) break;
| | | }
| | | if (s == 1) return s;
| | }
| }
| if (s == 1) return s;
}
return s;
Datele de intrare se presupun corecte.
(a) (4p) Ce problemă computat, ională rezolvă algoritmul de mai sus (sub forma de pereche de specificat, ii input-
output)?
Input: un tablou 5-dimensional M [1..n][1..n][1..n][1..n][1..n] cu n ≥ 0
Output: s = 1 dacă există i ∈ {. . .}, j ∈ {. . .}, k ∈ {. . .}, x ∈ {. . .}, y ∈ {. . .} a.i. M [i][j][k][x][y] > 10; s =
0, altfel.
Pentru fiecare variat, ie a subiectului, mult, imile ı̂n care iau valori i, j, k, x, y sunt diferite s, i trebuiau precizate
cu diligent, ă.
(b) (5p) Să se scrie un algoritm nedeterminist care să rezolve aceeas, i problemă. Algoritmul nedeterminist nu
va cont, ine instruct, iuni repetitive s, i nici funct, ii recursive. Scrierea unui algoritm probabilist ı̂n locul unui
algoritm nedeterminist = 0 puncte.

Pagina 1 din 5
choose i in { 1, 2, ..., n } s.t. ...;
choose j in { 1, 2, ..., n } s.t. ...;
choose k in { 1, 2, ..., n } s.t. ...;
choose x in { 1, 2, ..., n } s.t. ...;
choose y in { 1, 2, ..., n } s.t. ...;
if (M[i][j][k][x][y] > 10) {
success;
} else {
failure;
}
Pentru fiecare variat, ie a subiectului, constrângerile erau diferite s, i trebuiau precizate corect. O altă variantă
era alegerea nedeterministă, e.g., a numărului de incrementări/impărt, iri/etc s, i calcularea i,j,k,x,y ı̂n funct, ie
de alegerile respective.
(c) (1p) Care este modelul de calcul cel mai potrivit pentru analiza complexităt, ii algoritmului (cu justificare)?
Modelul uniform, deoarece operat, iile care domină timpul de rulare sunt comparat, ii (similar cu sortarea).
(d) (6p) Să se calculeze complexitatea ı̂n cazul cel mai nefavorabil.
(1p) Dimensiunea datelor de intrare (dimensiunea unei instant, e).
m, unde m = n5 .
(1p) Operat, iile care se numără.
Comparat, iile M [i][j][k][x][y] > 10.
(2p) Cazul cel mai nefavorabil (ı̂n funct, ie de dimensiunea datelor de √ intrare).
De exemplu, M [i][j][k][x][y] = 5 pentru orice 1 ≤ i, j, k, x, y ≤ n = 5 m.
(2p) Timpul pentru cazul cel mai nefavorabil. √
Timpul este O(n * n * n * log n * log n), unde n = 5 m.
(e) (4p) Să se calculeze complexitatea ı̂n cazul cel mai favorabil.
(2p) Cazul cel mai favorabil (ı̂n funct, ie de dimensiunea datelor de intrare). p
Un tablou M a.ı̂. M[100][n - 100][n][n - 100][999999] = 11 (pentru n = 5 (m) suficient de mare).
(2p) Timpul pentru cazul cel mai favorabil.
În funct, ie de early return-uri s, i break-uri.

Q2 Analiza probabilistă a algoritmilor.


Fie următoarea problemă:
Input:
• un tablou A[0 .. n - 1] cu elemente din mult, imea {0, 1, 2, 3, 4, 5};
• o valoare v din mult, imea {0, 1, 2, 3, 4, 5}.
Output:
• indicele ultimei aparit, ii a valorii v ı̂n A sau
• −1, dacă v nu apare ı̂n A.
(a) (5p) Proiectat, i un algoritm determinist care rezolvă problema de mai sus printr-o parcurgere secvent, ială,
care să realizeze cât mai put, ine comparat, ii.
f(A[0..n-1], v) {
i = n - 1;
while (i >= 0 && A[i] <> v) {
i = i - 1;
}
return i;
}
(b) (5p) Fie C(n) variabila care desemnează numărul de comparat, ii efectuate de algoritmul de mai sus pentru
date de intrare de dimensiune n. Care sunt valorile posibile ale lui C(n)? (fără probabilităt, ile asociate)
Valorile posibile sunt 1, 2, . . . , n (pentru n = 0, avem 0 comparat, ii).
[Dacă se consideră s, i i ≥ 0: 1, 2, 4, 6, . . . , 2n − 2, 2n, 2n + 1.]
(c) (5p) Presupunând că distribut, ia de probabilitate pentru datele de intrare este astfel ı̂ncât fiecare pozit, ie
din A să cont, ină:
i. valoarea 0 cu probabilitate 2/24;
ii. valoarea 1 cu probabilitate 4/24;
iii. valoarea 2 cu probabilitate 6/24;
iv. valoarea 3 cu probabilitate 3/24;
v. valoarea 4 cu probabilitate 1/24;
vi. valoarea 5 cu probabilitate 8/24,
iar v este aleasă aleatoriu uniform din mult, imea {0, 2, 5}, să se determine Prob(C(n) = x), pentru toate
valorile x determinateP la punctul 1anterior. x−1
Prob(C(n) = x) = v∈{0,2,5} |{0,2,5}| (1 − pv ) × pv (de x − 1 ori nu am găsit v, a x-a oară am găsit v),
unde:

Pagina 2 din 5
p0 = 2/24, p1 = 2/24, p2 = 2/24, p3 = 2/24, p4 = 2/24, p5 = 2/24.
[Dacă se consideră s, i i ≥ 0: se modifică corespunzător.]
(d) (5p) Folosind variabila aleatorie C(n), să se determine numărul mediu de comparat, ii efectuate de algoritm
pentru date de intrare de dimensiune n (având distribut, ia de probabilitate de mai sus).
P n
i=1 i × P rob(C(n) = i) (i ia toate valorile posibile pentru numărul de comparat, ii, iar fiecare valoare e
ponderată cu probabilitatea ei).
[Dacă se consideră s, i i ≥ 0: se modifică corespunzător.]

Q3 Greedy
Fie B = {1, 16, 30, 31}. Se consideră următoarea variantă a problemei plăt, ii unei sume de bani folosind număr
minim de bancnote:
Input:
• un număr natural s ∈ N.
Output:
• cel mai mic număr de bancnote necesar pentru a achita exact suma s, folosind bancnote din B.
(a) (5p) Găsit, i o instant, ă a problemei pentru care algoritmul greedy prezentat la curs nu produce solut, ia optimă
(cu justificare).
De exemplu, oricare dintre numerele: [46, 60, 76, 77, 90, 91].
Pentru 46: solut, ia greedy produce 46 = 31 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1, dar
46 = 30 + 16 e solut, ia optimă.
(b) (5p) Reprezentat, i pe foaia de examen primele 2 nivele (de muchii, 3 nivele de noduri) din arborele cu toate
subproblemele (noduri) s, i alegerile (muchii) posibile pornind de la subproblema init, ială dată de instant, a
găsită la punctul (a). Marcat, i alegerile greedy cu muchii ı̂ngros, ate.
46

45 30 16 15

44 29 15 14 29 14 0 15 0 14
Aici trebuiau ı̂ngros, ate toate alegerile greedy.
(c) (5p) Schimbat, i un număr minim de elemente din B 1 pentru a obt, ine o problemă computat, ională pentru
care strategia greedy de mai sus produce solut, ia optimă pentru toate input-urile.
În funct, ie de variantă (de obicei se poate cu o singură modificare; ı̂n orice caz, cel mult două modificări
sunt necesare).
Conform enunt, ului, nu era permisă s, tergerea sau inserarea unor elemente, ci doar modificarea.
Aici era utilă s, i o justificare, chiar dacă la nivel intuitiv.
(d) (5p) Enunt, at, i lema de alegere greedy s, i proprietatea de substructură optimă aferente noii probleme.
Enunt, urile generale (pentru greedy ı̂n general, sau pentru problema bancnotelor ı̂n general) primesc 0
puncte.
A se vedea cursul.

Atent, ie! Întrebarea Q4 este pe pagina următoare.

1 trebuie păstrat numărul de elemente distincte din B, doar se ı̂nlocuiesc un număr cât mai mic de elemente cu altele.

Pagina 3 din 5
Q4 Backtracking, Probleme NP-complete.
Considerăm problema SAT s, i rezolvarea ei prin metoda backtracking prezentată la curs.
(a) (10p) Găsit, i o formulă propozit, ională peste variabilele x1 , x2 , x3 (trebuie să apară toate cele 3 variabile ı̂n
formulă) pentru care arborele de căutare pruned este:

dfs(1)

0 1

dfs(2) dfs(2)

0 1 0 1

dfs(3) dfs(3) dfs(3) dfs(3)

0 1 1 1 0

dfs(4) dfs(4) dfs(4) dfs(4) dfs(4)

Muchiile neetichetate reprezintă muchii unde se face pruningul. Dacă nu există o astfel de formulă, justificat, i
de ce.
Pentru toate variat, iile există solut, ie.
Solut, ia poate fi găsită fie ad-hoc, fie prin aplicarea unei strategii.
Strategia cea mai simplă e să asociem pentru fiecare nod din arbore o subformulă (pentru frunze, asociem
conceptual formula >, reprezentând adevărat, urmând să o simplificăm ulterior).
S, tiind formulele asociate fiilor unui nod, alcătuim formula ı̂n funct, ie de cele trei cazuri după cum urmează:
Dacă sunt doi fii:

dfs(i) (formula f)
/ \
0 / \ 1
/ \
dfs(i+1) dfs(i+1)
(formula f1) (formula f2)

atunci alegem f = (¬xi ∧ f1 ) ∨ (xi ∧ f2 ).


Dacă există un singur fiu, de exemplu al doilea:

dfs(i) (formula f)
/ \
/ \ 1
/ \
(muchie retezată) dfs(i+1)
(formula f2)

atunci alegem f = (xi ∧ f1 ) (cazul cu primul fiu e analog).


Dacă nu există niciun fiu:

dfs(i) (formula f)
/ \
/ \
/ \
(muchie retezată) (muchie retezată)

atunci alegem f = (xi ∧ ¬xi ).

Pagina 4 din 5
O altă strategie posibilă pentru a găsi o formulă: pentru fiecare drum ı̂n care ultima muchie este coafată
se adaugă o clauză. De exemplu, pentru drumul cu muchiile 0, 1, 0, se adaugă clauza x1 ∨ ¬x2 ∨ x3 .
Conjunct, ia acestor clauză asigură retezarea muchiilor ı̂n punctele din arbore, dar e posibil să coafeze arborele
suplimentar s, i din acest motiv e posibil să fie nevoie de ajustări ale formulei rezultate.
(b) (10p) Proiectat, i o reducere polinomială de tip Karp de la problema 4-COL la problema SAT (4-COL =
4-colorabilitate – dându-se un graf neorientat, să se determine dacă nodurile acestuia pot fi colorate cu
4 culori astfel ı̂ncât orice două noduri adiacente să aibă culori diferite), exemplificând reducerea pe un
exemplu de date de intrare cu 5 noduri s, i 8 muchii, sau justificat, i că o astfel de reducere nu există.
Pentru toate variat, iile există solut, ie.
O reducere simplă: pentru fiecare nod x s, i fiecare culoare c se V crează o variabilă booleană bx,c .
Pentru fiecare muchie {x, y}, se construies, te o formulă φx,y = c ((bx,c → ¬by,c ) ∧ (by,c → ¬bx,c )).
Formula este conjunct, ia tuturor formulelor asociate muchiilor, plus:
• o constrângere pentru fiecare nod x care modelează faptul că fiecare nod are cel put, in o culoare:
bx,1 ∨ . . . ∨ bx,n (unde n e numărul de culori).
• o constrângere
V pentru fiecare nod x care modelează faptul că fiecare nod nu are mai mult de o culoare:
bx,c → d∈{1,2,...,n}\{c} ¬bx,d .
5 puncte pentru prezentarea reducerii (de exemplu, reducerea de mai sus) s, i 5 puncte pentru exemplu
(fiecare variat, ie a avut alt exemplu).

Pagina 5 din 5

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