Sei sulla pagina 1di 7

Metoda trierii presupune ca solutia unei

probleme poate fi gasita analizind


consecutiv elementele s[i], ale unei
multimi finite S={s1,s2,,si,sk}
denumita MULTIMEA SOLUTIILOR POSIBILE




Unde SolutiePosibila = functie booleana
ce returneaza valoare T/F daca
elementul satisface conditiile problemei.
PrelucrareaSolutiei = procedura ce
efectueaza prelucrarea elementului
selectat.
For i:=1 to k do
If SolutiePosibila(si), then
PrelucrareaSolutiei(si)
Se considera multimea P= {P1,P2,Pn},
formata din n puncte (2<=n<=30) pe un
plan euclidian. Fiecare punct P este
definit prin coordonatele sale x,y.
Elaborati un program care afiseaza la
ecran coordonatele punctele P(a),P(b)
dinstanta dintre care este maxima.
REZOLVARE: Multimea solutiilor posibile
S=PxP.
For j:=1 to n do
For m:=1 to n do
If SolutiePosibila(Pj,Pm) then PrelucrareaSolutiei(Pj,Pm)


Distanta dintre punctele P(j), P(m) se calculeaza cu ajutorul:

d(jm) = (x[j]-x[m])^2 + (y[j]-y[m])^2








Program P152;
Const nmax=30;
Type Punct=record
X,y:real;
End;
Indice=1..nmax;
Var P:array[Indice] of Punct;
J,m,n:Indice;
Dmax:real;
PA,PB:Punct;
Function Distanta (A,B:Punct):real;
Begin
Distanta :=sqrt(sqr(A.x-B.x)+sqr(A.y-B.y));
End;
Function Solutie Posibila(j,m:Indice):boolean;
Begin
If j<>M then Solutie Posibila:= true else SolutiePosibila:=false;
End;
Procedure Prelucrarea Solutiei(A,B:Punct);
Begin
If Distanta(A,B)>dmax then
Begin
PA:=A; PB:=B; end; end;

Begin
Write(Dati n); readln(n);
Writeln(Dati Coordonatele x,y ale punctelor);
For j:=1 to n do
Begin
Write(P[,j,]:); readln(P[j].x, P[j].y);
End;
Dmax:=0;

For j:=1 to n do
For m:=1 to n do
If Solutie Posibila(j,m) then
Prelucrarea solutiei(P[j], P[m]);
Writeln(Solutia: PA=Pa.x:5:2,,, PA.y:5:2,));
Writeln(Solutia: PB=Pa.x:5:2,,, PB.y:5:2,));
Readln;
end.

Elementele din multimea solutiilor
posibile pot fi enumerate direct.
Generarea solutiilor posibile necesita
elaborarea unor algoritmi speciali:
- reuniunea/Intersectia/Diferenta;
-Generarea tuturor
submultimilor/elementelor unui produs
cartezian/permutarilor,aranjamentelor,
combinarilor de obiecte.
Avantajul principal al algoritmilor bazati pe
metoda trierii consta in faptul ca
programele respective sunt relativ simple,
iar depanarea lor nu necesita teste
sofisticate. Complexitatea temporala e
determinata de nr de elemente. Metoda
trierii conduce la algoritmi exponentiali.
Metoda trierii este aplicata numai in scopuri
didactice/pentru elaborarea unor
programe al caror timp de executie nu este
critic.