Sunteți pe pagina 1din 36

12

III. Paradigma backtracking


1. Prezentarea general
a metodei -
Implementarea
iterativ/recursiv




1. Generarea permutrilor
de n elemente
2.Studii de caz simple:
probleme de
combinatoric
2. Generarea aranjamentelor
de n elemente luate cite k
3. Generarea combinrilor
de n elemente luate cite k

4. Generarea partiiilor unui intreg n
5. Generarea partiiilor unei mulimi



3. Studii de caz
complexe:
1. Problema celor n regine
2. Colorarea grafurilor (hrilor)
3. Submulimi de sum dat
4. Problema comis- voiajorului


4. Extinderi ale metodei
backtracking (spaiul
soluiilor este
bidimensional)
1. Problema labirintului
2. Problema calului pe tabla de sah
3. Problema zarului
4. Problema fotografiei





5. Studii de caz avansate

1. Diferena dintre vecini(bac. iulie 1999)
2. Numere supermultimple(bac.aug. 1999)
3. Numere cu suma cifrelor constant (bac
iulie 2000)
4. Litere distincte(bac.aug. 2000)
5. Submulimi ordonate de sum dat (bac
iulie 2001)
6. Generare iruri (bac august 2001)
7. Problema admitere Info-2001
8. Generarea perechilor de paranteze
9. Problema caselor de bani
10. Problema preferinelor
11. Problema depozitrii calculatoarelor


6. Aplicaii propuse
(pe grade de dificultate)



13
III.1. Prezentarea general a metodei

Backtracking este o metod care mbuntete cutarea exhaustiv.
Un algoritm de cutare exhaustiv este definit dup urmtoarea schem:
se definete spaiul soluiilor poteniale U i cu un algoritm de enumerare
se selecteaz acele soluii poteniale care snt soluii ale problemei. O
soluie potenial este soluie dac satisface o condiie ST ce poate fi
testat n timp polinomial.
Paradigma backtracking nlocuiete cutarea exhaustiv cu una
parial, bazat pe ideea ncearc ceva i dac nu merge atunci mai
ncearc altceva. Presupunem c spaiul soluiilor poteniale poate fi
reprezentat printr-un arbore. Atunci, fiecare soluie potenial este
descris de un drum de la rddcin la un vrf pe frontier.

1. Enumerarea elementelor produsului cartezian
{1,...,m}
n
Modelul matematic
intrarea: m, n din N
ieire: toate elementele produsului cartezian
{1,...,m}x{1,...,m}x...x{1,...,m} de n ori
reprezentarea solutie : s|i|=j;
criteriul candidat: nu este necesar, pentru ca spaiul soluiilor
poteniale coincide cu spaiul soluiei rezultat
Enumerarea elementelor produsului cartezian {1,...,m}
n
procedure EnumProdCart(m,n)
begin
i 1; x[1] 0
while (i > 0) do
if (x[i] < m)
then x[i]++
if (i=n)
then Scrie(x)
else i++
x[i] 0
else k--
14
end
Fig. 1: Arborele reprezentrii pentru exemplul: {1,2,3} {1,2}
1
1
2
(1,1)
(1,2)
1
2
(2,1)
(2,2)
1
2
(3,1)
(3,2)
2
3
15

III.2. De la DFS la backtracking:
studii de caz simple
1


Pe parcursul capitolului pentru fiecare studiu de caz se va analiza
problema urmrind reprezentarea soluiei cu arbori, spaiul soluiilor
posibile, aplicarea funciei de tiere.
Corespunztor celor dou variante ale programului DFS, avem
dou descrieri pentru algoritmul backtracking: una nerecursiv i una
recursiv. Soluia se poate reprezenta printr-un element (x1,..xm)
aparinnd produsului cartezian S1xS2x..xSm. Dac Si= {1,2,..,ni} schia
metodei este prezentat n ambele variante: iterativ i recursiv.

a) Varianta nerecursiv se obine prin adaptarea programului iterativ
corespunztor parcurgerii DFS a unui graf.

Backtracking: algoritm iterativ
procedure Backtracking()
begin
i 1; x[i] 0
repeat
while (x[i] < nri) do begin
x[i++
if (Candidat(x,i)) then
if (i=n and ST(x)) then Scrie(x)
else begin i++;x[i] 0 end
end
i- -
until i=0;
end

Deoarece simuleaz numai parcurgerea arborelui, stiva este
reprezentat de o variabil simpl i ce nregistreaz nivelul n arbore a
vrfului vizitat.

b) Varianta recursiv se obine prin modificarea programului recursiv
specific parcurgerii DFS a grafurilor.



1
In Anexa sint prezentate implement[rile Pascal/C ]nso`ite de comentarii \i parte grafic[ (acolo unde
este necesar) pentru algoritmii aborda`i
16
Backtracking: algoritm recursiv

procedure BacktrackRec(i);
begin
for j=1 to nri do begin
xij
if Candidat (x,i) then
if i<n then BacktrackRec(i+1);
else scrie(x)
end
end;

n programul principal apelul va fi:
begin
BacktrackRec(1);
End;

Varianta nerecursiv este mai rapid dect varianta recursiv,
datorit eliminrii apelurilor recursive dar diferena de timp dintre cele
dou variante nu este foarte mare.
Fiecare din schemele de mai sus va fi modelat peste algoritmul de
enumerare utilizat pentru generarea soluiilor poteniale.
Dac soluiile poteniale snt elemente ale unui produs cartezian A1x..xAn,
atunci for fiecare valoare posibil pentru x[i se traduce prin for
fiecare x|i|eAi, iar condiia x|i| pe frontier este echivalent cu
i=n.
Paradigma backtracking propune o enumerare parial a
soluiilor poteniale prin introducerea unei funcii de tiere (criteriu
candidat): (x1, ..., xi) candideaz la soluie dac avem anse s gsim
(xi+1, ..., xn) a.i. (x1, ..., xn) s fie soluie
dac (x1, ..., xi) candideaz i i+1 (forward)
dac (x1, ..., xi) NU candideaz i i-1 (backward)
Astfel, rezult cele dou elemente ce caracterizeaz un algoritm
backtracking: reprezentarea soluiilor i criteriul de mrginire.

17
Generarea elementelor combinatorice

Analiza combinatoric este o ramur a matematicii care studiaz
diferite posibiliti de ordonare sau de combinare a unor elemente. n
practic, adesea, se ajunge la problema de a alege dintr-o mulime
oarecare de obiecte submulimi de elemente care posed anumite
proprieti, de a dispune de elementele uneia sau ale mai multor mulimi
ntr-o anumit ordine. Aceast ramur are mare importan pentru teoria
probabilitilor, cibernetic, logica matematic, teoria numerelor precum
i pentru alte ramuri ale tiinei i tehnicii. n continuare vor fi prezentai
algoritmii de generare a acestor elemente combinatorice.

1. Generarea permutrilor a n elemente

Enun: Generai toate permutrile elementelor 1,2,..,n.

Schema problemei:
Problema
intrare: mulimea {1,2,..,n}
ieire: toate posibilitile de aranjare a clor n elemente ale
mulimii date;
Soluie:
Definite riguros, permutrile de ordin n snt funcii bijective de forma:
s:{1,2,..,n}{1,2,..,n}.
Reprezentarea se face prin vectorul s, cu n componente, avnd
semnificaia: s|i| este elementul asociat prin intermediul funciei s
elementului i.

Aplicarea paradigmei:
reprezentarea solutiei: vectorul s cu n componente
criteriul candidat
(i): 1sisk-1 s[i] = s[k];

18
1
1
2
1 3
2
2
3
2
2
2 2 2 2 2
3 3 1
1 1 1 1 1 1 3 3 3 3 3 3
(1,2,3) (1,3,2) (2,1,3) (2,3,1) (3,1,2) (3,2,1)
Fig. 2. Problema generrrii permutrilor (n=3) : arborele reprezentrii

2. Generarea aranjamentelor

Enun: O educatoare pregtete serbarea de Crciun. Pe scena grdiniei
se poate amplasa un rnd de m scaune, dar grupa educatoarei are n copii
(m<=n). Afiai toate variantele pe care le are educatoarea la dispoziie
de a aranja copiii pe cele n scaune.

Schema problemei:
Problema
intrare: mulimea {1,2,..,n}, m<=n
ieire: toate submulimile ordonate de m elemente ale unei
mulimi cu n elemente

Soluie:
Problema poate fi tratat numeric (numerotnd copii de la 1 la n) sau
reinnd numele copiilor (dar care se reduce apoi tot la cazul numeric prin
prelucrarea numrului de ordine al copiilor).
Definite riguros, aranjamentele de n elemente luate cte m snt funcii
injective definite astfel:
s:{1,2,..,n}{1,2,..,m}.
Aplicarea paradigmei:
reprezentarea soluiei: vectorul s cu m componente
criteriul candidat
(i) 1sisk-1 s[i] = s[k]
19
Se observ din modul de reprezentare a informaiilor i din
formularea condiiilor interne, c singura diferen ntre generarea
permutrilor i generarea aranjamentelor const n dimensiunea vectorului
soluie.

1
1
2
(1, 3)
1
3
(2, 1)
1
3
(3,1)
(3,2)
2
3
3
(1,2)
(2,3)
2 2

Fig. 3. Problema generrii aranjamentelor: arborele reprezentrii (n=3, m=2)

3. Generarea combinrilor

Enun: Generai toate submulimile de m elemente ale mulimii
{1,2,..,n}.

Schema problemei:
Problema
intrare: mulimea {1,2,..,n}, m<=n
ieire: toate submulimile de m elemente ale unei mulimi cu n
elemente.
Soluie:
Aplicarea paradigmei:
reprezentarea soluiei: vectorul s cu cele m componente
ordonate cresctor
criteriul candidat
(i) 1sisk-1 s[i] <s[k]
20
1
1
2
(1, 3)
1
3
1
3
2
3
3
(1,2) (2,3)
2 2

Fig. 4. Arborele generrii combinrilorlor n=3, m=2



4. Generarea partiiilor unui ntreg

Enun: Generai toate partiiile numrului n, neN
-
.

Definiie. Fie neN
-
. Numim partiie a unui numr antural nenul n un
sistem de numere naturale nenule (p1,..,pi) astfel ca p1+p2+...pk=n.

Schema problemei:
Problema
intrare: neN
-
.
ieire: (p1,..,pi) astfel nct p1+p2+..+pi=n;

Soluie:
Aplicarea paradigmei:
reprezentarea soluiei: vectorul p cu maxim n componente n
care se rein elementele partiiei; pentru a nu genera de dou
ori aceeai partiie (de exemplu 5=1+4, 5=4+1), elementele
partiiei vor fi memorate n ordine cresctoare;
criteriul candidat:
1. p|i|e{1,2,..,n}, ie{1,2,..,n}
2. p[i] <p[i+1], ie{1,2,..,k-1}
3. p[1] +p[2] +..+p[k]=n;
Dou partiii se consider distincte dac prile n care se descompune n
ntr-o partiie difer prin cel puin o valoare de prile generate de cealalt
partiie.

21

1
1
2
3
1
(1,1, 1)
(1,2)
(3)
2
3
Fig. 5. Arborele tiat pentru reprezentarea partiiilor n=3

Se observ c fiecare element p|i| va avea valorile cuprinse ntre p|i-1| i
diferena dintre n i suma primelor i-1 valori din partiie. Pentru ca
generarea s se realizeze mai rapid, se va utiliza un ir ajuttor (s), cu
| | | |

=
=
i
j
j p i s
1
.
Exemplu: pentru n=3, se obine:
3=1+1+1
3=1+2
3=3

Observaie: O aplicaie interesant a generrii partiiilor unui ntreg este
simularea fisiunii nucleare. Cnd un atom format din protonii i neutronii
nucleului este divizat, este spart nr-o mulime de particule mai mici.
Suma particulelor n mulime trebuie s fie egal cu mrimea original a
nucleului. Astfel, partiiile unui ntreg reprezint toate cile posibile de a
diviza un atom.

5. Generarea partiiilor unei mulimi

Enun: Generai toate partiiile mulimii M={1, 2, ..,n}.

Definiie: Fie M o mulime nevid. S= {S1,S2,..,Sk} constituie o partiie
a mulimii M dac i numai dac snt ndeplinite urmtoarele condiii:
1. Si=u, ie{1,2,..,k} (clasele partiiei snt nevide)
2. SiSj=u, i=j, i,je{1,2,..,k} (clasele partiiei snt disjuncte)
3. S1S2..Sk=M (reuniunea claselor este M)

22

Schema problemei:
Problema
intrare: mulimea {1,2,..,n}, n din N;
ieire: toate partiiile acestei mulimi;

Soluie:
Aplicarea paradigmei:
reprezentarea solutiei: vectorul s cu n componente, n care
pentru fiecare element din mulimea {1,2,..,n} rein indicele
clasei din care face parte, aceast reprezentare asigurnd
respectarea tuturor condiiilor din definiia partiiei;
criteriul candidat
(i) 1sisk-1 s[i] <s[k]

1
1
2
(1, 3)
1
3
1
3
2
3
3
(1,2) (2, 3)
2 2

Fig. 6. Arborele tiat pentru reprezentarea partiiilor unei mulimi cu 3 elemente

Exemplu: pentru n=3 programul va afia:
Partiia 1: {1 2 3}
Partiia 2: {1 2} {3}
Partiia 3: {1 3} {2}
Partiia 4: {1} {2 3}
Partiia 5: {1} {2} {3}
23
III.3. Studii de caz complexe

1. Problema celor n regine
Enun: Determinai toate modurile n care pot fi aranjate n regine pe
tabla de ah astfel nct s nu se atace.

Schema problemei:
Problema
intrare: neN;
ieire: toate aezrile posibile ale celor n regine pe tabla de ah
n n fr ca acestea s se atace;

Fig. 7: Dispunerea reginelor pe o tabl de ah 44

Soluie:
Aplicarea paradigmei:
reprezentarea soluiei:
Q:{1,..,n}x{1,..,n}{false, true}
o reprezentare care nu-i OK
Q[i,j] = true pe pozitia [i,j] se gaseste o regina
nr. sol. potentiale = 2
nn

o reprezentare mai buna
s[i] = j Q[i,j] = true
nr. sol. potentiale = n
n
criteriul candidat: (i) 1sisk-1 s[i] = s[k] . |s[i]-s[k]| = |i-k|
1
3 2 4
1
2
3
4
R
R
R
R
24

Fig. 8. Problema celor n (n=4) regine: arborele taiat

Considernd o tabla nxn, scopul este s plasm cele n regine astfel
nct s nu fie dou regine pe aceeai linie, coloan sau diagonal.
Problema este una a satisfacerii condiiilor. Cnd n este 8 astfel nct s
fie utilizat o tabl de ah uzual problema este cunoscut ca "problema
celor 8 regine".
Analiza
Cele mai multe probleme de satisfacere a condiiei aparin clasei NP
2

pentru care nu snt cunoscute metode de rezolvare eficient.
Problema celor n-regine este o problem NP i a fost utilizat ca un
exemplu n cercetarea AI sau
programare. Gsirea unei soluii n
problema celor n regine pentru orice n
mai mare sau egal cu 4 poate fi fcut
fr cutare.
Notm c pentru n oarecare nu
toate soluiile snt unice astfel nct multe
din ele snt reflectate (n jurul unor axe)
sau rotite de la altele, acestea fiind
ilustrate n tabel.


Tabel 1: Determinarea numarului de soluii
pentru n regine (n>3)



2
Practic, problemele din clasa NP pot fi rezolvate ntr-un timp avnd valoarea cuprins ntre timpul
polinomial \i timpul exponenial. Clasa este numit NP ca urmare a faptului c un algoritm
nedeterminist (de ghicire) poate s reduc dificultatea problemelor de la complexitatea exponenial la
complexitatea polinomial. Cele mai grele probleme din clasa NP sunt denumite NP-complete.

n # Solutii # Solutii unice
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

2
10
4
40
92
352
724
2,680
14,200
73,712
365,596
2,279,184
14,772,512
95,815,104
666,090,624
4,968,057,848
39,029,188,884
1
2
1
6
12
46
92
341
1,787
9,233
45,752
285,053
1,846,955
11,977,939
83,263,591



1
2 3
4
4
1
3
1
4
2
25
2. Colorarea grafurilor (hrilor)

Enun: Se dau numerele naturale n, m (n,m eN
-
). S se afieze toate
modalitile de a colora o hart care cuprinde n regiuni, cu cele m
culori, n aa fel nct regiunile nvecinate s fie colorate cu culori
diferite.

Schema problemei:
Problema
intrare: un (di)graf G=(V,E) cu V={1,..,n} i m culori
numerotate de la 1 la m.
ieire: toate colorrile posibile ale muchiilor astfel ca oricare
muchie s aib extremitile colorate diferit.

1
2
3
4
5
1
2
3
4
5


Fig9. Relaia de vecintate ntr-o hart reprezentat printr-un graf (n=5, m=3)
Soluie:
Aplicarea paradigmei:
reprezentarea soluiei: vectorul s;
Spaiul soluiilor potentiale = {1,..,m}
n
i poate fi reprezentat
printr-un arbore cu n nivele n care fiecare nod interior are
exact m succesori.
criteriul candidat: (i) 1sisk-1 . {i,k}eE s|i| = s|k|.

Observaie: Dup mai bine de o sut de ani (problema a fost formulat
pentru prima dat n 1852 de ctre un student londonez, Francis Guthrie),
n 1976 s-a putut demonstra (Appel i Haken) c patru culori snt
26
suficiente pentru colorarea unei hri, expunerea acestui rezultat incluznd
verificarea unei proprieti de reductibilitate a grafurilor cu ajutorul
calculatorului.


Fig. 10. Reprezentarea spaiului soluiilor poteniale
1
1
2
2
3
2
3
1
2
1
2
2
2 3
3
1
2
1
1
3
1
3
3
1
3
1
2

Fig 11. Arborele parial obinut dup aplicarea funciei de tiere (n=5, m=3)


1
2
3
1
1
1
2
2
2
3
3
3
1
1
1
2
2
2
3
3
3
...
...
...
...
...

27
3. Submulimi de sum dat

Enun: Fie M o mulime de numere naturale strict pozitive i S un numr
natural din N
-
. S se afieze toate submulimile mulimii M cu
proprietatea c suma valorilor elementelor submulimii este egal cu S.

Schema problemei:
Problema
intrare: o mulime A={1,..,n} i s(i)=wi, i MeZ+.
ieire: A_A, cu proprietatea

e
=
'
) (
A a
M a s .
Soluie:
Aplicarea paradigmei:
reprezentarea solutiie: prin vectori de lungime n, (x1,..xn) cu
xie{0,1} avnd semnificaia xi=1 wiesoluiei (vectorii
caracteristici).
Spaiul soluiilor poteniale = 2
n
i poate fi reprezentat printr-
un arbore binar
criteriul candidat: M w x
k
i
i i
s

=1
i M w w x
n
k i
i
k
i
i i
> +

+ = = 1 1

De remarcat c acest criteriu nu elimin toi subarborii care care nu
conin vrfuri soluie, dar elimin foarte muli, restrngnd astfel spaiul
de cutare.

Fig. 12. Submulimi de sum dat: arborele tiat


0
1
0
1
1 1
1
0 1
1
1
1
0
28

4. Problema comis- voiajorului

Enun: Un voiajor comercial trebuie s-i vnd produsele n n orae,
revenind apoi n oraul unde locuiete. S se afieze toate traseele (dac
exist) pe care acesta le poate urma dac se cunosc perechile de orae
ntre care exist deplasare direct. Oraele se identific prin valorile
1,2,..,n. Fiecare ora, cu excepia celui de plecare, este parcurs o
singur dat. S se trateze cazurile:
a) comis-voiajorul locuiete n oraul 1;
b) comis-voiajorul locuiete n oraul i;
Fig. 13. Relaia de vecintate ntre cele 4 orae ale traseului reprezentat printr-un
graf

Schema problemei:
Problema
intrare: n din N (nr. de orae) i a|i,j|eR+ (costurile
deplasrii);
ieire: toate traseele posibile pentru comis voiajor astfel nct s
viziteze toate cele n orae fr a trece de dou ori prin acelai
ora iar n final s revin n oraul din care a plecat;
Soluie:
Aplicarea paradigmei:
2
3
4
1
29
reprezentarea soluiei: traseele posibile le generm n vectorul
p. Componentele lui p snt orae, deci numere din mulimea
{1,2,..,n}; p|1|=1;
criteriul candidat: p|i|=p|k|, ie{1,2,..,k-1}
a|pk-1,pk|=1
pentru k=n se verific posibilitatea
ntorcerii, adic a|pn,1|=1

1
2
2
4
4
2
3
2
3 1
3
4
4
2
1
3
(2,1, 4,3, 2) (4,1, 2,3, 4) (4,3, 2,1, 4)
4
(1,2, 3,4, 1)
1
1 3
(2,1, 4,3, 2)
2
3
2
1
(1,4, 3,2, 1)
2 4
1
3
4
(3,2, 1,4, 3)
1
2
3
(3,4, 1,2, 3)
2
3
4
1
4
Fig. 14. Problema comis voiajorului-arborele tiat n=4
30
III.5. Studii de caz avansate

1. Diferena dintre vecini

Enun: se citete de la tastatur un numr natural n (n<21) i un numr
natural v. Scriei un program comentat, folosind metoda backtracking,
care afieaz toate numerele de la 1 la n n toate modurile posibile, astfel
nct ntre oricare dou numere afiate n poziii vecine, diferena n
modul s fie mai mare dect valoarea dat v. Datele de ieire se vor scrie
n fiierul ieire.dat. n cazul n care nu exist soluie n fiierul de ieire
se va scrie 'Nu exist soluie'.
(Bacalaureat, iunie 1999)
Schema problemei:
Problema
intrare: n i v din N;
ieire: numerele de la 1 la n n toate modurile posibile pentru
care diferena n modul a elementelor din poziii vecine s fie
mai mare dect valoarea dat v;
Soluie:
Aplicarea paradigmei:
reprezentarea soluiei: vectorul s cu n elemente n care ,s|i|-
s|i+1|,>v;
criteriul candidat: s|i|=s|k|, ie{1,2,..,k-1}
,s|i|-s|i+1|,>v;
1
2 3
1
4
4
1
3
(2,4,1,3,)
4
2
(3,1,4,2,)
Fig. 17. Arborele generrii soluiilor n=4, v=1
31
Exemplu, dac n=4, v=1, rezultatul din fiierul de ieire va fi:
2 4 1 3
3 1 4 2

2. Numere supermultimple

Enun: generai prin metoda backtracking toate numerele naturale cu n
cifre (0<n<10) care snt "super multiple" de k (k>0). Un numr este
super multiplu de k, dac att numrul ct i toate numerele obinute din
el prin tierea succesiv a cifrelor sale ncepnd cu cifra unitilor snt
multiple de k. Valorile n i k se introduc de la tastatur i snt corecte.
Exemplu: pentru n=3 i k=2, numrul 246 este "super multiplu" de k
deoarece numerele 246, 24, 2 snt multiple de k.
(Bacalaureat, august 1999)
Schema problemei:
Problema
intrare: n i k din N;
ieire: toate numerele din N cu n cifre, supermultiple de k;
Soluie:
Aplicarea paradigmei:
reprezentarea soluiei: vectorul s cu n elemente n care s|i|
multiplu de k
criteriul candidat: s|i|=s|k|, ie{1,2,..,k-1}
s|i| multiplu de k;

3. Numere cu suma cifrelor constant

Enun: s se afieze toate numerele formate din cifre distincte cu
proprietatea c suma cifrelor este s. Valoarea variabilei S se citete de la
tastatur, iar soluiile vor fi afiate pe ecran.
Exemplu: pentru s=3, se afieaz: 102, 12,120,201,21,210,3, 30
(Bacalaureat, iunie 2000)
Schema problemei:
Problema
intrare: s din N;
ieire: toate numerele din N cu cifre distincte, ce au suma
cifrelor s;

32

Soluie:
Aplicarea paradigmei:
reprezentarea soluiei: vectorul cifrelor c cu maxim 10
elemente;
criteriul candidat: c|i|=c|k|, ie{1,2,..,k-1}, | | s i c
i
=

s10
;

0
1 2
3
2
0
(1,2,0)
(1,2)
0
2
(1,0,2,)
0
1
(2,0,1)
(2,1)
(3,0)
(3)
1
Fig. 18 Arborele generrii soluiilor n=3

4. Litere distincte

Enun: Se citesc de la tastatur dou numere naturale n i m
(0<n<m<12). S se afieze toate irurile de n litere distincte, litere
alese dintre primele m ale alfabetului englez. De exemplu, pentru n=2 i
m=4 se afieaz, nu neaprat n aceast ordine, irurile AB, BA, AC,
CA, AD, DA, BC, CB, BD, DB, CD, DC.
(Bacalaureat, august 2000)
Schema problemei:
Problema
intrare: n i m din N;
ieire: toate irurile de n elemente distincte din primele m ale
alfabetului englez;
Soluie:
Aplicarea paradigmei:
reprezentarea soluiei: vectorul soluie s cu n elemente;
33
criteriul candidat: s|i|=s|k|, ie{1,2,..,k-1}

1
2 3
1
4
4
1 3
4
2
2
1
3
4
3 2
Fig. 19. Arborele generrii soluiilor n=2, m=4


5. Submulimi de sum dat -ordonate

Enun: Se citesc de la tastatur: dou numere n (0<n<15) i
s(0<s<10
6
) i apoi n valori ntregi distincte, fiecare valoare aparinnd
intervalului |-1000,1000|. S se determine toate mulimile de numere
dintre cele date, fiecare mulime avnd proprietatea c suma elementelor
ei este egal cu s. Fiecare mulime se va afia pe o linie, elementele ei
fiind scrise n ordine cresctoare, desprite prin cte un spaiu sau cte o
virgul.
Exemplu: n=7, s=61,i valorile 12, 61, 22, 57, 10, 4, 23, se vor afia
pe linii distincte urmtoarele mulimi:
4,12,22,23
4,57
61
(Bacalaureat, iunie 2001)

Indicaie: Asemntoare cu problema 3, dar, atenie, numerele din ir pot
fi i negative; este recomandat ordonarea n prealabil a vectorului cu
cele n valori.
6. Problema irurilor de n cifre

Enun: S se genereze toate irurile formate din n cifre, fiecare ir
generat avnd urmtoarele proprieti:
-conine numai cifre din mulimea {1,2,3,4};
-orice dou cifre alturate snt fie ambele pare fie ambele impare.
Numrul natural n (3sns15) se citete de la tastatur. Toate soluiile vor
fi scrise una dup alta, cu spaii ntre soluii, fiecare ir fiind scris fr
spaii ntre cifrele care-l formeaz.
34
(Bacalaureat, august 2001)

Schema problemei:
Problema
intrare: n din N;
ieire: toate irurile de n elemente cu cifre de aceeai paritate
din mulimea {1,2,3,4};
Soluie:
Aplicarea paradigmei:
reprezentarea soluiei: vectorul soluie s cu n elemente;
criteriul candidat: (s|i|-s|k|) mod 2=0, ie{1,2,..,k-1}

1
2 3
1
4
4
1
4
4
3
2
1
3
4
2
3
1
3 2
2
Fig. 20. Arborele generrii soluiilor n=2
Exemplu: pentru n=2, se afieaz (nu neaprat n aceast ordine)
irurile: 11 13 31 33 22 24 42 44 .



7. Problema numrului minim de monezi

Enun: Se dau n tipuri de monezi (0sNs10). Pentru fiecare tip exist un
numr limitat de monezi. Trebiue s se plteasc, atunci cnd este
posibil, o suma dat S folosind un numr minim de monezi de tipurile
date.
a) S se descrie i s se justifice un algoritm care rezolv problema
dat;
b) S se scrie un program care rezolv problema. Programul
accept la intrare N=numrul de tipuri de monezi, L|i| =numrul de
monezi de tipul i (0sisn) i S=suma de plat. Programul tiprete,
pentru fiecare tip numrul de monezi necesare pentru plata sumei S.
35
(Examen de admitere-iulie 2001, Facultatea de Informatic, Iasi)

Indicaie: Dac vom plti cu bancnote de valori mari, suma rmas de
pltit va scdea, iar numrul de bancnote folosit va fi mai mic. Exist
valori ale bancnotelor pentru care dac pltim cu numr maxim de
bancnote, ncepnd cu bancnotele cu valorile cele mai mari, prima soluie
obinut va fi i soluia optim cerut de problem, dar acest lucru nu se
ntimpl ntotdeauna.
Rezolvnd prin backtracking reinem soluia cu numr minim de
bancnote n tabloul nrmin.
Pentru a reduce durata executrii programului, valorile cu care se
va iniializa nr|i| variaz de la L|i| la 0 i se renun la generarea unei
soluii dac numrul de bacnote necesitat nrb devine mai mare sau egal cu
numrul minim curent min. Procednd astfel, numrul de soluii generate
va fi redus iar algoritmul backtracking va fi mult mai eficient.

8. Problema parantezelor

Enun: generai toate irurile de n paranteze rotunde, nchise corect.
Exemplu: n=4, se obine: ()() (())
(Olimpiada naional de informatic, 1995)
Schema problemei:
Problema
intrare: n (par) din N;
ieire: toate irurile de n paranteze nchise corect;
Soluie:
Aplicarea paradigmei:
reprezentarea soluiei: vectorul soluie s cu n elemente
codificate prin 1 (paranteze deschise) i 2 (paranteze nchise);
criteriul candidat: npd>npi;
npdsn/2;

36
1
2
1
(1,1,2,2,) (1,2,1,2,)
1
2
2
2
2
2
1

Fig. 21 Arborele generrii soluiilor n=3

9. Problema caselor de bani

Enun: se consider o stiv de case de bani sub form de piramid.
Astfel pe primul nivel vor fi n case, pe urmtorul n-1 case, apoi n-2, ..,
pn la ultimul nivel unde va fi o singur cas de bani. Deci fiecare cas
se va "sprijini" pe dou case de bani din etajul anterior, mai puin, cele
din etajul de baz care se vor sprijini direct pe podea, n total fiind
n(n+1)/2 case de bani.
Se dau n(n+1)/2 saci cu bani, fiecare coninnd o anumit sum.
S se distribuie aceti saci, fiecare ntr-o cas, astfel nct n fiecare cas
s fie exact atia bani ct n cele dou cutii pe care se sprijin la un loc.
Pentru casele din stratul de baz nu exist nici o condiie. Datele se vor
citi dintr-un fiier cu urmtorul format:
n
s1 s2 ...sn(n+1)/2
unde n este numrul de cutii din stratul de baz, iar s1, s2.. snt sumele de
bani din fiecare sac. Rezultatul va fi afiat pe ecran sub forma unei
piramide n care snt trecute sumele de bani din fiecare cutie.
(Olimpiada naional de informatic, 1994)
Schema problemei:
Problema
intrare: n, s1 s2 ...sn(n+1)/2 din N, ;
ieire: ordinea de repartizare a sacilor;
37
Soluie:
Aplicarea paradigmei:
reprezentarea soluiei: vectorul soluie s
criteriul candidat:
-nu se poate poziiona un sac dac ntr-una din cutiile de
deasupra lui se gsete o cantitate de bani mai mic sau egal cu
cea din sacul curent;
-nu se poate introduce un sac dac n una din cutiile de
deasupra lui nu se gsete nimic. Aceasta deoarece n continuare nu
snt dect saci cu o cantitate cel mult egal cu cea din scul curent,
deci nu vom avea ce s punem n cutia de deasupra;
-dac n una din cutiile alturate sacului curent se afl deja
introdus un sac, atunci vom verifica s fie respectat condiia ca suma
celor doi saci s se regseasc n cutia de deasupra lor;
Se pornete de la o piramid iniial goal, i prin intermediul
unei proceduri -pune va introduce sculeii. Sortnd sacii
nainte de apelul procedurii, n ordine descresctoare a valorii
coninut n ei, se va ine cont de restriciile n poziionarea
sacilor (din criteriul candidat).
Avnd n vedere aceste condiii, numrul de posibiliti de
alegere la fiecare pas se reduce drastic, rezultnd i scderea
timpului de execuie al programului.
Exemplu: Sumele 9,8,17,4,5,3,1,1,2,3 se repartizeaz astfel:

17
8 9
3 5 4
1 2 3 1
Fig. 22 Repartizarea sacilor n casele de bani (n=4)

10. Problema preferinelor dintre calculatoare i studeni

Enun: La un concurs particip n (n<100) studeni numerotai de la 1 la
n. Repartizarea celor n calculatoare, numerotate de la 1 la n, se face
dup preferine, fiecare student i, cu i de la 1 la n, va depune n timp util
lista celor Ki calculatoare preferate. De asemenea, cele n calculatoare au
i ele preferinele lor n rndul celor n concureni. Fiecare calculator i, cu
i de la 1 la n, va reprezenta n timp util o list a celor Pi concureni
preferai. O pereche concurent-calculator se numete "n consens" dac
cele dou pri se prefer reciproc. Repartizarea concurenilor la
38
calculatoare se numete "stabil" dac toate perechile snt n consens.
Furnizai o repartizare o repartizare stabil care se poate obine pe baza
celor dou seturi de preferine.
Date de intrare: fiierul de intrare conine datele pe 2-n+1 linii
avnd structura:
n-numrul de calculatoare
lista calculatoarelor preferate de concurentul 1
.........
lista calculatoarelor preferate de concurentul n
lista concurenilor preferate de calculatorul 1
.........
lista concurenilor preferate de calculatorul n
Date de ieire: vor fi scrise in fiier sub forma:
i1, j1
i2, j2
.....
in, jn
n cazul n care nu exist nici o repartizare stabil, fiierul de ieire va
conine mesajul 'Repartizare imposibil'.
(Olimpiada naional de informatic, 1999)
Schema problemei:
Problema
intrare: n, n liste cu calculatoarelor preferate de fiecare
concurent, n liste cu concurenii preferai de fiecare calculator;
ieire: n perechi (n consens) calculator-student ;
Indicaie:
Considerm un graf bipartit Gnn reprezentnd persoanele ntr-o
parte i calculatoarele pe cealalt parte. Din acest graf eliminm iniial
toate arcele (i,j) dac nu exist arcul (j,i). Trebuie s selectm n muchii
astfel nct oricare nod s fie atins de exact o muchie.
Aceast cerin o realizm prin backtracking: construim cu ajutorul
procedurii recursive rec un vector d avnd n elemente n care poziia i
vom reine calculatorul pe care va lucra persoana i. Deci soluia va
rezulta sub forma unor perechi: i, d|i|.
Exemplu:
Intrare: Ieire:
4
1 2 3 4 1 3
2 2 2
3 4 3 4
1 4 1
3 4
2 3
39
1
2 3 4
11. Problema depozitrii calculatoarelor

Enun: O firm de comer depoziteaz calculatoarele pe care le
comercializeaz pe o ramp liniar n poziii care pot conine un singur
produs. Depozitarea i extragerea calculatoarelor se face cu ajutorul unui
stivuitor care pornete ntotdeauna de la captul din stnga rampei.
Pentru fiecare calculator Ci se cunoate momentul di al depozitrii i
momentul Li al livrrii, n urmtoarele condiii:
-pentru orice i=j, au loc di=dj, Li=Lj;
-di este mai mic dect Lj, pentru orice i i j;
-timpii de lucru ai stivuitorului snt neglijabili;
Depozitarea unui calculator ci dup o poziie ocupat de un alt calculator
cj, are costul constant p (cauzat de transportarea la nlime a
calculatorului peste o poziie); acelai cost apare i la scoaterea din
depozit a lui ci, dac cj mai este n depozit. Dndu-se pentru fiecare
calculator valorile di i Li, s se determine costul minim nsumat al
depozitrilor i livrrilor, corespunztor unei aezri optimale pe ramp
a calculatoarelor. S se gseasc numrul de aezri optimale ale
calculatoarelor n depozit.
Date de intrare: fiierul de intrare conine mai multe seturi succesive de
date, fiecare set avnd structura:
n, p -numrul de calculatoare, costul unei treceri 'peste';
d1, L1 -momentele depozitrii/livrrii calculatorului c1;
....
dn, Ln -momentele depozitrii/livrrii calculatorului cn;
Date de ieire: rezultatele se vor afia pe ecran astfel nct pentru fiecare
set de date din fiierul de intrare s apar cte o linie de forma:
costmin, k unde k este numrul de aezri optimale, echivalente din
punctul de vedere al costului.
(Olimpiada naional de informatic, 1999)

Indicaie: Presupunem c c dou din cele n calculatoare au timpii de
depozitare a, respectiv b (a<b) i timpii de livrare x respectiv y (x>y).
Dac primul calculator specificat prin perechea (a,x) l amplasm pe
poziia i, iar cel de-al doilea calculator l amplasm pe poziia j (i<j),
atunci costul unei amplasri (fr a ine cont de celelalte calculatoare) este
0. Deci n momentul n care construim o configuraie trebuie s nu punem
dou calculatoare pe astfel de poziii, deoarece costul (fr a ine cont de
celelalte calculatoare) s-ar mri cu 2p.
Amplasarea calculatoarelor o vom face prin backtracking, genernd
permutri care respect condiia de mai sus.
40



Exemplu:
Intrare:
4, 1
5, 50
7, 60
12, 40
20, 90
Ieire:
4, 8.
41

III.6. Aplicaii propuse

6.1. Probleme pentru consolidarea cunotinelor i
lucrri de verificare

P1. Care intre urmtoarele afirmaii snt adevarate i care false?
Metoda backtracking se poate implementa numai cu ajutorul
subprogramelor recursive;
Metoda backtracking evit generarea tuturor soluiilor posibile, urmat
de verificarea condiiilor interne pentru fiecare soluie posibil;
Indiferent de problem, aplicarea metodei backtracking conduce la cei
mai eficieni algoritmi;

P1. Succesiuni cu numr prim: Fie dou numere naturale nenule n i m i
A={1,2,..,n}. S se genereze elementele produsului cartezian
AxAxA..xA (de m ori) cu proprietatea c suma tuturor componentelor
este numr prim |2|.

P2. Produs cartezian pe litere: realizai un program care, folosind tehnica
backtracking tiprete produsul cartezian a n cuvinte citite de la tastatur,
n fiierul 'Cart.txt'. O soluie a produsului cartezian conine cte un
caracter din fiecare cuvnt i se va scrie pe un rnd n fiier |17|.

P3. Generarea tuturor funciilor injective f: AB, A i B mulimi
definite in diverese forme (numerice, literale) |18|.

P4. Problema delegaiei(1): dintr-o clas de n elevi trebuie format o
delegaie alctuit din m persoane. Scriei un program care s determine
toate posibilitile de a forma delegaia |18|.

P5. Problema delegaiei(2): Dintr-un grup de n persoane, dintre care p
femei, trebuie format o delegaie de k persoane, dintre care l femei. S
se precizeze toate delegaiile care se pot forma |18|.

P6. Problema mrgelelor: Scriei un program care s vizualizeze n mod
text toate colierele de n (n natural>0) mrgele albe, roii, galbene, verzi
i albastre care se pot construi respectnd urmtoarele reguli:
-nu plasm dou mrgele de aceeai culoare n poziii consecutive;
-nu plasm mrgele albe lng mrgele galbene i nici mrgele verzi lng
mrgele albastre;
-nu utilizm mai mult de n/2 mrgele roii.
42

P7. Problema melodiilor: La un festival de muzic pop, s-au nscris n
melodii, codificate 1,2,..,n (n>3). S se afieze toate posibilitile de a
stabili ordinea intrrii n concurs a melodiilor, tiind c melodiile cu
codurile c1 i c2 trebuie obligatoriu s evolueze a doua respectiv
penultima. Valorile lui c1 i c2 se citesc de la tastatur c1,c2 snt din
{1,2,..,n}|2|.

P8. Problema descompunerii: s se afieze toate modurile posibile de a
descompune un numr natural n n sum de k numere naturale distincte (n
i k snt cunoscute) |17|.

P9. Problema paritii: s se afieze toate numerele de n cifre distincte
toate de aceeai paritate.

P10. Problema steagului: avem la dispoziie n culori. S se precizeze
toate drapelele tricolore care se pot proiecta, tiind c trebuie respectate
regulile:
-orice drapel are culoarea din mijloc c1 sau c2;
-cele trei culori de pe drapel snt distincte |17|.

P11. Problema gndacului: fie o suprafa ptrat mprit n nxn ptrate
identice, fiecare avnd o nlime dat. Un gndac se gsete iniial n
poziia (i,j). S se determine dac poate ajunge gndacul n afara
suprafeei, tiind c acesta poate doar s coboare i nu poate s urce,
pereii fiind foarte abrupi. Dac gndacul poate s ias din suprafa, s
se determine toate variantele posibile |2|.

P12. Traseu minim n labirint: se d un labirint sub forma unei matrice
binare cu n linii i m coloane. Elementele egale cu 1 ale matricei indic
spaiul liber pe unde se poate circula iar zerourile corespund zidurilor. O
persoan se afl n labirint n locul identificat prin linia i0 i coloana j0 S
se determine cel mai scurt traseu posibil de ieire din labirint pentru acea
persoan, dac ieirea este posibil, deplasarea fcndu-se doar n cele
patru puncte cardinale |17|.




43
6.2. Probleme propuse pentru examenul de
bacalaureat

P1. Patronul unei echipe de fotbal dorete s-i cumpere noi juctori.
Cunoscnd valoarea S -suma avut la dispoziie de patronul echipei i
sumele cerute de cluburile la care snt titulari juctorii dorii, scriei
programul care afieaz ce juctori i poate cumpra patronul,
ncadrndu-se exact n suma avut la dispoziie.
(Variant Bacalaureat, iulie 1999)

P2. Folosind metoda backtracking, scriei un program pentru aranjarea
celor n cuburi etichetate de la 1 la n, de laturi Li i culori Ci, i=1,n,
astfel nct toate turnurile de k cuburi care se pot forma, s aib cuburile
aezate n ordine descresctoare, iar culorile cuburilor alturate s fie
diferite.
(Variant Bacalaureat, iulie 1999)

P3. ntr-un magazin se gsesc spre vnzare n (n<21) produse,
numerotate de la 1 la n. Un cumprtor, care dispune de o sum de bani
S, dorete s cheltuiasc toi banii pe care i are n acest magazin, dar
fr a cumpra dou produse de acelai fel. Cunoscnd preul fiecru
produs, scriei un program care s afieze toate posibilitile acestui
cumprtor de a-i cheltui banii.
Se citesc de la tastatur valorile S, n i apoi cele n numere ntregi
reprezentnd preurile celor n produse. n fiierul de ieire magazin.out se
vor scrie toate soluiile, cte o soluie pe fiecare linie. O soluie este
constituit din numerele de ordine ale produselor cumprate, separate
prin cte un spaiu.
Exemplu: pentru n=5, S=100 i preurile celor 5 produse 20 50 70 30
60, fiierul magazin.out va avea urmtorul coninut:
3 4
1 2 4
Dac nu exist soluii, fiierul de ieire va fi gol.
(Variant Bacalaureat, iulie 1999)

P4. Scriei un program care afieaz pe ecran toate secvenele de n litere
(n numr natural par citit de la tastatur) din mulimea {A,R,G,V},
secvene care se pot construi respectnd urmtoarele reguli:
-nu plasm dou litere identice una lng alta;
-trebuie s utilizm exact n/2 litere R
Fiecare soluie se va afia pe cte o linie a ecranului sub forma unui ir de
litere.
Exemplu: pentru n=2 se vor afia soluiile:
44

AR
RA
RG
GR
RV
VR
(Variant Bacalaureat, iulie 2000)

P5. S se genereze toate irurile strict cresctoare formate din numere
naturale cu proprietatea c primul element din ir este n, iar ultimul
element al irului este n+k. Numerele naturale n i k
(0<n<20,0<k<16) snt citite de la tastatur. Fiecare ir generat va fi
scris pe o linie, elementele unui ir fiind separate prin cte un spaiu.
Exemplu: Pentru n=7 i k=3, se vor afia (nu neaprat n aceast ordine)
irurile:
7 8 9 10
7 8 10
7 9 10
7 10
(Variant Bacalaureat, iulie 2001)

P6. S se genereze i s se afieze toate numerele prime de n cifre
(n<10) formate numai cu ajutorul cifrelor 2,0,9. Valoarea numrului
natural n se citete de la tastatur. Descriei sumar metoda folosit.
Exemplu: Pentru n=3, se vor afia (nu neaprat n aceast ordine)
numerele 229, 929.
(Variant Bacalaureat, iulie 2001)

P7. Problema parcrii: fie o parcare cu nxm locuri corespunztoare celor
nxm maini ce-i pltesc taxa. Din fiierul de intrare se citesc: n,m,
coordonatele intrrii i cele nxm perechi ce indic poziiile de ocupare a
parcrii. Verificai i precizai printr-un mesaj adecvat dac pentru o
anumit succesiune de intrare pot fi toate mainile parcate. Deplasarea n
parcare se face doar n cele patru puncte cardinale.

45

7.1. Finaliti urmrite

elevii trebuie s neleag mecanismul "cutrii cu revenire" specific
metodei;
s recunoasc situaiile care impun folosirea metodei;
s implementeze corect algoritmi construii pe baza paradigmei
backtracking;
s analizeze complexitatea programelor realizate prin aceast metod;

7.2. Tipuri de greeli ce pot interveni n
implementarea paradigmei Backtracking

Greelile pot apare n cadrul oricrei etape de lucru, ncepnd cu
proiectarea algoritmului i pn la procesul de implementare n limbaj,
distingndu-se urmtoarele tipuri de greeli:

Identificarea greit a mulimilor Mi n care pot lua valori elementele
de pe fiecare nivel al stivei.
Exemplu: n problema Numere cu suma cifrelor constant S (Bac'-2000)
trebuia inut cont c fiind vorba de cifre fiecare mulime Mi putea avea
doar valorile 0..9 i nu 0..S cum au interpretat unii elevi

Alegerea unei codificri greite a datelor. n general trebuie avut grij
la interpretarea dat elementelor din stiv (sol).

Neidentificarea corect a condiiilor interne ale problemei.
Exemplu: n problema generrii perechilor de n paranteze care se nchid
corect nu e suficient s impunem ca numrul de paranteze deschise s fie
mai mare ca numrul de paranteze nchise ci trebuie avut grij ca numrul
lor s nu depeasc jumtatea lui n.
valid:=(npd>=npi) and (npd<=n div 2);
Trebuie acordat o mare atenie condiiilor interne ale problemei
deoarece o identificare corect a acestora reduce numrul cutrilor
sporind eficiena algoritmului.
Codificarea greit a condiiilor de continuare, acest tip de greeal
aprnd n general din dorina de exprimare ct mai simpl i coincis
a lor.
Exemplu: n problema reginelor n loc de condiia corect:
for j:=1 to i-1 do if (x|i|=x|j|) or (abs(x|i|-x|j|)=i-j)then valid :=false;
se greete frecvent la codificare, neglijnd faptul c reginele pot fi i pe
diagonala secundar, astfel omindu-se precizarea valorii absolte a
46
diferenei; de asemenea elevii greesc la negarea condiiei considernd
operatorul logic and n loc de or;
- La problema mulimilor de sum S (Bac- 2001) o greeal frecvent a
fost aceea c elevii nu au inut cont c elementele pot fi i negative.
Astfel dac la nivelul k suma parial era mai mare dect S se renuna
la acel element dei elementele de pe celelalte nivele puteau reface
suma. Neconcordana ar fi fost eliminat dac ordonau vectorul
valorilor imediat dup citirea de la tastatur.

Identificarea/codificarea greit a situaiilor n care se ajunge la o
soluie rezultat.
Exemplu: n problema submulimilor de sum dat elevii snt tentai s
fac verificarea egalitii dintre sumele pariale i suma cerut n funcia
valid, ceea ce este greit; aceat verificare trebuie fcut dup selecia
elementului, nainte de afiare.

Greeli la implementarea operaiei de afiare a soluiilor rezultat,
fiind remediabil imediat far a afecta cu nimic logica programului.

Exemple:
- n problema submulimilor de sum dat nu ntotdeauna soluia conine
n elemente; deseori se aplica procedura standard de afiare ce conine
secvena: for i:=1 to n do write(a|i|); de aceea trebuie avut grij ca
afiarea s se fac pn la nivelul k, la care s-a realizat suma: for i:=1
to k do write(a|i|);
- n problema vecinilor trebuie fcut o distincie clar ntre valorile din
vectorul a (al valorilor) i valorile vectorului x (poziiile din stiv);
snt frecvente cazurile cnd afiarea se face mecanic prin secvena for
i:=1 to n do write(a|i|) sau for i:=1 to n do write(x|i|) n timp ce
versiunea pentru selecia corect a elementelor este:
for i:=1 to n do write(a|x|i||).

n cazul implementrii recursive trebuie evitate greelile care in de
implementarea n sine. Este des ntlnit situaia n care o variabil
care trebuie declarat local n procedura recursiv, apare declarat
global. De asemenea, trebuie sporit atenia la declararea
parametrilor subprogramului respectiv.
Exemplu: n problema parantezelor declararea variabilei i global i
utilizarea acesteia n toate celelalte proceduri afecteaz execuia corect a
programului eroarea putnd fi rezolvat prin declarea lui i local;
procedure par(k:integer);
var i:integer;
begin
for i:=1 to 2 do
47
begin
xk:=i;
if valid (k)then if (k<n)then par(k+1) else if (npd=npi) then
afis;
end;
end;

Aplicare acestei paradigme este privit cu reticen la nceput de
elevi iar unii se familiarizeaz mai greu chiar i dup mai multe ore de
aplicaii. Prevenirea eecului colar la informatic depinde n mare
msur de metodica predrii, de buna organizare a muncii elevilor la
clas i n special la orele de aplicaii practice de laborator. Interesul
trezit de aplicaii este esenial i de aceea trebuiesc alese probleme
atractive, interesante. Acestea pot fi inspirate din viaa cotidian, din
cunotinele dobndite prin studiul altor discipline, din generalizarea unor
probleme de informatic rezolvate anterior, probleme de perspicacitate,
jocuri.

7.3. Observaii asupra complexitii

Metoda backtracking caut soluiile ntr-un produs cartezian. Dac
facem abstracie de condiiile de continuare, aceast metod reprezint
un algortim exponenial dar condiiile de continuare eficiente pot
reduce substanial numrul elementelor generate.
n practic se consider inacceptabili algoritmii exponeniali sau
factoriali, acceptndu-se algoritmii polinomiali, ins dac gradul
polinomului este mare nici acetia nu snt acceptabili. Se poate observa
c pentru valori mici ale lui n un algoritm exponenial poate fi mai
rapid dect unul polinomial.

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