Documente Academic
Documente Profesional
Documente Cultură
Se poate folosi pentru problemele in care trebuie sa se genereze toate valorile . o soluție a problemei
putând fi data de un vector S=Ăx1,x2,…,xnÎ (care coincide fizic cu valorile stivei), elementele vectorului
aparțin fiecare unei mulțimi finite Ai (xi ͼ Ai) iar asupra elementelor unei soluții există anumite restricții
Elementele care alcătuiesc o soluție sunt numerele din mulțimea {1,2,3} cu condiția ca ele să fie
distincte ( condiția internă a soluției). O soluție a cestei probleme este un vector cu trei componente
S={x1,x2,x3}, în care elementele xi reprezintă numărul care se va gasi, în permutare, pe pozitia i.
Ai={ 1,2,3 } = A
Dacă s-ar rezolva classic această problem ar însemna să se genereze toate elementele produsului
cartezian A1 X A2 X A3=A3, adică mulțime
{ (1,1,1), (1,1,2), (1,1,3), (1,2,1), ….., (3,3,2), (3,3,3)} după care se va verifica fiecare element al mulțimii
dacă este o soluție a problemei, adică dacă cele 3 numere dintr-o soluție sunt distincte. Soluțiile sunt:
Observație: Metoda clasică de rezolvare a acestui tip de problem necesită foarte multe operații
Metoda backtracking construiește progrsiv vectorul soluției, pronind de la primul element și adăugându-
se în vector următoarele elemente – cu revenire la elementul antrerior din vector – în caz de insucces.
Elementul care trebuie adăugat se caută în mulțime, printer elementele care respectă condițiile interne.
Pas1: Se alege primul element al soluției ca fiind primul element din mulțimea A. Ex: x1 = 1
Pas2: Se caută al doilea element al soluției (x2). Pentru a-l găsi se aprcurg pe rând elementele mulțimii A.
Se verifică dacă respectă condițiile interne. (în exemplu se găsește elemental x1=2)
Pas3: Se caută al 3 lea element al soluției (x3). Căutarea va folosi același algoritm ca la pasul2 (În
exemplu se caută numărul din poziția a 3 a din permutare. Se gasește x3=3)
Pas4: Presupunând că s-au găsit primele k elemente ale soluției x1,x2,x3,…,xk se trece la căutarea celui
de-al k+1 lea element al soluției, Xk+1. Căutarea se va face astfel: se atribuie pe rând, lui Xk+1,
elementele mulțimii A , până se găsește primul element I care îndeplinește condiția internă (În exenplu,
numărul de pe poziția k+1 a permutării diferite de numerele din pozițiile anterioare ale lui k+1. Pot să
apară 2 situații:
a) Există un element i, în mulțimea A astfel încât Xk+1=I să fie element al soluției problemei. În
acest caz, se atribuie elementului Xk+1 al soluției aloarea i, după care se verifică dacă Xk verifică
condițiile interne. Dacă k =n. (dacă s-a gasit soluția problemei, atunci se afișează soluția, altfel se
caută următorul element al soluției, reluându-se operațiile de la pasul 4.
b) S-au parcurs toate elementele mulțimii A și nu s-a găsit niciun element I care să fie elemental
Xk+1 al soluției problemei. Rezultă că trebuie să revenim la elemental k al soluției Xk. Deci, se
consederă generate primele k-1 elemente ale soluției: X1, X2, ….., Xk-1 și pentru elemental Xk al
soluției, se reia căutarea cu următorul element din mulțimea A, adică se reiau operațiile de la
Pasul4
Pas5