0% au considerat acest document util (0 voturi)
882 vizualizări24 pagini

Tehnici de Programare

Documentul prezintă mai multe tehnici de programare, inclusiv metoda trierii, tehnica greedy și metoda reluării. Metoda trierii identifică toate soluțiile unei probleme în funcție de mulțimea soluțiilor posibile. Tehnica greedy alege la fiecare pas cea mai bună decizie fără a evalua global soluția. Metoda reluării permite generarea tuturor soluțiilor posibile ale unei probleme prin încercări repetitive.

Încărcat de

Maria Marinela
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
882 vizualizări24 pagini

Tehnici de Programare

Documentul prezintă mai multe tehnici de programare, inclusiv metoda trierii, tehnica greedy și metoda reluării. Metoda trierii identifică toate soluțiile unei probleme în funcție de mulțimea soluțiilor posibile. Tehnica greedy alege la fiecare pas cea mai bună decizie fără a evalua global soluția. Metoda reluării permite generarea tuturor soluțiilor posibile ale unei probleme prin încercări repetitive.

Încărcat de

Maria Marinela
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd

TEHNICI DE

PROGRAMARE
INTRODUCERE
• Pe parcursul dezvoltării limbajelor de programare, s-au dezvoltat metode de
soluționare a diferitor probleme ce țin de domeniul informaticii.

• Limbajul Pascal oferă:


• Metoda trierii(tehnica Greedy)
• Metoda reluării(tehnica backtracking)
• Metoda desparte și stăpînește
METODA
TRIERII
METODA TRIERII
• Definiție
Se numește metoda trierii metoda ce identifică toate soluțiile unei probleme in
dependență de mulțimea soluțiilor posibile. Toate soluțiile se indentifică prin valori,
ce aparțin tipurilor de date studiate: integer, boolean, enumerare sau subdomeniu.
În probleme mai complicate este nevoie de a reprezenta aceste elemente prin
tablouri, articole sau mulțimi.
SCHEMA DE APLICARE A METODEI TRIERII
PROBLEME DIN VIAȚĂ REZOLVABILE PRIN
METODA TRIERII

• Metoda trierii poate fi folosită pentru rezolvarea următoarelor probleme din viață:
aflarea numărului minim de monede care pot fi date drept plată sau rest;
• medicii deseori se confruntă cu necesitatea aplicării metodei trierii cazurilor, când numărul
răniților sau bolnavilor este foarte mare, medicul fiind suprasolicitat, în cazul unui război,
sau când își periclitează propria viață în cazul unei epidemii periculoase;
• aflarea ariei maxime a unui lot de teren, avînd la dispoziție o anumită lungime de sîrmă
ghimpată, spre exemplu (ca perimetru dat);
• generarea submulțimilor unei mulțimi (aflarea tuturor combinațiilor posibile), ceea ce ne
poate fi foarte util în viața de zi cu zi;
• afișarea coordonatelor a două puncte date ce au distanță minimă sau maximă, ceea ce va fi
foarte folositor dacă plănuim o călătorie;
• calcularea șanselor de a lua premiul mare la loterie etc.
EXEMPLU DE PROBLEMĂ
• Se consideră numerele naturale din mulţimea {0, 1, 2, …, n}. Elaboraţi un program
care determină pentru cîte numere K din această mulţime suma cifrelor fiecărui
număr este egală cu m. În particular, pentru n=100 si m=2, în mulţimea{0, 1, 2, …,
100} există 3 numere care satisfac condiţiile problemei: 2, 11 si 20.Prin urmare,
K=3.
PROGRAM PEX;
TYPE NATURAL=0..MAXINT;
VAR I, K, M, N : NATURAL;
FUNCTION SUMACIFRELOR(I:NATURAL): NATURAL;
VAR SUMA: NATURAL;
BEGIN
SUMA:=0;
REPEAT
SUMA:=SUMA+(I MOD 10);
I:=I DIV 10;
UNTIL I=0;
SUMACIFRELOR:=SUMA;
END;
FUNCTION SOLUTIEPOSIBILA(I:NATURAL):BOOLEAN;
BEGIN
IF SUMACIFRELOR(I)=M THEN SOLUTIAPOSIBILA:=TRUE
ELSE SOLUTIEPOSIBILA:=FALSE;
END;
PROCEDURE PRELUCRAREASOLUTIEI(I:NATURAL);
BEGIN
WRITELN(‘I=’, I);
K:=K+1;
END;
BEGIN
WRITE(‘DATI N=’);
READLN(N);
WRITE(‘DATI M=’);
READLN(M);
K:=0;
FOR I:=0 TO N DO
IF SOLUTIEPOSIBILA(I) THEN PRELUCRAREASOLUTIEI(I);
WRITELN(‘K=’, K);
READLN;
END.
TEHNICA
GREEDY
TEHNICA GREEDY

“greedy” = “lacom”. Algoritmii de tip greedy vor să construiască într-un mod cât mai rapid
soluția unei probleme. Ei se caracterizează prin luarea unor decizii rapide care duc la
găsirea unei soluții potențiale a problemei. Nu întotdeauna asemenea decizii rapide duc la
o soluție optimă; astfel ne vom concentra atenția pe identificarea acelor anumite tipuri de
probleme pentru care se pot obține soluții optime.
Algoritmii greedy se numără printre cei mai direcți algoritmi posibili. Ideea de bază este
simplă: având o problema de optimizare, de calcul al unui cost minim sau maxim, se va
alege la fiecare pas decizia cea mai favorabilă, fără a evalua global eficiența soluţiei. În
general exista mai multe soluții posibile ale problemei. Dintre acestea se pot selecta doar
anumite soluții optime, conform unor anumite criterii. Scopul este de a găsi una dintre
acestea sau dacă nu este posibil, atunci o soluție cât mai apropiată, conform criteriului
optimal impus.
Trebuie înțeles faptul ca rezultatul obținut este optim doar dacă un
optim local conduce la un optim global. În cazul în care deciziile de
la un pas influențează lista de decizii de la pasul următor, este
posibila obținerea unei valori neoptimale. În astfel de cazuri, pentru
găsirea unui optim absolut se ajunge la soluții supra-polinomiale. De
aceea, dacă se optează pentru o astfel de soluție, algoritmul trebuie
însoțit de o demonstrație de corectitudine. Descrierea formală a unui
algoritm greedy este următoarea:
function greedy(C) // C este mulțimea candidaților // în S construim
soluția S ← Ø while not solutie(C) and C≠Ø x ← un element din C
care minimizează/maximizează select(x) C ← C\{x} if fezabil(S∪{x})
then S←S∪{x} return S
ESTE UȘOR DE ÎNȚELES ACUM DE CE ACEST ALGORITM
SE NUMEȘTE ”GREEDY”: LA FIECARE PAS SE ALEGE
CEL MAI BUN CANDIDAT DE LA MOMENTUL
RESPECTIV, FĂRĂ A STUDIA ALTERNATIVELE
DISPONIBILE ÎN MOMENT RESPECTIV ŞI VIABILITATEA
ACESTORA ÎN TIMP.
DACĂ UN CANDIDAT ESTE INCLUS ÎN SOLUȚIE,
RĂMÂNE ACOLO, FĂRĂ A PUTEA FI MODIFICAT, IAR
DACĂ ESTE EXCLUS DIN SOLUȚIE, NU VA MAI PUTEA FI
NICIODATĂ SELECTAT DREPT UN POTENȚIAL
CANDIDAT.
Program maxim.
Program P1;
Var n, a1, a2, c:Integer;
Begin
a1:=-MAXINT; (initializam primele 2 numere si n cu o constanta predefinita)
a2:=-MAXINT;
n:=-MAXINT;
While n<>0 Do Begin
If (n>a1) Then a1:=n; (daca numarul n este mai mare decat primul cel mai mare numar atunci
maximul este n)
If (a2<a1) Then Begin
c:=a1;
a1:=a2;
a2:=c; end; (interschimbare)
Readln (n); end;
Writeln (‘a1, ‘ ‘,a2’);
end.
METODA
RELUĂRII
MULȚUMESC
PENTRU ATENȚIE

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