of 35/35
Complexitatea algoritmilor Tehnici Avansate de Programare INFO II, III 2010-2011

Complexitatea algoritmilor 2

  • View
    586

  • Download
    3

Embed Size (px)

Text of Complexitatea algoritmilor 2

Complexitatea algoritmilorTehnici Avansate de ProgramareINFO II, III2010-2011AlgoritmDef:O metod efectiv de rezolvare a unei probleme.Obs:1. Problema determin algoritmul.2. Ce nseamn efectiv?3. Dac exist mai muli algoritmi, pe care l aleg?AlgoritmObs:1. Problema determin algoritmul.Pentru probleme diferite, se presupune c se gsesc algoritmi diferii.Alternativ: General Problem Solver (GPS) aplicaie creat n 1957 de H. Simon, J.C. Shaw i A. NewellNewell, A.; Shaw, J.C.; Simon, H.A. (1959). Report on a general problem-solving program. Proceedings of the International Conference on Information Processing. pp. 256-264.AlgoritmObs:2. Ce nseamn efectiv?Indiferent de interaciunile cu mediul (date de intrare, valori generate, evenimente externe) algoritmul este o list finit, bine-definit de pai.Exist programe fr date de intrare?Da, rezolv o singur instan.Valori generate: generatoare de numere aleatoare.Exemplu de eveniment extern: depirea timpului alocat pentru un transfer de date n reea.AlgoritmObs:3. Dac exist mai muli algoritmi, pe care l utilizez?Definesc o msur i i compar. Msuri funcionale (numerice, cantitative): ct timp este necesar, ct memorie este necesar?Unitatea de msur: o comparaie, o atribuire, un octetMsuri nefuncionale (nenumerice, calitative, descrise de Ingineria Programrii): (anul III!!!)Proprietile algoritmilorCorect:rezolv problema propus.Finit:se ncheie ntotdeauna (n lipsa ntreruperilor externe).General:rezolv mai multe instane (seturi diferite de date de intrare).Determinist:la execuii repetate n aceleai condiiievolueaz identic.Analiza algoritmilor1. Gsesc invariane (momente n evoluie cnd este ntotdeauna ndeplinit o proprietate).2. Art c: dac e finit, atunci rezolv problema.3. Art c: este finit.4. Art c: este ct mai eficient (optim de preferin).Exemplu: Sortarea prin interschimbarefor each i in 0 to n 2for each j in i + 1 to n - 1if A[i] > A[j] then swap(A[i], A[j])end forend forAnaliza algoritmilorExemplu de analiz: Sortarea prin interschimbare1. InvarianDup fiecare comparare cu ultimul element al vectorului, cel mai mic element din fragmentul prelucrat ajunge pe poziia corect.2. Dac e finit, atunci rezolv problemaLa sfrit, dup cele n -1 treceri prin vector se aeaz corect primele n -1 elemente; vectorul este deci sortat; problema este rezolvat.3. Este finitSunt 2 structuri repetitive for (cu numr a-priori cunoscut de pai) imbricate, deci secvena intern se execut de un numr finit de ori.Analiza algoritmilorExemplu de analiz : Sortarea prin interschimbare(cont.)4. EficienSe alege operaia elementar: atribuirea. Se numr atribuirile, n funcie de lungimea vectorului de sortat:Dac operaia elementar este comparaia? Dar interschimbarea (swap)?Optimalitate Nu se pune problema (nc).

!

!! !201127 2 )) 3 1 ( 1 ( ) (nini jn n n tAnaliza algoritmilorDef:Ordinul lui f: N R este:Mulimea funciilor asimptotic mrginite superiorde un multiplu pozitiv al lui f (upper bounds).De ce? Pentru c exist algoritmi pentru care datele de intrare influeneaz numrul de operaii elementare (ex.: numrul de interschimbri pentru Sortarea prin interschimbare).Alt exprimare: este de tip O-mare (big O).))} ( ) ( )( )( )( ( | : { ) (0 0n cf n t n n N n R c R N t f O > Vnn =+ +Analiza algoritmilorOrdinul lui f: N RPentru c t(n) depinde de instan, cutm o funcie f majorant, dar cu expresie invariant.Imagine de la http://www.csanimated.com/animation.php?t=Big_O_notationAnaliza algoritmilor)} 2 ) ( )( )( )( ( | : { ) 2 ()} ) ( )( )( )( ( | : { ) ())} log( ) ( )( )( )( ( | : { )) log( ()} ) ( )( )( )( ( | : { ) ()} ) ( )( )( )( ( | : { ) 1 (0 020 020 00 00 0n nc n t n n N n R c R N t Ocn n t n n N n R c R N t n On cn n t n n N n R c R N t n n Ocn n t n n N n R c R N t n Oc n t n n N n R c R N t O > Vnn = > Vnn = > Vnn = > Vnn = > Vnn =+ ++ ++ ++ ++ +Ordinul lui f: N RExemple:Ierarhie de ordine:Este de dorit un algoritm de ordin ct mai n stnga.) 2 ( ) ( )) log( ( ) ( ) 1 (2 nn n n n Analiza algoritmilorOrdinul lui f: N RConvenie, Exemple i Proprieti:n loc de Exprimarea t(n) este cel mult O() este incorect pentru c O() descrie per se (n sine) o margine superioar.http://www.csanimated.com/animation.php?t=Big_O_notation pentru o prezentare animat) ( 1 4 5) ( ) ( ) ( 1 4 5) ( ) ( ) ( 1 4 5) ( ) ( ) ( 1 4 522 2 23 3 22 3 7 2n n nn n g n n nn g n n t n n nn n n t n n n{! ! ! ! ! !)) ( ( ) ( n f O n t = )) ( ( ) ( n f O n t Analiza algoritmilorDef:Dat f: N R, mulimea funciilor asimptotic mrginite inferior de un multiplu pozitiv al lui f (lower bounds):Comportarea asimptotic este dat de (tight bounds):Alte exprimri: este de tip omega-mare (big ); teta-mare (big ). Aceste trei notaii fac parte din categoria notaiilor Bachmann-Landau.) ( ) ( ) ( f f f ; ! 5))} ( ) ( )( )( )( ( : { ) (0 0n t n cf n n n c t f e up ! ; Analiza algoritmilor(f)Pentru c t(n) depinde de instan, cutm o funcie f care multiplicatcu douconstantenconjoar pe t i care are expresie invariant.Analiza algoritmilorExemple i Proprieti:) ( 3 ) log() ( 6 2) ( 17 3) ( 32122 322 2n n nn nn nn n n5 { +5 { 5 { +5 = ) ( ) () ( )) log( () ()) (log(2f g g O fn n nn nn n; = =; ;; =; =ExempluCare este complexitatea algoritmului urmtor? Exprimai prin cele 3 notaii.val = 0 for i = 1 to n for j = 1 to n^2 for k = 1 to n^3 val = val + 1endforendforendforAnaliza algoritmilorExempluCare este complexitatea algoritmului urmtor? Exprimai prin cele 3 notaii.sum = 0; for (j = 1; j < n; j* = 2) { sum++; }Analiza algoritmilorAnaliza algoritmilorExemple i Proprieti:Dac operaia elementar se execut de un numr constant de ori, atunci complexitatea este O(1) (constant): for ( i = 0; i < 5; i++ ) statement; for ( i = 0; i < k; i++ ) statement; statement;Dac operaia elementar se execut de n ori ntr-un for, atunci complexitatea este O(n) (liniar): for ( i = 0; i < n; i++ ) statement; for ( i = 0; i < n; i++ ) if ( test_cond) statement; for ( i = 0; i < n; i = i + 2 ) statement; Analiza algoritmilorExemple i Proprieti:Dac operaia elementar se execut n dou for imbricate, atunci complexitatea este O(n2) (ptratic):for ( i = 0; i < n; i++ )for ( j = 0; j < n; j++ ) statement; Dac operaia elementar se execut prin njumtirea lui n, atunci complexitatea este O(log(n)) (logaritmic):low = 0;high = n 1;while ( low list[mid] ) low = mid + 1; else break; }(Pentru c se realizeaz de k ori, unde n=2k)Analiza algoritmilorAproximareaStirling pentru log(n!):log(n!) = n*log(n) - n + O(log(n))FormulaRamanujan pentru log(n!) exact!log(n!) = n*log(n) - n + log(n*(1+4*n*(1+2*n)))/6 + log(PI)/2dac n > 20Deci O(log(n!)) = O(n log(n))Ramanujan, Srinivasa (1988), The lost notebook and other unpublished papers, Springer Berlin, p. 339, ISBN 354018726XAnaliza algoritmilorAutomatizarea analizei (trasare profiling)1. Expandare (augmentation)instruciuni suplimentare2. Execuie (execution)rezultate scrise n fiiere speciale3. Analiza (analysis)analiza fiierelor rezultateAnaliza algoritmilorAutomatizarea analizei (trasare profiling)Exemplu pentru atribuiricount = 0for each i in 0 to n 2count++for each j in i + 1 to n 1count++if A[i] > A[j] then swap( A[i], A[j] )count+=3end forend forFr problemeAnaliza algoritmilorAutomatizarea analizei (trasare profiling)Exemplu pentru timpbegin_time = clock()for each i in 0 to n 2for each j in i + 1 to n 1if A[i] > A[j] then swap( A[i], A[j] )end forend forend_time = clock()needed_time = end_time - begin_timeApar problemeAnaliza algoritmilorAutomatizarea analizei (trasare profiling)Exemplu pentru timpApar probleme: Granularitatea ceasului introduce erori (unele execuii se fac n timp zero).Testai codul i comparai cu frecvena procesorului:void test() {for ( int i = 0; i log(n!) deci f(n) are cel puin 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: 263266. (Russian) English translation by Myron J. Ricci in Soviet Math. Doklady, 3:12591263Analiza algoritmilorAnaliz teoretic.Instruciune elementar: comparaia.Exist sortri cu O(n log(n)) n cazul cel mai nefavorabil?DAcare???