Sunteți pe pagina 1din 5

Curs 1: Introducere in algoritmic a - Notiunea de algoritm - Obiectul disciplinei - Proprieti ale algoritmilor at - Date - Tipuri de prelucrri a - Exercitii

Notiunea de algoritm

termeni generali un algoritm este o metod de rezolvare pas cu pas a problemelor. O problem se In a a consider a constituit din date de intrare i un enunt care specic relatia existent a a s a a ntre datele de intrare i solutia problemei. cadrul algoritmului sunt descrise prelucrrile necesare pentru a s In a continuare considerm c obtine solutia problemei pornind de la datele de intrare. In a a Un algoritm este o succesiune bine precizat de prelucrri care aplicate asupra datelor a a de intrare ale unei probleme permit obtinerea timp nit a solutiei acesteia. n Termenul de algoritm provine de la numele unui matematician persan, al-Khowarizmi (alKwarizmi), ce a trit secolul al IX-lea i care a scris o lucrare despre efectuarea calculelor a n s numerice ntr-o manier algebric. Primul algoritm se consider a algoritmul lui Euclid (utilizat a a a pentru determinarea celui mai mare divizor comun a dou numere naturale). a Termenul de algoritm poate eles sens larg neind neaprat legat de rezolvarea unei nt n a probleme cu caracter tiintic, ci doar pentru a descrie s ntr-o manier ordonat activitti care a a a constau parcurgerea unei succesiuni de pai (cum este de exemplu utilizarea unui telefon public n s sau a unui bancomat). matematic exist o serie de algoritmi: cel al rezolvrii ecuatiei de In a a a gradul doi, algoritmul lui Eratostene (pentru generarea numerelor prime mai mici dect o anumit a a valoare), schema lui Horner (pentru determinarea ctului i restului artirii unui polinom la un a s mp binom) etc. Solutia problemei se obtine prin executia algoritmului. Algoritmul poate executat pe o main s a formal ( faza de proiectare i analiz) sau pe o main zic (calculator) dup ce a fost codia n s a s a a a cat ntr-un limbaj de programare. Spre deosebire de un program, care depinde de un limbaj de programare, un algoritm este o entitate matematic, descris folosind un limbaj specic, care este a a independent de maina pe care va executat. a s

Obiectul disciplinei

Obiectul disciplinei de Algoritmic reprezint studiul algoritmilor din perspectiva elaborrii i a l a a s analizei lor. Descoperirea, selectia, adaptarea i analiza algoritmilor reprezint un element cheie in s a dezvoltarea produselor software. Dezvoltarea unui algoritm pornind de la problema de rezolvat presupune parcurgerea urmatoarelor etape: 1. Formularea clar, complet i neambigu a problemei, eventual prin utilizarea unor specicatii a as a formale. 1

2. Identicarea clasei din care face parte problema. 3. Identicarea unui algoritm care permite constructia solutiei pornind de la specicatiile prob lemei. 4. Analiza corectitudinii algoritmului (are ca scop s verice dac algoritmul corespunde specicatiilor a a problemei). 5. Analiza ecientei algoritmului (are ca scop s verice dac solutia poate obtinut prin a a a utilizarea unui volum rezonabil de resurse). Elaborarea unui algoritm necesit: cunotinte specice domeniului de unde provine problema a s de rezolvat (necesare pentru o mai bun elegere a problemei), cunoaterea unor tehnici generale a nt s de rezolvare a problemelor (utile pentru a identica algoritmul adecvat unui problemei de rezolvat) intuitie i gndire algoritmic (acestea se dobndesc i se dezvolt prin experient). s a a a s a a Indiferent de complexitatea unei aplicatii informatice, la bazele ei stau algoritmi destinati re zolvrii problemelor fundamentale ale aplicatiei. Orict de sosticat ar tehnologia software a a a utilizat (interfete, structurare global a aplicatiei) ecienta aplicatiei este mod esential detera a n minat de ecienta algoritmilor implicati. Un algoritm prost conceput nu poate reparat prin a articii de programare. Din acest motiv dobndirea unor cunotinte solide privind elaborarea i a s s analiza algoritmilor este o conditie necesar formarea unui bun programator. a n

Proprieti ale algoritmilor at

Un algoritm trebuie s posede urmtoarele proprieti: a a at Generalitate. Un algoritm destinat rezolvrii unei probleme trebuie s permit obtinerea rezula a a tatului pentru orice date de intrare nu numai pentru valori particulare ale acestora. Finitudine. Un algoritm trebuie s admit o descriere nit i ecare dintre prelucrrile pe care a a as a le contine trebuie s poate executat timp nit. Prin intermediul algoritmilor nu pot a a n prelucrate structuri innite. Rigurozitate. Prelucrrile algoritmului trebuie specicate riguros, fr ambiguiti. orice etap a aa at In a a executiei algoritmului trebuie s se tie exact care este urmtoarea etap ce va executat. a s a a a Ecienta. Algoritmii pot efectiv utilizati doar dac folosesc resurse de calcul volum acceptabil. a n Resursele de calcul se refer la spatiul de memorie necesar pentru stocarea datelor i timpul a s necesar pentru executie. Exemple. 1.Nu orice problem poate rezolvat algoritmic. Considerm un numr natural n i urmtoarele a a a a s a dou probleme: (i) s se construiasc multimea divizorilor lui n; (ii) s se construiasc multimea a a a a a multiplilor lui n. Pentru rezolvarea primei probleme se poate elabora uor un algoritm, schimb s n pentru a doua problem nu se poate scrie un algoritm atta timp ct nu se cunoate un criteriu de a a a s oprire a prelucrrilor. a 2.Un algoritm trebuie s functioneze pentru orice dat de intrare. S considerm problema ordonrii a a a a a cresctoare a irului de valori: (2, 1, 4, 3, 5). O modalitate de ordonare ar urmtoarea: se compar a s a a primul element cu al doilea iar daca nu se a ordinea bun se interschimb ( felul acesta se a n a a n 2

obtine (1, 2, 4, 3, 5)); pentru irul astfel transformat se compar al doilea element cu al treilea i dac s a s a nu se a ordinea dorit se interschimb (la aceast etap irul rmne neschimbat); se continu a n a a a as a a a procedeul pn penultimul element se compar cu ultimul. felul acesta se obtine (1, 2, 3, 4, 5). a a a In Dei metoda descris mai sus a permis ordonarea cresctoare a irului (2, 1, 4, 3, 5) ea nu poate s a a s considerat un algoritm de sortare a ntruct dac este aplicat irului (3, 2, 1, 4, 5) conduce la a a a s (2, 1, 3, 4, 5), ceea ce evident nu este un ir ordonat cresctor . s a 2. Un algoritm trebuie s se opreasc dup un numr nit de prelucrri. Se consider urmtoarea a a a a a a a secvent de prelucrri: a a Pas 1. Atribuie variabilei x valoarea 1; Pas 2. Mrete valoarea lui x cu 2; a s Pas 3. Dac x este egal cu 100 atunci se oprete prelucrarea altfel se reia de la Pas 2. a s Este uor de observat c x nu va lua niciodat valoarea 100, deci succesiunea de prelucrri nu se s a a a termin niciodat. Din acest motiv nu poate considerat un algoritm corect. Dac scopul urmrit a a a a a era generarea tuturor valorilor impare mai mici dect 100 atunci conditia de la Pas 3 ar trebuit a s e x este mai mare dect 100. a a 3. Prelucrrile dintr-un algoritm trebuie s e neambigue. Considerm urmtoarea secvent de a a a a a prelucrri: a Pas 1. Atribuie variabilei x valoarea 0; Pas 2. Fie se mrete x cu 1 e se micoreaz x cu 1; a s s a Pas 3. Dac x [10, 10] se reia de la Pasul 2, altfel se oprete algoritmul. a s Att timp ct nu se stabilete un criteriu dup care se decide dac x se mrete sau se micoreaz a a s a a a s s a secventa de mai sus nu poate considerat un algoritm. Ambiguitatea poate evitat prin uti a a lizarea unui limbaj riguros de descriere a algoritmilor. S considerm c Pas 2 se a a a nlocuiete cu: s Pas 2. Se arunc o moned. Dac se obtine cap se mrete x cu 1 iar dac se obtine pajur se a a a a s a a micoreaz x cu 1; s a acest caz specicarea prelucrrilor nu mai este ambigu chiar dac la executii diferite se obtin In a a a rezultate diferite. Ce se poate spune despre nitudinea acestui algoritm ? Dac s-ar obtine altera nativ cap respectiv pajur, prelucrarea ar putea innit. Exist a i posibilitatea s se obtin a a a ns s a a de 11 ori la rnd cap (sau pajur), caz care procesul s-ar opri dup 11 repetri ale pasului 2. a a n a a Att timp ct ansa ca algoritmul s se termine este nenul algoritmul poate considerat corect a a s a a ( cazul prezentat mai sus este vorba despre un algoritm aleator). n 4. Un algoritm trebuie s se opreasc dup un interval rezonabil de timp. S considerm c a a a a a a rezolvarea unei probleme implic prelucrarea a n date i c numrul de prelucrri T (n) depinde de a s a a a n. Presupunem c timpul de executie a unei prelucrri este 103 s i c problema are dimensiunea a a s a n = 100. Dac se folosete un algoritm caracterizat prin T (n) = n atunci timpul de executie va a s 100 103 = 101 secunde. Dac, a se folosete un algoritm caracterizat prin T (n) = 2n atunci a ns s timpul de executie va de circa 1027 secunde adic aproximativ 1019 ani. a

Date

Prelucrrile efectuate cadrul unui algoritm se efectueaz asupra unor date. Acestea sunt entiti a n a at purttoare de informatie (relevant pentru problema de rezolvat). Considerm datele ca ind a a a containere ce contin informatie, valoarea curent a unei date ind informatia pe care o contine la a un moment dat. functie de rolul jucat cadrul algoritmului datele pot constante (valoarea In n lor rmne nemodicat pe parcursul algoritmului) sau variabile (valoarea lor poate modicat). a a a a Din punctul de vedere al informatiei pe care o poart datele pot : a Simple: contin o singur valoare (poate un numr, o valoare de adevr sau un caracter). a a a Structurate: sunt constituite din mai multe date simple ntre care exist o relatie de structur. a a Dac toate datele componente au aceeai natur atunci structura este omogen, altfel este o a s a a structur heterogen. a a Datele structurate omogene ce vor utilizate continuare sunt cele destinate reprezentrii n a unor structuri algebrice simple: multime nit (ansamblu de valori distincte pentru care nu are a important ordinea care sunt retinute), ir nit (ansamblu de valori nu neaprat distincte pentru a n s a care are important ordinea care sunt retinute) i matrice (tabel bidimensional de valori). a n s Pentru reprezentarea acestor date vom folosi structura de tablou caracterizat prin faptul c a a ecare valoare component poate specicat prin precizarea unuia sau mai multor indici. Cel a a mai frecvent sunt folosite tablourile unidimensionale (pentru reprezentarea irurilor i multimilor) s s i cele bidimensionale (pentru reprezentarea matricilor). s

Tipuri de prelucrri a

Asemenea datelor i prelucrrile pot clasicate simple i structurate. Prelucrrile simple sunt: s a n s a Atribuire. Permite afectarea unei valori unei variabile. Valoarea atribuit poate rezultatul a evalurii unei expresii. O expresie descrie un calcul efectuat asupra unor date i contine opera s anzii (specic datele asupra crora se efectueaz calculele) i operatori (specic prelucrrile a a a s a a ce se vor efectua). Transfer. Permit preluarea datelor de intrare ale problemei i furnizarea rezultatului. s Control. mod normal prelucrrile din algoritm se efectueaz ordinea care sunt specIn a a n n cazul care se dorete modicarea ordinii naturale se transfer controlul executiei icate. In n s a la o anumit prelucrare. De exemplu, o prelucrare prin care se specic trecerea la un anumit a a pas al algoritmului este o astfel de prelucrare de control. Structurile de prelucrare sunt: Secvential. Este o succesiune de prelucrri (simple sau structurate). Executia structurii a a secventiale const executia prelucrrilor componente ordinea care sunt specicate. a n a n n De decizie (alternativ). Permite specicarea situatiilor care functie de realizarea sau a n n nerealizarea unei conditii se efectueaz o prelucrare sau o alt prelucrare. Conditia este a a de regul o expresie a crui rezultat este o valoare logic (adevrat sau fals). O astfel de a a a a prelucrare apare de exemplu evaluarea unei functii denite prin: n

f (x) =

De ciclare (repetitiv). Permite modelarea situatiilor cnd o prelucrare trebuie repetat. a a a Se caracterizeaz prin existenta unei prelucrri care se repet i a unei conditii de oprire a a a s (sau de continuare). functie de momentul care este analizat conditia exist prelucrri In n a a a repetitive conditionate anterior (conditia este analizat a nainte de a efectua prelucrarea) i s prelucrri conditionate posterior (conditia este analizat dup efectuarea prelucrrii). O astfel a a a a de prelucrare apare de exemplu calcului unei sume nite n 1/i2 . acest caz prelucrarea n In i=1 care se repet este adunarea iar conditia de oprire o reprezint faptul c au fost adunati toti a a a cei n termeni.

0 1

dac x < 0 a dac x = 0 a dac x > 0 a

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