SlideShare a Scribd company logo
Aspecte teoretice
Metoda Backtracking este o metodă de elaborare a algoritmilor.
Ea se aplică problemelor în care soluţia se poate reprezenta sub
forma unui vector, X=(x1,x2,...xm), care aparţine lui S=S1xS2x...Sm
- S=S1xS2x...Sm se numeşte spaţiul soluţiilor posibile
- Pentru fiecare problemă în parte se dau anumite condiţii între
componentele vectorului soluţie care se numesc condiţii
interne
- Soluţiile posibile care verifică condiţiile interne se
numesc soluţii rezultat
- Metoda Backtracking îşi propune să genereze toate soluţiile
rezultat
O metodă simplă de a genera soluţiile
rezultat constă în a genera într-un mod
oarecare toate soluţiile posibile şi de a
alege dintre acestea doar pe cele care
verifică condiţiile interne. Dezavantajul
constă în faptul că timpul cerut este
foarte mare.
Metoda Backtracking urmăreşte să evite generarea
tuturor soluţiilor posibile. Pentru aceasta elementele
vectorului x primesc pe rând valori în sensul că lui xk i se
atribuie o valoare doar dacă componentele din faţa sa x1,
x2,...xk-1 au primit valori.
Dacă lui xk i s-a atribuit o valoare, nu se trece direct la
atribuirea de valori lui xk+1, ci se verifică nişte condiţii de
continuare, referitoare la x1, x2,...xk-1 xk. Dacă condiţiile
de continuare au fost satisfăcute, se trece la calculul lui
xk+1. Neîndeplinirea lor exprimă faptul că oricum s-ar alege
xk+1,...,xn, nu se va ajunge la o soluţie rezultat. Evident,
ca în cazul neîndeplinirii condiţiilor de continuare va trebui
să se facă o altă alegere pentru xk. Sau dacă Sk a fost
epuizat, să se micşoreze k cu o unitate, încercând să se
facă o nouă alegere pentru xk.
Exemplu pentru înţelegerea
metodei
Pentru a înţelege mai uşor prezentăm următorul exemplu:
Presupunem că dorim să ne îmbrăcăm de la un magazin
pentru o festivitate şi dorim să cumpărăm: pantofi, ciorapi,
pantaloni, cămaşă şi cravata astfel încât acestea să se
asorteze între ele, să se genereze toate modalităţile de a ne
îmbrăca.
Magazinul are:
5 etaje
La etajul 1 are 10 raioane cu pantofi
La etajul 2 are 10 raioane cu ciorapi
La etajul 3 are 10 raioane cu pantaloni
La etajul 4 are 10 raioane cu cămăşi
La etajul 5 are 10 raioane cu cravate
Deoarece soluţia are mai multe componente, 5 – câte etaje
are magazinul, putem folosi metoda Backtracking. Pentru
rezolvare vom folosi:
k : variabilă întreagă care reprezintă etajul pe care ne
găsim
x : vector care are 5 componente întregi, adică exact câte
etaje are magazinul cu proprietatea că xk reprezintă numărul
raionului de la care s-a cumpărat pe etajul k. În cazul de faţă
xk {1,...,10} unde k{1,...,5}
as este o variabilă întreagă care primeşte valoarea 1 dacă
pe etajul k mai sunt raioane nevizitate şi primeşte valoarea
0 dacă pe etajul k nu mai sunt raioane nevizitate.
ev este o variabilă întreagă care primeşte valoarea 1 dacă ce
este la raionul xk convine şi primeşte valoarea 0 dacă ce este
la raionul xk nu convine.
IMPLEMENTAREA METODEI BACKTRACKING
Forma generală a unei funcţii backtracking
Implementarea recursivă a algoritmului furnizat de metoda backtracking,
este mai naturală şi deci mai uşoară.
Pentru exemplificare vom utiliza generarea permutarilor.
Date si structuri de date:
v – vectorul solutie
n – numarul de elemente
k – pozitia din vector care se completeaza
Functii:
valid() – verifica conditiile de continuare
solutie() – verifica daca s-a determinat o solutie
afisare() – afiseaza solutia
bk() – functia backtracking
IMPLEMENTAREA METODEI BACKTRACKING
Permutări
O permutare a unei mulţimi cu n elemente este un şir de
elemente obţinut prin schimbarea ordinii elementelor
mulţimii date sau chiar mulţimea însăşi.
Ne gândim la generarea permutărilor atunci când se dă o
mulţime cu n elemente ca date de intrare iar soluţia este sub
forma de vector, tot cu n elemente, ale cărui componente sunt
distincte şi aparţin mulţimii date.
Exemplu: Fie A={1,2,3}. Permutările mulţimii A sunt: (1,2,3),
(1,3,2), (2,1,3), (2,3,1), (3,1,2), (3,2,1).
Fie A={a1, a2,…,am} o mulţime cu elemente de tip întreg.
Trebuie determinate elementele mulţimii { y1, y2,…,ym }| ykA,
k=1,2,...,m, pentru yiyj pentru ij}.
Deci, x=( x1, x2,…,xm) unde x{1,...,m}, elementele vectorului
x trebuie să fie distincte.
IMPLEMENTAREA METODEI BACKTRACKING
 Problema generării permutărilor, este cea mai
reprezentativă pentru metoda backtracking, ea conţine
toate elementele specifice metodei.
 Probleme similare, care solicită determinarea tuturor
soluţiilor posibile, necesită doar adaptarea acestui algoritm
modificând fie modalitatea de selecţie a elementelor din
mulţimea Sk, fie condiţiile de continuare fie momentul
obţinerii unei soluţii
IMPLEMENTAREA METODEI BACKTRACKING
Aranjamente
Se dau două mulţimi A={1,2,…,p} şi
B={1,2,…,m} se cer toate funcţiile injective
definite pe A cu valori în B. O astfel de problemă
este una de generare a aranjamentelor de n luate
cate p (An
p).
Exemplu: p=2, n=3. Avem (1,2), (2,1), (1,3),
(3,1), (2,3), (3,2). De exemplu (2,1) este funcţia
f:A→B dată astfel f(1)=2, f(2)=1. Avem relaţiile:
=m(m-1)...(m-p+1).
Avem relaţiile:
)
(
!
p
m
m
Ap
n

 = m(m-1)...(m-p+1).
Se citesc m şi p. Să se genereze toate aranjamentele de m
luate câte p.
Se observă că dacă se cunoaşte fiecare submulţime de p
elemente a mulţimii de m elemente, atunci aranjamentele se pot
obţine permutând în toate modurile posibile elementele unei
astfel de mulţimi.
O soluţie este de forma: x1,x2,...xp unde x1,x2,...xpB. În
plus x1,x2,...xp trebuie să fie distincte. O soluţie are p numere
din mulţimea B şi numerele trebuie să fie distincte.
De aici rezultă că algoritmul este acelaşi ca la permutări,
diferenţa fiind dată de faptul că soluţia are p numere, nu m ca în
cazul permutărilor.
 Se citesc n şi p numere naturale cu p<=n. Sa se genereze toate
aranjamentele de n elemente luate câte p.
Exemplu pentru n=3, p=2
(1,2), (1,3), (2,1), (2,3), (3,1), (3,2)
 Vom genera pe rând soluţiile problemei în vectorul v=(v1,v2,v3,...,vn) ,
unde vk € Sk
 Conditia interna: elementele nu au voie sa se repete.
 Obţinem o soluţie în momentul în care completăm vectorul cu p elemente.
 In cadrul programului pentru generarea permutărilor trebuie modificata o
singură funcţie pentru a obtine generarea aranjamentelor şi anume
funcţia soluţie, astfel:
GENERAREA ARANJAMENTELOR
GENERAREA ARANJAMENTELOR
Se citesc n şi p numere naturale cu p<=n. Să se genereze toate
combinările de n elemente luate câte p. Exemplu pentru n=3,
p=2. obţinem (1,2), (1,3), (2,3)
În cadrul unei combinări elementele nu au voie să se repete.
Să mai observăm şi faptul că dacă la un moment dat am generat
de exemplu soluţia (1,2), combinarea (2,1) nu mai poate fi luată
în considerare, ea nu mai reprezintă o soluţie. Din acest motiv
vom considera că elementele vectorului reprezintă o soluţie,
numai dacă se află în ordine strict crescătoare. Acestea
reprezintă condiţiile de continuare ale problemei.
GENERAREA COMBINARILOR
GENERAREA COMBINARILOR

More Related Content

Similar to metoda_backtracking22.ppt

Metoda back
Metoda backMetoda back
Metoda back
Luminița Mihailov
 
divizori-descriere 2.doc
divizori-descriere 2.docdivizori-descriere 2.doc
divizori-descriere 2.doc
EdwardSeracovanu
 
Calculul numeric teorie
Calculul numeric teorieCalculul numeric teorie
Calculul numeric teorie
Colegiul de Industrie Usoara
 
Analiza matematica
Analiza matematicaAnaliza matematica
Analiza matematicasorinsiacob
 
презентация Microsoft office power point
презентация Microsoft office power pointпрезентация Microsoft office power point
презентация Microsoft office power pointmiklleee
 
Laborator 1
Laborator 1Laborator 1
Laborator 1
AlexTronciu
 
Ecuatii neliniare rom
Ecuatii neliniare romEcuatii neliniare rom
Ecuatii neliniare romHerpy Derpy
 
125907307 ecuatii-trigonometrice
125907307 ecuatii-trigonometrice125907307 ecuatii-trigonometrice
125907307 ecuatii-trigonometriceClaudia Morosanu
 
an num old
an num oldan num old
an num old
peter020000
 
Metoda reluarii
Metoda reluariiMetoda reluarii
Metoda reluarii
Ana Conovalov
 
Plan de lectie 12 e, monoizi
Plan de lectie 12 e, monoiziPlan de lectie 12 e, monoizi
Plan de lectie 12 e, monoizidanasaveanu
 
Analiza matematica-mircea-olteanu
Analiza matematica-mircea-olteanuAnaliza matematica-mircea-olteanu
Analiza matematica-mircea-olteanu
Popa Tudor
 
6207247 probleme-de-algebra-liniara-dumitru-busneag
6207247 probleme-de-algebra-liniara-dumitru-busneag6207247 probleme-de-algebra-liniara-dumitru-busneag
6207247 probleme-de-algebra-liniara-dumitru-busneagMagda Pop
 
Tablouri bidimensionale
Tablouri bidimensionaleTablouri bidimensionale
Tablouri bidimensionaleTina Cris
 
Tehnici de programare_triere_1522
Tehnici de programare_triere_1522Tehnici de programare_triere_1522
Tehnici de programare_triere_1522miklleee
 
Culegere de probleme pentru admiterea la scoala militara de maisti
Culegere de probleme pentru admiterea la scoala militara de maistiCulegere de probleme pentru admiterea la scoala militara de maisti
Culegere de probleme pentru admiterea la scoala militara de maisti
Raul Katana
 

Similar to metoda_backtracking22.ppt (20)

Metoda back
Metoda backMetoda back
Metoda back
 
Madaç
MadaçMadaç
Madaç
 
0metoda reluarii
0metoda reluarii0metoda reluarii
0metoda reluarii
 
divizori-descriere 2.doc
divizori-descriere 2.docdivizori-descriere 2.doc
divizori-descriere 2.doc
 
Metoda reluării
Metoda reluăriiMetoda reluării
Metoda reluării
 
Calculul numeric teorie
Calculul numeric teorieCalculul numeric teorie
Calculul numeric teorie
 
Analiza matematica
Analiza matematicaAnaliza matematica
Analiza matematica
 
презентация Microsoft office power point
презентация Microsoft office power pointпрезентация Microsoft office power point
презентация Microsoft office power point
 
Laborator 1
Laborator 1Laborator 1
Laborator 1
 
Ecuatii neliniare rom
Ecuatii neliniare romEcuatii neliniare rom
Ecuatii neliniare rom
 
125907307 ecuatii-trigonometrice
125907307 ecuatii-trigonometrice125907307 ecuatii-trigonometrice
125907307 ecuatii-trigonometrice
 
an num old
an num oldan num old
an num old
 
Metoda backtracking
Metoda backtrackingMetoda backtracking
Metoda backtracking
 
Metoda reluarii
Metoda reluariiMetoda reluarii
Metoda reluarii
 
Plan de lectie 12 e, monoizi
Plan de lectie 12 e, monoiziPlan de lectie 12 e, monoizi
Plan de lectie 12 e, monoizi
 
Analiza matematica-mircea-olteanu
Analiza matematica-mircea-olteanuAnaliza matematica-mircea-olteanu
Analiza matematica-mircea-olteanu
 
6207247 probleme-de-algebra-liniara-dumitru-busneag
6207247 probleme-de-algebra-liniara-dumitru-busneag6207247 probleme-de-algebra-liniara-dumitru-busneag
6207247 probleme-de-algebra-liniara-dumitru-busneag
 
Tablouri bidimensionale
Tablouri bidimensionaleTablouri bidimensionale
Tablouri bidimensionale
 
Tehnici de programare_triere_1522
Tehnici de programare_triere_1522Tehnici de programare_triere_1522
Tehnici de programare_triere_1522
 
Culegere de probleme pentru admiterea la scoala militara de maisti
Culegere de probleme pentru admiterea la scoala militara de maistiCulegere de probleme pentru admiterea la scoala militara de maisti
Culegere de probleme pentru admiterea la scoala militara de maisti
 

metoda_backtracking22.ppt

  • 1.
  • 2. Aspecte teoretice Metoda Backtracking este o metodă de elaborare a algoritmilor. Ea se aplică problemelor în care soluţia se poate reprezenta sub forma unui vector, X=(x1,x2,...xm), care aparţine lui S=S1xS2x...Sm - S=S1xS2x...Sm se numeşte spaţiul soluţiilor posibile - Pentru fiecare problemă în parte se dau anumite condiţii între componentele vectorului soluţie care se numesc condiţii interne - Soluţiile posibile care verifică condiţiile interne se numesc soluţii rezultat - Metoda Backtracking îşi propune să genereze toate soluţiile rezultat
  • 3. O metodă simplă de a genera soluţiile rezultat constă în a genera într-un mod oarecare toate soluţiile posibile şi de a alege dintre acestea doar pe cele care verifică condiţiile interne. Dezavantajul constă în faptul că timpul cerut este foarte mare.
  • 4. Metoda Backtracking urmăreşte să evite generarea tuturor soluţiilor posibile. Pentru aceasta elementele vectorului x primesc pe rând valori în sensul că lui xk i se atribuie o valoare doar dacă componentele din faţa sa x1, x2,...xk-1 au primit valori. Dacă lui xk i s-a atribuit o valoare, nu se trece direct la atribuirea de valori lui xk+1, ci se verifică nişte condiţii de continuare, referitoare la x1, x2,...xk-1 xk. Dacă condiţiile de continuare au fost satisfăcute, se trece la calculul lui xk+1. Neîndeplinirea lor exprimă faptul că oricum s-ar alege xk+1,...,xn, nu se va ajunge la o soluţie rezultat. Evident, ca în cazul neîndeplinirii condiţiilor de continuare va trebui să se facă o altă alegere pentru xk. Sau dacă Sk a fost epuizat, să se micşoreze k cu o unitate, încercând să se facă o nouă alegere pentru xk.
  • 5. Exemplu pentru înţelegerea metodei Pentru a înţelege mai uşor prezentăm următorul exemplu: Presupunem că dorim să ne îmbrăcăm de la un magazin pentru o festivitate şi dorim să cumpărăm: pantofi, ciorapi, pantaloni, cămaşă şi cravata astfel încât acestea să se asorteze între ele, să se genereze toate modalităţile de a ne îmbrăca. Magazinul are: 5 etaje La etajul 1 are 10 raioane cu pantofi La etajul 2 are 10 raioane cu ciorapi La etajul 3 are 10 raioane cu pantaloni La etajul 4 are 10 raioane cu cămăşi La etajul 5 are 10 raioane cu cravate
  • 6. Deoarece soluţia are mai multe componente, 5 – câte etaje are magazinul, putem folosi metoda Backtracking. Pentru rezolvare vom folosi: k : variabilă întreagă care reprezintă etajul pe care ne găsim x : vector care are 5 componente întregi, adică exact câte etaje are magazinul cu proprietatea că xk reprezintă numărul raionului de la care s-a cumpărat pe etajul k. În cazul de faţă xk {1,...,10} unde k{1,...,5} as este o variabilă întreagă care primeşte valoarea 1 dacă pe etajul k mai sunt raioane nevizitate şi primeşte valoarea 0 dacă pe etajul k nu mai sunt raioane nevizitate. ev este o variabilă întreagă care primeşte valoarea 1 dacă ce este la raionul xk convine şi primeşte valoarea 0 dacă ce este la raionul xk nu convine.
  • 7. IMPLEMENTAREA METODEI BACKTRACKING Forma generală a unei funcţii backtracking Implementarea recursivă a algoritmului furnizat de metoda backtracking, este mai naturală şi deci mai uşoară.
  • 8. Pentru exemplificare vom utiliza generarea permutarilor. Date si structuri de date: v – vectorul solutie n – numarul de elemente k – pozitia din vector care se completeaza Functii: valid() – verifica conditiile de continuare solutie() – verifica daca s-a determinat o solutie afisare() – afiseaza solutia bk() – functia backtracking IMPLEMENTAREA METODEI BACKTRACKING
  • 9. Permutări O permutare a unei mulţimi cu n elemente este un şir de elemente obţinut prin schimbarea ordinii elementelor mulţimii date sau chiar mulţimea însăşi. Ne gândim la generarea permutărilor atunci când se dă o mulţime cu n elemente ca date de intrare iar soluţia este sub forma de vector, tot cu n elemente, ale cărui componente sunt distincte şi aparţin mulţimii date. Exemplu: Fie A={1,2,3}. Permutările mulţimii A sunt: (1,2,3), (1,3,2), (2,1,3), (2,3,1), (3,1,2), (3,2,1). Fie A={a1, a2,…,am} o mulţime cu elemente de tip întreg. Trebuie determinate elementele mulţimii { y1, y2,…,ym }| ykA, k=1,2,...,m, pentru yiyj pentru ij}. Deci, x=( x1, x2,…,xm) unde x{1,...,m}, elementele vectorului x trebuie să fie distincte.
  • 11.  Problema generării permutărilor, este cea mai reprezentativă pentru metoda backtracking, ea conţine toate elementele specifice metodei.  Probleme similare, care solicită determinarea tuturor soluţiilor posibile, necesită doar adaptarea acestui algoritm modificând fie modalitatea de selecţie a elementelor din mulţimea Sk, fie condiţiile de continuare fie momentul obţinerii unei soluţii IMPLEMENTAREA METODEI BACKTRACKING
  • 12. Aranjamente Se dau două mulţimi A={1,2,…,p} şi B={1,2,…,m} se cer toate funcţiile injective definite pe A cu valori în B. O astfel de problemă este una de generare a aranjamentelor de n luate cate p (An p). Exemplu: p=2, n=3. Avem (1,2), (2,1), (1,3), (3,1), (2,3), (3,2). De exemplu (2,1) este funcţia f:A→B dată astfel f(1)=2, f(2)=1. Avem relaţiile: =m(m-1)...(m-p+1).
  • 13. Avem relaţiile: ) ( ! p m m Ap n   = m(m-1)...(m-p+1). Se citesc m şi p. Să se genereze toate aranjamentele de m luate câte p. Se observă că dacă se cunoaşte fiecare submulţime de p elemente a mulţimii de m elemente, atunci aranjamentele se pot obţine permutând în toate modurile posibile elementele unei astfel de mulţimi. O soluţie este de forma: x1,x2,...xp unde x1,x2,...xpB. În plus x1,x2,...xp trebuie să fie distincte. O soluţie are p numere din mulţimea B şi numerele trebuie să fie distincte. De aici rezultă că algoritmul este acelaşi ca la permutări, diferenţa fiind dată de faptul că soluţia are p numere, nu m ca în cazul permutărilor.
  • 14.  Se citesc n şi p numere naturale cu p<=n. Sa se genereze toate aranjamentele de n elemente luate câte p. Exemplu pentru n=3, p=2 (1,2), (1,3), (2,1), (2,3), (3,1), (3,2)  Vom genera pe rând soluţiile problemei în vectorul v=(v1,v2,v3,...,vn) , unde vk € Sk  Conditia interna: elementele nu au voie sa se repete.  Obţinem o soluţie în momentul în care completăm vectorul cu p elemente.  In cadrul programului pentru generarea permutărilor trebuie modificata o singură funcţie pentru a obtine generarea aranjamentelor şi anume funcţia soluţie, astfel: GENERAREA ARANJAMENTELOR
  • 16. Se citesc n şi p numere naturale cu p<=n. Să se genereze toate combinările de n elemente luate câte p. Exemplu pentru n=3, p=2. obţinem (1,2), (1,3), (2,3) În cadrul unei combinări elementele nu au voie să se repete. Să mai observăm şi faptul că dacă la un moment dat am generat de exemplu soluţia (1,2), combinarea (2,1) nu mai poate fi luată în considerare, ea nu mai reprezintă o soluţie. Din acest motiv vom considera că elementele vectorului reprezintă o soluţie, numai dacă se află în ordine strict crescătoare. Acestea reprezintă condiţiile de continuare ale problemei. GENERAREA COMBINARILOR