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 clasaproblemelor 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 naturaleDefinitia 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.