Sunteți pe pagina 1din 3

Metoda Backtracking

Metoda backtracking este o tehnica de programare, aplicabila problemelor cu mai multe solutii care verifica anumite conditii. Exista probleme care nu pot fi rezolvate fara aplicarea metodei backtracking. Aceasta tehnica se foloseste n rezolvarea problemelor care ndeplinesc simultan urmatoarele conditii: - solutia lor poate fi pusa sub forma unui vector S=x1,x2, ...,xn, cu x1 A1, x2 A2 ,xn An - multimile A1, A2 , ., An sunt multimi finite, iar elementele lor se considera ca se afla ntr-o relatie de ordine bine stabilita; - nu se dispune de o alta metoda de rezolvare, mai rapida - x1 x2 , xn pot fi la rndul lor vectori; - A1, A2 , An pot coincide. La ntlnirea unei astfel de probleme, daca nu cunoastem aceasta tehnica, suntem tentati sa generam toate elementele produsului cartezian A1,A2 ,An si fiecare element sa fie testat daca este solutie. Rezolvnd problema n acest mod, timpul de executie este att de mare, nct poate fi considerat infinit, algoritmul neavnd nici o valoare practica. De exemplu, daca dorim sa generam toate permutarile unei multimi finite A, nu are rost sa generam produsul cartezian AxAx.....xA, pentru ca apoi, sa testam, pentru fiecare element al acestuia, daca este sau nu permutare (nu are rost sa generam 1.1,1.......1, pentru ca apoi sa constatam ca nu am obtinut o permutare, cnd de la a doua cifra 1 ne puteam da seama ca cifrele nu sunt distincte). Tehnica Backtracking are la baza un principiu extrem de simplu: - se construieste solutia pas cu pas: x1, x2 ,xn - daca se constata ca, pentru o valoare aleasa, nu avem cum sa ajungem la solutie, se renunta la acea valoare si se reia cautarea din punctul n care am ramas. Concret: - se alege primul element x, ce apartine lui A; - presupunnd generate elementele x1,x2 ,xk , apartinnd multimilor A1, A2 ,Ak , se alege (daca exista) xk+1 , primul element disponibil din multimea Ak+1 , apar doua posibilitati : 1) Nu s-a gasit un astfel de element, caz n care caz n care se reia cautarea considernd generate elementele x1,x2 ,xk+1 , iar aceasta se reia de la urmatorul element al multimii Ak ramas netestat; 2) A fost gasit, caz n care se testeaza daca acesta ndeplineste anumite conditii de continuare aparnd astfel doua posibilitati: - ndeplineste, caz n care se testeaza daca s-a ajuns la solutie si apar din nou doua posibilitati - s-a ajuns la solutie, se tipareste solutia si se reia algoritmul considernd generate elementele x1,x2 ,xk , (se cauta n continuare, un alt element al multimii Ak , ramas netestat); - nu s-a ajuns la solutie, caz n care se reia algoritmul considernd generate elementele x1,x2 ,xk , si se cauta un prim element xk+2 Ak. - nu le ndeplineste caz n care se reia algoritmul considernd generate elementele x1,x2 ,xk , iar elementul xk-1 se cauta ntre elementele multimii A, ramase netestate. Algoritmii se termina atunci cnd nu exista nici un element x1 A1 netestat. Observatie: tehnica Backtracking are ca rezultat obtinerea tuturor solutiilor problemei. n cazul n care se cere o sigura solutie se poate forta oprirea, atunci cnd a fost gasita.

Problema Rezolvata :
Dandu-se o tabla de sah de dimensiune nxn (n>3) sa se aranjeze pe ea n regine fara ca ele sa se atace . Program rezolvare program; var x:array[1..100] of byte; n:byte; nrsol:word; procedure scriesol; var i,j:byte; begin inc(nrsol); writeln('Solutia a',nrsol,'este'); for i:=1 to n do begin writeln; for j:=1 to n do if x[j]=i then write('X',' ') else write('O',' '); end; end; function potcont(k:byte):boolean; var i:byte; atac:boolean; begin atac:=false; for i:=1 to k-1 do if(x[i]=x[k]) or (k-i=abs(x[k]-x[i])) then atac:=true; potcont:=not atac; end; procedure back(k:byte); var i:byte; begin for i:=1 to n do begin x[k]:=i; if potcont(k) then if k=n then scriesol else back(k+1); end; end; begin read(n);

nrsol:=0; back(1); writeln(nrsol,'solutii'); end.

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

  • Parcul National VANOISE
    Parcul National VANOISE
    Document5 pagini
    Parcul National VANOISE
    andrian0102
    Încă nu există evaluări
  • Carte Ceteras
    Carte Ceteras
    Document8 pagini
    Carte Ceteras
    nutzu_tt
    Încă nu există evaluări
  • Axioma Oct.2005
    Axioma Oct.2005
    Document2 pagini
    Axioma Oct.2005
    andrian0102
    Încă nu există evaluări
  • Rof FRS
    Rof FRS
    Document49 pagini
    Rof FRS
    andrian0102
    Încă nu există evaluări
  • Parcul National VANOISE
    Parcul National VANOISE
    Document5 pagini
    Parcul National VANOISE
    talmaza123
    Încă nu există evaluări
  • Rof FRS
    Rof FRS
    Document49 pagini
    Rof FRS
    andrian0102
    Încă nu există evaluări
  • A 1
    A 1
    Document4 pagini
    A 1
    andrian0102
    Încă nu există evaluări
  • Axioma Feb.2005
    Axioma Feb.2005
    Document2 pagini
    Axioma Feb.2005
    andrian0102
    Încă nu există evaluări
  • Infra Sun Ete
    Infra Sun Ete
    Document13 pagini
    Infra Sun Ete
    Alexandru Sirghi
    Încă nu există evaluări
  • Carte Ceteras
    Carte Ceteras
    Document8 pagini
    Carte Ceteras
    nutzu_tt
    Încă nu există evaluări
  • Parcul National VANOISE
    Parcul National VANOISE
    Document5 pagini
    Parcul National VANOISE
    talmaza123
    Încă nu există evaluări
  • Axioma Mai 2006
    Axioma Mai 2006
    Document2 pagini
    Axioma Mai 2006
    andrian0102
    Încă nu există evaluări
  • Axioma Feb.2005
    Axioma Feb.2005
    Document2 pagini
    Axioma Feb.2005
    andrian0102
    Încă nu există evaluări
  • Mutarea Presedintelui
    Mutarea Presedintelui
    Document1 pagină
    Mutarea Presedintelui
    andrian0102
    Încă nu există evaluări
  • Capitolul 12
    Capitolul 12
    Document15 pagini
    Capitolul 12
    andrian0102
    Încă nu există evaluări
  • Parcul National VANOISE
    Parcul National VANOISE
    Document5 pagini
    Parcul National VANOISE
    talmaza123
    Încă nu există evaluări
  • Axioma Mai 2006
    Axioma Mai 2006
    Document2 pagini
    Axioma Mai 2006
    andrian0102
    Încă nu există evaluări
  • Capitolul 20
    Capitolul 20
    Document10 pagini
    Capitolul 20
    Alexandru Sirghi
    Încă nu există evaluări
  • Variante Matematica M2 2009
    Variante Matematica M2 2009
    Document100 pagini
    Variante Matematica M2 2009
    Vlad Bradu
    79% (19)
  • Capitolul 2
    Capitolul 2
    Document9 pagini
    Capitolul 2
    Alexandru Sirghi
    Încă nu există evaluări
  • Capitolul 11
    Capitolul 11
    Document16 pagini
    Capitolul 11
    Alexandru Sirghi
    Încă nu există evaluări
  • ProblemeSeminar 1
    ProblemeSeminar 1
    Document2 pagini
    ProblemeSeminar 1
    andrian0102
    Încă nu există evaluări
  • ProblemeSeminar 2
    ProblemeSeminar 2
    Document1 pagină
    ProblemeSeminar 2
    andrian0102
    Încă nu există evaluări
  • SubiecteFizica1 Curs1 4
    SubiecteFizica1 Curs1 4
    Document1 pagină
    SubiecteFizica1 Curs1 4
    andrian0102
    Încă nu există evaluări
  • ProblemeSeminar 1
    ProblemeSeminar 1
    Document2 pagini
    ProblemeSeminar 1
    andrian0102
    Încă nu există evaluări
  • SubiecteFizica1 Curs1 4
    SubiecteFizica1 Curs1 4
    Document1 pagină
    SubiecteFizica1 Curs1 4
    andrian0102
    Încă nu există evaluări
  • Parcul National VANOISE
    Parcul National VANOISE
    Document5 pagini
    Parcul National VANOISE
    talmaza123
    Încă nu există evaluări
  • Difractia FRESNEL
    Difractia FRESNEL
    Document7 pagini
    Difractia FRESNEL
    andrian0102
    Încă nu există evaluări
  • Difractia FRESNEL
    Difractia FRESNEL
    Document7 pagini
    Difractia FRESNEL
    andrian0102
    Încă nu există evaluări
  • ProblemeSeminar 1
    ProblemeSeminar 1
    Document2 pagini
    ProblemeSeminar 1
    andrian0102
    Încă nu există evaluări