SlideShare a Scribd company logo
1 of 6
În metoda reluării se presupune că soluția problemei
pe care trebuie să o rezolvăm poate fi reprezentată
printr-un vector: X=(x1, x2,.., xk,…, xn). Fiecare
componentă xk a vectorului X poate lua valori dintr-o
anumită mulțime Ak, k=1,2,..., n. Se consideră că cele mk
elemente ale fiecărei mulțimi Ak sînt ordonate conform
unui criteriu bine stabilit.
Cînd voaloarea pentru xk este stabilită, se verifică
anumite condiții de continuare referitoare la
x1, x2,..., xk.
Menționăm faptul că anume micșorarea lui k dă
nume metodei studiate, cuvintul “reluare” semnificînd
revenirea la alte variante de alegere a variabilelor
x1, x2,..., xk-1. Evident, aceeași semnificație o are și
denumirea engleză a metodei în studiu-backtracking
(back-înapoi, track-urmă).
begin
if k<=n then
begin
X[k]:=PrimulElement(k);
if Continuare(k) then Reluare(k+1);
while ExistaSuccesor(k) do
begin
X[k]:=Succesor(k);
if Continuare(k) then Reluare(k+1)
end; { while }
end { then }
else PrelucrareaSolutiei;
end; {Reluare}
Fie n aparține N*. Scrieți un program recursiv care să genereze toate
partițiile mulțimii {1,2.....n}.
program Partitii;
const NMax = 20;
type Element = 1..NMax;
Clasa = 1..NMax; Partitie = array[Element] of Clasa;
var N: Element; {numarul de elemente din multime}
NC: Clasa; {numarul de clase}
P: Partitie; NrP: word; {numarul de partitii}
procedure Afisare;
var i: Element; j: Clasa;
begin inc(NrP); write('Partitia ', NrP, ': ');
for j := 1 to NC do begin {afisez clasa nr. j} write(' {');
for i := 1 to N do
if P[i]=j then write(i, ' ');
write(#8'} ');
end; writeln; end;
procedure GenPartitie(k: Element);
{cand apelam GenPartitie(k), in vectorul P pe primele k-1 pozitii se
afla o partitie a multimii 1,2,...,k-l formata din NC clase}
var j: Clasa;
begin
if k=N+1 then Afisare {partitia este complet construita}
else begin {plasam elementul k in una din clasele
existente}
for j := 1 to NC do begin P[k] := j; GenPartitie(k + 1); end;
{sau elementul k reprezinta o clasa separata}
inc(NC) ;{maresc numarul de clase}
P[k] := NC;
GenPartitie(k+1); dec(NC); {restaurez numarul de clase} end;
end;
begin {program principal}
write('n= '); readln(n); GenPartitie(1);
end.

More Related Content

What's hot (6)

Limits at Infinity, Part 1
Limits at Infinity, Part 1Limits at Infinity, Part 1
Limits at Infinity, Part 1
 
maths TRIGONOMETRIC FUNCTIONS
maths TRIGONOMETRIC FUNCTIONSmaths TRIGONOMETRIC FUNCTIONS
maths TRIGONOMETRIC FUNCTIONS
 
The Coordinate Plane (Geometry 2_4)
The Coordinate Plane (Geometry 2_4)The Coordinate Plane (Geometry 2_4)
The Coordinate Plane (Geometry 2_4)
 
Examen Seconde 2018-2019
Examen Seconde 2018-2019Examen Seconde 2018-2019
Examen Seconde 2018-2019
 
Polynomials
PolynomialsPolynomials
Polynomials
 
Refraction and snells_law
Refraction and snells_lawRefraction and snells_law
Refraction and snells_law
 

Viewers also liked (20)

Catalina.metoda reluării
Catalina.metoda reluăriiCatalina.metoda reluării
Catalina.metoda reluării
 
Metoda reluarii..
Metoda reluarii..Metoda reluarii..
Metoda reluarii..
 
Metoda backtracking
Metoda backtrackingMetoda backtracking
Metoda backtracking
 
Informatica(1)
Informatica(1)Informatica(1)
Informatica(1)
 
Metoda reluării(2)
Metoda reluării(2)Metoda reluării(2)
Metoda reluării(2)
 
Metoda reluării
Metoda reluăriiMetoda reluării
Metoda reluării
 
MetodaRMC
MetodaRMCMetodaRMC
MetodaRMC
 
Madaç
MadaçMadaç
Madaç
 
Metoda reluarii
Metoda reluariiMetoda reluarii
Metoda reluarii
 
Metoda reluării(3)
Metoda reluării(3)Metoda reluării(3)
Metoda reluării(3)
 
RH
RHRH
RH
 
0metoda reluarii
0metoda reluarii0metoda reluarii
0metoda reluarii
 
Metoda backtracking(1)
Metoda backtracking(1)Metoda backtracking(1)
Metoda backtracking(1)
 
Metoda reluării(1)
Metoda reluării(1)Metoda reluării(1)
Metoda reluării(1)
 
Metoda reluarii
Metoda reluariiMetoda reluarii
Metoda reluarii
 
Inform
InformInform
Inform
 
Dinu(2)
Dinu(2)Dinu(2)
Dinu(2)
 
Catalina
CatalinaCatalina
Catalina
 
Informat
InformatInformat
Informat
 
MCI
MCIMCI
MCI
 

Similar to Metoda reluării

Similar to Metoda reluării (12)

презентация Microsoft office power point
презентация Microsoft office power pointпрезентация Microsoft office power point
презентация Microsoft office power point
 
Metoda reluarii
Metoda reluarii Metoda reluarii
Metoda reluarii
 
00007 backtracking
00007 backtracking00007 backtracking
00007 backtracking
 
Informatica
InformaticaInformatica
Informatica
 
metoda_backtracking22.ppt
metoda_backtracking22.pptmetoda_backtracking22.ppt
metoda_backtracking22.ppt
 
Metoda reluării
Metoda reluăriiMetoda reluării
Metoda reluării
 
Tehnici de programare_triere_1522
Tehnici de programare_triere_1522Tehnici de programare_triere_1522
Tehnici de programare_triere_1522
 
Test ii
Test iiTest ii
Test ii
 
tap alfa
tap alfatap alfa
tap alfa
 
Proiect tic
Proiect tic Proiect tic
Proiect tic
 
Metoda reluarii
Metoda reluariiMetoda reluarii
Metoda reluarii
 
Tehnici de programare triere
Tehnici de programare triereTehnici de programare triere
Tehnici de programare triere
 

More from Balan Veronica (20)

10690908 737125719676587 190185588_n
10690908 737125719676587 190185588_n10690908 737125719676587 190185588_n
10690908 737125719676587 190185588_n
 
Integrarea numerica
Integrarea numericaIntegrarea numerica
Integrarea numerica
 
Veronica botnarenco
Veronica botnarencoVeronica botnarenco
Veronica botnarenco
 
Integrare numerică
Integrare numericăIntegrare numerică
Integrare numerică
 
Inform
InformInform
Inform
 
Metodele de integrare
Metodele de integrareMetodele de integrare
Metodele de integrare
 
Metode de calcul al integralei definite
Metode de calcul al integralei definiteMetode de calcul al integralei definite
Metode de calcul al integralei definite
 
Integrarea numerică
Integrarea numericăIntegrarea numerică
Integrarea numerică
 
Dreptunghiuri
DreptunghiuriDreptunghiuri
Dreptunghiuri
 
aana
aanaaana
aana
 
CatPadI
CatPadICatPadI
CatPadI
 
integrare
integrareintegrare
integrare
 
Metoda0newton
Metoda0newtonMetoda0newton
Metoda0newton
 
Metoda-bisecției
Metoda-bisecțieiMetoda-bisecției
Metoda-bisecției
 
Metoda-coardei
Metoda-coardeiMetoda-coardei
Metoda-coardei
 
Metoda-newton(1)
Metoda-newton(1)Metoda-newton(1)
Metoda-newton(1)
 
newton
newtonnewton
newton
 
BD
BDBD
BD
 
pr
prpr
pr
 
PD
PDPD
PD
 

Metoda reluării

  • 1.
  • 2. În metoda reluării se presupune că soluția problemei pe care trebuie să o rezolvăm poate fi reprezentată printr-un vector: X=(x1, x2,.., xk,…, xn). Fiecare componentă xk a vectorului X poate lua valori dintr-o anumită mulțime Ak, k=1,2,..., n. Se consideră că cele mk elemente ale fiecărei mulțimi Ak sînt ordonate conform unui criteriu bine stabilit. Cînd voaloarea pentru xk este stabilită, se verifică anumite condiții de continuare referitoare la x1, x2,..., xk.
  • 3. Menționăm faptul că anume micșorarea lui k dă nume metodei studiate, cuvintul “reluare” semnificînd revenirea la alte variante de alegere a variabilelor x1, x2,..., xk-1. Evident, aceeași semnificație o are și denumirea engleză a metodei în studiu-backtracking (back-înapoi, track-urmă).
  • 4. begin if k<=n then begin X[k]:=PrimulElement(k); if Continuare(k) then Reluare(k+1); while ExistaSuccesor(k) do begin X[k]:=Succesor(k); if Continuare(k) then Reluare(k+1) end; { while } end { then } else PrelucrareaSolutiei; end; {Reluare}
  • 5. Fie n aparține N*. Scrieți un program recursiv care să genereze toate partițiile mulțimii {1,2.....n}. program Partitii; const NMax = 20; type Element = 1..NMax; Clasa = 1..NMax; Partitie = array[Element] of Clasa; var N: Element; {numarul de elemente din multime} NC: Clasa; {numarul de clase} P: Partitie; NrP: word; {numarul de partitii} procedure Afisare; var i: Element; j: Clasa; begin inc(NrP); write('Partitia ', NrP, ': '); for j := 1 to NC do begin {afisez clasa nr. j} write(' {'); for i := 1 to N do if P[i]=j then write(i, ' '); write(#8'} '); end; writeln; end;
  • 6. procedure GenPartitie(k: Element); {cand apelam GenPartitie(k), in vectorul P pe primele k-1 pozitii se afla o partitie a multimii 1,2,...,k-l formata din NC clase} var j: Clasa; begin if k=N+1 then Afisare {partitia este complet construita} else begin {plasam elementul k in una din clasele existente} for j := 1 to NC do begin P[k] := j; GenPartitie(k + 1); end; {sau elementul k reprezinta o clasa separata} inc(NC) ;{maresc numarul de clase} P[k] := NC; GenPartitie(k+1); dec(NC); {restaurez numarul de clase} end; end; begin {program principal} write('n= '); readln(n); GenPartitie(1); end.