Complexitatea Calculului

Referat
8/10 (1 vot)
Domeniu: Calculatoare
Conține 1 fișier: doc
Pagini : 14 în total
Cuvinte : 8133
Mărime: 102.02KB (arhivat)
Puncte necesare: 7
Profesor îndrumător / Prezentat Profesorului: Dan Burdescu
descrierea complexitatii de calcul, complexitate temporale, complexitate asimptotica, complexitatea unor algoritmi de sortare

Extras din referat

Teoria complexităţii constituie un domeniu foarte important al teoriei algoritmilor care investighează rezolvabilitatea individuală a problemelor sub anumite restricţii de resurse.

Teoria complexitatii calculului cuprinde:

1) Un studiu analitic al complexităţii unor clase de probleme în raport cu diverse tipuri concrete de maşini matematice care le rezolvă;

2) Un studiu calitativ al complexităţii algoritmilor care rezolvă astfel de probleme.

Mai precis, complexitatea calculului se bazează pe legăturile existente între problemele rezolvabile algoritmic şi resursele de calcul.

Inainte de a trece la analiza unui algoritm, trebuie să se cunoască o tehnologie de implementare a acestuia care va include un model pentru resursele sale şi costurile corespunzătoare. Aşadar, resursele de calcul sunt introduse prin definirea unui model de calcul care, de regulă, reprezintă o maşină. In acest sens pot fi utilizate: ma]ini Turing de diverse tipuri, ma]ini cu acces aleator (random-acces machine, RAM), circuite booleene etc. Resursele tipice sunt: timp, spatiu, benzi, capete de citire/scriere, nivele intr-un circuit etc.

Pentru tratarea celor două elemente fundamentale, problema si masina, considerăm trei nivele abstracte în complexitatea calculului.

a) Un nivel înalt care pune în evidenţă complexitatea abstractă a calculului, cunoscută sub numele de „teoria Blum de complexitate a calculului", care este independentă atât de problemă cât şi de maşină. O astfel de teorie este construită pe o enumerare efectivă a tuturor funcţiilor parţial recursive, o enumerare a aşa numitelor funcţii „ cost-măsură " şi două axiome de bază (axiomele lui Blum).

b) Un nivel mediu care pune în evidenţă complexitatea structurală, independentă de problemă dar dependentă de maşină. Scopul unei astfel de complexităţi este de a studia capabilitatea unor modele de calcul concrete pentru resurse sau combinaţii de resurse, independent de problema propusă.

c) Un nivel inferior ce indică o complexitate concretă care depinde atât de maşină cât şi de problemă. Scopul său este de a detecta o bună evaluare, cu un cost pe cât posibil minim, folosind o resursă (sau combinaţii de resurse) într-un model precizat pentru rezolvarea problemei.

In general, dificultatea unei probleme P se poate măsura prin resursele de calcul limitate asociate algoritmului secvenţial care o rezolvă. Aceste resurse sunt timpul si spatiul de memorie necesare pentru execuţia algoritmului respectiv. O astfel de măsură se poate evalua în diverse moduri. In termenii maşinii Turing, ca model de calcul, complexitatea temporală este stabilită de numărul de deplasări necesare realizării calculului respectiv, iar pentru un computer digital, de numărul de ciclări ale maşinii sau timpul real solicitat de maşină pentru acel calcul. In ceea ce priveşte complexitatea spaţială, pentru maşina Turing, ea constă în numărul de celule (pătrate) ale benzii folosite în calcul, iar pentru computer, în numărul de bytes utilizaţi.

Prin urmare, ideea de complexitate a unui algoritm poate fi privită sub două aspecte:

a) static, prin structura sa.

b) dinamic, prin durata execuţiei sale.

Complexitatea spatiala se exprimă prin dimensiunea spaţiului de memorie necesar algoritmului, independent de comportarea pe care o are el pe parcursul execuţiei.

Complexitatea temporala se exprimă prin timpul necesar execuţiei sale. Axiomele lui Blum, de exemplu, pun în evidenţă măsuri de complexitate dinamică cu consecinţe ca: teorema corelării măsurilor, teorema accelerării, teorema lacunei etc.

Există numeroase probleme de optimizare în reţele de transport, informatică, electronică, logistica construcţiilor, teoria comunicaţiilor (în codurile corectoare de erori), criptografie etc. Pentru algoritmii de rezolvare a acestor probleme este obligatoriu un studiu al complexităţii lor. Complexitatea algoritmilor relativ la coduri, reprezentarea compactă a mesajelor în vederea transmiterii lor prin diverse canale, permite o analiză asupra eficacităţii metodelor de codificare/decodificare. Relativ la criptografie, studiul complexităţii implică elaborarea unor tehnici care să permită cifrarea mesajelor sub o formă care să le asigure, pe cât posibil, inviolabilitatea.

Analiza unui algoritm conduce la stabilirea eficienţei sale şi implică, în principal, ideea de complexitate pentru că ea prevede resursele solicitate de algoritmul respectiv. Stabilirea complexităţii unui algoritm este necesară, pe de o parte, datorită faptului că mulţi algoritmi sunt eliminaţi de practică deoarece necesită un timp de execuţie şi un spaţiu de memorie foarte mari, iar pe de altă parte, se caută algoritmi cât mai performanţi în vederea rezolvării cu calculatorul a unor probleme destul de complexe impuse de practică. Un calculator, oricât de performant ar fi, este în esenţă un automat finit, deci el are posibilităţi limitate. Performanţa unui algoritm se stabileşte conform unui criteriu care, de cele mai multe ori, îl constituie timpul de execuţie al algoritmului respectiv.

Având în vedere faptul că pentru seturi de date de intrare diferite acelaşi algoritm foloseşte timpi de execuţie diferiţi este necesar a lua în consideraţie:

• timpul in cazul cel mai favorabil (durata minimă pentru execuţia algoritmului);

• timpul mediu (raportul dintre suma timpilor necesari pentru toate seturile de date posibile şi numărul acestor seturi);

• timpul in cazul cel mai defavorabil (durata maximă pentru execuţia algoritmului).

Acesta din urmă oferă o margine superioară a timpului de execuţie pentru toate intrările de o dimensiune fixă şi reprezintă situaţia cea mai indicată pentru căutarea de informaţii într-o bază de date.

Să considerăm implementarea unui algoritm oarecare care să primească intrări de dimensiuni diferite. La o intrare de dimensiune n vom asocia o măsură f(n) de folosire a resurselor sale care, de regulă, trebuie să se minimizeze. In mod normal, f(n) va reprezenta timpul solicitat de algoritm pentru intrarea de dimensiune n în cazul cel mai defavorabil sau mediu (la alegerea noastră). Există o serie de factori care complică mai mult sau mai puţin calculul exact al lui f(n). De exemplu:

a) Timpul solicitat pentru execuţia unei instrucţiuni individuale dintr-un program, cu aceeaşi instanţă şi pe aceeaşi maşină, poate varia.

b) Poate exista o mare variaţie de folosire a resurselor pentru intrări de o anume dimensiune constantă n.

c) Cazul cel mai defavorabil poate fi mai rar întâlnit în practică, iar cazul mediu să fie nereprezentativ.

d) Unii algoritmi se pot executa mai bine pe anumite clase de intrări.

In acest sens se impun câteva sugestii, cum ar fi:

- Identificarea operaţiilor abstracte folosite de algoritm. Pentru a obţine o maximizare a independenţei de maşină este necesară o analiză a acestor operaţii abstracte, pentru că resursele solicitate de o mare parte din ele vor fi neimportante. Unele din ele sunt utilizate o singură dată la iniţializare.

- Un algoritm, în general, posedă cel puţin un ciclu. Acesta trebuie identificat pentru că instrucţiunile din interiorul său se execută mult mai des şi ele vor juca un rol important în analiza timpului de execuţie a algoritmului. Prin contorizarea acestor instrucţiuni se determină o margine superioară corespunzătoare pentru valoarea timpului de execuţie în cazul cel mai defavorabil şi, dacă este posibil, o configurare a cazului mediu. Această limită superioară este necesară pentru că, în mod practic, nu poate fi găsită o valoare exactă a timpului de execuţie în cazul cel mai defavorabil.

- Timpul necesar unui algoritm pentru rezolvarea unei probleme cu o instanţă dată, reprezintă numărul operaţiilor elementare (primitive) efectuate de algoritm pentru acea instanţă. Se acceptă o astfel de interpretare deoarece se presupune că execuţia unei astfel de operaţii se produce într-un timp constant şi nu depinde de mărimea operanzilor şi nici de timpul de memorare a rezultatului. De aceea resursa timp asociată se analizează independent de sistemul de calcul pe care se implementează algoritmul respectiv.

- Deşi progresele tehnologice actuale fac ca necesarul de memorie să treacă pe un plan secund, există totuşi situaţii în care spaţiul de memorie utilizat este folosit ca argument în stabilirea unor limite inferioare pentru timpul de execuţie.

- Viteza de calcul ce caracterizează actuala generaţie de calculatoare are drept consecinţă faptul că problema timpului de execuţie se pune, în general, pentru valori foarte mari ale dimensiunii intrării. Aceasta conduce la ideea unei analize a termenului dominant (cel care tinde cel mai repede la infinit) din formula de exprimare a numărului de operaţii elementare executate de către algoritm.

Preview document

Complexitatea Calculului - Pagina 1
Complexitatea Calculului - Pagina 2
Complexitatea Calculului - Pagina 3
Complexitatea Calculului - Pagina 4
Complexitatea Calculului - Pagina 5
Complexitatea Calculului - Pagina 6
Complexitatea Calculului - Pagina 7
Complexitatea Calculului - Pagina 8
Complexitatea Calculului - Pagina 9
Complexitatea Calculului - Pagina 10
Complexitatea Calculului - Pagina 11
Complexitatea Calculului - Pagina 12
Complexitatea Calculului - Pagina 13
Complexitatea Calculului - Pagina 14
Complexitatea Calculului - Pagina 15

Conținut arhivă zip

  • Complexitatea Calculului.doc

Alții au mai descărcat și

Arhitectura calculatoarelor - Intel vs AMD

Rezultatele din testul 3DS Max 7 SPECapc Test Testul alaturat consta in crearea modelelor 3D, modificarea si randarea scripturilor. Conform...

Autentificarea prin semnătură digitală

Introducere O semnatura digitala reprezinta o informatie care il identifica pe expeditorul unui document. Semnatura digitala este creata prin...

Placa de Bază

Caracteristici generale ale placii de baza Placa de baza este un dizpozitiv ‘de baza’ un ‘pamânt’ pe care ‘se planteaza’ celelalte componente ....

Sistem de Prognosticare a Unei Avarii

Acest sistem calculeaza gradul de avariere a unei cladiri în cazul unui cutremur, precum si posibila necesitate a reconstructiei cladirii (partiala...

Te-ar putea interesa și

Organizarea Contabilității de Gestiune și a Calculației Costurilor în Condițiile Aplicării Metodei pe Comenzi

CAPITOLUL I Locul şi rolul informaţiilor privind costul de producţie în activitatea de conducere a S.C. Ind Complex CF-S.A. Acţiunea de...

Analiza comparativă între calitatea laptopurilor Apple și cea a laptopurilor care folosesc sistemul de operare Windows

INTRODUCERE Din dorința de-a prezenta într-o formă cât mai elocventă și veridică un produs absolut nelipsit din locuința oricărui individ pornește...

Analiza comparativă a calității televizoarelor HD LED smart fata de televizoarele HD LED conventionale

INTRODUCERE Din dorința de-a prezenta într-o formă cât mai elocventă și veridică un produs absolut nelipsit din locuința oricărui individ pornește...

Analiza comparativă a cuptoarelor cu microunde

Cap.1 INTRODUCERE Cuptoarele cu microunde reprezintă un progres cu totul deosebit în acest domeniu, pătrunzând în ultimul timp, tot mai mult în...

Relația dintre raporul calitate preț și volumul vanzărilor vopselelor lavabile de interior pe piața din România

INTRODUCERE Din dorința de-a prezenta într-o formă cât mai elocventă și veridică un produs destul de cunoscut, in locuința oricărui individ...

Analiza Comparativă a Laptopurilor

o Introducere: Definiţie: Analiza comparativă a calităţii marfurilor constă în aplicarea unor metodologii adecvate ce presupune compararea a două...

Implementarea Tipului Abstract de Date Număr Complex

Introducere Limbajul C# fost dezvoltat de o echipă restrânsă de ingineri de la Microsoft, echipă din care s-a evidenţiat Anders Hejlsberg (autorul...

Analiza comparativă a mașinilor de spălat automate cu încărcare frontală

1. APARATE SI MASINI ELECTROCASNICE. CLASIFICARE GENERALA. Marfurile electrocasnice satisfac trebuintele legate de activitatile specifice din...

Ai nevoie de altceva?