Professional Documents
Culture Documents
en
x*exp(x)
limn→∞ = limn→∞ n 1 = 0,
nen 2.5
1.5
limn→∞ nlog
log2 n
= limn→∞ n = ∞,
2n 1
1
log2 n+n n ln
0
n log2 n 2
0 1 2 3 4 5
limn→∞ en = limn→∞ en
3
x*log(x)
log(x)
= limn→∞ loge
2 n + 1 lim
n ln 2 n→∞
1
en
2.5
1 2
= limn→∞ n ln 2 +0
en
1.5
0.5
Esim. kun f (n) = 100n2 + 30n + 45, f (n) ̸= O(n), f (n) = O(n2 ) ja f (n) = O(n3 ).
• Jos f (n) = O(nk ) jollakin vakiolla k, niin f (n) on polynomisesti rajoitettu.
• Ylipolynomisilla (eksponentiaalisilla) algoritmeilla ei suurta hyötyä laskenta-ajan pidentämisestä tai
laitteiston tehostamisesta.
Funktioiden kertaluokkia
Vakiofunktion suoritusaika ei riipu n:stä, joten kertaluokka on O(1).
Polynomeja
458 = O(n0) = O(1)
10n + 8 = O(n)
3n2 + 2n + 1 = O(n2) (pitää paikkansa myös: 3n2 + 2n + 1 = O(n3) jne.∗)
12n3 + 4n2 = O(n3)
ak nk + ak−1nk−1 + · · · + a1n + a0 = O(nk )
Logaritmifunktio
loga n = log b n ∀a, b > 1,
logb a
1 ̸= 0
logb a ⇒ loga n = O(logb n) ∀a, b > 1
∗ Käytännössä pyritään selvittämään kertaluokka mahdollisimman tarkasti tai ”tiukasti”. O(n2 ) on pienin kertaluokka,
joka sisältää funktion f (n) = 3n2 + 2n + 1, määritelmän mukaan kuitenkin myös f (n) = O(n3 ), f (n) =
O(n4 ), jne.
Kertaluokkamerkintöjen laskusääntöjä
Vaativuusfunktioiden vakiokertoimet jätetään huomioimatta.
k
aini = O(nk )
X
i=1
f (n) = O(f (n))
f (n) = O(n · f (n))
c · f (n) = O(f (n))
c + f (n) = O(f (n))
f (n) + g(n) = O(max{f (n), g(n)}) = max{O(f (n)), O(g(n))}
f (n) · g(n) = O(f (n) · g(n))
log10 n = O(log2 n)
Jos f (n) = O(g(n)) ja g(n) = O(h(n)), f (n) = O(h(n)).
Algoritmin analysointisääntöjä
} }
} }
Sisemmän for-silmukan runko suoritetaan Sisemmän for-silmukan runko suoritetaan
mn kertaa. Aikavaativuus on O(mn). n−1
X
j = 1 + 2 + · · · + (n − 1)
j=1
n(n − 1)
= kertaa.
2
Aikavaativuus on O(n2)
Esimerkki
1: s=0;
2: for(i=0;i<3*n;i++)
3: s=s+1
rivi 1 suoritetaan kerran
rivi 2 suoritetaan 3n + 1 kertaa
rivi 3 suoritetaan 3n kertaa (kun i = 0, 1, . . . , 3n − 1)
Suoritusaika yht. T (n) = t1 + t2 (3n + 1) + t3 · 3n = 3(t2 + t3 )n + (t1 + t2 ) ≤ cn jollakin c > 0
Toinen tapa:
Tällaisessa tehtävässä voi siis olettaa, että n on suuri verrattuna mihin tahansa vakioon.
Määritelmät eri kertaluokkamerkinnöille
Tällä kurssilla keskitytään O-merkintään, mutta on myös muita kertaluokkamerkintöjä.
O(n3) Kuutiollinen vaativuus sopii vain melko pienen syöttötiedon koon omaaville
ongelmille.
• Selvästi P ⊆ NP
• Onko P = NP ?