2 dalis - techmat.vgtu.lt
2 dalis - techmat.vgtu.lt
2 dalis - techmat.vgtu.lt
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Algoritmų sudarymo principai ir metodai<br />
Variantų perrinkimas ir rekursijos metodas<br />
Skaldyk ir valdyk metodas<br />
Šakų ir rėžių metodas<br />
Dinaminio programavimo metodas<br />
Euristikos ir godieji algorimai<br />
Rekursinio Fibonačio skaičių algoritmo sudėtingumas<br />
Bazine algoritmo operacija laikykime sudėtį ir ignoruokime<br />
papildomas sąnaudas, atsirandančias realizuojant rekursijos<br />
kreipinius (praktijoje vis dė<strong>lt</strong>o šios sąnaudos pasirodo gana<br />
didelės). Gauname tokią rekurentinę lygtį ir pradines sąlygas:<br />
⎧<br />
⎨T(n) = T(n − 1) + T(n − 2) + 1,<br />
⎩T(0) = 1, T(1) = 1.<br />
Atlikę skaičiavimus, randame funkciją T(n):<br />
√<br />
( 1 + 5<br />
T(n) = c<br />
2<br />
) n<br />
+ (2 − c)<br />
( 1 −<br />
√<br />
5<br />
2<br />
√<br />
) n ( 1 + 5 ) n<br />
− 1 ≈ c .<br />
2<br />
Taigi rekursinis Fibonačio algoritmas yra eksponentinio<br />
sudėtingumo. Padidėjus vienetu duomenų skaičiui n,<br />
algoritmo vykdymo eiga pailgėja (1 + √ 5)/2 = 1, 618 kartų.<br />
doc. dr. Vadimas Starikovičius<br />
Algoritmų analizės specialieji skyriai