Kotisivulle Homepage Parent

Rästitehtävät

Rästitehtäviä voi tehdä sekä perustehtävien että sovellustehtävien osalta.  Perustehtävissä rästit tehdään TRAKLAn / TRAKLA-EDITin avulla samaan tapaan kuin kevään tavallisissa tehtävissäkin.  Kukin kierros tulee kuitenkin tilata erikseen.  Ks. lähemmin täältä.

Sovellustehtävien rästit

Sovellustehtävien osalta rästitehtäviä voivat tehdä

Huom! Sovellustehtävissä vain kokonaispistemäärä ratkaisee, joten tiettyä kierrosta ei tarvitse uusia, jos kokonaispisteet muilta kierroksilta riittivät läpipääsyyn.
 
Rästitehtävät tehdään yksin eikä ryhmissä, jolloin jokainen palauttaa oman vastauspaperin.  Yhteistyö on sallittua, mutta jokaisen on kirjoitettava vastaukset omin samoin, koska toisen vastauksen mekaanisessa kopioinnissa ei opi juuri mitään.

Jokaisen, joka tekee rästitehtäviä, on saatava vähintään 5 pistettä niistä.  Tätä pienempiä muutoksia ei kirjata.

Jos em. minimivaatimus täyttyy, rästitehtävien ja alkuperäisten sovellustehtävien pisteet lasketaan yhteen ja yhteispisteiden kanssa noudatetaan seuraavia arvosanarajoja.  (tässä yhteydessä otamme käyttöön myös arvosanat 1 ja 2)

        32 - 34 : 1
        35 - 36 : 2
        37 - 51 : 3
        52 - 66 : 4
        67 -    : 5

Tehtävien palautuksen deadline on 30.9 klo 16.  Tehtävät palautetaan paperilla kyyhkyslakkojen alla olevaan lokeroon 42.  Paperin päällä tulee olla nimi, opintokirjan numero ja merkintä "Tietorakenteet ja algoritmit, rästitehtävät".  Sähköisessä muodossa ratkaisuja ei oteta vastaan.
 

Tehtävät

Seuraavassa on 20 rästitehtävää, kukin 2-4 pistettä.  Niitä ei ole jaoteltu mitenkään kierroksiin, vaan tehtävät ovat kaikki yhdessä. Voit esittää algoritmit joko pseudokielellä, Pascalilla tai C:llä. Jokaiseen esitettyyn algoritmiin täytyy liittyä sanallinen selostus algoritmin periaatteellisesta toiminnasta.

1)  Laske seuraavan lausekkeen arvo muuntamalla se ensin infix-muodosta postfix-muotoon ja laskemalla sitten postfix-lausekkeen arvo.  Käytä hyväksi pinorakennetta samalla tavalla kuin oppikirjassa on esitetty luvussa 3.3.3. (2p)
 
     1 + 5 * ((2 * 3 + 4) * 2 + 3 * (4 + 5 * 6))
 
Esitä pinon sisältö jokaisen symbolin lukemisen jälkeen algoritmin molemmissa vaiheissa.
 
 
2)  Edellisen tehtävän algoritmi toimii myös vähennys- ja jakolaskujen yhteydessä, kun näille operaattoreille asetetaan sopivat prioriteetit. Se ei toimi potenssiinkorotuksen kanssa, koska potenssiinkorotus assosioi oikealta vasemmalle, t.s 2^3^4  = 2^(3^4) eikä (2^3)^4. Miten algoritmeja tulee muuntaa, jotta myös potenssiinkorotus on mahdollista? (2p)
 
 
3)  Esitä algoritmi, joka laskee annetun mielivaltaisen binääripuun solmujen määrän. (2p)
 
 
4)  Esitä algoritmi, joka laskee annetun mielivaltaisen binääripuun korkeuden.  Mikä on algoritmisi tehokkuus O-notaatiossa? (2p)
 

5)  Hajautuksen perusmenetelmät eivät säilytä avainten järjestystä, jolloin haluttaessa luetella tietyllä avainvälillä olevat avaimet joudutaan käymään läpi kaikki rakenteessa olevat avaimet.  Mieti, miten toteuttaisit hajautusalgoritmin ja -tietorakenteen, jos tämä toimenpide pitäisi pystyä tekemään selvästi nopeammin (ei kuitenkaan välttämättä ajassa O(M), jossa M on haettavien avainten määrä). (2p)
 
 
6a) Montako bittiä / solmu tarvitaan tallettamaan N-alkioiseen AVL-puuhun kunkin solmun korkeus? (1p + 1p)

 b) Oletetaan, että solmun korkeutta varten on varattu 8 bittiä.  Mikä on pienin  AVL-puu, jossa korkeutta ei voida tallettaa ko. tilaan?  Anna karkea arvio tällaisen puun solmujen lukumäärästä?

Lisäksi oppikirjasta (2. painos) seuraavat tehtävät

Myös seuraavia bonustehtäviä voi tehdä.

       2.7ab (4p)
       4.7   (4p)
       4.17  (4p)
       4.43  (6p)
       4.46  (4p)
 
 


Tämän sivun sisällöstä vastaavat/This page is maintained by kurssin assarit, E-mail: tik76122@hut.fi.
Sivua on viimeksi päivitetty/The page has been updated 29.06.1998.
URL: http://www.niksula.cs.hut.fi/~tik76122/k98/tehtavakierrokset/rasti/Rastisovellustehtavat.html