Sunteți pe pagina 1din 7

PROIECT DIDACTIC

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