Unitatea de nvmnt: Colegiul tefan Odobleja, Craiova
Prof. ndrumtor: Boarn Ecaterina Student: Anghelescu Claudiu Ionut Grupa: 231 Clasa: a XI-a D Data: 10-3-2014 Durata: 50 minute Disciplina: Informatic Obiectivul general: Metode de programare Subiectul leciei: Metoda de programare Backtracking- prezentarea general a metodei Tipul leciei: lecie de dobndire de noi cunotine Spaiul de desfurare al leciei: sala de clas Obiective operaionale : Elevii trebuie sa fie capabili: 1 O - S defineasc principiul care st la baza metodei; 2 O - S identifice situaiile in care se utilizeaz metoda n rezolvarea problemelor;
3 O -S implementeze metoda n diferite aplicaii;
Strategia didactic:
Metode si procedee didactice:
metoda tradiional, conversaie, transferul de cunotine, analiz, sintez, compararea, generalizare, clasificare, activitatea cu ntrebri i situaii de problem, metoda dialogului, cercetarea, programare, algoritmic, euristic.
Mijloace de nvmnt: manualul, fiele, calculatorul
Bibliografia: 1. Manual de informatic intensiv, clasa a XI-a ,varianta C++ Vlad Huanu i Tudor Sorin 2. Tehnici de programare - aplicaii, Cornelia Ivac i Mona Prun
Scenariul didactic: Etapele leciei Obiectivele operationale Coninutul Activitatea profesorului Activitatea elevului Conexiunea invers Timp (min) 1 2 3 4 5 6 7 1. Moment organizatoric. Captarea ateniei
Salut elevii. Apelul. Anunarea subiectului i obiectivelor leciei. Scriu n caiete subiectul. 2 2. Actualizarea cunotinelor obinute la leciile precedente i care sunt necesare n prezentarea noii lecii. O.1 O.2 O.3
Metodele nvate anterior sunt: metoda Divide et impera i metoda Greedy Stiva este aceea form de organizare a datelor n care operaiile de introducere i scoatere a datelor se fac n vrful ei. Se pot simula folosind att alocarea static, ct i alocarea dinamic. ntreg principiu al recursivitii se bazeaz pe structura de tip stiv. Pun ntrebri legate de metodele studiate precum i de noiunea de stiv Elevii particip activ la recapitularea oral a noiunilor cunoscute. Chestionarea oral 7 3.Prezentarea metodei: - cnd se utilizeaz metoda backtracking - principiul care st la baza metodei - implementarea metodei - crearea algoritmului de baz
Utilizarea metodei: se folosete n rezolvarea problemelor care ndeplinesc simultan urmtoarele condiii: - soluia poate fi pus sub forma unui vector S=(x 1 ,x 2,..., x n) , cu x i A i , i=1,n ; - mulimile A 1, A 2,...,
A n sunt mulimi finite, iar elementele lor se consider c se afl ntr-o relaie de ordine bine stabilit; - nu se dispune de o alt metod de rezolvare mai rapid; Se explic pe exemplu (Exemplu 1) Observaii: - nu pentru toate problemele n este cunoscut de la Explicaii ntrebri 8
nceput; - x 1, x 2,..., x n pot fi la rndul lor vectori; - n multe probleme, mulimile A 1, A 2,...,
A n coincid; - tehnica backtracking are ca rezultat obinerea tuturor soluiilor problemei. n cazul n care se cere o singur soluie se poate fora oprirea atunci cnd a fost gsit.
Principiul care st la baza metodei backtracking: Pentru a se nelege principiul se folosete exemplul generrii permutrilor(Exemplul 2). Principiul este destul de simplu: se presupun generate x 1, x 2,..., x k-1
elemente ale vectorului soluie. Se caut s se completeze, la pasul k, elementul x k . Se alege o valoare(nu n mod aleator) din
A k . Dac se constat c valoarea nu e bine aleas (pstrnd-o nu se va ajunge la soluie) se ncearc cutarea altei valori din mulime. Dac nu s-a gsit o asemenea valoare, se reia cutarea pentru componenta k-1(se face pasul napoi), n caz contrar, se trece la componenta k+1 (se face pasul nainte). Procedeul se repet pn cnd vectorul soluie are toate componentele construite.
Elevii particip la generarea soluiilor exemplului prezentat. ntrebri 10 Implementarea metodei Se construiete algoritmul (Algoritm) cu aplicarea acestuia la problema permutrilor. Se ncearc specificarea condiiei de continuare pentru diverse aplicaii.
Ajut la construcia algoritmului i implementarea acestuia n exemplu 10 4. Notarea, aprecieri.
Evideniez rspunsurile i apreciez participarea la lecie, notez i argumentez Notarea 3 5. Tema pentru acas Exerciii pagina 97, manual Specific subiectele pentru tema de acas Elevii scriu n caiete
2
Exemplul 1.
Generarea permutrilor Enun: Se citete un numr natural n. Ce cere s se genereze toate permutrile mulimii {1, 2,,n}
Dac n=3, mulimile A 1 = A 2 = A 3 ={1, 2, 3} Soluiile ar fi: 123 132 213 231 312 321 A 3
A 2
A 1 Observaie important Se observ, c elementele mulimilor sunt n ordine strict cresctoare i consecutive. Aadar modul de alegere din mulime nu este aleatoriu ci se face n funcie de ordinea elementelor.
Exemplul 2. Pentru enunul de la exemplul anterior, generm, cu ajutorul stivei, soluiile prim metoda backtracking. pas1 pas 2 pas3 pas 4 n=3
11
pas 1 Se ia primul element din mulimea A 1 i se pune pe nivelul 1 al stivei. Nu exist deocamdat nici o restricie deoarece exist permutri ce ncep cu 1. Se trece la completarea urmtorului nivel al stivei. pas 2 Se ia primul element din mulimea A 2 i se pune pe nivelul 2 al stivei. Se observ c valoarea 1 a mai fost introdus n vectorul soluie, pe nivelul anterior, i, n acest caz valoarea 1 nu poate fi ataat la vectorul soluie. Aadar, se ia urmtorul element din mulimea A 2 , adic 2. Se constat c poate fi introdus n vectorul soluie. Se trece la completarea urmtorului nivel al stivei. pas 3 Se ia primul element din mulimea A 3 i se pune pe nivelul 3 al stivei. Se observ c valoarea 1 a mai fost introdus n vectorul soluie, pe nivelul anterior, i, n acest caz valoarea 1 nu poate fi ataat la vectorul soluie. Aadar, se ia urmtorul element din mulimea A 3 , adic 2. La fel ca valoarea 1, 2 nu poate fi introdus n stiv. Se trece la urmtorul element din mulime, 3. Se constat c poate fi introdus n vectorul soluie. S-au completat toate nivelele stivei i deci soluia este 1 2 3.
1 1 1 1 2 1 1 1 1 2 2 2 2 3 1 3
pas 4 Pentru nivelul 3 al stivei nu mai exist o alt valoare din mulimea A 3 ce poate fi adugat. Din acest motiv, se revine la nivelul 2 al stivei (napoi) i se completeaz cu urmtoarea valoare din mulimea A 2 ce nu a fost utilizat, adic 3. Se trece la completarea urmtorului nivel al stivei. Procedeul se repet pn cnd nu se mai poate introduce o valoare pe nivelul 1 al stivei. n acel moment s- au generat toate soluiile problemei.
Algoritmul
Se poate constui destul de uor urmtorul algoritm: k=1; // nivelul stivei st[k]=x; // iniializez nivelul k al stivei cu o valoare x egal cu predecesorul primei valori din A k
while (k > 0) // exist nivele necompletate i nu s-au generat toate soluiile { q=0; // presupun c nu s-a gsit elementul ce poate fi adugat n st[k] while ( !q && exist element succesor al lui st[k] netestat n multimea A k ) { st[k]= succesor; if (valid (k)) q=1; // se verific dac se poate aduda la soluie } if( !q) k=k-1; // se coboar n stiv else if ( solutie(k)) // s-a ajuns la soluie scrie soluia else { k=k+1; // se trece la nivelul urmtor i se reia procedeul st[k]=x; } } Exemplu: permutri
k=1; // nivelul stivei st[k]=0; // iniializez nivelul k al stivei cu o valoare x egal cu predecesorul primei valori din A k
while (k > 0) { q=0; while ( !q && (st[k]+1<n) ) { st[k]++; if (valid (k)) q=1; // se verific dac se poate aduda la soluie } if( !q) k=k-1; // se coboar n stiv else if ( k = n) // s-a ajuns la soluie for (int i=1; i<=n; i++) cout<< st[i] else { k=k+1; // se trece la nivelul urmtor i se reia procedeul st[k]=0; } }
---------------------- funcia valid----------------------------- int valid(int k) { int q=1; // presupun c st[k] poate fi adugat la soluie for (int i=1; i<k; i++) // verific dac st[k] a mai fost adugat la soluie if(st[k]== st[k-1]) q=0; return q; }
Aplicaie: Pentru a determina toate modalitile de a scrie pe 9 ca sum de numere naturale nenule distincte, un elev folosete metoda backtracking genernd, n aceast ordine, toate soluiile 1+2+6, 1+3+5, 1+8, 2+3+4, 2+7, 3+6, 4+5. Aplicnd exact aceeai metod, el determin soluiile pentru scrierea lui 12. Cte soluii de forma 3+ exist? a. 7 b. 2 c. 1 d. 4