Sunteți pe pagina 1din 6

Varianta 1

Toate problemele trebuie nsoite de demonstraia scris a corectitudinii i complexitii


Pentru testul de laborator i examen trebuie tiute problemele din toate cele 3 variante
1. Acoperire - Se dau un interval nchis [a,b] si o mulime de alte n intervale nchise [ai,bi], 1 i
N. Scriei un program care determin i afieaz o submulime de cardinal minim de intervale nchise
din mulimea dat cu proprietatea c prin reuniunea acestora se obine un interval care include pe
[a,b]. Dac prin reuniunea tuturor intervalelor nu putem obine un interval care sa includ intervalul
[a,b], se va afia -1 O(n logn) http://varena.ro/problema/acoperire (2p)
date.in
10 20
5
9 15
4 16
5 12
14 21
11 18

date.out
9 15
14 21

2. Planificare cu minimizarea ntrzierii maxime Se consider o mulime de n activiti care


trebuie planificate pentru a folosi o aceeai resurs. Aceast resurs poate fi folosit de o singur
activitate la un moment dat. Pentru fiecare activitate i se cunosc durata li i termenul limit pn la care
se poate executa ti (raportat la ora de nceput 0). Dorim s planificm aceste activiti astfel nct
ntrzierea fiecrei activiti s fie ct mai mic. Mai exact, pentru o planificare a acestor activiti
astfel nct activitatea i este programat n intervalul de timp [si, fi), definim ntrzierea activitii i ca
fiind durata cu care a depit termenul limit: pi max{0, f i t i } .
ntrzierea planificrii se definete ca fiind maximul ntrzierilor activitilor:
Exemplu. Pentru n = 3 i l1 = 1, t1 = 3 / l2 = 2, t2 = 2 / l3 = 3, t3 = 3
o soluie optim se obine dac planificm activitile n ordinea 2, 3, 1; astfel:
o activitatea 2 n intervalul [0, 2) ntrziere 0
o activitatea 3 n intervalul [2, 5) ntrziere 5 t3 = 5 - 3 = 2
o activitatea 1 n intervalul [5, 6) ntrziere 6 t1 = 6 - 3 = 3
ntrzierea planificrii este max{0, 2, 3}=3 P max{ p1 , p2 , ..., pn }
a) S se determine o planificare a activitilor date care s aib ntrzierea P minim. Se vor afia
pentru fiecare activitate intervalul de desfurare i ntrzierea O(n log n)
date.in
3
1 3
2 2
3 3

date.out
activitatea 2: intervalul 0 2 intarziere 0
activitatea 3: intervalul 2 5 intarziere 2
activitatea 1: intervalul 5 6 intarziere 3
Intarziere planificare 3

b) Este corect un algoritm Greedy bazat pe urmtoarea idee: planificm activitile n ordine
cresctoare n raport li (adic n raport cu durata)? Justificai.
c) Este corect un algoritm Greedy bazat pe urmtoarea idee: planificm activitile n ordine
cresctoare n raport cu diferena ti-li (adic n raport cu timpul maxim la care trebuie s nceap
activitatea i pentru a respecta termenul limit)? Justificai. (2,5p)
3. Descompunere n subiruri descresctoare: Se d un ir de numere naturale. S se descompun
irul de numere ntr-un numr minim de subiruri descresctoare (nestrict) i s se afieze aceste
subiruri.

a) Implementai un algoritm O(n log n) pentru rezolvarea acestei probleme. (Indicaie pentru
demonstrarea corectitudinii: Numrul optim de subiruri este egal cu lungimea maxim a unui
subir cresctor al irului iniial).
date.in
6
11 13 10 15 12 7

date.out
11 10 7
13 12
15

b) Este corect urmtorul algoritm Greedy pentru rezolvarea acestei probleme? Justificai
Ct timp mai sunt elemente n ir repet:
- construim un subir descresctor care ncepe cu primul element din ir, adugnd pe rnd
la subir urmtorul element din ir care se poate aduga (mai mic sau egal cu ultimul element
adugat la subir)
- afieaz acest subir i elimin-l din irul iniial
c) Implementai Patience Sorting o metod de sortare bazat pe mprirea unui ir n subiruri
descresctoare, memorate ca stive (dup aceast mprire se repet de n ori urmtoarea operaie:
mut cea mai mic valoare din topul unei stive n vectorul rezultat, iniial vid) - O(n log n). Pentru
mai multe detalii i imagini sugestive pentru nelegerea problemei, dar i legtura cu problema
determinrii celui mai lung subir cresctor al unui ir pe care o vom studia la programare
dinamic se pot consulta spre exemplu:
https://en.wikipedia.org/wiki/Patience_sorting
https://www.cs.princeton.edu/courses/archive/spring13/cos423/lectures/LongestIncreasingSubsequenc
e.pdf (4,5p)

Varianta 2
Toate problemele trebuie nsoite de demonstraia scris a corectitudinii i complexitii
Pentru testul de laborator i examen trebuie tiute problemele din toate cele 3 variante
1. Se dau n cuburi cu laturile diferite dou cte dou. Fiecare cub are o culoare, codificat cu un
numr de la 1 la p (p dat).
a) S se construiasc un turn de nlime maxim de cuburi n care un cub nu poate fi aezat pe un cub
de aceeai culoare sau cu latur mai mic dect a sa O(n logn). Pe prima linie a fiierului de intrare
se dau n i p, iar pe urmtoarele linii latura i culoarea fiecrui cub. n fiierul de ieire se vor afia
nlimea turnului obinut i indicele cuburilor folosite (de la baz la vrf)
date.in
4 2
5 1
10 1
9 1
8 2

date.out
23
2 4 1

b) n cazul n care lungimile laturilor cuburilor nu erau diferite mai este valabil metoda propus?
Justificai. (2p)
2. Memorarea textelor pe banda variante
a) n texte cu lungimile L(1),...,L(n) urmeaz a fi aezate pe o band. Pentru a citi textul de pe poziia
k, trebuie citite textele de pe poziiile 1,2,...,k. Pentru fiecare text i se cunoate i frecvena f(i) cu care
acesta este citit. S se determine o modalitate de aezare a textelor pe band astfel nct timpul total de
acces s fie minimizat. Timpul total de acces pentru o aezare a textelor corespunztoare unei
n

f ( p )[ L( p ) ... L( p )] O(n log n)

permutri p se definete ca fiind

i 1

Pe prima linie a fiierului de

intrare se d n, iar pe urmtoarele linii lungimea i frecvena fiecrui text.


date.in
3
5 25
1 25
5 50

date.out
2 3 1

Problem echivalent - programarea taskurilor cu prioriti diferite. n activiti cu duratele


L(1),...,L(n) urmeaz a fi programate pentru executare (secvenial) folosind o aceeai resurs. Fiecare
activitate i are asociat o prioritate w(i). O ordine n care se execut aceste activiti se poate
reprezenta printr-o permutare pSn. n raport cu aceast ordine, a i-a activitate executat are timpul de
terminare L( p1 ) ... L( pi ) . S se determine o ordine n care trebuie planificate activitile astfel
nct s fie minimizat suma ponderat a timpilor de finalizare a aciunilor, dat de formula
n

w( p )[ L( p ) ... L( p )]
i 1

b) n texte cu lungimile L(1),...,L(n) urmeaz a fi aezate pe p benzi (p dat). Pentru a citi textul de pe
poziia k de pe o banda, trebuie citite textele de pe poziiile 1,2,...,k de pe aceea band. Fiecare text are
aceeai frecven de citire. S se determine o modalitate de aezare a textelor pe cele p benzi astfel
nct timpul total de acces s fie minimizat (se obine adunnd timpul total de acces pentru fiecare din
cele p benzi). O(n log n) (3p)
3. Maximizarea profitului cu respectarea termenelor limit Se consider o mulime de n activiti
care trebuie planificate pentru a folosi o aceeai resurs. Aceast resurs poate fi folosit de o singur
activitate la un moment dat. Toate activitile au aceeai durat (s presupunem 1). Pentru fiecare
activitate i se cunosc termenul limit pn la care se poate executa ti (raportat la ora de nceput 0, 1 ti
n) i profitul pi care se primete dac activitatea i se execut la timp (cu respectarea termenului

limit). S se determine o submulime de activiti care se pot planifica astfel nct profitul total
obinut s fie maxim.
Exemplu. Pentru n = 4 i
p1 = 4, t1 = 3
p2 = 1, t2 = 1
p3 = 2, t3 = 1
p4 = 5, t4 = 3
o soluie optim se obine dac planificm activitile n ordinea 3, 4, 1, profitul obinut fiind
p3 + p4 + p1 = 2 + 5 + 4 = 11. O(n logn) (4p)
date.in
4
4 3
1 1
2 1
5 3

date.out
11
3 4 1

Varianta 3
Toate problemele trebuie nsoite de demonstraia scris a corectitudinii i complexitii
Pentru testul de laborator i examen trebuie tiute problemele din toate cele 3 variante
1.
Considerm urmtorul joc pentru dou persoane. Tabla de joc este o secven de n numere
ntregi pozitive, iar cei doi juctori mut alternativ. Cnd un juctor mut, el selecteaz un numr ori
de la stnga ori de la dreapta secvenei. Numrul selectat este ters de pe tabl. Jocul se termin cnd
toate numerele au fost selectate. Primul juctor ctig dac suma numerelor pe care le-a selectat este
cel puin egal cu suma selectat de al doilea juctor. Al doilea juctor joac ct de bine poate.
Primul juctor ncepe jocul. tim c tabl se afl la nceput un numr par de elemente n.
a)
S se scrie un program astfel nct, indiferent cum va juca al doilea juctor, primul juctor
ctig. Scriei programul astfel nct primul juctor s mute cu ajutorul programului, iar calculatorul
s mute aleator de la stnga sau de la dreapta. La ieire se va scrie suma obinut de primul juctor,
suma obinut de cea de al doilea i secvenele de mutri sub forma unor iruri cu caracterele S
pentru stnga i D pentru dreapta. Exemplu: pentru tabla cu numerele 2 1 4 3 o soluie ctigtoare
este urmtoarea:
Pasul 1 - primul juctor alege S (valoarea 2); rmn pe tabl 1 4 3
Pasul 2 - calculatorul are dou posibiliti: S (valoarea 1) sau D (valoarea 3).
Pasul 3 dac la pasul 2 calculatorul a ales S, atunci primul juctor alege S (valoarea 4);
dac la pasul 2 calculatorul a ales D, atunci primul juctor alege D (valoarea 4);
Pasul 4 pe tabl a mai rmas doar o valoare (3 respectiv 1, n funcie de alegerea de la pasul 2),
pe care o alege calculatorul
Astfel, primul juctor a adunat suma 2+4, iar calculatorul suma 1+3 (respectiv 3+1), deci primul
juctor a ctigat - O(n)
b) n cazul n care urma strategiei implementate la a) pentru o secven de numere primul juctor
obine o sum egal cu cel de al doilea, este posibil ca prin alt strategie totui primul juctor s ctige
cu o sum strict mai mare pentru aceeai secven? Justificai (1,5p)
2. Dat un arbore cu n vrfuri, s se determine o mulime de vrfuri neadiacente de cardinal maxim (o
submulime independent maxim a mulimii vrfurilor). Exemplu: Pentru un arbore cu 8 vrfuri i
muchiile {(1,2),(1,3),(2,4),(2,5),(3,6),(3,7),(5,8)} se va afia mulimea {1,4,6,7,8}, nu neaprat n
aceast ordine. Pentru un graf neorientat oarecare mai este corect o metod de tip Greedy similar?
Justificai. O(n) (3p)
date.in
8
1 2
1 3
2 4
2 5
3 6
3 7
5 8

date.out
5
14678

3. Problema partiionrii intervalelor Se consider n intervale nchise (interpretare: n cursuri,


pentru care se cunosc ora de nceput i ora de sfrit). Se cere s se mpart (partiioneze) aceast
mulime de intervale ntr-un numr minim de submulimi cu proprietatea c oricare dou intervale
dintr-o submulime nu se intersecteaz i s se afieze aceste submulimi (interpretare: s se determine
numrul minim de sli necesare pentru a putea programa aceste cursuri n aceeai zi i afiai o astfel
de programare). Care dintre urmtorii algoritmi Greedy sunt coreci pentru a rezolva aceast
problem? Pentru fiecare algoritm (subpunct) justificai corectitudinea sau dai un contraexemplu:
a) Se sorteaz intervalele cresctor dup extremitatea iniial. Pentru fiecare interval I n aceast
ordine execut: se adaug I la o submulime deja construit, dac se poate (nu se intersecteaz cu
niciun interval din ea), altfel se creeaz o nou submulime cu intervalul I.

b) Se sorteaz intervalele cresctor dup extremitatea final.. Pentru fiecare interval I n aceast
ordine execut: se adaug I la o submulime deja construit, dac se poate, altfel se creeaz o nou
submulime cu intervalul I. Dac exist mai multe mulimi la care se poate aduga I, se alege una
arbitrar.
c) Se sorteaz intervalele cresctor dup extremitatea final Pentru fiecare interval I n aceast ordine
execut: se adaug I la o mulime deja construit, dac se poate, altfel se creeaz o nou mulime
cu intervalul I. Dac exist mai multe mulimi la care se poate aduga I, se alege acea submulime
care conine intervalul cu extremitatea final cea mai mare (care se termin ct mai aproape de
nceputul intervalului I)
d) Ct timp mai sunt intervale nedistribuite n submulimi repet: construiete o submulime de
cardinal maxim de intervale disjuncte din mulimea de intervale (folosind algoritmul de la
problema spectacolelor discutat la curs) i se elimin aceste intervale din mulimea de intervale
(altfel spus, se construiete prima submulime folosind un numr maxim de intervale, apoi a doua
submulime folosind un numr maxim de intervale din cele rmase etc).
e) Implementai un algoritm O(n log n) pentru rezolvarea acestei probleme.
Exemplu: pentru n=3 cursuri, care trebuie s se desfoare n intervalele: [10, 14], [12, 16],
respectiv [17, 18], sunt necesare 2 sli, o programare optim fiind:
o
Sala 1: [10, 14] activitatea 1, [17, 18] activitatea 3
o
Sala 2: [12, 16] activitatea 2 (4,5p)
date.in
3
10 14
12 16
17 18

date.out
2
1 3
2

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