Sunteți pe pagina 1din 8

UNITATEA DE NVARE NR.

6 CLASE DE COMPLEXITATE
Cuprins
6.1. 6.2. 6.3. 6.4. 6.5. 6.6. 6.7. 6.8. 6.9. Obiectivele unitii de nvare nr. 6 .......................................................................................... 1 Indicaii metodice pentru unitatea de nvare nr. 6 ................................................................... 1 NP-completitudine ..................................................................................................................... 1 Problema clicii maximale ........................................................................................................... 4 Tema de autoinstruire nr. 6 ........................................................................................................ 6 Testul de autoevaluare nr. 6 ....................................................................................................... 7 Comentarii i rspunsuri la testul nr. 6 de autoevaluare............................................................. 8 Lucrare de verificare pentru studeni ......................................................................................... 8 Bibliografie ................................................................................................................................ 8

6.1.

Obiectivele unitii de nvare nr. 6

Dup ce vei parcurge aceast unitate de nvare, vei reui s: cunoatei noiunea de algoritm nedeterminist; cunoatei principalele clase de complexitate.

6.2.

Indicaii metodice pentru unitatea de nvare nr. 6

Materialul trebuie parcurs n ordinea sa fireasc, prezentat n continuare. Se recomand conspectarea i notarea ideilor principale, precum i consultarea bibliografiei pentru detalii i informaii suplimentare. Timpul minim pe care trebuie s-l acordai acestei uniti de nvare este de ore.
6.3. NP-completitudine

tim c doar algoritmii polinomiali sunt eficieni, deci urmrim totdeauna s elaborm astfel de algoritmi. Este evident ns c nu exist algoritmi polinomiali pentru orice problem, ca de exemplu n cazul n care numrul datelor de ieire nu este polinomial: determinarea tuturor submulimilor unei mulimi finite, generarea permutrilor etc. De aceea cutm s delimitm clasa problemelor pentru care ncercm s elaborm algoritmi polinomiali. n acest scop introducem noiunea de algoritm nedeterminist. Algoritmii nedeterminiti sunt algoritmi secveniali care, spre deosebire de cei obinuii, admit i urmtoarele instruciuni suplimentare:

1) success i failure, care arat c algoritmul se termin cu succes, respectiv cu eec. Ele nlocuiesc instruciunea stop. Forma lor arat c vom studia doar probleme de decizie, pentru care rezultatul poate fi doar afirmativ sau negativ (dup cum vom vedea, foarte multe probleme pot fi aduse la aceasta form). 2) choice(A), unde este o mulime finit; este o funcie care ntoarce ca rezultat un element oarecare al lui . Se consider c cele trei instruciuni nou introduse necesit un timp constant. Maina abstract care execut un astfel de algoritm, cnd ntlnete o instruciune choice lucreaz astfel: dac exist o valoare din A care conduce la o instruciune success, va fi aleas o altfel de valoare; n caz contrar, va fi aleas o valoare oarecare. Cu alte cuvinte, un algoritm nedeterminist se termin cu eec dac nu exist o modalitate de a efectua alegeri care s conduc la o instruciune success. Funcionarea mainii abstracte se aseamn calculului paralel. De cte ori este ntlnit o instruciune choice, intr n aciune attea procesoare cte elemente are mulimea A. Algoritmul se termin cu succes dac unul dintre procesoarele active ajunge la o instruciune success. Timpul de executare va fi, n cazul unei terminri cu succes, timpul necesar ajungerii la respectiva instruciune success. Mai precizm c ne intereseaz doar terminrile cu succes. Exemplul 1. Se cere s se verifice dac un numr aparine sau nu unei mulimi , . . . , . tim c timpul de executare pentru algoritmul determinist pentru aceast problem este de ordinul , adic liniar. Putem scrie urmtorul algoritm nedeterminist:
i choice({1,2,...,n}) if ai=x then write i; success else failure

care rezolv problema n timp constant. Exemplul 2. Se cere s se ordoneze cresctor vectorul , . . . , . tim c cel mai bun algoritm determinist pentru aceast problem necesit un timp de ordinul log .

Ideea algoritmului nedeterminist este urmtoarea: copiem elementele vectorului ntr-un vector auxiliar ntr-o ordine oarecare, dup care verificm dac elementele lui apar n ordine cresctoare:

for i=1,n bi for i=1,n j choice({1,2,...,n}) if bj= then bj ai else failure for i=1,n-1 if bi>bi+1 then failure write(b); success

Timpul de executare al acestui algoritm este , deci liniar. Se observ c: am obinut un timp de executare mai bun; problema sortrii a fost tratat ca o problem de decizie. Exemplul 3. Problema validrii Fie F(x1,...,xn) o expresie boolean n forma normal conjunctiv (FNC): , unde , . . . , sunt disjuncii de variabile de forma sau xj ( xj este negaia lui ). Se cere s se determine dac exist , . . . , 0,1 cu , . . . , 1. Problema va fi referit n continuare sub numele .

Un exemplu de instan a problemei este urmtorul: F(x1,x2,x3)=(x1x2x3)( x1 x 2 x 3 ). Un algoritm nedeterminist simplu care rezolv problema este urmtorul:
for i=1,n xi choice({0,1}) if F(x1,...,xn)=1 then success else failure

Timpul este proporional cu lungimea formulei, deci liniar. Observaie. Nu se cunoate un algoritm determinist polinomial pentru problema validrii ! Introducem clasele de probleme (de decizie) urmtoare: P - clasa problemelor pentru care exist algoritmi determiniti polinomiali; NP - clasa problemelor pentru care exist algoritmi nedeterminiti polinomiali. Vom studia problema existenei algoritmilor (determiniti) polinomiali doar pentru problemele din NP. Evident . Este ns incluziunea strict sau ? Precizm de la nceput c aceast problem este deschis!

n 1976, Samuel Cook a obinut un rezultat care a simplificat problema i care a prut promitor n rezolvarea ei: Teorem. .

Teorema spune c dac reuim s gsim un algoritm determinist polinomial pentru , atunci va exista un algoritm determinist polinomial pentru orice problem din NP. ntruct nu s-a reuit s se obin un algoritm polinomial pentru VALID, s-a ncercat s se rezolve probleme "echivalente" cu . Mai precis s-a definit clasa NPC . Clasa de probleme NPC este definit astfel: 1) 2) Pentru o problem , dac: 2.1) se cunoate pentru un algoritm nedeterminist polinomial; 2.2) se poate reduce la n timp determinist polinomial. Problemele din NPC se numesc NPcomplete.

NPC NP P

Observaie. Este suficient s artm pentru o singur problem NPcomplet c admite un algoritm polinomial, pentru a obine egalitatea . Lista problemelor NPcomplete a depit 1000, dar pentru nici una dintre ele nu s-a reuit s se obin un algoritm determinist polinomial. Drept urmare, aa cum am menionat anterior, problema egalitii rmne o problema deschis. Prezentm n continuare una dintre multele probleme NPcomplete, respectiv problema clicii maximale.
6.4. Problema clicii maximale

Fie , un graf neorientat. Mulimea se numete clic dac pentru , avem , . Se cere s se determine ordinul unei clici maximale.

Problema de decizie corespunztoare este urmtoarea: Pentru un dat, exist n o clic de ordin ?

Pentru aceast problem vom scrie procedura clica(G,k), care furnizeaz rspunsul n timp nedeterminist polinomial.
4

Presupunnd cunoscut acest lucru, algoritmul pentru problema clicii maximale va fi:
for k=n,1,-1 clica(G,k)

care este tot polinomial.


procedure clica(G,k) for i=1,n ales(i) 0 for i=1,k j choice({1,...,n}) if ales(j)=1 then failure else ales(j) 1; bi j for i=1,k for j=1,k if ij & (bi,bj)M then failure write(k); success end;

Timpul este evident polinomial. Prin urmare , deci i . Fie , . . . , o expresie boolean n forma normal conjunctiv (FNC): , unde , , sunt disjuncii de variabile de forma sau xj , numii literali. Atam lui graful , astfel: , | este un literal din , , , | , adic i pot fi satisfcui concomitent.
(x1,1) (x2,1) (x3,1) ( x1 ,2) ( x2 ,2) ( x3 ,2)

Artm n continuare c se reduce la n timp determinist polinomial.

De exemplu, pentru F(x1,x2,x3) = (x1x2x3) ( x1 x 2 x 3 ), graful este:

Construcia grafului necesit un timp determinist polinomial. Mai trebuie demonstrat c n G exist o clic de ordin este validabil. ncepem cu demonstrarea necesitii. Fie , | 1, . . . , o clic de ordin i fie | 1, . . . , .

Alegem fiecare astfel:

Conform construciei lui , nu este posibil ca i i i s apar simultan n . 1, dac , adic 0, dac xi

arbitrar n caz contrar. Pentru aceast alegere, , . . . , 1, fiecare conjuncie avnd valoarea 1. Pentru exemplul considerat: , 1, x 3 , 2 ; S1={x1, x 3 } ; a1=1 ; a2 arbitrar ; a3=0. Continum cu demonstrarea suficienei. Conform ipotezei, exist , . . . , cu , , 1, 1, , .

Fie , | 1, , , rezult c este o clic. ntr-adevr, pentru , , , diferite rezult i , deoarece pentru , , avem 1. ncheiem prin a prezenta enunul altor probleme NP-complete. 1) Fie G=(X,M) un graf. YX se numete k-acoperire dac |Y|=k i dac pentru orice (i,j)M avem iY sau iY. Exist o k-acoperire? 2) Problema ciclului hamiltonian. 3) Problema colorrii hrilor. 4) Fie A o mulime i fie s:AZ+. Cutm BA cu proprietatea c suma elementelor lui B s fie egal cu suma elementelor lui A\B.

Pentru fiecare 1, . . . , , exist un literal din care are valoarea 1.

6.5.

Tema de autoinstruire nr. 6

Consultai bibliografia pentru: 1. a cunoate mai multe exemple de algoritmi nedeterminiti; 2. probleme NP-complete.

6.6.

Testul de autoevaluare nr. 6

Rspunsurile la test se vor da n spaiul liber aflat n continuarea enunurilor! 1. Ce sunt algoritmii nedeterminiti?

2. Ce reprezint clasa P? Dar clasa NP?

3. Dai trei exemple de probleme NP-complete din teoria grafurilor!

Rspunsurile la acest test se gsesc pe pagina urmtoare!

6.7.

Comentarii i rspunsuri la testul nr. 6 de autoevaluare

1. Algoritmii nedeterminiti sunt algoritmi secveniali care, spre deosebire de cei obinuii, admit i instruciunile suplimentare success, failure i choice. 2. Clasa P este format din problemele pentru care exist algoritmi de rezolvare determiniti polinomiali, n timp ce clasa NP este format din problemele pentru care exist algoritmi de rezolvare nedeterminiti polinomiali. 3. Problema ciclului hamiltonian, problema clicii maximale, problema k-acoperirii.

6.8.

Lucrare de verificare pentru studeni

Scriei cte un program nedeterminist pentru cele trei probleme de mai jos: 1. Testarea apartenenei unui numr la o mulime (vezi exemplul 1). 2. Sortarea unui vector (vezi exemplul 2). 3. Problema validrii (vezi exemplul 2). Rezolvrile, dar i dificultile ntmpinate, vor fi expediate prin email tutorelui.
6.9. Bibliografie

1. C. Calude "Complexitatea calculului aspecte calitative", Editura tiinific i Enciclopedic, 1962. 2. M.D. Davis, R. Sigal, E.J. Weyuker "Computability, Complexity and Languages", Academic Press (Morgan Kaufmann), 1994. 3. H. Georgescu "Tehnici de programare", Editura Universitii din Bucureti, 2005. 4. N.D. Jones "Computability and Complexity", MIT Press, 1997. 5. Christos H. Papadimitriou "Computational Complexity", Addison-Wesley, 1994. 6. C.P. Popovici, S. Rudeanu, H. Georgescu "Bazele informaticii", Vol.II, Tipografia Universitii Bucureti, 1991.

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