24.03.2015 Views

2 dalis - techmat.vgtu.lt

2 dalis - techmat.vgtu.lt

2 dalis - techmat.vgtu.lt

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!