Anda di halaman 1dari 1

PROIECTAREA ALGORITMILOR

Examen 05.06.2015
Timp de lucru: 1h30

SUBIECTUL 1 (11p = 4 x 2p + 1 x 3p) 30 min

Se d graful din imaginea alaturat.


1. S se determine o sortare topologic a grafului, specificnd clar paii urmai pentru a
ajunge la aceasta.
2. Pozitivnd costul muchiilor negative prin aplicarea funciei modul, aplicai
algoritmul lui Dijkstra, considernd sursa s=1. La fiecare pas, evideniai structura
cozii de prioriti, precum i nodul extras din aceasta.
3. Considernd graful neorientat, aplicai algoritmul lui Tarjan pentru a identifica
punctele de articulaie din graf.
4. Pozitivnd costul muchiilor negative prin aplicarea funciei modul, aplicai
algoritmul lui Kruskal.
5. Aplicnd primii pai ai algoritmului lui Johnson, calculai potenialul fiecarui nod i
recalculai costurile muchiilor conform formulei folosite de algoritm (este suficient s recalculai costul pentru 2 muchii de cost
pozitiv i dou de cost negativ, la alegere).

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


1. Care sunt paii pe care trebuie s i urmai pentru a rezolva o problem prin programare dinamic? Exemplificai aceti pai
pentru problema parantezrii matricilor studiat la curs, spunnd nainte de toate cerina acestei probleme.
2. Care este numrul maxim, respectiv minim, de relaxri efectuate de ctre algoritmul Bellman-Ford pentru fiecare muchie a
unui graf orientat? Dar pentru algoritmul lui Dijkstra?
3. Pornind de la definiie, explicai de ce este important ca euristica folosit de algoritmul A* s fie admisibil? Demonstrai
apoi c orice euristic consistent este admisibil.
4. Definii ce nseamn graful rezidual al unei reele de transport i demonstrai (chiar i informal) c atunci cnd nu mai exist
nici o cale de ameliorare de la surs la dren n graful rezidual nseamn c am descoperit tietura minimal a reelei de
transport.
5. Explicai ce reprezint o tietura alfa-beta ntr-un arbore de joc i dai un exemplu de astfel de arbore, cu maxim 3 nivele, n
care s scoatei n eviden minim dou tieturi alfa-beta.

SUBIECTUL 3 (9p) 25 min


Intr-o pdure, toate crrile au aceeai lungime, iar Ursul tocmai trezit din hibernare vrea s ajung de la brlogul su pn la ru
ct mai repede ntruct i este foame i sete. ns Vulpea vrea s i joace o fest i s i blocheze Ursului toate cile cele mai scurte
care l duc la ru pentru a l face s ocoleasc. Din pcate, pdurea este complicat i pot exista mai multe drumuri de aceeai
lungime, iar Vulpea poate alege s blocheze doar o singur intersecie din pdure. Scopul vostru este s ajutai vulpea s decid
dac exist astfel de intersecii care, dac ar fi blocate, garanteaz c ursul va merge o cale mai lung dect n mod normal.

La intrare primii n numul de intersecii din pdure, a[i][j], 1 i, j n, matricea de adiacen a pdurii, s nodul/intersecia unde
se afl brlogul Ursului i t nodul/intersecia unde Ursul prefer s se hrneasc la ru. Ieirea programului o reprezint acele
noduri care satifac cerina din enun sau -1 dac nu exist nici un astfel de nod.

Sursa problemei: clasic, apare n mai multe cri, forumuri, probleme de studiu, etc.

Pentru subiectul 3:
a. Explicai mai inti care este ideea voastra de rezolvare (n cuvinte, ncercai s oferii ct mai multe detalii);
b. Spunei ce structuri de date, tehnici de programare i/sau algoritmi clasici (prezentai la curs) vei folosi;
c. Schitai pseudocodul, fr a intra n detalii (inutile).
Atentie: Se dorete o complexitate ct mai bun! Determinai complexitatea soluiei propuse!