Toteutusdokumentti: Huffman-koodaus

Koko: px
Aloita esitys sivulta:

Download "Toteutusdokumentti: Huffman-koodaus"

Transkriptio

1 hyväksymispäivä arvosana arvostelija Toteutusdokumentti: Huffman-koodaus Tuomas Husu Helsinki Tietorakenteiden harjoitustyö, kesä Ohjaaja Tomi Jylhä-Ollila. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

2 Sisältö i 1 Johdanto 1 2 Käyttöohje Ohjelman kääntäminen Ohjelman suorittaminen Tiedoston pakkaaminen Tiedoston purkaminen Ohjeen tulostaminen Laitteistovaatimukset Toteutus 4 4 Testaus Yksikkötestaus Toiminnan testaus Generoidut testiaineistot Vertailu muihin pakkausohjelmiin Puutteet, rajoitukset ja parannusehdotukset 7 Lähteet 8 Liitteet 1 Tehtävänanto 2 Tuntikirjanpito

3 1 Johdanto 1 Huffman-koodaus on 1950-luvulta peräisin oleva häviötön ja yleiskäyttöinen tiedontiivistystekniikka. Tietokoneiden käsitellessä merkkejä (kirjaimet, numerot, välimerkit, erikoismerkit jne.) normaalisti kiinteänpituisina bittijonoina, vaatii jokainen merkki esiintymistiheydestään riippumatta saman verran tilaa. Kahdeksan bittiä (tavu) on tavanomainen yhden merkin koodin pituus, joten esimerkiksi sadan merkin mittaisen tekstin koodaamiseen tarvittaisiin 800 bittiä (l. 100 tavua). Erilaisten merkkien esiintymistiheyden vaihtelua voidaan käyttää hyväksi tietoa tiivistettäessä (ja siten saavuttaa säästöä esimerkiksi tiedonsiirrossa ja talletuksessa). Huffman-koodausta käytettäessä yleisimmät (l. useiten esiintyvät) merkit korvataan mahdollisimman lyhyillä bittijonoilla, kun taas harvinaisemmat (l. harvemmin esiintyvät) esitetään pitemmillä jonoilla. Näin tieto saadaan esitettyä kokonaisuudessaan pienemmällä bittimäärällä välttämällä tarpeetonta toistoa. Ennen alkuperäisten tavujen korvaamista lyhyemmillä koodeilla, pitää merkeille johtaa sopivat bittijonoesitykset. Huffman-koodauksessa koodit muodostetaan käyttäen Huffman-puita, jotka muodostetaan merkkien lukumäärätaulukon (ts. esiintymistiheyden) perusteella. Jokaiselle merkille muodostetaan lehtisolmu, johon on liitetty sekä itse merkki että ko. merkin esiintymismäärä. Huffman-puun rakentaminen aloitetaan kahdesta pienimmän esiintymismäärän omaavasta solmuista (jotka eivät ole jo jonkun solmun lapsia) ja niille luodaan uusi yhteinen vanhempi, ja vanhemman esiintymislukumääräksi asetetaan lapsisolmujen esiintymislukumäärien summa. Solmujen lisäämistä esiintymismääräjärjestyksessä jatketaan, kunnes kaikki solmut sisältävä yhtenäinen puu on luotu. Koodi riippuu solmun sijainnista Huffman-puussa siten, että vasemmat haarat puussa vastaa bittiä 0 ja oikeat haarat bittiä 1. Liikuttaessa puussa kerran vasemmalle ja kerran oikealle halutun merkin löytääksemme, on ko. merkin koodi on Käyttöohje Ohjelman suorittaminen onnistuu siirtymällä ohjelmatiedostot sisältävään hakemistoon ja antamalla oheiset komennot. Oltaessa tekemisissä Java-tiedostojen kanssa, on komentojen kirjoitusasun kanssa oltava tarkkana.

4 2 2.1 Ohjelman kääntäminen # javac *.java Kuva 1: Ohjelman kääntäminen. 2.2 Ohjelman suorittaminen Ohjelma käynnistetään komennolla java Huffman <parametrit>. Parametreina annettavan lähde- ja kohdetiedostot voivat sijaita joko suoritushakemistossa (oletus) tai jossain muualla, jolloin tiedoston nimi on annettava polkuineen Tiedoston pakkaaminen # java Huffman -pakkaa <tiedosto> [-t <kohdetiedosto>] Kuva 2: Tiedoston pakkaaminen. Ilman kohdetiedoston määrittelyä pakattu tiedosto tallennetaan.huff-päätteiseen tiedostoon (l. <lähdetiedosto>.huff).

5 Tiedoston purkaminen # java Huffman -pura <tiedosto> [-t <kohdetiedosto>] Kuva 3: Tiedoston purkaminen. Ilman kohdetiedoston määrittelyä ohjelma olettaa lähdetiedoston olevan.huff-päätteinen ja kohdetiedosto luodaan poistamalla.huff-pääte. Purettaessa jokin muu kuin.huff-päätteinen tiedosto, täytyy kohdetiedosto määritellä -t -parametrilla Ohjeen tulostaminen # java Huffman --help Yksityiskohtainen käyttöohje tulostetaan tyypillisillä avunpyyntöparametreilla, kuten -help, -h ja /?. Suppeampi käyttöohje tulostetaan käynnistettäessä ohjelma ilman parametreja (l. java Huffman) tai virheellisillä parametreilla. Kuva 4: Yksityiskohtainen ohje.

6 4 2.3 Laitteistovaatimukset Ohjelma tarvitsee toimiakseen Java-virtuaalikoneen. Virtuaalikoneita on saatavilla lähes kaikkiin laitteisto- ja käyttöjärjestelmäympäristöihin. Java-virtuaalikoneen viimeisin versio (tällä hetkellä ) on ladattavissa ilmaiseksi verkosta osoitteesta 3 Toteutus Harjoitustyö on kirjoitettu Java-kielellä ja se koostuu kuudesta eri luokasta. Huffman on pääohjelmaluokka. Luokka saa komentoriviparametrina halutun toimintatavan (pakkaus, purku tai ohje) ja pakattavan tai purettavan tiedoston nimen sekä optiona tiedoston, johon käsitelty tiedosto tallennetaan. Tiedosto hoitaa Bitit-luokan kanssa tiedoston luku- ja kirjoitusoperaatiot. Javan BufferedInputStream- ja BufferedOutputStream -luokkien avulla isotkin lukuja kirjoitusoperaatiot sujuvat joutuisasti. Tiedosto-luokka luo tiedoston alkuun otsakkeen, johon se kirjaa jokaisen merkin esiintyvyyden tiedostossa (l. bitit 0-255, esiintyvyys kyllä [1] tai ei [0]) sekä esiintymistiheydet. Bitit avustaa Tiedosto-luokkaa bittien käsittelyssä. Bitit- ja Tiedosto-luokkien bittimuunnosmetodien (bitstobyte ja bytetobits) toteutus on vohkittu Esa Junttilan bittiohjeesta [Jun05]. Keko luo O(logn) -ajassa toimivan solmuista koostuvan keon. Vaikutteita toteutukseen imetty Arto Wiklan kurssimateriaalin javakielisistä esimerkeistä [Wik01]. Puu hoitaa pakattaessa varsinaisen Huffman-puun rakentamisen sekä rekursiivisen läpikäynnin. Tiedostoa purettaessa käydään läpi rekursiosta hieman poikkeava purku-aksessori. Huffman-puun rakentaminen on toteutettu käyttäen parametrina annettavaa lehtikekoa, joka on jo valmiiksi järjestetty minimikeoksi, sekä sisäsolmukekoa, johon lisätään aina solmujen vanhempi. Toteutus olisi yhtä lailla voinut perustua jonoihin tai taulukkoon, mutta ao. tapauksessa päädyttiin kahden keon (+ viitteet lapsisolmuihin) ratkaisuun. Solmu sisältää aksessorit lapsien kertomiseen sekä merkin ja tiheyden lisäämiseen.

7 4 Testaus Yksikkötestaus Ajanpuutteen vuoksi metoditasoinen koodin oikean toiminnan osoittava yksikkötestaus jäi alunperin suunniteltua vähemmälle, ja vähäinen testausaika projektin loppuvaiheessa käytettiin kokonaisuuden oikean toiminnan osoittamiseen. Metodit testattiin luontivaiheessa sekalaisilla parametrikombinaatioilla ja oikeasta toiminnasta vakuututtua siirryttiin eteenpäin. Sisäänrakennetut yksikkötestit olisivat epäilemättä olleet tarpeen jatkettaessa ohjelman kehitystä, mutta pienehkön ja kertaluontoisen projektin kyseessä ollen tyydyttiin kädestä suuhun -tyyppiseen yksikkötestaukseen. 4.2 Toiminnan testaus Ohjelman toimintaa kokonaisuutena on testattu erityyppisillä ja -kokoisilla syötetiedostoilla sekä verrattu ohjelman toimintaa yleisimpiin pakkausohjelmiin Generoidut testiaineistot Testiaineistoja ohjelman toiminnan testaamiseksi on tuotettavissa esimerkiksi linuxkomennolla dd. Käyttämällä syötteenä /dev/zeroa, voi haluamansa kokoisen, testaamiseen käytettävän tiedoston täyttää NULL-merkeillä ja testata ohjelman selviytymistä vain yhtä merkkiä sisältävän tiedoston pakkaamisesta. Esimerkiksi 1000-kilotavuinen, pelkkiä NULL-merkkejä sisältävä testiaineisto tuotetaan siis komennolla dd if=/dev/zero of=tiedosto_zero bs=1k count=1000 Vastakohtana edelliselle, satunnaisia merkkejä sisältävän vastaavan aineiston luonti onnistuu käyttämällä syötteenä vaikkapa /dev/urandom -satunnaislukugeneraattoria eli komennolla dd if=/dev/urandom of=tiedosto_random bs=1k count=1000

8 6 Kuva 5: 1000-kilotavuisten testiaineistojen luonti ja pakkaantumisen testaus. Sisältö Koko (t) Pakattu koko (t) Pakkaus-% Yhtä merkkiä ,5 Satunnainen ,1 Taulukko 1: Pakkaustestin tulokset. Kuvaa ja taulukkoa tarkastelemalla huomaa yhtä merkkiä sisältäneen tiedoston pakkautuneen noin kahdeksasosaan ( 1 ) alkuperäisestä koostaan. Yksi ainoa tiedostossa 8 esiintyvä merkki voidaan korvata yksibittisellä koodilla, jolloin pakkautuminen kahdeksasosaan on ennustettavissa ollut tulos. Paljon erilaisia merkkejä sisältävä satunnaistiedosto ei sen sijaan pakkaannu lainkaan, vaan vie jopa hieman enemmän tilaa pakattuna. Merkkien esiintymistiheyden vaihteluun perustuva Huffman-koodaus ei sovellu merkeiltään heterogeenisen aineiston pakkaamiseen, kuten eivät juuri muutkaan tiedon tiivistämiseen käytetyt tekniikat. Täysin satunnaisia sekä yhtä ainoaa merkkiä sisältävät tiedostot ovat Huffmankoodauksen kannalta ns. ääriaineistot. Muunlaiset aineistot sijoittuvat pakkautuvuudessaan jonnekin ääripäiden välille.

9 Vertailu muihin pakkausohjelmiin Oheisessa, hieman kiireellä tuotetussa pylväsdiagrammissa on esitetty BMP-kuvatiedoston (pakkaamaton bittikarttakuva) ja MP3-audiotiedoston (pakattu häviöllinen MPEG- 1 Audio Layer 3) pakkautuminen käyttäen Huffman-koodausta, Zip 2.31:ä (Linux), WinRAR 3.80:aa (Windows) sekä bzip :ää (Linux). MVBAR chart of PAKKAUS BMP MP3 Alkuperäinen Huffman RAR ZIP BZIP2 Kuva 6: BMP-kuvatiedoston ja MP3-äänitiedoston pakkautuminen. Häviötön, paljon turhaa informaatiota (tässä tapauksessa väriltään valkoisia pikseleitä) sisältävä bittikarttakuva pakkautuu odotetusti hyvin kaikilla menetelmillä; parhaiten bzip2:lla (pakkaus 75 %) ja heikoiten Huffmanilla (pakkaus 56 %). Häviöllisesti pakattu MP3-tiedosto ei sen sijaan pakkaudu juuri lainkaan millään pakkausmenetelmistä. Jälleen paras on bzip2 (pakkaus 2 %) ja heikoin Huffman (pakkaus 0,2 %), mutta erot ovat pieniä. Testaukseen käytetyt tiedostot (roope.bmp ja grandiosa.mp3) ovat ladattavissa verkosta osoitteesta 5 Puutteet, rajoitukset ja parannusehdotukset Ohjelma ei tarkista tiedostoja kirjoittaessaan onko samanniminen tiedosto jo olemassa, ja ylikirjoittaa tarpeen tullen kyselemättä. Ohjelmaa voisi kehittää lisäämällä siihen tarkistuksen ja esimerkiksi vahvistuspyynnön ( Haluatko korvata? Kyllä

10 8 / Ei ) löydettäessä samanniminen tiedosto. Vuorovaikutteinen käyttöliittymä voisi myös pyytää syöttämään uuden tiedostonimen, jos käyttäjä ei haluaisi ylikirjoittaa olemassa olevaa tiedostoa. Ohjelma olisi monikäyttöisempi, jos sillä voisi pakata useita tiedostoja yhdellä komennolla (esim. java Huffman -pakkaa *.txt) omiin tiedostoihinsa. Samoin useiden tiedostojen (ja hakemistorakenteiden) pakkaus yhteen tiedostoon (esim. java Huffman -pakkaa *.txt -t tekstit.huff) lisäisi ohjelman käytettävyyttä runsaasti. Ohjelma voisi myös pakkauksen suoritettuaan kertoa, montako prosenttia pienempään tilaan se sai lähdeaineiston sullottua. Kuvatun kaltaisten ominaisuuksien toteuttaminen ei varsinaisesti palvellut tietorakenneharjoitustyön tavoitteita, joten ne rajautuivat pois jo suunnitteluvaiheessa. Nykyaikaisiin pakkausohjelmiin tottuneen on helppo keksiä lukemattomia parannuksia ohjelmaan; edellä mainittujen lisäksi lähdetiedostojen poisto, luodun paketin salasanasuojaus, pakkaus useaan määrätyn kokoiseen tiedostoon, graafinen käyttöliittymä, pakkausprosessin edistymisen visuaalinen esittäminen, kommenttien lisääminen pakattuun tiedostoon sekä monet muut ovat varsin yleisiä ja monien tarvitsemia toimintoja. Lähteet CLR01 Jun05 Mac03 Cormen, T. H., Leiserson, C. E., Rivest, R. L. ja Stein, C., Introduction to Algorithms. MIT Press, toinen painos, Junttila, E., Ohje bittien käsittelyyn, fi/u/ejunttil/opetus/tiraharjoitus/bittiohje.txt. [ ] MacKay, D. J. C. Information Theory, Inference, and Learning Algorithms, luku Symbol Codes, sivut Cambridge University Press, [Myös itila/book.html]. Wik01 Wikla, A., Kekoja eli prioriteettijonoja, helsinki.fi/i/wikla/tira/sisalto/5/keko.html. [ ]

11 Liite 1. Tehtävänanto Pakkausohjelma: Huffman Tehtävänä on toteuttaa yksinkertainen pakkausohjelma, joka lukee yhden tiedoston ja pakkaa sen toiseen tiedostoon, sekä sitä vastaava purkuohjelma. Huffman-koodauksessa pakattavaa dataa käsitellään yksi merkki kerrallaan. Kukin merkki koodataan bittijonoksi, joka on sitä lyhyempi, mitä useammin merkki esiintyy datassa. Merkkien Huffman-koodit määritellään muodostamalla binääripuu seuraavasti. Aluksi jokainen merkki on oma puunsa. Niin kauan kuin puita on vähintään kaksi, otetaan ne kaksi puuta, joissa olevia merkkejä esiintyy datassa yhteensä vähiten, ja yhdistetään nämä uudeksi puuksi liittämällä ne uuden solmun alipuiksi. Lopullisessa puussa merkkejä vastaavat solmut ovat puun lehtiä, ja merkin koodi määräytyy sen sijainnin mukaan niin, että juuresta lähdettäessä vasempaan lapseen siirtyminen vastaa 0-bittiä ja oikeaan lapseen siirtyminen 1-bittiä. Mitä yleisempi merkki on, sitä lähempänä juurta se puussa on ja sen lyhempi koodi sillä siis on. Jos tiedosto halutaan pakata yhdellä läpiluvulla tai merkkien esiintymistiheyksiä ei haluta tallentaa mukaan pakattuun tiedostoon, voidaan käyttää adaptiivista Huffmankoodausta. Tällöin puuta päivitetään jokaisen luetun merkin jälkeen. Lisätietoja Huffman-koodauksesta löytyy esimerkiksi Tietorakenteet-kurssiltakin tutusta kirjasta Cormen et al: Introduction to Algorithms tai kurssilta Merkkijonomenetelmät. Apua adaptiivisen koodauksen toteuttamiseen löytyy verkosta etsimällä. Myös Wikipediaan kannattaa tutustua. Lähde

12 Liite 2. Tuntikirjanpito Päivämäärä Ajankäyttö Tarkoitus ti ,5 h Aloitustilaisuus ke ,0 h Aiheen määrittely -dokumentti to ,0 h Määrittelydokumentin muutokset pe ,0 h Aiheeseen perehtyminen to ,0 h Suunnittelu, etätapaaminen pe ,5 h Toteutuksen aloittaminen ma ,5 h Toteutus ke ,0 h Toteutus (mm. bittimuunnokset) to ,0 h Toteutus (mm. tiedostonkäsittely) pe ,5 h Palautus ma ,0 h Testaus ja toteutus ti ,5 h Keko ke ,5 h Keko to ,5 h Tietorakenteet pe ,0 h Toimivan väliversion palautus ti ,0 h Dokumentointi ke ,0 h Tietorakenteiden hienosäätö ma ,0 h Tuntikirjanpidon takautuva generointi :-) ti ,0 h Toteutusdokumentin viimeistely ke ,0 h Ohjelman ja dokumentaation viimeistely to ,5 h Palautustilaisuus ja työn palautus = 67,0 h

Algoritmit 2. Luento 9 Ti Timo Männikkö

Algoritmit 2. Luento 9 Ti Timo Männikkö Algoritmit 2 Luento 9 Ti 17.4.2018 Timo Männikkö Luento 9 Merkkitiedon tiivistäminen Huffmanin koodi LZW-menetelmä Taulukointi Editointietäisyys Algoritmit 2 Kevät 2018 Luento 9 Ti 17.4.2018 2/29 Merkkitiedon

Lisätiedot

Ongelma 1: Onko datassa tai informaatiossa päällekkäisyyttä?

Ongelma 1: Onko datassa tai informaatiossa päällekkäisyyttä? Ongelma 1: Onko datassa tai informaatiossa päällekkäisyyttä? 2012-2013 Lasse Lensu 2 Ongelma 2: Voidaanko dataa tai informaatiota tallettaa tiiviimpään tilaan koodaamalla se uudelleen? 2012-2013 Lasse

Lisätiedot

2. 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.

2. 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ätiedot

Algoritmit 2. Luento 2 To Timo Männikkö

Algoritmit 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ätiedot

Algoritmit 2. Luento 2 Ke Timo Männikkö

Algoritmit 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ätiedot

Algoritmit 2. Luento 6 To Timo Männikkö

Algoritmit 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ätiedot

811312A Tietorakenteet ja algoritmit, 2014-2015, Harjoitus 7, ratkaisu

811312A 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ätiedot

Luku 8. Aluekyselyt. 8.1 Summataulukko

Luku 8. Aluekyselyt. 8.1 Summataulukko Luku 8 Aluekyselyt Aluekysely on tiettyä taulukon väliä koskeva kysely. Tyypillisiä aluekyselyitä ovat, mikä on taulukon välin lukujen summa tai pienin luku välillä. Esimerkiksi seuraavassa taulukossa

Lisätiedot

Johdatus ohjelmointiin

Johdatus ohjelmointiin Johdatus ohjelmointiin EXAM tentin liitetiedostojen lataaminen, käyttäminen ja palauttaminen Kerro mahdolliset puutteet tai parannusehdotukset: pietari.heino@tut.fi Tällä sivulla on selitetty lyhyesti

Lisätiedot

Algoritmit 1. Luento 8 Ke Timo Männikkö

Algoritmit 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ätiedot

Toinen harjoitustyö. ASCII-grafiikkaa 2017

Toinen harjoitustyö. ASCII-grafiikkaa 2017 Toinen harjoitustyö ASCII-grafiikkaa 2017 Yleistä Tehtävä: tee Javalla ASCII-merkkeinä esitettyä grafiikkaa käsittelevä ASCIIArt17-ohjelma omia operaatioita ja taulukoita käyttäen. Työ tehdään pääosin

Lisätiedot

Algoritmit 2. Luento 6 Ke Timo Männikkö

Algoritmit 2. Luento 6 Ke Timo Männikkö Algoritmit 2 Luento 6 Ke 29.3.2017 Timo Männikkö Luento 6 B-puun operaatiot B-puun muunnelmia Nelipuu Trie-rakenteet Standarditrie Pakattu trie Algoritmit 2 Kevät 2017 Luento 6 Ke 29.3.2017 2/31 B-puu

Lisätiedot

Testausraportti. Orava. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Testausraportti. Orava. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Testausraportti Orava Helsinki 5.5.2005 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Juhani Bergström Peter

Lisätiedot

Määrittelydokumentti

Määrittelydokumentti Määrittelydokumentti Aineopintojen harjoitustyö: Tietorakenteet ja algoritmit (alkukesä) Sami Korhonen 014021868 sami.korhonen@helsinki. Tietojenkäsittelytieteen laitos Helsingin yliopisto 23. kesäkuuta

Lisätiedot

Kieliteknologian ATK-ympäristö Kuudes luento

Kieliteknologian ATK-ympäristö Kuudes luento Kieliteknologian ATK-ympäristö Kuudes luento Miikka Silfverberg Nykykielten laitos 11. lokakuuta 2010 Miikka Silfverberg (Nykykielten laitos) Kieliteknologian ATK-ympäristö: Luento 6 11. lokakuuta 2010

Lisätiedot

Datatähti 2019 loppu

Datatähti 2019 loppu Datatähti 2019 loppu task type time limit memory limit A Summa standard 1.00 s 512 MB B Bittijono standard 1.00 s 512 MB C Auringonlasku standard 1.00 s 512 MB D Binääripuu standard 1.00 s 512 MB E Funktio

Lisätiedot

lähtokohta: kahden O(h) korkuisen keon yhdistäminen uudella juurella vie O(h) operaatiota vrt. RemoveMinElem() keossa

lä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ätiedot

Ylläpitodokumentti. Boa Open Access. Helsinki 2.5.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Ylläpitodokumentti. Boa Open Access. Helsinki 2.5.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Ylläpitodokumentti Boa Open Access Helsinki 2.5.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Ilmari

Lisätiedot

Algoritmit 2. Luento 3 Ti Timo Männikkö

Algoritmit 2. Luento 3 Ti Timo Männikkö Algoritmit 2 Luento 3 Ti 20.3.2018 Timo Männikkö Luento 3 Järjestäminen eli lajittelu Kekorakenne Kekolajittelu Hajautus Yhteentörmäysten käsittely Ketjutus Algoritmit 2 Kevät 2018 Luento 3 Ti 20.3.2018

Lisätiedot

Algoritmit 1. Luento 7 Ti Timo Männikkö

Algoritmit 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ätiedot

5. HelloWorld-ohjelma 5.1

5. HelloWorld-ohjelma 5.1 5. HelloWorld-ohjelma 5.1 Sisällys Lähdekoodi. Lähdekoodin (osittainen) analyysi. Lähdekoodi tekstitiedostoon. Lähdekoodin kääntäminen tavukoodiksi. Tavukoodin suorittaminen. Virheiden korjaaminen 5.2

Lisätiedot

Lohtu-projekti. Testaussuunnitelma

Lohtu-projekti. Testaussuunnitelma Lohtu-projekti Testaussuunnitelma Versiohistoria: 1.0 19.2.2003 1. versio Mari 1.1 20.2.2003 Muutoksia Mari 1.2 25.2.2003 Katselmoinnissa esiin tulleet Mari muutokset 1.3 17.3.2003 2. syklissä tehtävät

Lisätiedot

Käyttöohje. Boa Open Access. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Käyttöohje. Boa Open Access. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Käyttöohje Boa Open Access Helsinki 5.5.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Ilmari Heikkinen

Lisätiedot

Algoritmit 2. Luento 3 Ti Timo Männikkö

Algoritmit 2. Luento 3 Ti Timo Männikkö Algoritmit 2 Luento 3 Ti 21.3.2017 Timo Männikkö Luento 3 Järjestäminen eli lajittelu Kekorakenne Kekolajittelu Hajautus Yhteentörmäysten käsittely Ketjutus Algoritmit 2 Kevät 2017 Luento 3 Ti 21.3.2017

Lisätiedot

Toinen harjoitustyö. ASCII-grafiikkaa

Toinen harjoitustyö. ASCII-grafiikkaa Toinen harjoitustyö ASCII-grafiikkaa Yleistä Tehtävä: tee Javalla ASCII-merkkeinä esitettyä grafiikkaa käsittelevä ASCIIArt-ohjelma omia operaatioita ja taulukoita käyttäen. Työ tehdään pääosin itse. Ideoita

Lisätiedot

58131 Tietorakenteet ja algoritmit (kevät 2016) Ensimmäinen välikoe, malliratkaisut

58131 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ätiedot

Hakemistojen sisällöt säilötään linkitetyille listalle.

Hakemistojen sisällöt säilötään linkitetyille listalle. Harjoitustyö 1 Harjoitustyö Tehtävä: ohjelmoi Java-kielellä komentoikkunaa (komentotulkkia, komentoriviä) simuloiva olioperustainen ohjelma. Hakemistojen sisällöt säilötään linkitetyille listalle. Työ

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2009 1 / 28 Puhelinluettelo, koodi def lue_puhelinnumerot(): print "Anna lisattavat nimet ja numerot." print

Lisätiedot

Sukupuu -ohjelma. Ossi Väre (013759021) Joni Virtanen (013760641)

Sukupuu -ohjelma. Ossi Väre (013759021) Joni Virtanen (013760641) Sukupuu -ohjelma Ossi Väre (013759021) Joni Virtanen (013760641) 7.11.2011 1 Johdanto Toteutimme C -kielellä sukupuuohjelman, johon käyttäjä voi lisätä ja poistaa henkilöitä ja määrittää henkilöiden välisiä

Lisätiedot

Matematiikka ja teknologia, kevät 2011

Matematiikka ja teknologia, kevät 2011 Matematiikka ja teknologia, kevät 2011 Peter Hästö 3. helmikuuta 2011 Matemaattisten tieteiden laitos Sisältö Kurssi koostuu kuudesta (seitsemästä) toisistaan riippumattomasta luennosta. Aihepiirit ovat:

Lisätiedot

CVS. Kätevä väline usein päivitettävien tiedostojen, kuten lähdekoodin, hallitsemiseen

CVS. Kätevä väline usein päivitettävien tiedostojen, kuten lähdekoodin, hallitsemiseen CVS Versionhallintajärjestelmä Kätevä väline usein päivitettävien tiedostojen, kuten lähdekoodin, hallitsemiseen Käytetään komentoriviltä, myös graafisia käyttöliittymiä saatavilla CVS Kaikki tiedostot

Lisätiedot

811312A Tietorakenteet ja algoritmit, , Harjoitus 5, Ratkaisu

811312A 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ätiedot

Miten käydä läpi puun alkiot (traversal)?

Miten 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ätiedot

TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2

TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2 TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos TKT-3200 Tietokonetekniikka I Harjoitustyö 4: Cache, osa 2.. 2010 Ryhmä Nimi Op.num. 1 Valmistautuminen Cache-työn toisessa osassa

Lisätiedot

Hakupuut. tässä luvussa tarkastelemme puita tiedon tallennusrakenteina

Hakupuut. 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ätiedot

Näin järjestän ohjelmointikurssin, vaikka en ole koskaan ohjelmoinut www.helsinki.fi

Näin järjestän ohjelmointikurssin, vaikka en ole koskaan ohjelmoinut www.helsinki.fi Näin järjestän ohjelmointikurssin, vaikka en ole koskaan ohjelmoinut Ohjelmointikurssin järjestäminen Helsingin yliopiston Ohjelmoinnin MOOC-kurssimateriaalin avulla 15.4.2016 1 Linkki Tietojenkäsittelytieteen

Lisätiedot

Unix-perusteet. Varmistaminen, tiedon pakkaaminen ja tiivistäminen

Unix-perusteet. Varmistaminen, tiedon pakkaaminen ja tiivistäminen Unix-perusteet Varmistaminen, tiedon pakkaaminen ja tiivistäminen Miksi varmistaminen on tärkeää? Levy menee rikki ongelmia voidaan vähentää mm. RAID-levyillä RAID 5-taso: data kolmella eri levyllä. Jos

Lisätiedot

Tietorakenteet, laskuharjoitus 7, ratkaisuja

Tietorakenteet, 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

Pakkauksen kokoaminen

Pakkauksen kokoaminen 13. Pakkaukset 13.1 Sisällys Pakkauksen kokoaminen package-määrettä käyttäen. Pakkaukset ja hakemistorakenne. Pakkauksen luokkien käyttö muissa pakkauksissa importlauseen avulla. Pakkaukset ja näkyvyys.

Lisätiedot

Taulukot. Jukka Harju, Jukka Juslin 2006 1

Taulukot. Jukka Harju, Jukka Juslin 2006 1 Taulukot Jukka Harju, Jukka Juslin 2006 1 Taulukot Taulukot ovat olioita, jotka auttavat organisoimaan suuria määriä tietoa. Käsittelylistalla on: Taulukon tekeminen ja käyttö Rajojen tarkastus ja kapasiteetti

Lisätiedot

2 Konekieli, aliohjelmat, keskeytykset

2 Konekieli, aliohjelmat, keskeytykset ITK145 Käyttöjärjestelmät, kesä 2005 Tenttitärppejä Tässä on lueteltu suurin piirtein kaikki vuosina 2003-2005 kurssin tenteissä kysytyt kysymykset, ja mukana on myös muutama uusi. Jokaisessa kysymyksessä

Lisätiedot

Pinot, 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 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ätiedot

A274101 TIETORAKENTEET JA ALGORITMIT

A274101 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ätiedot

Käyttöohje. Versiohistoria: 1.0 7.5.2003 1. versio Mari 1.1 9.5.2003 Kommenttien perusteella korjattu versio

Käyttöohje. Versiohistoria: 1.0 7.5.2003 1. versio Mari 1.1 9.5.2003 Kommenttien perusteella korjattu versio Otus- projektinhallintatyökalu Käyttöohje Versiohistoria: 1.0 7.5.2003 1. versio Mari 1.1 9.5.2003 Kommenttien perusteella korjattu versio Mari Tampere 9. toukokuuta 2003 Kimmo Airamaa, Andreas Asuja,

Lisätiedot

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 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ätiedot

TAMPEREEN TEKNILLINEN YLIOPISTO

TAMPEREEN TEKNILLINEN YLIOPISTO TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja Tietokonetekniikan laitos TKT-3200 Tietokonetekniikka ASSEMBLER: QSORT 11.08.2010 Ryhmä 00 nimi1 email1 opnro1 nimi2 email2 opnro2 nimi3 email3 opnro3 1. TEHTÄVÄ

Lisätiedot

Luku 7. Verkkoalgoritmit. 7.1 Määritelmiä

Luku 7. Verkkoalgoritmit. 7.1 Määritelmiä Luku 7 Verkkoalgoritmit Verkot soveltuvat monenlaisten ohjelmointiongelmien mallintamiseen. Tyypillinen esimerkki verkosta on tieverkosto, jonka rakenne muistuttaa luonnostaan verkkoa. Joskus taas verkko

Lisätiedot

Algoritmit 1. Luento 1 Ti Timo Männikkö

Algoritmit 1. Luento 1 Ti Timo Männikkö Algoritmit 1 Luento 1 Ti 10.1.2017 Timo Männikkö Luento 1 Algoritmi Algoritmin toteutus Ongelman ratkaiseminen Algoritmin tehokkuus Algoritmin suoritusaika Algoritmin analysointi Algoritmit 1 Kevät 2017

Lisätiedot

Algoritmit 1. Luento 12 Ti Timo Männikkö

Algoritmit 1. Luento 12 Ti Timo Männikkö Algoritmit 1 Luento 12 Ti 19.2.2019 Timo Männikkö Luento 12 Osittamisen tasapainoisuus Pikalajittelun vaativuus Lajittelumenetelmien vaativuus Laskentalajittelu Lokerolajittelu Kantalukulajittelu Algoritmit

Lisätiedot

58131 Tietorakenteet ja algoritmit (syksy 2015)

58131 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ätiedot

Datatähti 2000: alkukilpailun ohjelmointitehtävä

Datatähti 2000: alkukilpailun ohjelmointitehtävä Datatähti 2000: alkukilpailun ohjelmointitehtävä 1 Lyhyt tehtävän kuvaus Tehtävänä on etsiä puurakenteen esiintymiä kirjaintaulukosta. Ohjelmasi saa syötteenä kirjaintaulukon ja puun, jonka jokaisessa

Lisätiedot

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla.

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla. Tentti Tentti Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla. Omia koneita ei saa käyttää. Sähköisessä tentissä on paperitentin tapaan osaamisen

Lisätiedot

Testausdokumentti. Kivireki. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Testausdokumentti. Kivireki. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Testausdokumentti Kivireki Helsinki 17.12.2007 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Anu Kontio Ilmari

Lisätiedot

Algoritmit 2. Luento 4 Ke Timo Männikkö

Algoritmit 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ätiedot

A TIETORAKENTEET JA ALGORITMIT KORVAAVAT HARJOITUSTEHTÄVÄT 3, DEADLINE KLO 12:00

A 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ätiedot

v 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.

v 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ätiedot

58131 Tietorakenteet ja algoritmit (syksy 2015) Toinen välikoe, malliratkaisut

58131 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ätiedot

Pakkauksen kokoaminen

Pakkauksen kokoaminen 13. Pakkaukset 13.1 Sisällys Pakkauksen kokoaminen (package). Pakkaukset ja hakemistorakenne. Pakkauksen luokkien käyttö muissa pakkauksissa (import). Pakkaukset ja näkyvyys. 13.2 Pakkauksen kokoaminen

Lisätiedot

Algebralliset menetelmät virheenkorjauskoodin tunnistamisessa

Algebralliset menetelmät virheenkorjauskoodin tunnistamisessa Algebralliset menetelmät virheenkorjauskoodin tunnistamisessa Jyrki Lahtonen, Anni Hakanen, Taneli Lehtilä, Toni Hotanen, Teemu Pirttimäki, Antti Peltola Turun yliopisto MATINE-tutkimusseminaari, 16.11.2017

Lisätiedot

Algoritmit 1. Luento 12 Ke Timo Männikkö

Algoritmit 1. Luento 12 Ke Timo Männikkö Algoritmit 1 Luento 12 Ke 15.2.2017 Timo Männikkö Luento 12 Pikalajittelu Pikalajittelun vaativuus Osittamisen tasapainoisuus Lajittelumenetelmien vaativuus Laskentalajittelu Lokerolajittelu Kantalukulajittelu

Lisätiedot

TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 9. marraskuuta 2009

TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 9. marraskuuta 2009 TIE448 Kääntäjätekniikka, syksy 2009 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 9. marraskuuta 2009 Sisällys Sisällys Seuraava deadline Vaihe D tiistai 10.11. klo 10 välikielen generointi Vaihe E tiistai

Lisätiedot

Algoritmit 2. Luento 10 To Timo Männikkö

Algoritmit 2. Luento 10 To Timo Männikkö Algoritmit 2 Luento 10 To 11.4.2019 Timo Männikkö Luento 10 Merkkitiedon tiivistäminen LZW-menetelmä Taulukointi Editointietäisyys Peruutusmenetelmä Osajoukon summa Algoritmit 2 Kevät 2019 Luento 10 To

Lisätiedot

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

C-ohjelmoinnin peruskurssi. Pasi Sarolahti C! C-ohjelmoinnin peruskurssi Pasi Sarolahti Mitä haluan oppia C-kurssilla? ja miksi? Tutustu lähimpään naapuriin Keskustelkaa miksi halusitte / jouduitte tulemaan kurssille 3 minuuttia è kootaan vastauksia

Lisätiedot

S11-09 Control System for an. Autonomous Household Robot Platform

S11-09 Control System for an. Autonomous Household Robot Platform S11-09 Control System for an Autonomous Household Robot Platform Projektisuunnitelma AS-0.3200 Automaatio- ja systeemitekniikan projektityöt Quang Doan Lauri T. Mäkelä 1 Kuvaus Projektin tavoitteena on

Lisätiedot

Valppaan asennus- ja käyttöohje

Valppaan asennus- ja käyttöohje Versio Päiväys Muokkaaja Kuvaus 0.9 16.2.2006 Tuukka Laakso Korjattu versio 0.1 Antti Kettunen Alustava versio Sisällysluettelo 1 Johdanto...2 2 Valppaan asennus...3 2.1 Valppaan kääntäminen...3 2.2 Valmiiksi

Lisätiedot

11/20: Konepelti auki

11/20: Konepelti auki Ohjelmointi 1 / syksy 2007 11/20: Konepelti auki Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/11 Tämän luennon

Lisätiedot

Tehtävän V.1 ratkaisuehdotus Tietorakenteet, syksy 2003

Tehtä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ätiedot

TAMPEREEN TEKNILLINEN YLIOPISTO

TAMPEREEN TEKNILLINEN YLIOPISTO TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja Tietokonetekniikan laitos TKT-3200 Tietokonetekniikka ASSEMBLER: QSORT 06.09.2005 Ryhmä 00 nimi1 email1 opnro1 nimi2 email2 opnro2 nimi3 email3 opnro3 1. TEHTÄVÄ

Lisätiedot

Algoritmit 2. Luento 4 To Timo Männikkö

Algoritmit 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ätiedot

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Rekursio Rekursion käyttötapauksia Rekursio määritelmissä Rekursio ongelmanratkaisussa ja ohjelmointitekniikkana Esimerkkejä taulukolla Esimerkkejä linkatulla listalla Hanoin

Lisätiedot

Osallistavan suunnittelun kyselytyökalu

Osallistavan suunnittelun kyselytyökalu Osallistavan suunnittelun kyselytyökalu Käyttöohje InnoGIS- hankkeen aikana kehitetylle pilottiversiolle Dokumentti sisältää pilottiversiona toimivan kyselyn laatimiseen ja vastaamiseen liittyvän ohjeistuksen.

Lisätiedot

Ohjelmisto on selainpohjaisen käyttöliittymän tarjoava tietokantajärjestelmä merikotkien seurantaan WWF:n Merikotka-työryhmän tarpeisiin.

Ohjelmisto on selainpohjaisen käyttöliittymän tarjoava tietokantajärjestelmä merikotkien seurantaan WWF:n Merikotka-työryhmän tarpeisiin. TIETOKANTA MERIKOTKIEN SEURANTAAN Käyttöohje Versiohistoria: Versio Päivämäärä Kuvaus Tekijä 1.0 11.12.2007 Ensimmäinen luonnos Janne Piippo 2.0 13.12.2007 Virallinen verio Janne Piippo HELSINGIN YLIOPISTO

Lisätiedot

Linkitetystä listasta perittyä omaa listaa käytetään muun muassa viestiin liittyvien vastausten säilömiseen.

Linkitetystä listasta perittyä omaa listaa käytetään muun muassa viestiin liittyvien vastausten säilömiseen. Harjoitustyö 1 Harjoitustyö Tehtävä: ohjelmoi Java-kielellä keskustelualuetta simuloiva olioperustainen ohjelma (Simple Oope Board, S.O.B). Linkitetystä listasta perittyä omaa listaa käytetään muun muassa

Lisätiedot

T Projektikatselmus

T Projektikatselmus T-76.115 Projektikatselmus Projektityöryhmä GenCode I3-iteraatio 17.3.2004 Agenda Tavoitteiden toteutuminen (5 min) Resurssien käyttö (5 min) Iteraation tulokset (10 min) Riskit (5min) +Kokemuksia työskentelymenetelmistä

Lisätiedot

Convergence of messaging

Convergence of messaging Convergence of messaging Testaussuunnitelma The Converge Group: Mikko Hiipakka Anssi Johansson Joni Karppinen Olli Pettay Timo Ranta-Ojala Tea Silander Helsinki 20. joulukuuta 2002 HELSINGIN YLIOPISTO

Lisätiedot

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla Viimeksi muokattu 5. toukokuuta 2012 Maastotietokannan torrent-jakeluun sisältyy yli 5000 zip-arkistoa,

Lisätiedot

JAKELUPISTE KÄYTTÖOHJE 2/6

JAKELUPISTE KÄYTTÖOHJE 2/6 käyttöohjeet JAKELUPISTE KÄYTTÖOHJE 2/6 1. Esittely JakeluPiste on helppo ja yksinkertainen ratkaisu tiedostojen lähettämiseen ja vastaanottamiseen. Olipa kyseessä tärkeä word dokumentti tai kokonainen

Lisätiedot

Olkoon seuraavaksi G 2 sellainen tasan n solmua sisältävä suunnattu verkko,

Olkoon seuraavaksi G 2 sellainen tasan n solmua sisältävä suunnattu verkko, Tehtävä 1 : 1 a) Olkoon G heikosti yhtenäinen suunnattu verkko, jossa on yhteensä n solmua. Määritelmän nojalla verkko G S on yhtenäinen, jolloin verkoksi T voidaan valita jokin verkon G S virittävä alipuu.

Lisätiedot

4. Luokan testaus ja käyttö olion kautta 4.1

4. Luokan testaus ja käyttö olion kautta 4.1 4. Luokan testaus ja käyttö olion kautta 4.1 Olion luominen luokasta Java-kielessä olio määritellään joko luokan edustajaksi tai taulukoksi. Olio on joukko keskusmuistissa olevia tietoja. Oliota käsitellään

Lisätiedot

Ylläpitodokumentti. Ohjelmistotuotantoprojektin tietojärjestelmä OhtuTie

Ylläpitodokumentti. Ohjelmistotuotantoprojektin tietojärjestelmä OhtuTie Ylläpitodokumentti Ohjelmistotuotantoprojektin tietojärjestelmä OhtuTie Helsinki 16.7.2004 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti

Lisätiedot

Kierros 4: Binäärihakupuut

Kierros 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ätiedot

verkkojen G ja H välinen isomorfismi. Nyt kuvaus f on bijektio, joka säilyttää kyseisissä verkoissa esiintyvät särmät, joten pari

verkkojen G ja H välinen isomorfismi. Nyt kuvaus f on bijektio, joka säilyttää kyseisissä verkoissa esiintyvät särmät, joten pari Tehtävä 9 : 1 Merkitään kirjaimella G tehtäväpaperin kuvan vasemmanpuoleista verkkoa sekä kirjaimella H tehtäväpaperin kuvan oikeanpuoleista verkkoa. Kuvan perusteella voidaan havaita, että verkko G on

Lisätiedot

Harjoitus 2 (viikko 45)

Harjoitus 2 (viikko 45) Mikäli tehtävissä on jotain epäselvää, laita sähköpostia vastuuopettajalle (jorma.laurikkala@uta.fi). Muista lisätä static-määre operaatioidesi otsikoihin, jotta ohjelmasi kääntyvät. Muista noudattaa hyvän

Lisätiedot

Avainsanat ja sanonnat: Tiedonpakkaus, algoritmit, Huffmanin koodaus, aritmeettinen koodaus, sanakirjat, informaatioteoria. CR luokat: E.

Avainsanat ja sanonnat: Tiedonpakkaus, algoritmit, Huffmanin koodaus, aritmeettinen koodaus, sanakirjat, informaatioteoria. CR luokat: E. Häviöttömät tiedonpakkausalgoritmit Jukka Pollari Tiivistelmä. Tässä tutkielmassa käsitellään häviöttömiä pakkausalgoritmeja, tarkemmin määriteltynä sellaisia, joilla voidaan pakata kaikenlaista dataa.

Lisätiedot

Visual Case 2. Miika Kasnio (C9767) 23.4.2008

Visual Case 2. Miika Kasnio (C9767) 23.4.2008 Visual Case 2 Miika Kasnio (C9767) 23.4.2008 Työn tarkasti: Jouni Huotari 24.4.2008 1 SISÄLTÖ 1. TYÖN LÄHTÖKOHDAT... 2 2. PERUSTIEDOT... 2 3. ASENTAMINEN... 2 4. OMINAISUUDET... 3 4.1. UML-kaaviot... 4

Lisätiedot

Ohjelmiston testaus ja laatu. Testausmenetelmiä

Ohjelmiston testaus ja laatu. Testausmenetelmiä Ohjelmiston testaus ja laatu Testausmenetelmiä Testausmenetelmiä - 1 Testauksen menetelmien päälähestymistapoina ovat black-box testi testaaja ei voi tutkia lähdekoodia testaus perustuu sovellukselle suunnitteluvaiheessa

Lisätiedot

OHJELMISTOTEKNIIKKA LABORATORIOHARJOITUKSEN OHJEET

OHJELMISTOTEKNIIKKA LABORATORIOHARJOITUKSEN OHJEET OHJELMISTOTEKNIIKKA LABORATORIOHARJOITUKSEN OHJEET Laboratorioharjoituksessa on testattavana kaksi ohjelmaa. Harjoituksen päämääränä on löytää mahdollisimman paljon ohjelmistovirheitä testattavista ohjelmista.

Lisätiedot

Linuxissa uusi elämä 1

Linuxissa uusi elämä 1 17.06.19 Linuxissa uusi elämä 1 Linux on hyvä vaihtoehto Windowsille Uusiin tai vanhempiin tietokoneisiin Miksi käyttäisin Linuxia Tekniikan Maailman Linux vinkki Siirtyisinkö Linuxiin? 17.06.19 Linuxissa

Lisätiedot

Yksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } }

Yksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } } Yksikkötestauksella tarkoitetaan lähdekoodiin kuuluvien yksittäisten osien testaamista. Termi yksikkö viittaa ohjelman pienimpiin mahdollisiin testattaviin toiminnallisuuksiin, kuten olion tarjoamiin metodeihin.

Lisätiedot

Binäärihaun vertailujärjestys

Binää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ätiedot

Titan SFTP -yhteys mittaustietoja varten

Titan SFTP -yhteys mittaustietoja varten 2 (7) Sisällysluettelo 1 SFTP tiedonsiirto... 4 1.1 SFTP Palvelin... 4 2 Avaintenluonti... 5 2.1 Avainten hallintaprosessi... 6 3 Tiedoston kuvaus ja tallennus... 7 3 (7) Muutoshistoria Päivämäärä Versio

Lisätiedot

811312A Tietorakenteet ja algoritmit III Lajittelualgoritmeista

811312A Tietorakenteet ja algoritmit III Lajittelualgoritmeista 811312A Tietorakenteet ja algoritmit 2016-2017 III Lajittelualgoritmeista Sisältö 1. Johdanto 2. Pikalajittelu 3. Kekolajittelu 4. Lajittelualgoritmien suorituskyvyn rajoista 811312A TRA, Lajittelualgoritmeista

Lisätiedot

Pikalajittelu: valitaan ns. pivot-alkio esim. pivot = oikeanpuoleisin

Pikalajittelu: valitaan ns. pivot-alkio esim. pivot = oikeanpuoleisin Pikalajittelu: valitaan ns. pivot-alkio esim. pivot = oikeanpuoleisin jaetaan muut alkiot kahteen ryhmään: L: alkiot, jotka eivät suurempia kuin pivot G : alkiot, jotka suurempia kuin pivot 6 1 4 3 7 2

Lisätiedot

811312A Tietorakenteet ja algoritmit, , Harjoitus 5, Ratkaisu

811312A Tietorakenteet ja algoritmit, , Harjoitus 5, Ratkaisu 1312A Tietorakenteet ja algoritmit, 2018-2019, 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ätiedot

Harjoitus 5 (viikko 41)

Harjoitus 5 (viikko 41) Mikäli tehtävissä on jotain epäselvää, laita sähköpostia vastuuopettajalle (jorma.laurikkala@uta.fi). Muista nimetä muuttujat hyvin sekä kommentoida ja sisentää koodisi. Vältä liian pitkiä rivejä, käytä

Lisätiedot

Äärellisten automaattien ja säännöllisten lausekkeiden minimointi

Äärellisten automaattien ja säännöllisten lausekkeiden minimointi Äärellisten automaattien ja säännöllisten lausekkeiden minimointi Timi Suominen, Riia Ohtamaa ja Pessi Moilanen Helsinki..01 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Äärellisten automaattien

Lisätiedot

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4 Sisällys 12. Näppäimistöltä lukeminen Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä.. Luetun arvon tarkistaminen. Tietovirrat ja ohjausmerkit. Scanner-luokka.

Lisätiedot

T harjoitustehtävät, syksy 2011

T harjoitustehtävät, syksy 2011 T-110.4100 harjoitustehtävät, syksy 2011 Kurssiassistentit Tietotekniikan laitos Perustieteiden korkeakoulu Aalto-yliopisto T-110.4100@tkk.fi Yleistä Kurssin osasuoritteita ovat kaksi osatenttiä ja harjoitustehtävät

Lisätiedot

Ei-yhteydettömät kielet [Sipser luku 2.3]

Ei-yhteydettömät kielet [Sipser luku 2.3] Ei-yhteydettömät kielet [Sipser luku 2.3] Yhteydettömille kielille pätee samantapainen pumppauslemma kuin säännöllisille kielille. Siinä kuitenkin pumpataan kahta osamerkkijonoa samaan tahtiin. Lause 2.25

Lisätiedot

LUKKARIN KÄYTTÖOHJE Sisällys

LUKKARIN KÄYTTÖOHJE Sisällys LUKKARIN KÄYTTÖOHJE Sisällys 1. Yleistä... 2 2. Lukkarin käynnistys ja sisäänkirjautuminen... 2 3. Vapaa aikatauluhaku... 2 4. Lukujärjestyksen luominen ja avaaminen... 3 Lukukauden valinta... 3 Uuden

Lisätiedot