Sunteți pe pagina 1din 1

PROIECTAREA ALGORITMILOR

Examen 01.06.2013

SUBIECTUL 1 (10p = 4 x 2.5p) 20 min

Se da graful din imaginea alaturata.


1. Sa se aplice o parcurgere in latime pornind din nodul 1. La fiecare pas, sa se
evidentieze coada si distanta fata de sursa pana la fiecare nod (atentie ca este BFS).
2. Aplicati primii 3 pasi ai algoritmului Floyd-Warshall, specificand matricile D (0), D(1),
D(2), D(3). Daca va este mai usor, la fiecare pas puteti specifica doar acele elemente din
matrice care se modifica fata de pasul anterior.
3. Considerand graful neorientat si pozitivand costul muchiilor negative prin utilizarea
modulului, aplicati algoritmul lui Kruskal si apoi pe cel al lui Prim.
4. Aplicati algoritmul lui Kosaraju pentru identificarea componentelor tare conexe,
specificand atat pentru graful initial, cat si pentru cel transpus, timpii de descoperire si de
finalizare pentru fiecare nod. Specificati componentele tare conexe rezultate dupa
aplicarea algoritmului.

SUBIECTUL 2 (20p = 5 x 4p) 30 min


1. Specificati 2 euristici pentru problema aranjarii a 8 patrate discutata la curs. Ce puteti spune despre aceste euristici din punct
de vedere al algoritmului A*?
2. Sa consideram multimea elevilor de la un bal de absolvire. Pentru ultimul dans al balului, fiecare fata a facut o lista cu colegii
cu care ar i-ar place sa danseze. Spuneti cum ati putea construi un graf pentru aceasta problema, ce tip de graf este acesta si cu
ce algoritm ati putea sa rezolvati eficient problema de a gasi o asignare a perechilor de dans astfel incat sa fie un numar
maxim de perechi. Precizam ca asignarea perechilor se face astfel incat orice fata sa nu danseze cu un coleg care nu e pe lista
de preferinte.
3. Comparati programarea dinamica si divide&impera.
4. Daca nu ati avea alta varianta de algoritm, cum ati putea folosi schema minimax pentru un program de jucat sah?
5. Enumerati utilizarile folosite in algoritmii de la curs ale timpilor de debut si finis de la parcurgerea in adancime a unuo graf.

SUBIECTUL 3 (10p) 25 min


Pe o matrice formata din 2 randuri si N coloane care contine numere intregi mai mici in modul decat 1000, trebuie sa determinati
drumul de lungime maxima de la coltul din stanga sus (linia 1, coloana 1) pana la coltul din dreapta jos (linia 2, coloana N).
Drumul trebuie sa respecte o serie de conditii suplimentare:
Drumul nu are voie sa treaca de 2 sau mai multe ori prin aceeasi celula din matrice.
Dintr-o celula se poate trece in orice celula vecina pe verticala sau pe orizontala.
Drumul nu are voie sa contina mai mult de K celule consecutive de pe aceeasi linie.

Lungimea unui drum se obtine prin insumarea valorilor din toate celulele care se afla pe acel drum. Se stie ca N 5000 si K 10.
Sursa problemei: infoarena.ro

Pentru subiectul 3:
a. Explicati mai intai care este ideea voastra de rezolvare (in cuvinte, incercati sa oferiti cat mai multe detalii);
b. Spuneti ce structuri de date, tehnici de programare si/sau algoritmi clasici (prezentati la curs) veti folosi;
c. Schitati pseudocodul, fara a intra in detalii (inutile).
Atentie: Se doreste o complexitate cat mai buna! Determinati complexitatea solutiei propuse!

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