ALGORITMIEN SUUNNITTELU JA ANALYYSI 

Kevät-2007

 

Harjoitus 4. 

 

 

1.         Mitkä ovat seuraavien algoritmien suuruusluokat, kun T(n) on algoritmin aikavaatimus?

                        a)         T(n) = 3 T(n / 3) + n log3 n

                        b)         T(n) = 3 T(n / 4) + n lg n

            Kummassakin tapauksessa  T(1) = 1.  Mieti tarkoin, miten voit edetä.

 

 

2.         Tee opetusmonisteen sivulla 42 harjoitustehtäväksi jätetty todistus ("Tapaus 3", opetus­monisteen kohdan "Mukautuvat puut" lopussa.

 

 

3.         Kirjoita algoritmi (pseudokoodi), joka laskee pelkkien yhteenlaskujen avulla kertolaskun n*x, kun n on positiivinen kokonaisluku.  Algoritmi saa tehdä O(log n) yhteenlaskua. Vihje: Käytä hajoita ja hallitse –menetelmää.  4*a = (a+a)+(a+a).

 

 

4.         Tasapainoisessa binäärisessä hakupuussa minkä tahansa solmun alipuiden korkeusero on enintään yksi.  Tällaisen voi tehdä n alkion järjestetystä taulukosta esimerkiksi lisäämällä alkiot aluksi tyhjään AVL-puuhun yksi kerrallaan – mutta tämä vie ajan O(n log n), koska AVL-puun lisäys on O(log n).

 

            Kirjoita algoritmi, joka tekee n:n alkion järjestetystä taulukosta tasapainoisen binäärisen hakupuun ajassa O(n).  Vihje: Käytä hajoita ja hallitse –menetelmää.

 

 

5.                  Osoita, että Strassenin algoritmissa osamatriisin C22 alkiot muodostuvat oikein.

 

 

6.         Kokonaisluvut  1,2,...,25  on talletettu taulukkoon seuraavassa järjestyksessä:

 

                                    1, 25, 2, 24, 3, 23,...,11, 15, 12, 14, 13.

 

            Modifioidaan opetusmonisteen sivun 52 mediaanin etsimisalgoritmia siten, että alussa oleva ehto |F| < 20 muuttuu ehdoksi |F| < 5.  Selvitä askeleittain, miten yllä olevan lukujonon mediaani löytyy modifioidulla algoritmilla.