Sunteți pe pagina 1din 6

LUCRARE DE LABORATOR NR.

1
Tema: Analiza algoritmilor (Timpul de execuie al algoritmilor).
Scopul lucrrii:
1. Analiza empiric a algoritmilor.
2. Analiza teoretic a algoritmilor.
3. Determinarea complexitii temporale i asimptotice a algoritmilor
Note de curs:

1. Timpul de execuie al al!oritmilor.
De multe ori, pentru rezolarea unei pro!leme, tre!uie ales un algoritm dintre mai muli posi!ili,
dou criterii principale de alegere "iind contradictorii#
1) algoritmul s "ie simplu de $neles, de codi"icat i de depanat%
2) algoritmul s "oloseasc e"icient resursele calculatorului, s ai! un timp de execuie redus.
Dac programul care se scrie tre!uie rulat de un numr mic de ori, prima cerin este mai
important% $n aceast situaie, timpul de punere la punct a programului e mai important dec&t timpul lui
de rulare, deci tre!uie aleas arianta cea mai simpl a programului.
Daca programul urmeaz a "i rulat de un numr mare de ori, a&nd i un numr mare de date de
prelucrat, tre!uie ales algoritmul care duce la o execuie mai rapid. '(iar $n aceast situaie, ar tre!ui
implementat mai $nainte algoritmul mai simplu i calculat reducerea de timp de execuie pe care ar
aduce)o implementarea algoritmului complex.
Timpul de rulare al unui program depinde de urmtorii "actori#
) datele de intrare%
) calitatea codului generat de compilator%
) natura i iteza de execuie a instruciunilor programului%
) complexitatea algoritmului care st la !aza programului.
Deci timpul de rulare e o "uncie de intrarea sa, de cele mai multe ori, nedepinz&nd de alorile de la
intrare, ci de numrul de date.
*n continuare om nota cu T(n) timpul de execuie al unui algoritm destinat rezolrii unei
pro!leme de dimensiune n. +entru a estima timpul de execuie tre!uie sta!ilit un model de calcul i o
unitate de msur. ,om consider un model de calcul (numit i main de calcul cu acces aleator)
caracterizat prin#
- +relucrrile se e"ectueaz $n mod secenial.
- .peraiile elementare sunt e"ectuate $n timp constant indiferent de aloarea operanzilor.
- Timpul de acces la in"ormaie nu depinde de poziia acesteia (nu sunt di"erene $ntre prelucrarea
primului element i cea a ultimului element al unui ta!lou).
A sta!ili o unitate de msur $nseamn a sta!ili care sunt operaiile elementare i a considera ca
unitate de msur timpul de execuie a acestora. *n acest "el timpul de execuie a "i exprimat prin
numrul de operaii elementare executate. .peraiile elementare sunt cele aritmetice (adunare, scdere,
$nmulire, $mprire), comparaiile i cele logice (negaie, con/uncie i dis/uncie). 'um scopul calculului
timpului de execuie este de a permite compararea algoritmilor, uneori este su"icient s se contorizeze
doar anumite tipuri de operaii elementare, numite operaii de baz (de exemplu $n cazul unui algoritm de
cutare sau de sortare se pot contoriza doar operaiile de comparare) i0sau s se considere c timpul de
execuie a acestora este unitar (dei operaiile de $nmulire i $mprire sunt mai costisitoare dec&t cele de
adunare i scdere $n analiza se poate considera c ele au acelai cost).
Timpul de execuie al $ntregului algoritm se o!ine $nsum&nd timpii de execuie a prelucrrilor
componente.
1
"mporta#ta celui mai de$a%ora&il ca'. *n aprecierea i compararea algoritmilor intereseaz $n special cel mai
de"aora!il caz deoarece "urnizeaz cel mai mare timp de execuie relati la orice date de intrare de dimensiune
"ix. +e de alt parte pentru anumii algoritmi cazul cel mai de"aora!il este relati "recent.
1n ceea ce priete analiza celui mai "aora!il caz, aceasta "urnizeaz o margine in"erioar a timpului de
execuie i poate "i util pentru a identi"ica algoritmi ine"icieni (dac un algoritm are un cost mare $n cel mai
"aora!il caz, atunci el nu poate "i considerat o soluie accepta!il).
Timp mediu de execuie. 2neori, cazurile extreme (cel mai de"aora!il i cel mai "aora!il) se $nt&lnesc rar,
ast"el ca analiza acestor cazuri nu "urnizeaz su"icient in"ormaie despre algoritm.
*n aceste situaii este util o alt msur a complexitii algoritmilor i anume timpul mediu de execuie.
Acesta reprezint o aloare medie a timpilor de execuie calculat $n raport cu distri!uia de pro!a!ilitate
corespunztoare spaiului datelor de intrare.
(. Ordi# de cre)tere
+entru a aprecia e"iciena unui algoritm nu este necesar cunoaterea expresiei detaliate a timpului de execuie.
3ai degra! intereseaz modul $n care timpul de execuie crete o dat cu creterea dimensiunii pro!lemei. .
msur util $n acest sens este ordinul de cretere. Acesta este determinat de termenul dominant din expresia
timpului de execuie. '&nd dimensiunea pro!lemei este mare aloarea termenului dominant depete semni"icati
alorile celorlali termeni ast"el c acetia din urm pot "i negli/ai.
1ntruc&t pro!lema e"icienei deine critic pentru pro!leme de dimensiuni mari se "ace analiza complexitii
pentru cazul c&nd n este mare (teoretic se consider c n > 4), $n "elul acesta lu&ndu)se $n considerare doar
comportarea termenului dominant. Acest tip de analiz se numete analiz asimptotic. *n cadrul analizei
asimptotice se consider c un algoritm este mai e"icient dec&t altul dac ordinul de cretere al timpului de execuie
al primului este mai mic dec&t al celuilalt.
5xist urmtoarele cazuri c&nd ordinul de cretere a timpului de execuie, nu e cel mai !un criteriu
de apreciere a per"ormantelor unui algoritm#
) dac un program se ruleaz de puine ori, se alege algoritmul cel mai uor de implementat%
) dac $ntreinerea tre!uie "cut de o alt persoan dec&t cea care l)a scris, un algoritm simplu,
c(iar mai puin e"icient, e de pre"erat unuia per"ormant, dar "oarte complex i greu de $neles%
) exist algoritmi "oarte e"icieni, dar care necesit un spaiu de memorie "oarte mare, ast"el $nc&t
"olosirea memoriei externe le diminueaz "oarte mult per"ormanele.
(.1. Notaii asimptotice.
6ie N mulimea numerelor naturale (pozitie su zero) i R mulimea numerelor reale. 7otam prin
N
8
i R
8
mulimea numerelor naturale, respecti reale, strict pozitie, i prin R

mulimea numerelor reale


nenegatie. 3ulimea 9true, false: de constante !ooleene o notm cu B. 6ie f # N R

o "uncie
ar!itrar. De"inim mulimea
.( f ) ; 9t # N R

< (c R
8
) (n
=
N) (n n
=
) >t(n) cf (n)?:
'u alte cuinte, .( f ) (se citete @ordinul lui f A) este mulimea tuturor "unciilor t mrginite
superior de un multiplu real poziti al lui f, pentru alori su"icient de mari ale argumentului. ,om coneni
s spunem c t este $n ordinul lui f (sau, ec(ialent, t este $n .( f ), sau t .( f )) c(iar i atunci c&nd
aloarea f (n) este negati sau nede"init pentru anumite alori n B n
=
. 1n mod similar, om or!i despre
ordinul lui f c(iar i atunci c&nd aloarea t(n) este negati sau nede"init pentru un numr "init de alori
ale lui n% $n acest caz, om alege n
=
su"icient de mare, ast"el $nc&t, pentru n n
=
, acest lucru s nu mai
apar. De exemplu, om or!i despre ordinul lui n0log n, c(iar dac pentru n ; = i n ; 1 "uncia nu este
de"init. 1n loc de t .( f ), uneori este mai conena!il s "olosim notaia t(n) .( f (n)), su!$neleg&nd
aici c t(n) i f (n) sunt "uncii.
7otaia asimptotic de"inete o relaie de ordine parial $ntre "uncii i deci, $ntre e"iciena relati a
di"eriilor algoritmi care rezol o anumit pro!lem. ,om da $n continuare o interpretare alge!ric a
notaiei asimptotice. +entru oricare dou "uncii f , g # N R

, de"inim urmtoarea relaie !inar# f g


dac .( f ) .(g). Celaia @A este o relaie de ordine pariala $n mulimea "unciilor de"inite pe N i cu
alori $n R

. De"inim i o relaie de echivalenta# f g dac .( f ) ; .(g).


1n mulimea .( f ) putem $nlocui pe f cu orice alt "uncie ec(ialent cu f. De exemplu, lg n
2
ln n log n i aem .(lg n) = .(ln n) ; .(log n). 7ot&nd cu .(1) ordinul "unciilor mrginite superior
de o constant, o!inem ierar(ia#
.(1) .(log n) .(n) .(n log n) .(n
2
) .(n
3
) .(2
n
)
Aceast ierar(ie corespunde unei clasi"icri a algoritmilor dup un criteriu al per"ormanei. +entru o
pro!lem dat, dorim mereu s o!inem un algoritm corespunztor unui ordin c&t mai @la st&ngaA. Ast"el,
este o mare realizare dac $n locul unui algoritm exponenial gsim un algoritm polinomial.
7otaia .( f ) este "olosit pentru a limita superior timpul necesar unui algoritm, msur&nd e"iciena
algoritmului respecti. 2neori este util s estimm i o limit in"erioar a acestui timp. 1n acest scop,
de"inim mulimea
( f ) ; 9t # N R

< (c R
8
) (n
=
N) (n n
=
) >t(n) cf (n)?:
5xist o anumit dualitate $ntre notaiile .( f ) i ( f ). Di anume, pentru dou "uncii oarecare
f, g # N R

, aem# f .(g), dac i numai dac g ( f ).


. situaie "ericit este atunci c&nd timpul de execuie al unui algoritm este limitat, at&t in"erior c&t i
superior, de c&te un multiplu real poziti al aceleiai "uncii. *ntroducem notaia
( f ) ; .( f ) ( f )
numit ordinul exact al lui f. +entru a compara ordinele a dou "uncii, notaia nu este ins mai
puternic dec&t notaia ., $n sensul c relaia .( f ) ; .( g ) este ec(ialent cu ( f ) ; (g).
Ee poate $nt&mpla c timpul de execuie al unui algoritm s depind simultan de mai muli
parametri. Aceast situaie este tipic pentru anumii algoritmi care opereaz cu gra"uri i $n care timpul
depinde at&t de numrul de &r"uri, c&t i de numrul de muc(ii. 7otaia asimptotic se generalizeaz $n
mod natural i pentru "uncii cu mai multe aria!ile. Ast"el, pentru o "uncie ar!itrar f # N N R

de"inim
.( f ) ; 9t # N N R

< (c R
8
) (m
=
, n
=
N) (m m
=
) (n n
=
) [t(m, n) cf (m, n)?:
Eimilar, se o!in i celelalte generalizri.
(.(. Operaii asupra $u#ciilor asimptotice
1. Dac T1(n) i T2(n) s&nt timpii de execuie a dou secene de program 1 i 2, T1(n) "iind
!(f(n)), iar T2(n) "iind !(g(n)), atunci timpul de execuie T1(n)8T2(n), al secenei 1 urmat de
2, a "i !(max(f(n),g(n))).
2. Dac T1(n) este !(f(n)) i T2(n) este !(g(n)), atunci T1(n)FT2(n) este !(f(n)Fg(n)).
*. Etapele a#ali'ei complexitii
1n analiza complexitii unui algoritm se parcurg urmtoarele etape#
1. Ee sta!ilete dimensiunea pro!lemei.
2. Ee identi"ic operaia de !az.
3. Ee eri"ic dac numrul de execuii ale operaiei de !az depinde doar de dimensiunea pro!lemei.
Dac da, se determin acest numr. Dac nu, se analizeaz cazul cel mai "aora!il, cazul cel mai
de"aora!il i (dac este posi!il) cazul mediu.
G. Ee sta!ilete clasa de complexitate cruia $i aparine algoritmul.
'&tea reguli generale pentru ealuarea timpului de execuie $n "uncie de mrimea n a datelor de
intrare, s&nt#
1. Timpul de execuie a unei instruciuni de asignare, citire sau scriere, este constant i se noteaz cu
!(1).
2. Timpul de rulare a unei secene de instruciuni e determinat de regula de $nsumare, "iind
proporional cu cel mai lung timp din cei ai instruciunilor secenei.
3. Timpul de execuie a unei instruciuni if " then " else este suma dintre timpul de ealuare a
condiiei (!(1)) i cel mai mare dintre timpii de execuie ai instruciunilor pentru condiia
aderat sau "als.
G. Timpul de execuie a unei instruciuni de ciclare este suma, pentru toate iteraiile, dintre timpul de
execuie a corpului instruciunii i cel de ealuare a condiiei de terminare (!(1)).
H. +entru ealuarea timpului de execuie a unei proceduri recursie, se asociaz "iecrei proceduri
recursie un timp necunoscut T(n), unde n msoar argumentele procedurii% se poate o!ine o
3
relaie recurent pentru T(n), adic o ecuaie pentru T(n), $n termeni T(#), pentru di"erite alori ale
lui #.
I. Timpul de execuie poate "i analizat c(iar pentru programele scrise $n pseudocod% pentru
secenele care cuprind operaii asupra unor structuri de date, se pot alege c&tea implementri i
ast"el se poate "ace comparaie $ntre per"ormanele implementrilor, $n contextul aplicaiei
respectie.
+. A#ali'a empiric a complexitii al!oritmilor
. alternati la analiza matematic a complexitii o reprezint analiza empiric.
Aceasta poate "i util pentru# (i) a o!ine in"ormaii preliminare priind clasa de complexitate a unui
algoritm% (ii) pentru a compara e"iciena a doi (sau mai muli) algoritmi destinai rezolrii aceleiai
pro!leme% (iii) pentru a compara e"iciena mai multor implementri ale aceluiai algoritm% (i) pentru a
o!ine in"ormaii priind e"iciena implementrii unui algoritm pe un anumit calculator.
$tapele analizei empirice. *n analiza empiric a unui algoritm se parcurg de regul urmtoarele etape#
1. Ee sta!ilete scopul analizei.
2. Ee alege metrica de e"icien ce a "i utilizat (numr de execuii ale unei0unor operaii sau timp
de execuie a $ntregului algoritm sau a unei poriuni din algoritm.
3. Ee sta!ilesc proprietile datelor de intrare $n raport cu care se "ace analiza (dimensiunea datelor
sau proprieti speci"ice).
G. Ee implementeaz algoritmul $ntr)un lim!a/ de programare.
H. Ee genereaz mai multe seturi de date de intrare.
I. Ee execut programul pentru "iecare set de date de intrare.
J. Ee analizeaz datele o!inute.
Alegerea msurii de e"icien depinde de scopul analizei. Dac, de exemplu, se urmrete o!inerea
unor in"ormaii priind clasa de complexitate sau c(iar eri"icarea acurateei unei estimri teoretice atunci
este adecat utilizarea numrului de operaii e"ectuate. Dac $ns scopul este ealuarea comportrii
implementrii unui algoritm atunci este potriit timpul de execuie.
+entru a e"ectua o analiz empiric nu este su"icient un singur set de date de intrare ci mai multe, care
s pun $n eiden di"eritele caracteristici ale algoritmului. 1n general este !ine s se aleag date de
di"erite dimensiuni ast"el $nc&t s "ie acoperit pla/a tuturor dimensiunilor care or apare in practic. +e
de alt parte are importan i analiza di"eritelor alori sau con"iguraii ale datelor de intrare. Dac se
analizeaz un algoritm care eri"ic dac un numr este prim sau nu i testarea se "ace doar pentru numere
ce nu sunt prime sau doar pentru numere care sunt prime atunci nu se a o!ine un rezultat releant.
Acelai lucru se poate $nt&mpla pentru un algoritm a crui comportare depinde de gradul de sortare a unui
ta!lou (dac se aleg "ie doar ta!loul aproape sortate dup criteriul dorit "ie ta!louri ordonate $n sens iners
analiza nu a "i releant).
1n ederea analizei empirice la implementarea algoritmului $ntr)un lim!a/ de programare or tre!ui
introduse secene al cror scop este monitorizarea execuiei. Dac metrica de e"icien este numrul de
execuii ale unei operaii atunci se utilizeaz un contor care se incrementeaz dup "iecare execuie a
operaiei respectie. Dac metrica este timpul de execuie atunci tre!uie $nregistrat momentul intrrii $n
secena analizat i momentul ieirii. 3a/oritatea lim!a/elor de programare o"er "uncii de msurare a
timpului scurs $ntre dou momente. 5ste important, $n special $n cazul $n care pe calculator sunt actie
mai multe tasKuri, s se contorizeze doar timpul a"ectat execuiei programului analizat. 1n special dac
este or!a de msurarea timpului este indicat s se ruleze programul de test de mai multe ori i s se
calculeze aloarea medie a timpilor.
Dup execuia programului pentru datele de test se $nregistreaz rezultatele iar $n scopul analizei "ie se
calculeaz mrimi sintetice (media, a!aterea standard etc.) "ie se reprezint gra"ic perec(i de puncte de
"orma (dimensiune pro!lema, msur de e"icien).
,. Exemple
1. 3ai /os se prezint modul de ealuare a timpului de execuie a procedurii de sortare a
elementelor unui ta!lou de dimensiune n prin metoda L!u!!leL#
tMpe intNarraM ; arraM>1..n? o" integer%
procedure !u!!le (ar a# intNarraM)% 9sortare cresctoare:
G
ar i, %, temp# integer%
&e!i#
(1) $or i#;1 to n ) 1 do
(2) $or %#;n do-#to i 8 1 do
(3) i$ a>% ) 1? O a>%? t.e# &e!i#
(G) temp#;a>% ) 1?%
(H) a>% ) 1?#;a>%?%
(I) a>%?#;temp
e#d
e#d% 9!u!!le:
Timpii de rulare pentru instruciunile de asignare (G),(H) si (I) s&nt !(1), deci pentru secena (G))
(I), timpul este !(max(1,1,1)) ; !(1).
+entru instruciunea i$ / t.e# (3), timpul este suma dintre cel pentru ealuarea condiiei, !(1) i cel
al secenei ce se execut la condiie aderat, tot !(1), calculat mai sus, deci !(1), acesta "iind deci i
timpul pentru o iteraie a instruciunii $or (2).
+entru cele n " i iteraii ale lui $or (2), timpul de execuie este !((n"i)F1) ; !(n " i).
+entru instruciunea $or (1), a&nd n)1 iteraii, timpul de execuie este#
&(i ;1, n ) 1) (n ) i) ; (n ) 1) 8 (n ) 2) 8...8 (n P n 8 1) ;
2 2
2
n n
,
deci este !(n
2
).
2. 3odalitatea de ealuare a timpului de execuie al unei proceduri recursie, este ilustrat prin cea
a "unciei de calcul al "actorialului#
0u#ctio# factorial(n# integer)# integer%
&e!i#
(1) i$ n 1 t.e#
(2) $actorial#; 1
else
(3) $actorial#; nFfactorial(n ) 1)
e#d% 9"actorial:
Dimensiunea intrrii este aici n, aloarea numrului al crui "actorial se calculeaz i se noteaz cu
T(n), timpul de rulare al "unciei factorial(n).
Timpul de rulare pentru liniile (1) si (2) este !(1), iar pentru linia (3) este !(1) 8 T(n ) 1), deci cu
constantele c si d neprecizate#
T(n) ; c 8 T(n ) 1), pentru n O 1 sau T(n) ; d , pentru n 1.
+entru n O 2, expand&nd pe T(n ) 1), se o!ine T(n) ; 2c 8 T(n ) 2), pentru n O 2.
+entru n O 3, expand&nd pe T(n ) 2), se o!ine T(n) ; 3c 8 T(n ) 3), pentru
n O 3.
Deci, $n general T(n) ; ic 8 T(n ) i), pentru n O i.
1n "inal, c&nd i ; n ) 1, se o!ine T(n) ; (n ) 1)c 8 T(1) ; (n ) 1)c 8 d.
Deci T(n) este !(n).
Sarci#a pe#tru lucrarea #r.1: Numerele lui 0i&o#acci
Dirul lui 6i!onacci este de"init prin urmtoarea recurena#
Acest cele!ru ir a "ost descoperit $n 12=2 de ctre Qeonardo +isano (Qeonardo din +isa), cunoscut su!
numele de Qeonardo 6i!onacci. 'el de)al n"lea termen al irului se poate o!tine direct din de"iniie#
H
$u#ctio# fib1(n)
i$ n B 2 t.e# retur# n
else retur# fib1(n)1) 8 fib1(n)2)
Aceast metod este "oarte ine"icienta, deoarece recalculeaz de mai multe ori aceleai alori. *at acum o
alt metod, mai per"ormant, care rezol aceeai pro!lem.
$u#ctio# fib2(n)
i 1% % =
$or # 1 to n do % i 8 %
i % ) i
retur# %
3ai exist un algoritm #
$u#ctio# fib3(n)
i 1% % =% # =% h 1
-.ile n O = do
i$ n este impar t.e# t %h
% ih8%#8t
i i#8t
t h
2
h 2#h8t
# #
2
8t
n n di% 2
retur# %
SARC"NA DE BA12:
1. 5"ectuai analiza empiric a algoritmilor propui.
2. Determinai relaia ce determin complexitatea temporal pentru aceti algoritmi.
3. Determinai complexitatea asimptotic a algoritmilor.
G. 6acei o concluzie asupra lucrrii e"ectuate.
3#tre&ri de co#trol:
1. 5numerai "actorii ce in"lueneaz timpul de execuie al algoritmului.
2. '&nd timpul de execuie al algoritmului este dat de o relaie de recuren R
3. 'are sunt regulile generale pentru ealuarea timpului de execuieR
G. 'are sunt etapele analizei empirice i $n care cazuri se "ace analiza empiric a
algoritmilorR
H. 'e proprieti posed "unciile asimptoticeR
I

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