ALGORITMIEN SUUNNITTELU JA ANALYYSI, kevät-2007
Harjoitus 1. (viikolla 3)
1. Mitkä seuraavista väitteistä ovat tosia ja mitkä eivät? Perustele!
a) n5 + n4 + n log n - n = O(n5)
b) log(n4) = Q(log n)
c) log(n4) = O(n2)
d) (log n)4 = O(log n)
e) 12 + 22 + ... +
n2 = O(n2)
f) n log n = W(n log log n)
2. Mitkä symboleista O, W, Q ja o
sopivat ?:n paikalle seuraavissa lausekkeissa? (Esimerkki:
n = ?(n2). Tähän sopivat O ja o, koska n = O(n2) ja n
= o(n2),
mutta eivät Q eikä W.)
a) √2n
= ?(12n)
b) 12n
= ?(√2n)
c) log2 n = ?(logl0 n)
d) 3√n = ?(√n)
e) n2 - 2n = ?(n log n)
f) 3n3 + 42n2 - n + 123 = ?(n3)
3. Kirjoita pseudokoodi algoritmille, joka laskee kahden
polynomin tulon koulussa opetetulla kertolaskumenetelmällä. Menetelmä siis toimii esimerkiksi näin:
x2 + 2x
+ 3
x2 - x + 1
x2 + 2x
+ 3
-
x3 - 2x2 - 3x
x4 + 2x3
+ 3x2
x4 + x3 + 2x2
– x + 3
4. Analysoi edellisen tehtävän
algoritmin aikavaatimus n:n funktiona,
kun kummankin kerrottavan polynomin aste on (sama) n.
5. Oletetaan, että T(n) = O(f(n)) ja
S(n) =
O(g(n)). Osoita,
että
a) T(n) + S(n) = O(max{f(n), g(n)})
b) T(n) · S(n) =
O(f(n) · g(n))
6. Verkon kaaret voidaan tallentaa vieruslistojen sijasta yhteysmatriisina. Tämä on V x V kokoinen
taulukko, jossa on jokaiselle solmuparille numero 0 tai 1, joka kertoo, onko solmujen välillä kaarta.
a) Mikä on seuraavan suuntaamattoman verkon yhteysmatriisi: (a, b), (a, e), (b,
e), (b, d), (e, d)
b) Kirjoita pseudokoodina algoritmi, joka rakentaa verkon
vieruslistaesityksestä yhteysmatriisin. (Keksi oma abstraktio sille, miten
algoritmi pääsee käsiksi vieruslistaan.)
Mikä on algoritmisi
aikavaatimus, kun verkossa on V solmua ja E kaarta?