Kompleksisuus
Kompleksisuus
Algoritmien analyysissä tutkitaanalgoritmien käyttämän (tietokone)ajoajanja muistin määrän riippuvuuttasyöttöaineiston koosta (N).
Syöttöaineisto tarkoittaa esimerkiksitaulukon alkioiden joukkoa, kun tutkitaantaulukoita, ja Fibonacciluvunjärjestysnumeroa Fibonacci lukujenlaskennassa
Algoritmin kompleksisuus
Algoritmin suoritukseen vaadittavienresurssien määrän riippuvuus syötteenkoosta huonoimmassa tapauksessa
Vähennettäessä jonkin resurssin tarvettasaattaa jonkin toisen resurssin tarvekasvaa  sovelluskohtainen tasapaino
Aikakompleksisuus
Ilmoitetaan syötteen koon n funktiona T(n)
Yksikkönä keskeisten alkeisoperaatioidenmäärä
Usein riittää pelkän lukumääränsuuruusluokan arviointi
Asymptoottinen kompleksisuustarkastelu
miten algoritmi käyttäytyy, kun syötteen kokon kasvaa
Asymptoottinen aikakompleksisuus
Tarkastellaan yleensä vain niitä lausekkeidenosia, jotka dominoivat lauseketta suurilla n:narvoilla
Usein annetaan kasvua kuvaava funktio taiylärajafunktio kasvulle
Suuruusluokka
Jos T(n) on suuruusluokkaa f(n), merkitään:
T(n)=Θ(f(n)) tai T(n) ~ f(n)
Yläraja
Jos T(n):n yläraja on f(n), merkitään:
T(n) = O(f(n))
Kompleksisuuden kertaluokat
eksponentiaalinen: T(n) ~ cn
polynomiaalinen:T(n) ~ nc
lineaarinen:T(n) ~ n
logaritminen:T(n) ~ logcn
vakioaikainen:T(n) ~ 1
Kasvunopeuksia
log n
n
n log n
n2
2n
1
2
2
4
4
2
4
8
16
16
4
16
64
256
65536
6
64
384
4096
1.84E19
8
256
2048
65536
1.15E77
10
1024
10240
1048576
1.8E308