Analiza Algoritmilor și Complexitatea Calculului

Previzualizare curs:

Extras din curs:

Un algoritm este o metoda pentru rezolvarea unei clase de probleme cu calculatorul.

Complexitatea unui algoritm consta in cost. Acest cost este calculat in functie de mai multe criterii

care pot face diferenta dintre un program eficient si unul mai putin eficient. Dintre cele mai uzuale

criterii de evaluare a calitatii unui program putem aminti timpul de executie, marimea programului,

memoria ocupata la rulare sau algoritmii folositi pentru rezolvarea cerintelor programului. Aceste

criterii depind de scopul pentru care a fost creat programul, din al carui punct de vedere criteriile

pot sa fie mai mult sau mai putin importante.

Acest curs analizeaza metodele (algoritmii) utilizate pentru rezolvarea problemelor si calculul

,,costului" asociat acestor metode, vazut in general ca timp de executie.

Rularea unui program ,,dureaza" un anumit timp. In functie de algoritmul utilizat, rezolvarea

unei probleme poate ,,dura" mai mult sau mai putin timp. Pentru unele probleme, a caror rezolvare

necesita mai mult timp de executie, se pot descoperi metode mai rapide. Cantitatea de resurse (timp,

memorie etc.) necesara executiei unui anumit tip de program este analizata de complexitatea

calcului.

Ne asteptam ca timpul de executie al unui program sa depinda de cantitatea de date de intrare.

Intr-un fel sunt procesate cateva sute de date de intrare si in alt fel sunt procesate cateva milioane de

date de intrare. Durata atasata complexitatii calcului este proportionala cu informatia trimisa

programului pentru a fi procesata. (Este mai usor sa sortam 10 numere decat sa sortam 1000 de

numere).

De exemplu, ganditi-va la urmatoarea situatie: ,,Tocmai am scris un program pentru obtinerea

matricei inverse a unei matrice de intrare, de marime nxn, cu timp de executie de 1,2n3 minute".

Aici observam o descriere tipica a problemei complexitatii calcului. Timpul de rulare este

proportional cu marimea matricei de intrare.

Un program mai rapid poate rula de exemplu in 0,8n3 minute pentru o matrice nx n Daca

cineva ar face o descoperire importanta am putea sa descrestem exponentul. Un timp de 7n2,8

minute ar putea reprezenta, de exemplu, o imbunatatire excelenta.

O procesare garantata pentru cel mult cn3 pentru o intrare de marime n este considerata ca

,,usoara". Una care necesita n10 este tot usoara. Daca pentru o matrice nx n sunt necesare in schimb

2n minute atunci avem o problema grea. Cateodata, pentru procesari considerate usoare, avem un

timp foarte lung, dar inca acceptabil, din punctul de vedere al cerintelor, atata timp cat se poate

exprima printr-o functie polinomiala avand ca parametru de intrarea cantitatea de date prelucrata de

algoritm.

In general, daca timpul de procesare se poate exprima printr-o functie polinomiala de n , unde

n reprezinta numarul de date introduse spre procesare in program, putem considera ca procesarea

este ,,usoara", altfel este considerata ,,grea".

Multe dintre problemele stiintei calculatoarelor sunt considerate ca fiind usoare. Pentru a

convinge pe cineva ca o problema este usoara este suficient sa-i descrii o metoda rapida de

rezolvare a problemei respective. Este mai dificil sa convingi pe cineva ca o problema este grea,

adica sa dovedesti ca este imposibil sa gasesti o cale usoara de rezolvare.

In stiinta calculatoarelor nu este suficient sa gasesti un anumit algoritm si sa te lamentezi ca

este incet. Acel algoritm poate fi incet, dar poate ca exista si o cale mai eficienta de rezolvare a

problemei (un algoritm mai rapid).

Inversarea matricelor este usoara deoarece exista o metoda (metoda eliminarii Gaussiene) care

poate inversa o matrice nx n intr-un timp de cel mult cn3

Pentru a da un exemplu de problema grea trebuie sa deviem un pic de la subiectul nostru.

Problema aleasa este cea a ,,aranjarii figurilor" - ,,tiling problem"1. Sa presupunem ca primim un

1 Martin Gardner, Articol, Scientific American, Ianuarie 1977, pp. 110-121

ANALIZA ALGORITMILOR SI COMPLEXITATEA CALCULULUI

3

numar infinit de figuri in forma de hexagon regulat. Putem sa acoperim o suprafata fara sa lasam

spatii libere si fara sa suprapunem figurile. Putem sa facem acest lucru si daca figurile sunt

dreptunghiuri identice. Daca sunt pentagoane nu mai putem acoperi suprafata. In Figura 1 este

exemplificata umplerea unei suprafete cu figuri dreptunghiulare identice, iar in Figura 2 este

exemplificata umplerea cu figuri hexagonale.

Figur

Download gratuit

Documentul este oferit gratuit,
trebuie doar să te autentifici in contul tău.

Structură de fișiere:
  • Analiza Algoritmilor si Complexitatea Calculului.pdf
Alte informații:
Tipuri fișiere:
pdf
Diacritice:
Nu
Nota:
10/10 (3 voturi)
Nr fișiere:
1 fisier
Pagini (total):
147 pagini
Imagini extrase:
147 imagini
Nr cuvinte:
62 667 cuvinte
Nr caractere:
292 471 caractere
Marime:
1.71MB (arhivat)
Publicat de:
Anonymous A.
Nivel studiu:
Facultate
Tip document:
Curs
Domeniu:
Calculatoare
Tag-uri:
figuri hexagonale, umplerea unei suprafete
Predat:
la facultate
Materie:
Calculatoare
Sus!