Escolar Documentos
Profissional Documentos
Cultura Documentos
Introducere
Complexitatea n timp a algoritmilor joac un rol esenial.
n primul rnd un algoritm este considerat "acceptabil" numai dac
timpul su de executare este polinomial, adic de ordinul O(nk)
pentru un anumit k; n reprezint numrul datelor de intrare.
Pentru a ne convinge de acet lucru, vom considera un calculator
capabil s efectueze un milion de operaii pe secund.
1. Descrierea metodei
1
oprete procesul (dac se dorete o singur soluie), fie prevede kk-1
(dac dorim s determinm toate soluiile).
Ci, i;
k1;
while k>0
if k=n+1
then retsol(x); kk-1; { revenire dup obinerea unei soluii }
else if CkXk
then alege vXk\Ck; CkCk{v};
if k(x1,,xk-1,v)
then xkv; kk+1; { atribuie i avanseaz }
else { ncercare euat }
else Ck; kk-1; { revenire }
2. Exemple
2
then b false
else i i+1
cont b
end;
3
Pentru n=8 i a=(1,4,2,3,7,5,8,6) va rezulta k=5.
5. Varianta recursiv
procedure back(k)
if k=n+1
then retsol
else for i=1,s
xki;
if cont(k)
then back(k+1); revenire din recursivitate
else
end.
5
Exemplu 2:
Dorim s producem toate irurile de n paranteze ce se nchid corect.
Variante:
- cum pot ajunge ntr-o poziie (i1,j1) dat?
- se cere determinarea componentelor conexe.
Micrile posibile sunt date printr-o matrice depl cu dou linii i ndepl
coloane. De exemplu, dac deplasrile permise sunt cele ctre poziiile
vecine situate la Est, Nord, Vest i Sud, matricea are forma:
6
1 0 1 0
0 1 0 1
Bordez matricea cu 2 pentru a nu studia separat ieirea din matrice.
Pentru refacerea drumurilor, pentru fiecare poziie atins memorm
minte legtura la precedenta.
Dac poziia e liber i pot continua, pun aij=-1 (a fost atins),
continum i apoi repunem aij0 (ntoarcere din recursivitate).