Sunteți pe pagina 1din 8

METODA TRIERII

NOTIUNI GENERALE

• Se numeşte metoda trierii o metodă ce indentifică toate soluţiile unei


probleme în dependenţă de mulţimea soluţiilor posibile. Toate soluţiile
se identifică prin valori, ce aparţin tipurilor de date studiate: integer,
boolean, enumerare, char, subdomeniu, tablouri unidimensionale.
EXEMPLU:
• Se consideră numerele naturale din
S

mulţimea {0, 1, 2, …, n}. Elaboraţi un Function


program care determină pentru cîte numere
K din această mulţime suma cifrelor SolutiePosibila(i:Natural):Boolean;
fiecărui număr este egală cu m. În Begin
particular, pentru n=100 si m=2, în
mulţimea{0, 1, 2, …, 100} există 3 numere If SumaCifrelor(i)=m then
care satisfac condiţiile problemei: 2, 11 SolutiaPosibila:=true
si 20.Prin urmare, K=3.
Else SolutiePosibila:=false;
• Rezolvare:

End;
Procedure
• Program Pex;
PrelucrareaSolutiei(i:Natural);
• Type Natural=0..MaxInt; Begin
• Var I, k, m, n : Natural; Writeln(‘i=’, i);
• Function SumaCifrelor(i:Natural): K:=k+1;
Natural; End;
• Var suma: Natural; Begin
• Begin Write(‘Dati n=’);
• Suma:=0; readln(n);
• Repeat Write(‘Dati m=’);
• Suma:=suma+(I mod 10); readln(m);
K:=0;
• i:=i div 10;
For i:=0 to n do
• until i=0;
If SolutiePosibila(i) then
• SumaCifrelor:=suma; PrelucrareaSolutiei(i);
• End; Writeln(‘K=’, K);
Readln;
Program Triere;
PROGRAM PS:
• O statie de benzinarie trebuie sa satisfaca cerearea a
n clienti. Se cunoaste timpul de servire necesar
fiecarui client. Realizati un program care stabileste o Procedure afisare_clienti; Begin
ordine de servire a clientilor astfel incat timpul total Var i:integer;
de asteptare sa fie minim. Write (‘posibilii clienti, in
Begin ordine: ‘);
• Program p2;
Write (‘ cand incepe sa fie ultim:=1;
• Type benz=record servit si cand a terminat nr:=1;
• ins, sfs:integer; alimentarea: ‘); Write (v[i].ord, ‘ ‘);
• ord:integer; end; for i:=1 to n Do for i:=2 to n do
• Var v:array [1..100] of benz; Write (‘(‘v[i].ins,’,’,v[i].sfs, if (v[i].ins>v[ultim].sfs)
• n, ultim, nr:integer; ‘,’,v[i].ord’)’); then
• Procedure citire_clienti;
Writeln; end; begin
Procedure sortare_clienti; Write (v[i].ord, ‘ ‘);
• Var hh, mm, i:integer;
Var i,j:integer; ultim:=i;
• begin
t:benz; nr:=nr+1;
• Write (‘n= ‘); Readln (n); Begin end;
• for i:=1 to n do begin for i:=1 to n-1 Do Writeln (‘in total se pot
• Write (‘Clientul cu nr. ‘,i,’cand este servit? (ora si for j:=i+1 to n Do alege maxim’,nr, ‘clienti’);
minutul)’); if (v[j].sfs begin
• Readln (hh, mm); Begin citire_clienti;
• v[i].ins:=hh*60+mm; t:=v[i]; v[i]:=v[j]; afisare_clienti;
• Write (‘clientul cu nr ‘, i, ‘ cand a terminat v[j]:=t; end; end; sortare_clienti;
alimentarea ? ‘); Procedure alg_greedy; afisare_clienti;
• Readln (hh, mm); var i:integer; alg_greedy;
• v[i].sfs:=hh*60+mm; END.
• v[i].ord:=i; end; end;
CONCLUZII:

• Beneficiul metodei trierii constă în faptul că programele care folosesc această


metodă sunt simple, iar la verificarea este necesar de introdus multe date.
Viteza acestui algoritm depinde de cîte elemente k (cele căutate) sunt în
mulțimea S (toate elementele posibile).
• Tehnica Greedy nu are o structură standard pentru toate tipurile de algoritmi,
de aceea nu se poate standardiza.
• MetodaTrierii este aplicată pe larg în soluţionarea problemelor avînd scopuri
didactice. Aceasta însa nu poate fi aplicată problemelor complexe ce necesită
date de intrare a căror valori sunt foarte mari.

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