Professional Documents
Culture Documents
10 decembrie 2011
1
1.1
Se d o matrice A Rnn i un vector b Rn1 . Exist un vector x Rn1 cu x(i) {0, 1}, i : 1 i n astfel nct A x = b?
1.2 Cerine
0/1 Programare ntreag
Artai c problema
1.3 Observaii
este NP-dur.
2
2.1
Problema 2
Descrierea problemei
S presupunem c am gsit un algoritm de rezolvare pentru problema 3SAT care este determinist i polinomial. Ce concluzii putei trage din aceast descoperire?
2.2 Observaii
3
3.1
Problema 3
Descrierea problemei
tefan i Nicu vor s joace cri, ns au doar pachete incomplete (care conin un subset al crtilor cunoscute). Ei trebuie s construiasc un set de cri pentru un joc anume folosind crile din maxim k pachete. De exemplu, dac tefan i Nicu vor s joace mini-eptic pentru care au nevoie de urmtorul set de cri: {A, 2, Q, 7} i au la dispoziie urmtoarele pachete de cri:
P1 = {K, A, 2} P2 = {2, 8, Q} P3 = {A, 2, 7} P4 = {7, 5, 6}
atunci pentru
k = 2 nu exist soluie, k = 3 exist soluiile {P1 , P2 , P3 } i {P1 , P2 , P4 }
3.2 Cerine
1. Este aceast problem NP-dur? Demonstai. (2 puncte) 2. Construii un algoritm ecient care rezolv problema i scriei un program C care l implementeaz. (4 puncte) 3. Gsii un algoritm nedeterminist care rezolv problema. (1 punct)
3.3
3.3.1
Detalii de implementare
Convenii
Programul va primi 3 argumente: numele ierului de intrare, numele ierului de ieire i k. Fiierul de intrare va avea pe prima linie setul cri pe care trebuie s-l obin cei doi prieteni. Pe linia a doua va numrul de pachete m, iar pe liniile 3, 4, , m + 2 vor crile din cele m pachete. Pe liniile 1, 3, 4, , m+2, crile vor separate prin spaii i vor reprezentate prin dou caractere: c1 c2 astfel:
c1 {2, 3, 4, 5, 6, 7, 8, 9, A, J, Q, K}, c2 {R, C, P, T } unde R , C , P i T .
Fiierul de ieire va gol dac nu exist soluie sau va avea pe prima linie numerele pachetelor care alctuiesc o soluie. 2
3.3.2
Exemplu
Rezolvrile cerinelor 1, 2 (pseudocodul algoritmului) i 3 vor predate ntr-un document pdf: nume_prenume_grupa_P3.pdf. Codul pentru cerina 2 se va scrie n unul sau mai multe iere cu extensia .c. Fiierul pachete.c va folosit pentru testare. Construii un ier Makefile care compileaz programul n executabilul pachete. Vericai nainte de a trimite tema c secvena urmtoare funcioneaz
corect.
make a l l . / pachete pachete . i n pachete . out Pentru testarea automat se va folosi un script asemntor.
Problema valoreaz 7 puncte.
Trimiterea temei
Construii o arhiv cu urmtorul nume: nume_prenume_grupa.zip care conine: nume\_prenume\_grupa . z i p | P1 | | nume\_prenume\_grupa\_P1 . pdf | P2 | | nume\_prenume\_grupa\_P2 . pdf | P3 | | nume\_prenume\_grupa\_P3 . pdf | | pachete . c | | Makefile