Complexitatea algoritmilor

TAP INFO II, III 2010-2011

Algoritm
Def: O metod efectiv de rezolvare a unei probleme. Obs: 1. Problema determin algoritmul. 2. Ce înseamn efectiv ? 3. Dac exist mai mul i algoritmi, pe care îl utilizez?

Algoritm
Obs: 1. Problema determin algoritmul. Pentru probleme diferite, se presupune c se g sesc algoritmi diferi i. Alternativ: General Problem Solver (GPS) aplica ie creat în 1957 de H. Simon, J.C. Shaw i A. Newell

Algoritm
Obs: 2. Ce înseamn efectiv ? Indiferent de interac iunile cu mediul (date de intrare, valori generate, evenimente externe) algoritmul este o list finit , bine-definit de pa i. Exist programe f r date de intrare??? Valori generate: generatoare de numere aleatoare. Evenimente externe: dep irea timpului alocat pentru un trasfer de date.

Algoritm
Obs: 3. Dac exist mai mul i algoritmi, pe care îl utilizez? Definesc o m sur , unitatea de m sur i apoi îi compar. M suri func ionale (numerice, cantitative): câte instruc iuni elementare sunt neceare, cât memorie este necesar ? M suri nefunc ionale (nenumerice, calitative, descrise de Ingineria Program rii): (anul III!!!) Unitatea de m sur : o compara ie, o atribuire«

Propriet ile algoritmilor
Corect: rezolv problema propus . Finit: se încheie întotdeauna (în lipsa întreruperilor externe). General: rezolv mai multe instan e (seturi diferite de date de intrare). Determinist: la execu ii repetate în acelea i condi ii evolueaz identic.

Analiza algoritmilor
1. 2. 3. 4. Invarian e. Dac e finit, atunci rezolv problema. Este finit. Este cât mai eficient (optim de preferin ).

Exemplu: Sortarea prin interschimbare
for each i in 0 to n ± 2 for each j in i + 1 to n - 1 if A[i] > A[j] then swap( A[i], A[j] ) end for end for

Analiza algoritmilor
Exemplu: Sortarea prin interschimbare
Invarian Dup fiecare comparare cu ultimul element al vectorului, cel mai mic element din fragmentul prelucrat ajunge pe pozi ia corect . Dac e finit, atunci rezolv problema Se fac n -1 treceri prin vector i deci se a eaz corect primele n -1 elemente, vectorul este deci corect sortat. Este finit Sunt 2 structuri repetitive imbricate, pentru care secven a intern se execut de un num r finit de ori. Eficien Se va m sura. Optimalitate ± Nu se pune problema (înc ).

Analiza algoritmilor
Exemplu: Sortarea prin interschimbare
Eficien Se alege instruc iunea elementar : atribuirea. Se num r atribuirile:
n2 n 1

§ (1 
i !0

(1  3)) ! O( n 2 ) §
j ! i 1

Dac instruc iunea elementar este compara ia? Dar interschimbarea (swap)?

Analiza algoritmilor
Ordinul lui f: N R
Multimea func iilor asimptotic m rginite superior de un multiplu pozitiv al lui f

Ierarhie de ordine ale lui f:

Este de dorit un algoritm de ordin cât mai in stânga.

Analiza algoritmilor
Aproximarea Stirling pentru log(n!): log(n!) = n*log(n) - n + O(log(n)) Aproximarea Srinivasa Ramanujan pentru log(n!): log(n!) = n*log(n) - n + log(n*(1+4*n*(1+2*n)))/6 + log(PI)/2 dac n > 20 Deci O(log(n!)) = O(n log(n))
Ramanujan, Srinivasa (1988), The lost notebook and other unpublished papers, Springer Berlin, p. 339, ISBN 354018726X

Analiza algoritmilor
Automatizarea analizei (trasare ± profiling) 1. Expandare (augmentation) instruc iuni suplimentare 2. Execu ie (execution) rezultate scrise în fi iere speciale 3. Analiza (analysis) analiza fi ierelor rezultate

Analiza algoritmilor
Automatizarea analizei (trasare ± profiling) Exemplu pentru atribuiri
count = 0 for each i in 0 to n ± 2 count++ for each j in i + 1 to n ± 1 count++ if A[i] > A[j] then swap( A[i], A[j] ) count+=3 end for end for

F r probleme

Analiza algoritmilor
Automatizarea analizei (trasare ± profiling) Exemplu pentru timp
begin_time = clock() for each i in 0 to n ± 2 for each j in i + 1 to n ± 1 if A[i] > A[j] then swap( A[i], A[j] ) end for end for end_time = clock() needed_time = end_time - begin_time

Apar probleme

Analiza algoritmilor
Automatizarea analizei (trasare ± profiling) Exemplu pentru timp Apar probleme: Granularitatea ceasului introduce erori (unele execu ii se fac în timp zero). Rezolvare (par ial ): Se realizeaz execu ii multiple i se calculeaz media aritmetic .

Analiza algoritmilor
Automatizarea analizei (trasare ± profiling) Exemplu pentru timp
begin_time = clock() for k in 1 to nexec reset A for each i in 0 to n ± 2 for each j in i + 1 to n ± 1 if A[i] > A[j] then swap( A[i], A[j] ) end for end for end for end_time = clock() needed_time = (end_time - begin_time)/nexec

Analiza algoritmilor
Automatizarea analizei (trasare ± profiling) Exemplu pentru timp De ce par ial ? Se introduc supliment ri de timp prin resetarea lui A. Alt rezolvare (tot par ial ): se consider doar aplica ia original la captarea timpului.

Analiza algoritmilor
Automatizarea analizei (trasare ± profiling) Exemplu pentru timp
needed_time = 0 for k in 1 to nexec reset A begin_time = clock() for each i in 0 to n ± 2 for each j in i + 1 to n ± 1 if A[i] > A[j] then swap( A[i], A[j] ) end for end for end_time = clock() needed_time += (end_time - begin_time) end for needed_time /=nexec

Analiza algoritmilor
Automatizarea analizei (trasare ± profiling) Exemplu pentru timp De ce tot par ial ? Se preiau neajunsurile de la trasarea ini ial . Alte probleme, în cazul unui algoritm oarecare: Num rul de instruc iuni elementare poate depinde de datele de intrare.

Analiza algoritmilor
Automatizarea analizei (trasare ± profiling) Exemplu pentru timp Bubble-sort: instruc iunea elementar este ???
do swapped = false for each i in 1 to n - 1 if A[i - 1] > A[i] then swap( A[i - 1], A[i] ) swapped = true end for while swapped

Analiza algoritmilor
Automatizarea analizei (trasare ± profiling) Num rul de instruc iuni elementare poate depinde de datele de intrare. Se definesc cazurile: ‡ cel mai favorabil (consum minim de resurse) ‡ mediu (statistica pentru toate cazurile ± se genereaz toate posibilit ile ± uneori infezabil) ‡ cel mai nefavorabil (consum maxim de resurse)

Analiza algoritmilor
Analiz teoretic . Instruc iune elementar : compara ia. Se poate un ordin de sortare prin compara ie < O(n log(n)) în cazul cel mai nefavorabil ? NU

Analiza algoritmilor
Analiz teoretic . Instruc iune elementar : compara ia. Arborele de decizie: binar, frunza este o permutare, nodul are o compara ie.

Analiza algoritmilor
Analiz teoretic . Instruc iune elementar : compara ia. O list cu n elemente distincte se sorteaz în f(n) compara ii. Dac f(n) este minim, atunci arborele trebuie s fie echilibrat (arbore AVL*). Un arbore echilibrat pe f(n) niveluri are cel mult 2f(n) frunze. n!< 2f(n) deci f(n)>log(n!) deci f(n) are cel pu in ordinul O(n log(n))
* Adelson-Velskii, G.; E. M. Landis (1962) "An algorithm for the organization of information". Proceedings of the USSR Academy of Sciences 146: 263±266. (Russian) English translation by Myron J. Ricci in Soviet Math. Doklady, 3:1259±1263

Analiza algoritmilor
Analiz teoretic . Instruc iune elementar : compara ia. Exist sort ri cu O(n log(n)) în cazul cel mai nefavorabil? DA care???

Sign up to vote on this title
UsefulNot useful