Tietorakenteet, laskuharjoitus 6,
|
|
- Aino Väänänen
- 7 vuotta sitten
- Katselukertoja:
Transkriptio
1 Tietorakenteet, laskuharjoitus, (a) Kuvassa 1 on esitetty eräät pienimmistä AVL-puista, joiden korkeus on 3 ja 4. Pienin h:n korkuinen AVL-puu ei ole yksikäsitteinen juuren alipuiden keskinäisen järjestyksen tai avaimien suhteen. Kuvasta 1a kuitenkin havaitaan, että pienimmässä kolmen korkuisessa AVL-puussa on juuren alipuina pienin yhden ja kahden korkuinen AVL-puu. 2 Vastaava 13 pätee 22 myös pienimmälle neljän korkuiselle AVL-puulle, sen juuren alipuut ovat pienimmät kahden ja kolmen korkuiset AVL-puut (a) Pienin AVL puu, jonka korkeus on (b) Pienin AVL puu, 101 jonka korkeus on 4 Kuva 1: Pienimpiä mahdollisia AVL-puita Kuvassa 17 2 on esitetty suurimmat mahdolliset AVL-puut, joiden korkeus on 3 ja 4. Täydellinen puu on erityisen 2 tasapainoinen puuja se täyttää 107 myös 2 AVLehdon, joten suurin h:n korkuinen AVL-puu on h:n korkuinen täydellinen puu (a) Suurin AVL puu, jonka korkeus on (b) Suurin AVL puu, jonka korkeus on 4 Kuva 2: Suurimpia mahdollisia 150 AVL-puita (b) Kuvassa 3 on esitetty puu, jonka 1 täytyi osoittaa 17 toteuttavan AVL-ominaisuus. Kuvan yhteyteen on merkitty alipuiden korkeudet kunkin solmun vasemmalle
2 puolelle. Puu on AVL-puu jos kaikille solmuille n pätee: Height(n.left) Height(n.right) 1 Siis jokaisen solmun vasemman ja oikean alipuun korkeuksien erotus on itseisarvoltaan -1, 0 tai 1. Laskemalla jokaisen solmun alipuiden korkeuden erotuksen havaitaan, että kuvassa 3 esiintyvä puu on AVL-puu Kuva 3: Puu, jonka solmujen yhteyteen on merkitty niistä lähtevien alipuiden korkeus 2. (a) Kuvassa 4 on esitetty annettujen avainten lisäys AVL-puuhun. Ensin lisätään avaimet, ja (kuvat 4a, 4b ja 4c). Viimeisen lisäyksen jälkeen puu on epätasapainossa. Se saadaan jälleen tasapainoon kiertämällä avaimen solmua oikealle (kuva 4d). Lisätään avaimet ja (kuvat 4e ja 4f). Jälkimmäinen lisäys saa puun epätasapainoon, joka korjataan suorittamalla avaimen solmuun vasen-oikea kaksoiskierto. Ensin kierretään avaimen solmu vasemmalle (kuva 4g), jonka jälkeen kierretään avaimen solmu oikealle (kuva 4h). Tämän jälkeen lisätään puuhun (kuva 4i), joka saa puun juuren epätasapainoon. Puun juurta käännetään oikealle (kuva 4j). Viimeisenä puuhun lisätään ja. Kumpikaan lisäyksistä ei vaikuta puun tasapainoon, joten kiertoja ei tarvita enempää. (b) Kuvassa 5 on esitetty edellisen tehtävän avainten lisääminen AVL-puuhun käänteisessä järjestyksessä. Alussa puuhun lisätään avaimet, ja (kuvat 5a, 5b ja 5c). Viimeisen lisäyksen jälkeen puun juuri on epätasapainossa. Puu saadaan tasapainoiseksi kiertämällä juurta oikealle (kuva 5d). Tämän jälkeen puuhun lisätään avaimet ja (kuvat 5e ja 5f). Nyt avaimen solmu on epätasapainossa. Se saadaan korjattua oikea-vasen kaksoiskierrolla. Ensin kierretään avaimen solmua oikealle (kuva 5g) jonka jälkeen avaimen solmu kierretään vasemmalle (kuva 5h). Tämän jälkeen lisätään avaimet ja (kuvat 5i ja 5j), jonka jälkeen avaimen solmu on epätasapainossa. Tilanne korjataan tekemällä vasen-oikea kaksoiskierto solmuun (kuvat 5k ja 5l). Viimeiseksi lisätään (kuva 5m). 2
3 3 4 (a) (b) (c) (d) (e) (f) (g) (h) 1 (i) (j) (k) (l) Kuva 4: Avaimien,,,,,,, lisäys AVL-puuhun 3
4 9 (a) (b) (c) (d) (e) 7 1 (f) (g) (h) (i) (j) (k) 9 (l) (m) Kuva 5: Avaimien,,,,,,, lisäys AVL-puuhun 4
5 3. (a) Kuvassa aloitetaan poistojen sarja kuvan 4l tilanteesta. Ensin poistetaan, jonka yhteydessä solmu asetetaan juuren vasemmaksi alipuuksi (kuva a). Tämän seurauksena juuri tulee epätasapainoon, mikä korjataan kiertämällä juurta vasemmalle (kuva b). Seuraavaksi poistetaan (kuva c), jonka seurauksena juuri on jälleen epätasapainossa. Tilanteesta selvitään suorittamalla vasen-oikea kaksoiskierto juureen. Ensin kierretään solmu vasemmalle (kuva d), jonka jälkeen juuri kierretään oikealle (kuva e). Tämän jälkeen poistetaan tavalliseen binäärihakupuun poiston tapaan (kuva f). Siinä korvataan ensin avaimen solmun avain oikean alipuun pienimmällä avaimella. Varsinainen poisto kohdistuu korvaavan avaimen () solmuun. Lopuksi poistetaan (kuva g), jonka poisto ei horjuta AVL-puun tasapainoehtoa. (b) Kuvassa 7 aloitetaan poistojen sarja kuvan 5m tilanteesta. Ensin poistetaan ja (kuvat 7a ja 7a). Jälkimmäinen poisto saa juuren epätasapainoon. Tilanne korjataan kiertämällä juurta vasemmalle (kuva 7c). Tämän jälkeen poistetaan, joka ei eroa tavallisesta binäärihakupuun poistooperaatiosta lainkaan (kuva 7d). Vimeiseksi poistetaan (kuva 7e), joka saa jälleen juuren epätasapainoon. Tilanne korjataan kiertämällä juurta oikealle (kuva 7f). 5
6 (a) (b) (c) (d) (e) (f) (g) Kuva : Avaimien,, ja poisto kuvan 4l tilanteesta aloitettuna
7 (a) (b) (c) (d) (e) (f) Kuva 7: Avaimien,, ja poisto kuvan 5m tilanteesta aloitettuna 7
8 4. Ohessa on binääripuu toteutettuna Javalla. Luokan main-metodissa on puun toiminnan testailua. class BTree { private long key; private BTree left; private BTree right; public BTree(long value) { this.key = value; this.right = null; this.left = null; public void setright(btree right) { this.right = right; public BTree getright() { return this.right; public void setleft(btree left) { this.left = left; public BTree getleft() { return this.left; /* Insert-operaatio olisi luonnollisinta kirjoittaa rekursiivisesti, * mutta säästääksemme muistia teemme siitä iteratiivisen version. */ public void insert(long key) { boolean inserted = false; BTree node = new BTree(key); BTree curr = this; while(!inserted) { if (key <= curr.key) { if (curr.left == null) { curr.left = node; inserted = true; else { curr = curr.left;
9 else { if (curr.right == null) { curr.right = node; inserted = true; else { curr = curr.right; /* Tämäkin olisi tehokkaampi iteratiivisena versiona, mutta näytetään * miten tämä (ja edellinen) voidaan toteuttaa rekursiivisena. */ public boolean search(long key) { if (key == this.key) return true; else if (key < this.key && this.left!= null ) return this.left.search(key); else if ( this.right!= null ) return this.right.search(key); else return false; public long height() { long left = (this.left == null)? 0 : this.left.height(); long right = (this.right == null)? 0 : this.right.height(); return Math.max(left, right) + 1; public void print() { if ( this.left!= null ) this.left.print(); System.out.print(this.key + " "); if ( this.right!= null ) this.right.print(); public static void main(string[] args) { int kertaa = 100; if (args.length > 0) kertaa = Integer.parseInt(args[0]); 9
10 long eka = (long) (Long.MAX_VALUE * Math.random()); BTree puu = new BTree(eka); for (int i = 0; i < kertaa; i++) puu.insert((long) (Long.MAX_VALUE * Math.random()) ); puu.print(); System.out.println(); long num = (long) (Long.MAX_VALUE * Math.random()); if (puu.search(num)) System.out.println(num + " löytyi puusta."); else System.out.println(num + " ei löytynyt puusta."); if (puu.search(eka)) System.out.println(eka + " löytyi puusta."); else System.out.println(eka + " ei löytynyt puusta."); System.out.println("Puun korkeus on " + puu.height()); System.out.println("Vertailun vuoksi: kaksikantainen logaritmi luvusta " + kertaa + " on "+ Math.log(kertaa)/Math.log(2)); 100 Binääripuun korkeus lisättäessä n avainta korkeus log e+0 1e e+07 2e e+07 3e e+07 4e e+07 5e+07 n Kuva : Puun korkeus lisättäessä n satunnaista avainta 5. (a) Kuvassa on kaksikantaisen logaritmin ja puun korkeuden kuvaajat kun puuhun on lisätty n satunnaista avainta. Kuvaajasta havaitaan, että kun puuhun 10
11 lisätään satunnaisia avaimia ei sen korkeus eroa kovinkaan paljon logaritmifunktion arvoista. Itse asiassa näyttääkin, puun korkeudelle h pätisi n:n satunnaisen avaimen lisäyksessä h 3 log 2 n = O(log n). Tietenkään tämä ei ole vielä validi perustelu, mutta voidaan osoittaa, että tämänlaisessa tilanteessa puun korkeuden odotusarvo on logaritminen puun avainten lukumäärän suhteen. (b) Kuvissa 9, 10 ja 11 on esitetty oman puumme vertailuja Javan kirjastoista löytyvään TreeSettiin. Yllättävästi tasapainoittamaton puumme oli nopeampi sekä satunnaisissa lisäyksissä, että hauissa. Tämä selittyy osittain siitä, ettei tasapainoittamatonkaan puu kasva kovinkaan korkeaksi jos avaimet lisätään satunnaisesti. Lisäysten nopeus selittyy sillä, ettei omassa puutoteutuksessamme tarvittu tasapainotusoperaatioita. Hakujen nopeutta selittää se, että puumme on tarpeeksi matala. Luultavasti TreeSettiä hidastaa hiukan sen geneerinen toteutus, joka pakottaa sen käyttämään Long-olioita primitiivisen long-tietotyypin sijasta. Tasapainotetun puun suurin etu nähdään etsittäessä avaimia puusta, johon avaimet on lisätty järjestyksessä. Tässä tapauksessa oma tasapainoittamaton puumme surkastuu tavalliseksi listaksi, jossa haut ovat hitaita. Kesto lisättäessä n satunnaista avainta 00 oma puu Javan TreeSet e+0 n Kuva 9: Kesto lisättäessä n satunnaista avainta. Vakioaikaiset min- ja max-operaatiot voidaan toteuttaa säilyttämällä puun yhteydessä osoittimia sen pienimpään ja suurimpaan avaimeen. Näiden tallettaminen lisää puun operaatioita ainoastaan vakioajalla, koska ehdot voidaan tarkistaa yksinkertaisella ehtolausekkeella. Vakioaikaiset seuraaja- ja edeltäjä-operaatiot saadaan tallettamalla jokaisen solmun yhteyteen viite sen avaimen seuraajan ja edeltäjän sisältäviin solmuihin. Binääripuu- 11
12 500 n hakua :n satunnaisen avaimen puuhun oma puu Javan TreeSet n Kuva 10: Kesto haettaessa n satunnaista avainta :n satunnaisessa järjestyksessä lisätyn avaimen puusta 1000 n hakua 20000:n järjestyksessä lisätyn avaimen puuhun oma puu Javan TreeSet n Kuva 11: Kesto haettaessa n avainta 20000:n järjestyksessä lisätyn avaimen puusta
13 ta, jossa on tavallisten left- ja right-viitteiden lisäksi viitteet solmun seuraajaan ja edeltäjään kutsutaan langoitetuksi (engl. threaded). Langoitus ei lisää operaatioiden aikavaativuutta kuin vakiokertoimella. Lisättäessä binäärihakupuuhun avainta, sen seuraaja ja edeltäjä tulevat vastaan hakupolulla, joten langoituksen toteuttamiseksi ei tarvitse toteuttaa edes ylimääräisiä hakuja puuhun. Näiden muutoksien huonona puolena on lisääntynyt muistin tarve ja aavistuksen hidastuvat lisäys- ja poisto-operaatiot. Jos puun yksi viite vie tilaa 4 tavua ja avain vie tilaa c tavua, niin ilman edeltäjä- ja seuraaja-osoittimia n:n alkion puu vie tilaa (+c)n+ tavua. Lausekkeen tulee viitteestä juureen sekä min- ja max-viitteistä. Jos puuhun talletetaan lisäksi viitteet edeltäjään ja seuraajaan, niin n:n alkion puu vie tilaa (1 + c)n +. Siis itse rakenteen koko kaksinkertaistuu! Huomaa, että tässä tarkastelussa käytetyt arvot eivät kuvasta Javan todellisuutta, koska Javassa olioiden yhteyteen talletetaan paljon muutakin tavaraa. Ohessa on vielä langoitetun binääripuun toteuts Javana. class ThreadedBTree { private class BTnode { public BTnode left; public BTnode right; public BTnode succ; public BTnode pred; public long key; public BTnode(long key) { this.key = key; this.succ = null; this.pred = null; this.left = null; this.right = null; public BTnode(long key, BTnode succ, BTnode pred) { this.key = key; this.succ = succ; this.pred = pred; this.left = null; this.right = null; private BTnode min; private BTnode max; 13
14 private BTnode root; public ThreadedBTree(long key) { BTnode node = new BTnode(key); this.min = node; this.max = node; this.root = node; public void insert(long key) { BTnode succ, pred, curr; BTnode node = new BTnode(key); boolean inserted = false; succ = pred = null; curr = this.root; /* Väistämättä avaimen seuraaja ja edeltäjä * tulevat vastaan matkan varrella kun etsitään * kohtaa johon lisätä. */ while(!inserted) { /* Huomaa ettemme hyväksy tässä avainten duplikaatteja. */ if ( (succ == null curr.key < succ.key) && key < curr.key) succ = curr; if ( (pred == null curr.key > pred.key) && key > curr.key) pred = curr; if( key < curr.key ) { if (curr.left == null) { curr.left = node; inserted = true; else { curr = curr.left; else if ( key > curr.key ) { if (curr.right == null) { curr.right = node; inserted = true; else { curr = curr.right; else return; if (pred!= null) { 14
15 node.pred = pred; pred.succ = node; if (succ!= null) { node.succ = succ; succ.pred = node; if (this.min.key > key) this.min = node; if (this.max.key < key) this.max = node; /* Koska jouduimme ottamaan mukaan sisäluokan joudumme * hoitamaan tavallisen puun rekursion käsin käyttäen pinoa, * kirjoittamaan metodit sisäluokalle tai käyttämällä * staattisia metodeja. Rekursion käyttäminen on puiden * tapauksessa luonnollista, joten tässä on päätetty * ohittaa hankaluudet sen avulla. */ public void print_default() { print_helper(this.root); private static void print_helper(btnode solmu) { if (solmu == null) return; print_helper(solmu.left); System.out.print(solmu.key + " "); print_helper(solmu.right); public void print_threaded_asc() { BTnode curr = this.min; while(curr!= null) { System.out.print(curr.key + " "); curr = curr.succ; public static void main(string[] args) { 15
16 ThreadedBTree puu = new ThreadedBTree(0); for (int i = 0; i < 20; i++) puu.insert((long) (100*Math.random())); puu.print_default(); System.out.println(); puu.print_threaded_asc(); 1
AVL-puut. eräs tapa tasapainottaa binäärihakupuu siten, että korkeus on O(log n) kun puussa on n avainta
AVL-puut eräs tapa tasapainottaa binäärihakupuu siten, että korkeus on O(log n) kun puussa on n avainta pohjana jo esitetyt binäärihakupuiden operaatiot tasapainotus vie pahimmillaan lisäajan lisäys- ja
LisätiedotHakupuut. tässä luvussa tarkastelemme puita tiedon tallennusrakenteina
Hakupuut tässä luvussa tarkastelemme puita tiedon tallennusrakenteina hakupuun avulla voidaan toteuttaa kaikki joukko-tietotyypin operaatiot (myös succ ja pred) pahimman tapauksen aikavaativuus on tavallisella
LisätiedotBinäärihaun vertailujärjestys
Järjestetyn sanakirjan tehokas toteutus: binäärihaku Binäärihaku (esimerkkikuassa aain = nimi) op Eea 5 op 5 op op 8 op 5 6 7 8 op Eea 5 op 5 op op 8 op 5 6 7 8 op Eea 5 op 5 op op 8 op 5 6 7 8 op Eea
LisätiedotTKT20001 Tietorakenteet ja algoritmit Erilliskoe , malliratkaisut (Jyrki Kivinen)
TKT0001 Tietorakenteet ja algoritmit Erilliskoe 5.1.01, malliratkaisut (Jyrki Kivinen) 1. [1 pistettä] (a) Esitä algoritmi, joka poistaa kahteen suuntaan linkitetystä järjestämättömästä tunnussolmullisesta
LisätiedotA274101 TIETORAKENTEET JA ALGORITMIT
A274101 TIETORAKENTEET JA ALGORITMIT PUURAKENTEET, BINÄÄRIPUU, TASAPAINOTETUT PUUT MIKÄ ON PUUTIETORAKENNE? Esim. Viereinen kuva esittää erästä puuta. Tietojenkäsittelytieteessä puut kasvavat alaspäin.
Lisätiedot58131 Tietorakenteet ja algoritmit (kevät 2016) Ensimmäinen välikoe, malliratkaisut
58131 Tietorakenteet ja algoritmit (kevät 2016) Ensimmäinen välikoe, malliratkaisut 1. Palautetaan vielä mieleen O-notaation määritelmä. Olkoon f ja g funktioita luonnollisilta luvuilta positiivisille
Lisätiedotprivate TreeMap<String, Opiskelija> nimella; private TreeMap<String, Opiskelija> numerolla;
Tietorakenteet, laskuharjoitus 7, ratkaisuja 1. Opiskelijarekisteri-luokka saadaan toteutetuksi käyttämällä kahta tasapainotettua binäärihakupuuta. Toisen binäärihakupuun avaimina pidetään opiskelijoiden
LisätiedotTietorakenteet, laskuharjoitus 7, ratkaisuja
Tietorakenteet, laskuharjoitus, ratkaisuja. Seuraava kuvasarja näyttää B + -puun muutokset lisäysten jälkeen. Avaimet ja 5 mahtuvat lehtisolmuihin, joten niiden lisäys ei muuta puun rakennetta. Avain 9
Lisätiedot(a) L on listan tunnussolmu, joten se ei voi olla null. Algoritmi lisäämiselle loppuun:
Tietorakenteet ja algoritmit, kevät 201 Kurssikoe 1, ratkaisuja 1. Tehtävästä sai yhden pisteen per kohta. (a) Invariantteja voidaan käyttää algoritmin oikeellisuustodistuksissa Jokin väittämä osoitetaan
Lisätiedot3. Hakupuut. B-puu on hakupuun laji, joka sopii mm. tietokantasovelluksiin, joissa rakenne on talletettu kiintolevylle eikä keskusmuistiin.
3. Hakupuut Hakupuu on listaa tehokkaampi dynaamisen joukon toteutus. Erityisesti suurilla tietomäärillä hakupuu kannattaa tasapainottaa, jolloin päivitysoperaatioista tulee hankalampia toteuttaa mutta
Lisätiedotv 1 v 2 v 3 v 4 d lapsisolmua d 1 avainta lapsen v i alipuun avaimet k i 1 ja k i k 0 =, k d = Sisäsolmuissa vähint. yksi avain vähint.
Yleiset hakupuut 4 Monitiehakupuu: Binäärihakupuu 0 1 3 5 6 7 8 v k 1 k k 3 v v 3 v 4 k 1 k 3 k 1 k k k 3 d lapsisolmua d 1 avainta Yleinen hakupuu? Tietorakenteet, syksy 007 1 Esimerkki monitiehakupuusta
LisätiedotKoe ma 1.3 klo 16-19 salissa A111, koeaika kuten tavallista 2h 30min
Koe Koe ma 1.3 klo 16-19 salissa A111, koeaika kuten tavallista 2h 30min Kokeessa saa olla mukana A4:n kokoinen kaksipuolinen käsiten tehty, itse kirjoitettu lunttilappu 1 Tärkeää ja vähemmäntärkeää Ensimmäisen
LisätiedotAlgoritmit 2. Luento 7 Ti Timo Männikkö
Algoritmit 2 Luento 7 Ti 4.4.2017 Timo Männikkö Luento 7 Joukot Joukko-operaatioita Joukkojen esitystapoja Alkiovieraat osajoukot Toteutus puurakenteena Algoritmit 2 Kevät 2017 Luento 7 Ti 4.4.2017 2/26
Lisätiedot58131 Tietorakenteet (kevät 2009) Harjoitus 6, ratkaisuja (Antti Laaksonen)
58131 Tietorakenteet (kevät 2009) Harjoitus 6, ratkaisuja (Antti Laaksonen) 1. Avaimet 1, 2, 3 ja 4 mahtuvat samaan lehtisolmuun. Tässä tapauksessa puussa on vain yksi solmu, joka on samaan aikaan juurisolmu
LisätiedotCS-A1140 Tietorakenteet ja algoritmit
CS-A1140 Tietorakenteet ja algoritmit Kierros 4: Binäärihakupuut Tommi Junttila Aalto-yliopisto Perustieteiden korkeakoulu Tietotekniikan laitos Syksy 2016 Sisältö Binäärihakupuut Avainten lisääminen,
LisätiedotKierros 4: Binäärihakupuut
Kierros 4: Binäärihakupuut Tommi Junttila Aalto University School of Science Department of Computer Science CS-A1140 Data Structures and Algorithms Autumn 2017 Tommi Junttila (Aalto University) Kierros
Lisätiedot58131 Tietorakenteet (kevät 2008) 1. kurssikoe, ratkaisuja
1 Tietorakenteet (kevät 08) 1. kurssikoe, ratkaisuja Tehtävän 1 korjasi Mikko Heimonen, tehtävän 2 Jaakko Sorri ja tehtävän Tomi Jylhä-Ollila. 1. (a) Tehdään linkitetty lista kaikista sukunimistä. Kuhunkin
LisätiedotInformaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo 15.2.2006
TURUN YLIOPISTO DEMO III Informaatioteknologian laitos tehtävät Olio-ohjelmoinnin perusteet / Salo 15.2.2006 1. Tässä tehtävässä tarkastellaan erääntyviä laskuja. Lasku muodostaa oman luokkansa. Laskussa
LisätiedotAlgoritmit 1. Luento 7 Ti Timo Männikkö
Algoritmit 1 Luento 7 Ti 31.1.2017 Timo Männikkö Luento 7 Järjestetty binääripuu Binääripuiden termejä Binääripuiden operaatiot Solmun haku, lisäys, poisto Algoritmit 1 Kevät 2017 Luento 7 Ti 31.1.2017
LisätiedotAlgoritmit 2. Luento 2 To Timo Männikkö
Algoritmit 2 Luento 2 To 14.3.2019 Timo Männikkö Luento 2 Tietorakenteet Lineaarinen lista, binääripuu Prioriteettijono Kekorakenne Keko-operaatiot Keon toteutus taulukolla Algoritmit 2 Kevät 2019 Luento
Lisätiedot2. Seuraavassa kuvassa on verkon solmujen topologinen järjestys: x t v q z u s y w r. Kuva 1: Tehtävän 2 solmut järjestettynä topologisesti.
Tietorakenteet, laskuharjoitus 11, ratkaisuja 1. Leveyssuuntaisen läpikäynnin voi toteuttaa rekursiivisesti käsittelemällä jokaisella rekursiivisella kutsulla kaikki tietyllä tasolla olevat solmut. Rekursiivinen
LisätiedotAlgoritmit 2. Luento 5 Ti Timo Männikkö
Algoritmit 2 Luento 5 Ti 26.3.2019 Timo Männikkö Luento 5 Puurakenteet B-puu B-puun korkeus B-puun operaatiot B-puun muunnelmia Algoritmit 2 Kevät 2019 Luento 5 Ti 26.3.2019 2/34 B-puu B-puut ovat tasapainoisia
Lisätiedot1.1 Pino (stack) Koodiluonnos. Graafinen esitys ...
1. Tietorakenteet Tietorakenteet organisoivat samankaltaisten olioiden muodostaman tietojoukon. Tämä järjestys voidaan saada aikaan monin tavoin, esim. Keräämällä oliot taulukkoon. Liittämällä olioihin
LisätiedotOlio-ohjelmointi Javalla
1 Olio-ohjelmointi Javalla Olio-ohjelmointi Luokka Attribuutit Konstruktori Olion luominen Metodit Olion kopiointi Staattinen attribuutti ja metodi Yksinkertainen ohjelmaluokka Ohjelmaluokka 1 Olio-ohjelmointi
LisätiedotAlgoritmit 2. Luento 2 Ke Timo Männikkö
Algoritmit 2 Luento 2 Ke 15.3.2017 Timo Männikkö Luento 2 Tietorakenteet Lineaarinen lista, binääripuu Prioriteettijono Kekorakenne Keko-operaatiot Keon toteutus taulukolla Algoritmit 2 Kevät 2017 Luento
LisätiedotAlgoritmit 1. Luento 8 Ke Timo Männikkö
Algoritmit 1 Luento 8 Ke 1.2.2017 Timo Männikkö Luento 8 Järjestetty binääripuu Solmujen läpikäynti Binääripuun korkeus Binääripuun tasapainottaminen Graafit ja verkot Verkon lyhimmät polut Fordin ja Fulkersonin
LisätiedotPinot, jonot, yleisemmin sekvenssit: kokoelma peräkkäisiä alkioita (lineaarinen järjestys) Yleisempi tilanne: alkioiden hierarkia
Pinot, jonot, yleisemmin sekvenssit: kokoelma peräkkäisiä alkioita (lineaarinen järjestys) Yleisempi tilanne: alkioiden hierarkia Kukin alkio (viite) talletettuna solmuun (node) vastaa paikan käsitettä
LisätiedotTehtävän V.1 ratkaisuehdotus Tietorakenteet, syksy 2003
Tehtävän V.1 ratkaisuehdotus Tietorakenteet, syksy 2003 Matti Nykänen 5. joulukuuta 2003 1 Satelliitit Muunnetaan luennoilla luonnosteltua toteutusta seuraavaksi: Korvataan puusolmun p kentät p. key ja
LisätiedotAlgoritmit 2. Luento 5 Ti Timo Männikkö
Algoritmit 2 Luento 5 Ti 28.3.2017 Timo Männikkö Luento 5 Puurakenteet B-puu B-puun korkeus B-puun operaatiot Algoritmit 2 Kevät 2017 Luento 5 Ti 28.3.2017 2/29 B-puu Algoritmit 2 Kevät 2017 Luento 5 Ti
LisätiedotMikä yhteyssuhde on?
1 Yhteyssuhde Mikä yhteyssuhde on? Yhteyssuhde Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma 1 Mikä yhteyssuhde on? Tili - : String - : double * 1 Asiakas - hetu: String - : String
LisätiedotTietorakenteet, laskuharjoitus 3, ratkaisuja
Tietorakenteet, laskuharjoitus 3, ratkaisuja 1. (a) Toistolauseen runko-osassa tehdään yksi laskuoperaatio, runko on siis vakioaikainen. Jos syöte on n, suoritetaan runko n kertaa, eli aikavaativuus kokonaisuudessaan
Lisätiedot58131 Tietorakenteet ja algoritmit (syksy 2015) Toinen välikoe, malliratkaisut
Tietorakenteet ja algoritmit (syksy 0) Toinen välikoe, malliratkaisut. (a) Alussa puu näyttää tältä: Lisätään 4: 4 Tasapaino rikkoutuu solmussa. Tehdään kaksoiskierto ensin oikealle solmusta ja sitten
Lisätiedot58131 Tietorakenteet ja algoritmit Uusinta- ja erilliskoe ratkaisuja (Jyrki Kivinen)
58131 Tietorakenteet ja algoritmit Uusinta- ja erilliskoe 12.9.2018 ratkaisuja (Jyrki Kivinen) 1. [10 pistettä] Iso-O-merkintä. (a) Pitääkö paikkansa, että n 3 + 5 = O(n 3 )? Ratkaisu: Pitää paikkansa.
LisätiedotMiten käydä läpi puun alkiot (traversal)?
inääripuut ieman lisää aidon binääripuun ominaisuuksia lehtisolmuja on yksi enemmän kuin sisäsolmuja inääripuut tasolla d on korkeintaan 2 d solmua pätee myös epäaidolle binääripuulle taso 0: 2 0 = 1 solmu
LisätiedotAlgoritmit 1. Luento 6 Ke Timo Männikkö
Algoritmit 1 Luento 6 Ke 25.1.2017 Timo Männikkö Luento 6 Järjestetty lista Listan toteutus dynaamisesti Linkitetyn listan operaatiot Vaihtoehtoisia listarakenteita Puurakenteet Binääripuu Järjestetty
Lisätiedot14 Tasapainotetut puurakenteet
TIE-20100 Tietorakenteet ja algoritmit 308 14 Tasapainotetut puurakenteet Binäärihakupuu toteuttaa kaikki dynaamisen joukon operaatiot O(h) ajassa Kääntöpuolena on, että puu voi joskus litistyä listaksi,
LisätiedotOhjelmoinnin jatkokurssi, kurssikoe 28.4.2014
Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Kirjoita jokaiseen palauttamaasi konseptiin kurssin nimi, kokeen päivämäärä, oma nimi ja opiskelijanumero. Vastaa kaikkiin tehtäviin omille konsepteilleen.
Lisätiedot3. Binääripuu, Java-toteutus
3. Binääripuu, Java-toteutus /*-------------------------------------------------------------/ / Rajapinta SearchTree: binäärisen hakupuun käsittelyrajapinta / / Metodit: / / void insert( Comparable x );
LisätiedotA274101 TIETORAKENTEET JA ALGORITMIT
A274101 TIETORAKENTEET JA ALGORITMIT PERUSTIETORAKENTEET LISTA, PINO, JONO, PAKKA ABSTRAKTI TIETOTYYPPI Tietotyyppi on abstrakti, kun se on määritelty (esim. matemaattisesti) ottamatta kantaa varsinaiseen
Lisätiedot58131 Tietorakenteet ja algoritmit (kevät 2013) Kurssikoe 1, , vastauksia
58131 Tietorakenteet ja algoritmit (kevät 2013) Kurssikoe 1, 25.2.2013, vastauksia 1. (a) O-merkintä Ω-merkintä: Kyseessä on (aika- ja tila-) vaativuuksien kertalukumerkinnästä. O-merkintää käytetään ylärajan
Lisätiedot58131 Tietorakenteet Erilliskoe , ratkaisuja (Jyrki Kivinen)
58131 Tietorakenteet Erilliskoe 11.11.2008, ratkaisuja (Jyrki Kivinen) 1. (a) Koska halutaan DELETEMAX mahdollisimman nopeaksi, käytetään järjestettyä linkitettyä listaa, jossa suurin alkio on listan kärjessä.
LisätiedotOhjelmointi 2 / 2010 Välikoe / 26.3
Ohjelmointi 2 / 2010 Välikoe / 26.3 Välikoe / 26.3 Vastaa neljään (4) tehtävään ja halutessa bonustehtäviin B1 ja/tai B2, (tuovat lisäpisteitä). Bonustehtävät saa tehdä vaikkei olisi tehnyt siihen tehtävään
LisätiedotKompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma
1 Kompositio Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma 1 Mikä kompositio on? Tili - : String - : double 1 1 Kayttoraja
LisätiedotB + -puut. Kerttu Pollari-Malmi
B + -puut Kerttu Pollari-Malmi Tämä monista on alunperin kirjoitettu sksn 2005 kurssille osittain Luukkaisen ja Nkäsen vanhojen luentokalvojen pohjalta. Maaliskuussa 2010 pseudokoodiesits on muutettu vastaamaan
LisätiedotOhjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia.
Ohjelmointitaito (ict1td002, 12 op) Kevät 2008 Raine Kauppinen raine.kauppinen@haaga-helia.fi 1. Java-ohjelmoinnin alkeita Tietokoneohjelma Java-kieli ja Eclipse-ympäristö Java-ohjelma ja ohjelmaluokka
LisätiedotYleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.
2. Taulukot 2.1 Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.2 Yleistä
Lisätiedot1.1 Tavallinen binäärihakupuu
TIE-20100 Tietorakenteet ja algoritmit 1 1 Puurakenteet http://imgur.com/l77fy5x Tässä luvussa käsitellään erilaisia yleisiä puurakenteita. ensin käsitellään tavallinen binäärihakupuu sitten tutustutaan
LisätiedotTietorakenteet, laskuharjoitus 4,
Tietorakenteet, laskuharjoitus 4, 7. 11.2 1. Tehtävässä piti toteuttaa jono käyttäen Javan valmiita LinkedList- sekä ArrayListtietorakenteita sekä tutkia niiden tehokkuutta. Kuvassa 1 näkyvät suoritettujen
LisätiedotJAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?
JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: http://java.sun.com/docs/books/tutorial/index.html Vesterholm, Kyppö: Java-ohjelmointi,
LisätiedotSisältö. 2. Taulukot. Yleistä. Yleistä
Sisältö 2. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.1 2.2 Yleistä
LisätiedotSisältö. 22. Taulukot. Yleistä. Yleistä
Sisältö 22. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 22.1 22.2 Yleistä
LisätiedotTietorakenteet, laskuharjoitus 7,
Tietorakenteet, laskuharjoitus 7, 14.-19.3. 1. "Tira meets software engineering, osa 1" Lue luentomonisteen kalvot 233-236. Toteuta luokka Opiskelijarekisteri joka tarjoaa seuraavat palvelut: opiskelijoiden
LisätiedotAlgoritmit 1. Luento 5 Ti Timo Männikkö
Algoritmit 1 Luento 5 Ti 24.1.2017 Timo Männikkö Luento 5 Järjestetty lista Järjestetyn listan operaatiot Listan toteutus taulukolla Binäärihaku Binäärihaun vaativuus Algoritmit 1 Kevät 2017 Luento 5 Ti
Lisätiedot18. Abstraktit tietotyypit 18.1
18. Abstraktit tietotyypit 18.1 Sisällys Johdanto abstrakteihin tietotyyppeihin. Pino ja jono. Linkitetty lista. Pino linkitetyllä listalla toteutettuna. 18.2 Johdanto Javan omat tietotyypit ovat jo tuttuja:
LisätiedotALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012
ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012 1.1. (a) Jaettava m, jakaja n. Vähennetään luku n luvusta m niin kauan kuin m pysyy ei-negatiivisena. Jos jäljelle jää nolla, jaettava oli tasan jaollinen. int m,
LisätiedotOhjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen
Ohjelmointitaito (ict1td002, 12 op) Kevät 2009 Raine Kauppinen raine.kauppinen@haaga-helia.fi 1. Java-ohjelmoinnin alkeita Tietokoneohjelma Java-kieli ja Eclipse-kehitysympäristö Java-ohjelma ja luokka
LisätiedotAlgoritmit 2. Luento 4 To Timo Männikkö
Algoritmit 2 Luento 4 To 21.3.2019 Timo Männikkö Luento 4 Hajautus Yhteentörmäysten käsittely Avoin osoitteenmuodostus Hajautusfunktiot Puurakenteet Solmujen läpikäynti Algoritmit 2 Kevät 2019 Luento 4
LisätiedotSisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto
Sisällys 18. bstraktit tietotyypit Johdanto abstrakteihin tietotyyppeihin. Pino ja jono. Linkitetty lista. Pino linkitetyllä listalla toteutettuna. 18.1 18.2 Johdanto Javan omat tietotyypit ovat jo tuttuja:
LisätiedotMetodien tekeminen Javalla
1 Metodien tekeminen Javalla Mikä metodi on? Metodin syntaksi Metodi ja sen kutsuminen Parametreista Merkkijonot ja metodi Taulukot ja metodi 1 Mikä metodi on? Metodilla toteutetaan luokkaan toiminnallisuutta.
LisätiedotKaksiloppuinen jono D on abstrakti tietotyyppi, jolla on ainakin seuraavat 4 perusmetodia... PushFront(x): lisää tietoalkion x jonon eteen
Viimeksi käsiteltiin pino: lisäys ja poisto lopusta jono: lisäys loppuun, poisto alusta Pinon ja jonon yleistävä tietorakenne: kaksiloppuinen jono alkion lisäys/poisto voidaan kohdistaa jonon alkuun tai
LisätiedotRajapinta (interface)
1 Rajapinta (interface) Mikä rajapinta on? Rajapinta ja siitä toteutettu luokka Monimuotoisuus ja dynaaminen sidonta Rajapinta vs periytyminen 1 Mikä rajapinta on? Rajapintoja käytetään, kun halutaan määritellä
LisätiedotJava-kielen perusteet
Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, literaalivakio, nimetty vakio Tiedon merkkipohjainen tulostaminen 1 Tunnus Java tunnus Java-kirjain Java-numero
LisätiedotTietorakenteet, laskuharjoitus 4,
Tietorakenteet, laskuharjoitus 4, 9. 12.2 1. Tehtävässä piti toteuttaa jono käyttäen Javan valmiita LinkedList- sekä ArrayListtietorakenteita sekä tutkia niiden tehokkuutta. Kuvassa 1 näkyvät suoritettujen
LisätiedotOpintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Tietorakenneluokkia 2: HashMap, TreeMap
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Tietorakenneluokkia 2: HashMap, TreeMap Tietorakenneluokkia ja -rajapintoja Java tarjoaa laajan kokoelman tietorakennerajapintoja ja - luokkia. Aiemmin
LisätiedotTietorakenteet, laskuharjoitus 1,
Tietorakenteet, laskuharjoitus 1, 19.-22.1 Huom: laskarit alkavat jo ensimmäisellä luentoviikolla 1. Taustaa http://wiki.helsinki.fi/display/mathstatkurssit/matukurssisivu Halutaan todistaa, että oletuksesta
LisätiedotOhjelmointi 2 / 2008 Välikoe / Pöytätestaa seuraava ohjelma.
Välikoe / 20.3 Vastaa neljään (4) tehtävään. Jos vastaat 5:een, 4 huonointa arvostellaan. Kunkin tehtävän vastaus eri konseptille. 1. Pöytätesti Pöytätestaa seuraava ohjelma. Tutki ohjelman toimintaa pöytätestillä
LisätiedotTietorakenteet, laskuharjoitus 2,
Tietorakenteet, laskuharjoitus, 6.-9.1 Muista TRAKLA-tehtävien deadline 31.1. 1. Tarkastellaan ensin tehtävää yleisellä tasolla. Jos funktion T vaativuusluokka on O(f), niin funktio T on muotoa T (n) =
Lisätiedot4. Joukkojen käsittely
4 Joukkojen käsittely Tämän luvun jälkeen opiskelija osaa soveltaa lomittuvien kasojen operaatioita tuntee lomittuvien kasojen toteutuksen binomi- ja Fibonacci-kasoina sekä näiden totetutusten analyysiperiaatteet
LisätiedotTietorakenteet ja algoritmit
Tietorakenteet ja algoritmit Rekursio Rekursion käyttötapauksia Rekursio määritelmissä Rekursio ongelmanratkaisussa ja ohjelmointitekniikkana Esimerkkejä taulukolla Esimerkkejä linkatulla listalla Hanoin
Lisätiedot811312A Tietorakenteet ja algoritmit, , Harjoitus 5, Ratkaisu
1312A Tietorakenteet ja algoritmit, 2016-2017, Harjoitus 5, Ratkaisu Harjoituksen aihe ovat hash-taulukot ja binääriset etsintäpuut Tehtävä 5.1 Tallenna avaimet 10,22,31,4,15,28,17 ja 59 hash-taulukkoon,
LisätiedotTietorakenteet (syksy 2013)
Tietorakenteet (syksy 2013) Harjoitus 1 (6.9.2013) Huom. Sinun on osallistuttava perjantain laskuharjoitustilaisuuteen ja tehtävä vähintään kaksi tehtävää, jotta voit jatkaa kurssilla. Näiden laskuharjoitusten
Lisätiedot1 Puu, Keko ja Prioriteettijono
TIE-20100 Tietorakenteet ja algoritmit 1 1 Puu, Keko ja Prioriteettijono Tässä luvussa käsitellään algoritmien suunnitteluperiaatetta muunna ja hallitse (transform and conquer) Lisäksi esitellään binääripuun
LisätiedotLuku 4. Tietorakenteet funktio-ohjelmoinnissa. 4.1 Äärelliset kuvaukset
Luku 4 Tietorakenteet funktio-ohjelmoinnissa Koska funktio-ohjelmoinnissa ei käytetä tuhoavaa päivitystä (sijoituslausetta ja sen johdannaisia), eivät läheskään kaikki valtavirtaohjelmoinnista tutut tietorakenteet
LisätiedotTIETORAKENTEET JA ALGORITMIT
TIETORAKENTEET JA ALGORITMIT Timo Harju 1999-2004 1 typedef link List; /* Vaihtoehtoisia nimiä */ typedef link Stack; /* nodepointterille */ typedef link Queue typedef struct node Node; /* itse nodelle
LisätiedotHarjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:
Harjoitus 7 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: class Lintu //Kentät private int _siivenpituus; protected double _aivojenkoko; private bool _osaakolentaa; //Ominaisuudet public int
LisätiedotLuokan sisällä on lista
1 Luokan sisällä on lista Luokan sisällä lista Listan sisältävä luokka Konstruktorit get-metodi Lista muissa metodeissa addxx-metodi Yksinkertainen pääohjelma Kertauksen List-luokan metodeja 1 Luokan sisällä
LisätiedotAlgoritmit 2. Luento 4 Ke Timo Männikkö
Algoritmit 2 Luento 4 Ke 22.3.2017 Timo Männikkö Luento 4 Hajautus Yhteentörmäysten käsittely Avoin osoitteenmuodostus Hajautusfunktiot Puurakenteet Solmujen läpikäynti Algoritmit 2 Kevät 2017 Luento 4
LisätiedotKoe ma 28.2 klo salissa A111, koeaika kuten tavallista 2h 30min
Koe Koe ma 28.2 klo 16.00-19 salissa A111, koeaika kuten tavallista 2h 30min Kokeessa saa olla mukana A4:n kokoinen kaksipuolinen käsin tehty, itse kirjoitettu lunttilappu Neuvontapaja (Joel ja Nyman)
Lisätiedot7. Oliot ja viitteet 7.1
7. Oliot ja viitteet 7.1 Sisällys Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen. Viitteiden sijoitus. Viitteiden vertailu. Varautuminen null-arvoon. Viite metodin paluuarvona. Viite metodin
Lisätiedot13. Loogiset operaatiot 13.1
13. Loogiset operaatiot 13.1 Sisällys Loogiset operaatiot AND, OR, XOR ja NOT. Operaatioiden ehdollisuus. Bittioperaatiot. Loogiset operaatiot ohjausrakenteissa. Loogiset operaatiot ja laskentajärjestys.
Lisätiedot5. Keko. Tietorakenne keko eli kasa (heap) on tehokas toteutus abstraktille tietotyypille prioriteettijono, jonka operaatiot ovat seuraavat:
5. Keko Tietorakenne keko eli kasa (heap) on tehokas toteutus abstraktille tietotyypille prioriteettijono, jonka operaatiot ovat seuraavat: Insert(S, x): lisää avaimen x prioriteettijonoon S Maximum(S):
LisätiedotTietorakenteet. JAVA-OHJELMOINTI Osa 5: Tietorakenteita. Sisällys. Merkkijonot (String) Luokka String. Metodeja (public)
Tietorakenteet JAVA-OHJELMOINTI Osa 5: Tietorakenteita Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto Olioita ja tietoja voidaan organisoida määrämuotoisiksi tietorakenteiksi Hyödyllisiä
LisätiedotOlion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();
Sisällys 7. Oliot ja viitteet Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen. Viitteiden käsittelyä: sijoitus, vertailu ja varautuminen null-arvoon. Viite metodin paluuarvona.. 7.1 7.2 Olio
Lisätiedot1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa:
Tietorakenteet, laskuharjoitus 10, ratkaisuja 1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa: SamaLuku(T ) 2 for i = 1 to T.length 1 3 if T [i] == T [i + 1] 4 return True 5 return
Lisätiedot811312A Tietorakenteet ja algoritmit, 2014-2015, Harjoitus 7, ratkaisu
832A Tietorakenteet ja algoritmit, 204-205, Harjoitus 7, ratkaisu Hajota ja hallitse-menetelmä: Tehtävä 7.. Muodosta hajota ja hallitse-menetelmää käyttäen algoritmi TULOSTA_PUU_LASKEVA, joka tulostaa
LisätiedotTietorakenteet, laskuharjoitus 10, ratkaisuja. 1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa:
Tietorakenteet, laskuharjoitus 10, ratkaisuja 1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa: SamaLuku(T ) 2 for i = 1 to T.length 1 3 if T [i] = = T [i + 1] 4 return True 5
LisätiedotLuokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.
1 Luokka Murtoluku uudelleen Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista. Sievennettäessä tarvitaan osoittajan ja nimittäjän suurin yhteinen tekijä (syt).
Lisätiedot7. Tasapainoitetut hakupuut
7. Tasapainoitetut hakupuut Tässä luvussa jatketaan järjestetyn sanakirjan tarkastelua esittämällä kehittynyt puutietorakenne. Luvussa 7.1. esitetään monitiehakupuun käsite. Se on järjestetty puu, jonka
Lisätiedotlähtokohta: kahden O(h) korkuisen keon yhdistäminen uudella juurella vie O(h) operaatiota vrt. RemoveMinElem() keossa
Kekolajittelu Prioriteettijonolla toteutettu keko InsertItem ja RemoveMinElem: O(log(n)) Lajittelu prioriteettijonolla: PriorityQueueSort(lajiteltava sekvenssi S) alusta prioriteettijono P while S.IsEmpty()
Lisätiedot58131 Tietorakenteet ja algoritmit (syksy 2015)
58131 Tietorakenteet ja algoritmit (syksy 2015) Harjoitus 2 (14. 18.9.2015) Huom. Sinun on tehtävä vähintään kaksi tehtävää, jotta voit jatkaa kurssilla. 1. Erään algoritmin suoritus vie 1 ms, kun syötteen
LisätiedotAlgoritmit 2. Luento 6 To Timo Männikkö
Algoritmit 2 Luento 6 To 28.3.2019 Timo Männikkö Luento 6 B-puun operaatiot Nelipuu Trie-rakenteet Standarditrie Pakattu trie Algoritmit 2 Kevät 2019 Luento 6 To 28.3.2019 2/30 B-puu 40 60 80 130 90 100
LisätiedotJava-kielen perusteita
Java-kielen perusteita valintalauseet 1 Johdantoa kontrollirakenteisiin Tähän saakka ohjelmissa on ollut vain peräkkäisyyttä eli lauseet on suoritettu peräkkäin yksi kerrallaan Tarvitsemme myös valintaa
LisätiedotRinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti
Rinnakkaisohjelmointi kurssi Opintopiiri työskentelyn raportti Opintopiiri: Heikki Karimo, Jesse Paakkari ja Keijo Karhu Päiväys: 15.12.2006 Ohjelmointitehtävä C i C i : Säikeet ja kriittisen vaiheen kontrollointi
Lisätiedotpublic static void main (String [] args)
HAAGA-HELIA OHJELMOINTI 1(5) OHJELMALUOKKA Ohjelma-luokan käynnistää public static void main (String [] args) main-metodiin voi koodata 1. ohjelman logiikan tai 2. luoda ohjelma-olion ja kutsua metodia,
Lisätiedot6. Hakupuut. Hakupuu (engl. search tree) on listaa huomattavasti edistyneempi tapa toteuttaa abstrakti tietotyyppi joukko
6. Hakupuut Hakupuu (engl. search tree) on listaa huomattavasti edistyneempi tapa toteuttaa abstrakti tietotyyppi joukko Puurakenteelle on tietojenkäsittelyssä myös muuta käyttöä, esim. algoritmin suoritusajan
LisätiedotTietorakenteet ja algoritmit - syksy 2015 1
Tietorakenteet ja algoritmit - syksy 2015 1 Tietorakenteet ja algoritmit - syksy 2015 2 Tietorakenteet ja algoritmit Johdanto Ari Korhonen Tietorakenteet ja algoritmit - syksy 2015 1. JOHDANTO 1.1 Määritelmiä
LisätiedotA TIETORAKENTEET JA ALGORITMIT KORVAAVAT HARJOITUSTEHTÄVÄT 3, DEADLINE KLO 12:00
A274101 TIETORAKENTEET JA ALGORITMIT KORVAAVAT HARJOITUSTEHTÄVÄT 3, DEADLINE 9.2.2005 KLO 12:00 PISTETILANNE: www.kyamk.fi/~atesa/tirak/harjoituspisteet-2005.pdf Kynätehtävät palautetaan kirjallisesti
Lisätiedot811312A Tietorakenteet ja algoritmit II Perustietorakenteet
811312A Tietorakenteet ja algoritmit 2017-2018 II Perustietorakenteet Sisältö 1. Johdanto 2. Pino 3. Jono 4. Lista 811312A TRA, Perustietorakenteet 2 II.1. Johdanto Tietorakenne on tapa, jolla algoritmi
LisätiedotPino S on abstrakti tietotyyppi, jolla on ainakin perusmetodit:
Pino (stack) Pino: viimeisenä sisään, ensimmäisenä ulos (LIFO, Last In, First Out) -tietorakenne kaksi perusoperaatiota: alkion lisäys pinon päälle (push), ja päällimmäisen alkion poisto (pop) Push(alkio)
LisätiedotListarakenne (ArrayList-luokka)
Listarakenne (ArrayList-luokka) Mikä on lista? Listan määrittely ArrayList-luokan metodeita Listan läpikäynti Listan läpikäynti indeksin avulla Listan läpikäynti iteraattorin avulla Listaan lisääminen
Lisätiedot