Sunteți pe pagina 1din 7

Plan de lecţie

Obiectul:Informatică
Clasa: a XI-a I matematică informatică intensiv, C++
Durata: 50 min.
Obiectivul general:Metode de programare
Subiectul lecţiei: “Metoda de programare Backtracking”- prezentarea generală a metodei
Tipul lecţiei:
lecţie de dobândire ce noi cunoştinţe
Capacitatea de învăţare a elevilor:
înaltă – 4 elevi
medie –18 elevi
mică –6 elevi;
Spaţiul de desfăşurare al lecţiei: sala de clasă
Obiective operaţionale :
O.1 Să ştie când se utilizează metoda în rezolvare de probleme;
O.2 Să cunoască principiul care stă la baza metodei;
O.3 Elevii vor fi capabili să implementeze metoda în diferite aplicaţii;
Metode de învăţare, predare, evaluare:

metoda tradiţională, conversaţie, transferul de cunoştinţe, analiză, sinteză, compararea, generalizare,


clasificare, activitatea cu întrebări şi situaţii de problemă, metoda dialogului, cercetarea, programare,
algoritmică, euristică.

Mijloace didactice:
manualul, fişele, calculatorul

Bibliografia:
1. Manual de informatică intensiv, clasa a XI-a ,varianta C++ Vlad Huţanu şi Tudor Sorin
2. Tehnici de programare - aplicaţii, Cornelia Ivaşc şi Mona Prună

1
Desfăşurarea activităţii:
Obiectivele Activitatea Activitatea Conexiunea Timp
Etapele lecţiei Conţinutul
operationale profesorului elevului inversă (min)
1 2 3 4 5 6 7
Salut elevii.
Apelul.
1. Moment
Anunţarea Scriu în caiete
organizatoric. 2
subiectului şi subiectul.
Captarea atenţiei
obiectivelor
lecţiei.
2. Actualizarea Metodele învăţate anterior sunt: metoda
cunoştinţelor Divide et impera şi metoda Greedy Pun întrebări Elevii
obţinute la Stiva este aceea formă de organizare a legate de participă activ
O.1
lecţiile datelor în care operaţiile de introducere şi metodele la
O.2 Chestionarea
precedente şi scoatere a datelor se fac în vârful ei. Se pot studiate recapitularea 7
O.3 orală
care sunt simula folosind atât alocarea statică, cât şi precum şi de orală a
necesare în alocarea dinamică. Întreg principiu al noţiunea de noţiunilor
prezentarea noii recursivităţii se bazează pe structura de tip stivă cunoscute.
lecţii. stivă.
3.Prezentarea Utilizarea metodei: se foloseşte în Explicaţii Întrebări 8
metodei: rezolvarea problemelor care îndeplinesc
- când se simultan următoarele condiţii:
utilizează - soluţia poate fi pusă sub forma unui
metoda vector S=(x1,x2,..., xn) , cu xi € Ai ,
backtracking i=1,n ;
- principiul - mulţimile A1, A2,..., An sunt mulţimi
care stă la finite, iar elementele lor se
baza metodei consideră că se află într-o relaţie de
- impleme ordine bine stabilită;
ntarea metodei - nu se dispune de o altă metodă de
- crearea rezolvare mai rapidă;
algoritmului Se explică pe exemplu (Exemplu 1)
de bază Observaţii:
- nu pentru toate problemele n este
cunoscut de la început;
- x1, x2,..., xn pot fi la rândul lor
2
vectori;
- în multe probleme, mulţimile A1,
A2,..., An coincid;
- tehnica backtracking are ca rezultat
obţinerea tuturor soluţiilor
problemei. În cazul în care se cere o
singură soluţie se poate forţa
oprirea atunci când a fost găsită.
Principiul care stă la baza metodei
backtracking:
Pentru a se înţelege principiul se foloseşte
exemplul generării permutărilor(Exemplul
2).
Principiul este destul de simplu: se
presupun generate x1, x2,..., xk-1 elemente ale
vectorului soluţie. Se caută să se Elevii
completeze, la pasul k, elementul xk. Se participă la
alege o valoare(nu în mod aleator) din Ak. generarea
Întrebări 10
Dacă se constată că valoarea nu e bine soluţiilor
aleasă (păstrând-o nu se va ajunge la exemplului
soluţie) se încearcă căutarea altei valori din prezentat.
mulţime. Dacă nu s-a găsit o asemenea
valoare, se reia căutarea pentru
componenta k-1(se face pasul înapoi), în
caz contrar, se trece la componenta k+1 (se
face pasul înainte).
Procedeul se repetă până când vectorul
soluţie are toate componentele construite.
Ajută la
Implementarea metodei
construcţia
Se construieşte algoritmul (Algoritm) cu
algoritmului şi
aplicarea acestuia la aplicaţia permutări. 10
implementarea
Se încearcă specificarea condiţiei de
acestuia în
continuare pentru diverse aplicaţii.
exemplu
4. Notarea, Evidenţiez Notarea 3
aprecieri. răspunsurile şi
apreciez
3
participarea la
lecţie, notez şi
argumentez
Specific
5. Tema pentru subiectele Elevii scriu în
Exerciţii pagina 97, manual 2
acasă pentru tema caiete
de acasă

4
Exemplul 1.
Generarea permutărilor
Enunţ: Se citeşte un număr natural n. Ce cere să se genereze toate permutările mulţimii {1, 2,…,n}

Dacă n=3, mulţimile A1 = A2 = A3 ={1, 2, 3}


Soluţiile ar fi: 123
132
213
231
312
321 € A3
€ A2
€ A1
Observaţie importantă
Se observă, că elementele mulţimilor sunt în ordine strict crescătoare şi consecutive. Aşadar modul
de alegere din mulţime nu este aleatoriu ci se face în funcţie de ordinea elementelor.

Exemplul 2.
Pentru enunţul de la exemplul anterior, generăm, cu ajutorul stivei, soluţiile prim metoda
backtracking.
pas1 pas 2 pas3 pas 4
n=3
1 2 3

1 2 2 2 2 3

111 1 1 1 1 1 1

pas 1
Se ia primul element din mulţimea A1 şi se pune pe nivelul 1 al stivei. Nu există deocamdată nici o
restricţie deoarece există permutări ce încep cu 1. Se trece la completarea următorului nivel al stivei.
pas 2
Se ia primul element din mulţimea A2 şi se pune pe nivelul 2 al stivei. Se observă că valoarea 1 a mai fost
introdusă în vectorul soluţie, pe nivelul anterior, şi, în acest caz valoarea 1 nu poate fi ataşată la vectorul
soluţie. Aşadar, se ia următorul element din mulţimea A2, adică 2. Se constată că poate fi introdusă în
vectorul soluţie. Se trece la completarea următorului nivel al stivei.
pas 3
Se ia primul element din mulţimea A3 şi se pune pe nivelul 3 al stivei. Se observă că valoarea 1 a mai fost
introdusă în vectorul soluţie, pe nivelul anterior, şi, în acest caz valoarea 1 nu poate fi ataşată la vectorul
soluţie. Aşadar, se ia următorul element din mulţimea A3, adică 2. La fel ca valoarea 1, 2 nu poate fi introdus
în stivă. Se trece la următorul element din mulţime, 3. Se constată că poate fi introdusă în vectorul soluţie.
S-au completat toate nivelele stivei şi deci soluţia este 1 2 3.
pas 4
Pentru nivelul 3 al stivei nu mai există o altă valoare din mulţimea A3 ce poate fi adăugată. Din acest
motiv, se revine la nivelul 2 al stivei (înapoi) şi se completează cu următoarea valoare din mulţimea A2 ce nu
a fost utilizată, adică 3. Se trece la completarea următorului nivel al stivei.

5
Procedeul se repetă până când nu se mai poate introduce o valoare pe nivelul 1 al stivei. În acel moment s-
au generat toate soluţiile problemei.

Algoritmul

Se poate constui destul de uşor următorul algoritm:


k=1; // nivelul stivei
st[k]=x; // iniţializez nivelul k al stivei cu o valoare x egală cu predecesorul primei valori din Ak
while (k > 0) // există nivele necompletate şi nu s-au generat toate soluţiile
{ q=0; // presupun că nu s-a găsit elementul ce poate fi adăugat în st[k]
while ( !q && există element succesor al lui st[k] netestat în multimea Ak )
{ st[k]= succesor;
if (valid (k)) q=1; // se verifică dacă se poate adăuda la soluţie
}
if( !q) k=k-1; // se coboară în stivă
else
if ( solutie(k)) // s-a ajuns la soluţie
scrie soluţia
else
{ k=k+1; // se trece la nivelul următor şi se reia procedeul
st[k]=x;
}
}
Exemplu: permutări

k=1; // nivelul stivei


st[k]=0; // iniţializez nivelul k al stivei cu o valoare x egală cu predecesorul primei valori din Ak
while (k > 0)
{ q=0;
while ( !q && (st[k]+1<n) )
{ st[k]++;
if (valid (k)) q=1; // se verifică dacă se poate adăuda la soluţie
}
if( !q) k=k-1; // se coboară în stivă
else
if ( k = n) // s-a ajuns la soluţie
for (int i=1; i<=n; i++) cout<< st[i]
else
{ k=k+1; // se trece la nivelul următor şi se reia procedeul
st[k]=0;
}
}

---------------------- funcţia valid-----------------------------


int valid(int k)
{ int q=1; // presupun că st[k] poate fi adăugat la soluţie
for (int i=1; i<k; i++) // verific dacă st[k] a mai fost adăugat la soluţie

6
if(st[k]== st[k-1]) q=0;
return q;
}

Aplicaţie:
Pentru a determina toate modalităţile de a scrie pe 9 ca sumă de numere naturale nenule distincte,
un elev foloseşte metoda backtracking generând, în această ordine, toate soluţiile 1+2+6, 1+3+5, 1+8, 2+3+4,
2+7, 3+6, 4+5. Aplicând exact aceeaşi metodă, el determină soluţiile pentru scrierea lui 12. Câte soluţii de
forma 3+ … există?
a. 7 b. 2 c. 1 d. 4

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