Sunteți pe pagina 1din 2

Tehnici de programare

n cele ce urmeaz, se prezint unele tehnici generale de elaborare a algoritmilor i programelor, care pot fi utile n abordarea unei probleme noi, pentru care nu exist algoritmi deja cunoscui. Cuvntul "tehnic" este folosit aici n sensul de "modalitate practic de a ndeplini o anumit sarcin", spre deosebire de "metod", care este o "cale sistematic de a ndeplini o anumit sarcin". Tehnica presupune o abordare mai puin riguroas a rezolvrii problemei, n care este loc i pentru intuiie, inspiraie i soluii empirice, n timp ce metoda presupune rigoare. Cele mai rspndite tehnici de concepere a programelor sunt: "Divide et impera", "backtracking" , "greedy" , "branch and bound" si "programarea dinamica".

Tehnica diviziunii ("Divide et impera")


Este tehnica mpririi problemei n subprobleme care se rezolv separat, dup care se cumuleaz rezultatele. Calea general de rezolvare a unei probleme prin tehnica diviziunii este urmtoarea: Fie problema P.

Dac exist o metod cunoscut de a rezolva problema P, se aplic aceast metod. Dac nu exist o cale deja cunoscut
o

se mparte problema P n subproblemele P1, P2, ..., Pn, astfel ca fiecare s poat fi rezolvat separat; se rezolv fiecare din subproblemele P1, P2, ..., Pn, obinndu-se soluiile S1, S2, ..., Sn; se determin soluia S a problemei P folosind soluiile pariale S1, S2, ..., Sn.

Esenial pentru tehnica diviziunii este c, pentru rezolvarea problemei P, trebuie rezolvate toate subproblemele n care aceasta a fost descompus. La rezolvarea fiecreia din subprobleme, dac este necesar, se poate aplica din nou tehnica diviziunii, pan se ajunge la subprobleme simple, care pot fi rezolvate direct. Exemple de algoritmi, la elaborarea crora a fost folosit tehnica "divide et impera", sunt cei de cutare binar, sortare prin interclasare, sortare rapid (quick-sort) i alii. n aceste

cazuri, tehnica diviziunii s-a aplicat asupra datelor: mulimea datelor de intrare se mparte n doua submulimi, care se prelucreaz separat, dup care se cupleaz rezultatele. Deosebirea ntre sortarea prin interclasare i sortarea rapid este urmtoarea:

la sortarea prin interclasare, mprirea tabloului de date n dou subtablouri se face direct, prin "secionare"; fiecare subtablou se sorteaz separat, dup care rezultatele pariale se combin prin interclasare. n consecina, prima etapa, a mpririi n subprobleme, este simpl, n timp ce a treia etap, a combinrii rezultatelor, este mai complicat; la sortarea rapid (quick sort), tabloul se mparte n dou subtablouri astfel, nct toate elementele din primul subtablou s fie mai mici dect cele din al doilea. Apoi fiecare subtablou se sorteaz separat, iar rezultatul final se obine prin simpla punere a celor dou subtablouri cap la cap. n consecin, prima etap, a mpririi n subprobleme, este mai complicat, n timp ce ultima etap este foarte simpl.

Particularitatea cutrii binare este c, dup mprirea tabloului n subtablouri, cutarea continu numai n unul din cele dou subtablouri. Remarcm c, n toate aceste cazuri, tehnica diviziunii se aplic recursiv: fiecare subtablou poate fi iari mprit n dou subtablouri i aa mai departe, pn se ajunge la tablouri cu lungimea de un singur element. ntr-un cadru mai larg, tehnica diviziunii st la baza elaborrii programelor prin rafinri succesive. n acest caz, tehnica diviziunii nu se mai aplic asupra datelor, ci asupra programului nsusi, prin modularizarea acestuia: programul se mparte n mai multe module, fiecare modul reprezentnd rezolvarea unei subprobleme autonome. Aceste module se combin conform principiilor programrii structurate, folosind structuri secveniale, alternative sau repetitive. La rndul lui, fiecare astfel de modul poate fi descompus pe baza aceleeai tehnici. Rafinarea continu, pn se ajunge la module pentru care se pot aplica algoritmi deja cunoscui.

Copyright 2001 Cornelia Novac- Ududec Universitatea "Dunrea de Jos" din Galai

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