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 ker­tolaskumenetelmä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 kerrotta­van 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ä yhteysmat­riisin. (Keksi oma abstraktio sille, miten algoritmi pääsee käsiksi vieruslistaan.)  Mikä on        algoritmisi aikavaatimus, kun verkossa on V solmua ja E kaarta?