Sunteți pe pagina 1din 8

CNIV-2003, Noi tehnologii de e-learning, Conferina Naional de nvmnt Virtual, Software educaional, Editura Universitii din Bucureti, 2003

(ISBN 973-575-822-9)

Gndirea algoritmic - o filosofie modern a matematicii i informaticii


Marin Vlada Universitatea din Bucuresti, vlada@fmi.unibuc.ro Abstract
Dezvoltarea informaticii actuale se datoreaz cercetrilor, rezultatelor i experienelor din domeniile SISTEMELOR DE CALCUL, ALGORITMICII i PROGRAMRII, dar mai ales a interdependenei acestor domenii prin aa-numita triad "SISTEM DE CALCUL - ALGORITMIC - PROGRAMARE". La baza acestei interdependene se afl conceptul de ALGORITM, concept ce a construit pentru om o nou filosofie: GNDIREA ALGORITMIC. Conceptul a fost introdus n matematica veche, utilizat de matematica modern i perfecionat de informatic n utilizarea calculatoarelor moderne. Aceast gndire algoritmic a fcut posibil apariia i dezvoltarea Tehnologiei Informaiei (IT) ce reprezint de fapt implementarea filosofiei procesrii, gestionrii i comunicrii informaiilor i cunotinelor.

1. Introducere
ntmpltor sau nu, deceniul 7 al secolului al XX-lea a fost unul al marilor schimbri n domeniul informaticii i al sistemelor de calcul: inventarea microprocesorului (bijuteria de baz a actualelor sisteme de calcul) ca urmare a rezultatelor din trei domenii fundamentale : sisteme, circuite integrate i microprogramare; a urmat construirea i rspndirea pe scar larg a sistemelor de calcul de tip PC(Personal Computer), impulsionarea dezvoltrii reelelor de calculatoare, apariia i dezvoltarea de noi sisteme de operare; performane sporite ale dispozitivelor I/O; supremaia i rspndirea structurilor de control n algoritmic i programare; apariia limbajului pseudocod n reprezentarea i elaborarea algoritmilor; conceperea i scrierea primelor limbaje de programare care implementeaz structurile de control (Limbajele Pascal i C), adaptarea continu a limbajelor de programare prin implementarea structurilor de control , a structurilor de date, a facilitilor programrii orientate spre obiecte (OOP- Object Oriented Programming); succese spectaculoase n domeniul Inteligenei Artificiale prin construirea primelor sisteme expert; conceperea i scrierea primului limbaj de programare logic (Limbajul Prolog) ce ofer suportul programrii declarative; dezvoltarea i utilizarea larg a metodelor i tehnicilor Inteligenei Artificiale n rezolvarea ctorva dintre cele mai dificile probleme; delimitarea problemelor rezolvate cu calculatorul(probleme decidabile) n dou clase distincte: clasa problemelor rezolvate prin metode imperative(procedurale) i clasa problemelor rezolvate prin metode declarative; delimitarea clasei problemelor nedecidabile; apariia i dezvoltarea tehnicilor pentru comunicarea, cutarea i vizualizarea la distan a informaiilor.

CNIV-2003, Noi tehnologii de e-learning, Conferina Naional de nvmnt Virtual, Software educaional, Editura Universitii din Bucureti, 2003 (ISBN 973-575-822-9)

Toate aceste aspecte au fost i sunt ntr-o interdependena continu innd seama de particularitatea informaticii care ofer sisteme de calcul performante i produseprogram competitive n rezolvarea problemelor. Utilizarea eficient a sistemelor de calcul i a produselor-program reclam o instruire continu, att pentru informaticieniprogramatori, ct i pentru utilizatori. Dezvoltarea gndirii algoritmice trebuie luat n considerare ca obiectiv n instruire, atunci cnd se nva algoritmic (metode i tehnici), dar i cnd se nva programarea (limbaje de programare). Practica instruirii elevilor i studenilor a demonstrat c invarea unui limbaj de programare este n general mai uoar dect invarea elaborrii algoritmilor (algoritmic). Acest lucru se poate justifica prin faptul c elaborarea unui algoritm este echivalent cu implementarea(reprezentarea) raionamentelor(procese demonstrative) deduse din metode i tehnici utilizate n rezolvarea unei probleme. Rezolvarea problemelor necesit nu numai cunotine clare i precise, dar i capacitate de sintez i control i mai ales capacitate de creaie. Dac vrem s facem o analogie, un programator poate fi compozitorul ce realizeaz o lucrare muzical. n toate etapele instruirii se va avea n vedere interdependena: SISTEM DE CALCUL ALGORITMIC PROGRAMARE Succesele unui concurent la Olimpiadele de Informatic depind de cunoaterea utilizrii unui limbaj de programare modern, dar mai ales depind de bogia i stapnirea cunotinelor n elaborarea algoritmilor. i mai exist nc ceva: experina acumulat n activitatea de rezolvare a problemelor prin formarea unei gndiri algoritmice solide i consistente. Acelai lucru se poate afirma i despre succesele unui programator ce lucreaz ntr-o firm de produse software.

2. Conceptul de algoritm i algoritmizarea


Complexitatea problemelor care necesit descrierea mai multor procese de calcul complexe a determinat folosirea noiunii de algoritm n activitatea de rezolvare a problemelor. Multe procese naturale, multe activiti umane, pot fi descrise ntr-o form algoritmic prin definirea unor informaii i aciuni clare i precise, eliminndu-se ambiguitile n interpretare i n operaii. Algoritmizarea este o cerin fundamental n rezolvarea oricrei probleme cu ajutorul calculatorului. Experiena a demonstrat c nu orice problem poate fi rezolvat prin algoritmizarea rezolvrii, adic prin descrierea unui algoritm de rezolvare. Aa s-a delimitat clasa problemelor decidabile (o problem este decidabil dac exist un algoritm pentru rezolvarea ei) de clasa problemelor nedecidabile (o problem este nedecidabil dac nu exist un algoritm pentru rezolvarea ei). Un algoritm implementeaz diverse metode i tehnici de rezolvare care au fost descoperite sau definitivate ntr-un anumit moment n evoluia tiinific a domeniului respectiv. Exist algoritmi ce urmeaz metode dezvoltate nainte de apariia calculatoarelor, dar cele mai multe probleme cer abordri noi. Chiar dac ne gndim numai la problema celor 4 culori , care a fost rezolvat (n anul 1977) doar prin utilizarea calculatorului i prin utilizarea unei metode noi (metoda Backtracking), facem dovada acestei afirmaii.

CNIV-2003, Noi tehnologii de e-learning, Conferina Naional de nvmnt Virtual, Software educaional, Editura Universitii din Bucureti, 2003 (ISBN 973-575-822-9)

n etapa actual de dezvoltare tiinific i tehnic, rezolvarea unei probleme dintr-un domeniu (matematic, informatic, fizic, chimie, etc. ) reprezint o activitate de creaie, un raionament prin construirea, generarea, descrierea unui: proces demonstrativ(demonstraia) care s arate existena unei soluii sau a mai multor soluii i/sau s determine efectiv soluiile exacte; proces computaional(algoritmul) care s codifice un proces demonstrativ, o metod sau o tehnic de rezolvare n scopul determinrii (eventual aproximative) a soluiilor exacte. n general, n procesul (activitatea) de rezolvare a unei probleme dintr-un anumit domeniu (tiinific, economic, social, etc.), este necesar evidenierea ipotezei (condiiile, strile iniiale, parametrii iniiali) i a concluziei (cerinele, obiectivele, scopurile) din analiza i studiul enunului problemei. Procesul de rezolvare (raionamentul) const n utilizarea selectiv a legilor, teoremelor, propoziiilor, etc. din domeniul problemei, pentru ca pornind de la ipotez(I), prin aplicarea succesiv a legilor, teoremelor, etc. s se obin concluzia(C) problemei. Legtura dintre ipotez, concluzie i procesul de rezolvare (raionamentul - R) determin o structur asemntoare conceptului de program, i anume ( Ipotez - Date de intrare; Concluzia - Date de ieire) :

Figura 1. Rezolvarea unei probleme

De exemplu, procesul de rezolvare a unei probleme poate fi descris astfel: exist un numr de teoreme T1, , Tn determinate de ipotezele I1, , In i de concluziile C1, , Cn ; acestea sunt selectate i apoi aplicate astfel nct s se poat realiza identificrile: I I1, C1 I2 , , Cn C, adic:

Figura 2. Precesul de rezolvare a unei probleme

Aceast prezentare poate fi neleas dac, de exemplu, facem analogia cu rezolvarea problemelor de geometrie care necesit delimitarea ipotezei i a concluziei, ca apoi s se utilizeze numai acele teoreme, propoziii, proprieti care, pornind de la ipotez, prin aplicarea succesiv, s se obin concluzia cerut. Evident, din experina

CNIV-2003, Noi tehnologii de e-learning, Conferina Naional de nvmnt Virtual, Software educaional, Editura Universitii din Bucureti, 2003 (ISBN 973-575-822-9)

cptat n rezolvarea problemelor, se poate afirma faptul c selectarea teoremelor i aplicarea lor se poate realiza doar prin stpnirea domeniului respectiv la nivel de specialist sau de expert. Este cunoscut faptul c omul poate rezolva o problem n trei moduri (metode evideniate de Inteligena Artificial): pornind de la ipotez i obinnd concluzia (metoda nlnuirii nainte); pornind de la concluzie i obinnd ipoteza (metoda nlnuirii napoi); pornind simultan, de la ipotez i concluzie (metoda mixt). n toate tiintele(matematic,fizic, chimie, etc.) exist multe probleme care, chiar dac au fost studiate ntr-o anumit etap, abordarea lor cu metode i tehnici moderne poate s trezeasc oricnd interesul tinerilor, al cercettorilor n general. Aceasta cu att mai mult cu ct astzi, prin utilizarea unor metode specifice tehnologiei informatiei i prin utilizarea calculatorului, se pot concepe tehnici care altdat erau imposibil de imaginat. Din punct de vedere metodologic, trebuie s ne obinuim s reformulm problemele n mod explicit i adecvat rezolvrii lor matematice sau- cnd este posibil cu ajutorul calculatorului. Pentru acest lucru trebuie s cunoatem limitele gndirii demonstrative i n acelai timp limitele gndirii algoritmice, apoi s cunoatem performanele calculatoarelor. S amintim aici istoria problemei celor 4 culori care ncepe n anul 1852 , cnd studentul englez Francis Guthrie a enunat urmatoarea problem pentru colorarea unei hri: Sunt suficiente 4 culori pentru a colora o hart ce reprezint diverse ri, cu condiia ca oricare dou ri vecine (ce au frontiera comun) s fie colorate cu culori diferite. Muli matematicieni cu renume au studiat aceast problem (A. de Morgan, A. Cayley, A. B. Kempe, H. Heesch, K. Appel, W. Hakel), dar rezolvarea ei complet nu a fost posibil dect n anul 1977, (K. Appel, W. Hakel, The four color problem n Mathematics Today , L. A. Steen(ed.) , Springer Verlag , 1978) i acest lucru numai dup ce s-a utilizat calculatorul, deoarece fiind o problem combinatorial cu spaiul soluiilor de ordin foarte mare, a fost necesar conceperea unei metode algoritmice pentru cutarea eficient cu ajutorul calculatorului. Teoretic, problema a fost rezolvat n cazul a 5 culori. De altfel, rezolvarea acestei probleme a impus n Informatic o metod devenit clasic n domeniul elaborrii algoritmilor: metoda backtracking. n zilele noastre apar tot mai des probleme a cror rezolvare (proces demonstrativ) este rezultatul mbinrii metodelor pur matematice cu metodele algoritmice (computaionale). Uneori, rezultate computaionale pot oferi surse de inspiraie pentru metodele matematice. Informaticienii au i venit n ntmpinarea matematicienilor i specialitilor prin elaborarea diverselor sisteme de programe care realizeaz calcule numerice, logice, simbolice, reprezentri spaiale, etc. cu ajutorul crora pot fi dobndite cunotinte matematice sau se pot rezolva probleme din diverse domenii. Totui, aceste aspecte nu trebuie s conduc la neglijarea procesului demonstrativ. Cele mai utilizate astfel de sisteme de programe sunt: MATHEMATICA, STATISTICA, MATLAB, MATHCAD, DERIVE, MAPLE, ORIGIN, SLIDEWRITE, WORKPLACE, EUREKA, etc. Este cunoscut faptul c n tiinele naturii se obin rezultate deosebite prin mbinarea metodelor teoretice cu metodele experimentale. Pentru matematic(i alte tiine),

CNIV-2003, Noi tehnologii de e-learning, Conferina Naional de nvmnt Virtual, Software educaional, Editura Universitii din Bucureti, 2003 (ISBN 973-575-822-9)

informatica(tehnologia informaiei) este cea care ofer rezultate experimentale prin utilizarea calculatorului n rezolvarea problemelor. Metoda algoritmic va fi un experiment pentru justificarea rezultatelor procesului demonstrativ de la metoda matematic, dar n acelai timp poate s fie o metod de rezolvare independent. Metoda algoritmic trebuie s substituie rezultatele obinute pe cale teoretic cu metode computaionale eficiente innd seama de limitele proceselor algoritmice i de performanele calculatoarelor. Este adevrat c uneori metodele matematice pot conduce la simplificarea metodelor algoritmice i invers. Elevii care particip la olimpiadele colare de informatic au constatat c, de multe ori, o analiz profund a abordrii matematice, poate s conduc la obinerea unei metode algoritmice eficiente. Participanii la olimpiadele de matematic pot constata acelai lucru la o analiz profund a abordrii algoritmice. De aici, importana att a proceselor demonstrative (metode matematice) , ct i a proceselor computaionale (metode algoritmice). n funcie de natura metodelor/tehnicilor implementate n procesele computaionale, algoritmii pot fi: numerici, seminumerici, formali, combinatoriali, neuronali, de cutare, de sortare, recursivi, de rescriere, secveniali, paraleli, determiniti, nedeterminiti, probabiliti, aleatori, euristici, de tip Monte Carlo, genetici, de simulare, computational geometry, etc. ntreaga activitate de cercetare i elaborare de software din domeniul Tehnologiei Informaiei este determinat de inventarea, conceperea, elaborarea, testarea, i implementarea de algoritmi performani i utili. Marea diversitate a algoritmilor i marea aplicabilitate a acestora n toate domeniile, face ca aceast tem sa fie mereu actual i ntr-o continu schimbare i perfecionare.

3. Gndirea algoritmic i gndirea obiectual


Practica rezolvrii problemelor folosind un limbaj de programare a determinat de-a lungul timpului diverse abordri n funcie de performana limbajului de programare, performana calculatorului i nu n ultimul rnd, n funcie de metodele i tehnicile avansate privind implementarea raionamentelor pentru demonstraiile corespunztoare problemelor. Rezolvarea teoretic a unei probleme nu garanteaz i rezolvarea ei practic cu calculatorul. n general, un limbaj de programare este menit s faciliteze rezolvarea unor clase de probleme i se preteaz mai bine anumitor tipuri de algoritmi. Este nevoie de experien n utilizarea i cunoaterea calculatorului, de competen i intuiie, este nevoie de inspiraie i creaie. n astfel de situatii este nevoie de cunoaterea mai multor limbaje de programare pentru a alege limbajul de programare adecvat pentru clasa de probleme din care face parte problema de rezolvat. Experiena a artat c, atunci cnd nu este ales limbajul de programare corespunztor, dac totusi se ajunge s se rezolve problema, s-a fcut risip de resurse (timp / memorie / finane, etc.) i, prin urmare, eficiena i performana au avut de suferit. Astzi, perfomana unui informatician-programator este determinat de experiena i competena obinut n desfaurarea celor dou etape ( ANALIZ, PROGRAMARE) :

CNIV-2003, Noi tehnologii de e-learning, Conferina Naional de nvmnt Virtual, Software educaional, Editura Universitii din Bucureti, 2003 (ISBN 973-575-822-9)

etapa gndirii obiectuale (ANALIZ - PROIECTARE) modul de analiz i abstactizare a problemelor prin definirea corect a obiectelor, a tipurilor de obiecte, a relaiilor ntre obiecte i a operatorilor specifici(elaborarea UAP ; etapa de concepie i analiz- proiectare) ; etapa gndirii algoritmice (PROGRAMARE - EXECUIE) alegerea i aplicarea corect a unor metode de rezolvare prin precizarea exact a operatorilor de prelucrare a obiectelor, reprezentarea corect a strategiilor algoritmice, reprezentarea codificat a obiectelor i a prelucrrilor conform unui limbaj de programare (elaborarea algoritmului i programului ; etapa de programare codificare implementare i execuie). n prezent este tot mai des invocat reprezentarea problemelor folosind concepte OOP (Object Oriented Programming). Conceptul de obiect (M. Minsky, The Society of Mind, Touchstone Books, New York, 1986) are un rol important n tiina cunoasterii i educaiei. Un obiect modeleaz o entitate din lumea real sau virtual. n activitatea de rezolvare a problemelor trebuie s se identifice/defineasc obiectele din cadrul problemelor ce provin din diferite domenii: tiinifice, economice, sociale, etc. Identificarea obiectelor este echivalent cu determinarea entitilor i conceptelor care reprezint forme fizice/grafice, fapte, evenimente, procese, stri, etc. Un obiect este caracterizat n mod unic prin identificare, comportament(caracteristic dinamic), i stare(caracteristic static). n esen, rezolvarea unei probleme se va exprima printro codificare a universului problemei i a raionamentelor pentru procesul demonstrativ. Practica dezvoltrii aplicaiilor software(care necesit rezolvarea diverselor tipuri de probleme) a scos la iveal urmatoarele faze importante (gndirea obiectual :fazele 1 i 2= analiz-proiectare; gndirea algoritmic: fazele 3-6= programare-execuie): 1. specificarea problemelor descrierea clar i precis a problemelor indiferent din ce domeniu provin acestea ; 2. proiectarea soluiilor includerea problemelor n clasa de probleme corespunztoare i alegerea modului de reprezentare a problemelor prin formularea etapelor i procedeelor corespunztoare pentru procesele de rezolvare; 3. implementarea soluiilor elaborarea algoritmilor i codificarea acestora ntrun limbaj de programare modern; 4. analiza soluiilor eficiena soluiilor raportat la resursele utilizate: memorie, timp, utilizarea dispozitivelor I/O, etc.; 5. testarea i depanarea verificarea execuiei programului cu diverse seturi de date de intrare pentru a putea rspunde rezolvrii oricrei probleme pentru care aplicaia a fost elaborat; 6. actualizarea i ntreinerea adaptarea soluiilor implementate pentru eliminarea erorilor n rezolvarea unei anumite probleme i compatibilitatea cu sistemul de calcul i sistemul de operare folosite. Conform acestor faze iese n eviden interdependena ntre urmatoarele activiti importante: REPREZENTARE ELABORARE / PROIECTARE EXECUIE, i anume se poate sintetiza prin urmtoarea schem(SC=sistem de calcul, SO=sistem de operare):

CNIV-2003, Noi tehnologii de e-learning, Conferina Naional de nvmnt Virtual, Software educaional, Editura Universitii din Bucureti, 2003 (ISBN 973-575-822-9)

De asemenea, interdependena precizat mai sus se transmite i ntre componentele de pe nivelul inferior din schema arborescent alturat. Competena i experiena n rezolvarea problemelor se pot obine doar dac permanent se are n vedere aceast interdependen i dac se ntreprind eforturi pentru nsuirea de noi cunotine i pentru conoaterea corespunztoare a tuturor aspectelor privind MODELUL FIZIC , respectiv MODELUL VIRTUAL, aspecte determinate de interdependena SISTEM DE CALCUL ALGORITMIC PROGRAMARE:

CNIV-2003, Noi tehnologii de e-learning, Conferina Naional de nvmnt Virtual, Software educaional, Editura Universitii din Bucureti, 2003 (ISBN 973-575-822-9)

Practica i experiena elaborrii programelor pentru rezolvarea problemelor scot n eviden urmtoarele aspecte foarte importante: Modelul fizic- acest model este dat de sistemul de calcul i sistemul de operare, model ce trebuie luat n considerare cnd se proiecteaz i se elaboreaz o aplicaie; acest aspect reclam competen n domeniul sistemelor de calcul i perfecionare continu pentru cel care proiecteaz i elaboreaz aplicaia; Modelul virtual acest model este dat de gndirea obiectual i algoritmic, de modul de reprezentare a algoritmilor, de maina virtual pe care trebuie s se execute algoritmul elaborat; n timp, acest model a suferit schimbri majore deoarece a fost tot timpul influenat de modelul fizic i de clasa problemelor ce urmau s fie rezolvate; Modelul program acest model este reprezentat de o mbinare ntre modelul fizic(SC/SO) i modelul virtual (Algoritmul); ntotdeauna un program se elaboreaz ntr-un limbaj de programare care trebuie s respecte restriciile modelului fizic (sistemul de calcul i sistemul de operare) i restriciile modelului virtual (algoritmul)

4. Bibliografie
[1] Appel, K. and Haken, W. "Every Planar Map is Four-Colorable, II: Reducibility." Illinois J. Math. 21, 91-567, 1977. [2] Appel, K. and Haken, W. "The Solution of the Four-Color Map Problem." Sci. Amer. 237, 108-121, 1977. [3] Brassard, G. and Bratley, P. Fundamentals of Algorithmics. Englewood Cliffs, NJ: PrenticeHall, 1995. [4] Cristea, V., C. Giumale, E, Kalisz, Al. Paunoiu, Limbajul C standard, Ed. Teora, Bucureti, 1992. [5] Knuth, D. E. The Art of Computer Programming, Vol. 1: Fundamental Algorithms, 3rd ed. Reading, MA: Addison-Wesley, 1997. [6] Knuth, D. E. The Art of Computer Programming, Vol. 2: Seminumerical Algorithms, 3rd ed. Reading, MA: Addison-Wesley, 1998. [7] Knuth, D. E. The Art of Computer Programming, Vol. 3: Sorting and Searching, 2nd ed. Reading, MA: Addison-Wesley, 1998. [8] Chabert, J.-L. (Ed.). A History of Algorithms: From the Pebble to the Microchip. New York: Springer-Verlag, 1999. [9] Popovici, M. D., Popovici, M. I., C++. Tehnologia orientat spre obiecte. Aplicaii, Ed. Teora, Bucureti, 2000. [10] Vlada, M., Informatic, Universitatea din Bucureti, Ed. Ars Docendi, Bucureti, 1999. [11] Vlada, M., Poligoane stelate. Problema lui Hopf i Pannwitz, Gazeta de matematic, nr. 8/1995, pag. 339-348. [12] Vlada, M., Rezolvarea problemelor folosind Eureka, software educaional, www.unibuc.ro/eBooks/informatica/eureka/, Universitatea din Bucuresti, 2003. [13] Vlada, M., Concepul de algoritm-abordare modern, Gazeta de informatic, vol. 13/2 i 3, pp. 25-30, pp. 35-39, Agora, Cluj Napoca, 2003. [14] Zaharia, M. D., Structuri de date i algoritmi. Exemple n limbajele C i C++, Ed. Albastr, Cluj-Napoca, 2002. [15] http://www-groups.dcs.st-and.ac.uk/~history/BigPictures/Guthrie.jpeg

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