You are on page 1of 20
Capitolul I Algoritmi_si tipuri de probleme Calculatoarele numerice lucreaza cu o renrezentare discreta a problemelor rezolvate si pot fi considerate ca masini care evalueaza functii (definite pe multimi discrete), functii ce descriu static rezolvirea problemelor, stabilind 9 corespondenta intre date si rezultate. Interesul matematic al reaolvarii este captat mai ales de proprietatile unor astfel de functii, dar in programare centrul de interes se deplaseaza mai ales asupra procesului de calcul al functiilor cu atit mai mult cu cit, in marea majoritate a cazurilor functia ‘unei probleme’ nu poate fi scrisa ca atare ci doar precizata indirect prin procesul dinamic al calculului sau. Un algoritm este exact o procedura de calcul a unei functii. : Problemele interesante care pot fi discutate la nivelul rezolvarii problemelor vazute ca functii se rasfring 4mplicit asupra elementului dinamic de evaluare, deci asupra algoritmilor. ° 0 problema fundamentaia este ce functii pot fi evaluate prin algoritmi, sau altfel spus care sint problemele algoritmiz&bile ? Raspunsul depinde de natura procesului de evaluare a functiilor si deci de modul in care este inteles un algoritm din perspectiva operatiilor elementare pe care le poate intrebuinta acesta in vederea evaluarii functiilor. In cele ce urmeaza se adera la notiunea Je algoritm vazut ca masina Turing, utilizindu-se in aces: sens denumirea dé algoritm de programare, Capitolul de fata incearca sa prezinte intuitiv unele aspecte esentiale ale algoritmilor si probleme legate de clasa problemelor algoritmizabile, aspecte care pot fi de real folos in dezvoltarea propriu-zisa a programelor. I.1 Algoritmi de programare Urmind exemplul lui Hilbert matematicienii de la inceputul secolului XX au sperat sa poata descoperi un sistem formal adecvat pentru a descrie si verifica mecanic orice adevar matematic. Aceste eforturi au fost stopate de Godel, in 1931, odata cu celebra teorema a incompletitudinii prin care sé arata ca nici o metoda de demonstrare nu poate asigura verificarea mecanica a tuturor teoremelor aritmeticii elementare, existind probleme nedecidabile. Implicit, aceste eforturi au generat intrebarea: ce se intelege in general prin verificare mecanica sau, echivalent, ce este un algoritm ? Matematicieni ca Church, Post, Turing, Markov si altii au propus definitii formale, folosind dispozitive abstracte de calcul, in ‘care pe baza unui set fix de operatii elemntare puteau fi evaluate anumite clase’ de functii, Definitiile mentionate au fost dovedite echivalente, in sensul ca orice functie calculabila conform unei anumite definitif a algoritmului poate fi calculata conform celorlalte definitii, Aceasta particularitate . remarcabila = 4 notiunii de algoritm este postulata in teza lui Church, teza care poate fi folosita ca baza a unei definitii informative a algoritmilor de programare. feza Church-Turing , orice functie naturala intuitiv calculabila este partial recursiva si orice functie naturala totala si intuitdy calculabila este recursiva, unde prin functie naturala 5@ intelege o functie definita pe multimea numerelor naturale cu valori in multimea numerelor naturale Definitia Lt Orice algoritm poate fi specificat cao masina Turing si reciproc, orice masina Turing poate exprima un algoritm. 0 alta definitie informativa, desi derivata din precedente definit + este mai apropiata de aspectul ingineresc al utilizarii calculatorului ca echivalent pragmatic al unei masini Turing. Refinitia 1.2 Un algoritm este o secventa finita de transformari asupra obiectelor problemei de rezolvat si de directive de control a executiei secventei, secventa a carei executie se termina. Folosind definitiile formale ale unui algoritm a fost posibila investigarea puterii diversilor algoritmi ca si duritatea unor probleme. Astfel s-a demonstrat (Turing) ca nu exista nici un algoritm pentru a verifica daca o masina Turing se opreste pentru o anumita banda de intrare. Au fost descoperite multe asemenea probleme aedecidabile care de fapt corespund teoremei incopletitudinii, Dar, in afara de aceste aspecte cu caracter abstract, dezvoltarea unui algoritm aduce in prim plan preocupari relative la limitele sale si la puterea sa (sau mai precis eficienta sa). 1.2 Recddabibitate oi nedetexminisn Deja in paragraful I.1 s-a utilizat denumirea ‘probleme nedecidabile', si 'puterea unui algorita'. ‘A fost mentionata de avenenca problema testarii terminari{ unui algoritm, Aspectele respective fiind de basa, vor fi reluate mai riguros in sectiunile urmatoare.

You might also like