Toteutusdokumentti: Huffman-koodaus
|
|
- Timo-Pekka Virtanen
- 7 vuotta sitten
- Katselukertoja:
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 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ätiedotOngelma 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ä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 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ä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 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ä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ätiedotLuku 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ätiedotJohdatus 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ä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ätiedotToinen 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ätiedotAlgoritmit 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ätiedotTestausraportti. 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ätiedotMäärittelydokumentti
Määrittelydokumentti Aineopintojen harjoitustyö: Tietorakenteet ja algoritmit (alkukesä) Sami Korhonen 014021868 sami.korhonen@helsinki. Tietojenkäsittelytieteen laitos Helsingin yliopisto 23. kesäkuuta
LisätiedotKieliteknologian 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ätiedotDatatä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ä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ätiedotYllä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ätiedotAlgoritmit 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ä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ätiedot5. 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ätiedotLohtu-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ätiedotKä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ätiedotAlgoritmit 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ätiedotToinen 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ä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ätiedotHakemistojen 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ätiedotOhjelmoinnin 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ätiedotSukupuu -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ätiedotMatematiikka 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ätiedotCVS. 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ä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ä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ätiedotTAMPEREEN 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ä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ätiedotNä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ätiedotUnix-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ä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ätiedotPakkauksen 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ätiedotTaulukot. 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ätiedot2 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ä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ä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ätiedotKä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ätiedotAVL-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ätiedotTAMPEREEN 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ätiedotLuku 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ätiedotAlgoritmit 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ätiedotAlgoritmit 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ä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ätiedotDatatä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ätiedotTentissä 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ätiedotTestausdokumentti. 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ä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ä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ä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ä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ätiedotPakkauksen 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ätiedotAlgebralliset 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ätiedotAlgoritmit 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ätiedotTIE448 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ätiedotAlgoritmit 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ätiedotC-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ätiedotS11-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ätiedotValppaan 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ätiedot11/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ä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ätiedotTAMPEREEN 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ä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ä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ätiedotOsallistavan 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ätiedotOhjelmisto 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ätiedotLinkitetystä 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ätiedotT 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ätiedotConvergence 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ätiedotMaastotietokannan 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ätiedotJAKELUPISTE 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ätiedotOlkoon 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ätiedot4. 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ätiedotYllä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ä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ätiedotverkkojen 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ätiedotHarjoitus 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ätiedotAvainsanat 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ätiedotVisual 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ätiedotOhjelmiston 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ätiedotOHJELMISTOTEKNIIKKA LABORATORIOHARJOITUKSEN OHJEET
OHJELMISTOTEKNIIKKA LABORATORIOHARJOITUKSEN OHJEET Laboratorioharjoituksessa on testattavana kaksi ohjelmaa. Harjoituksen päämääränä on löytää mahdollisimman paljon ohjelmistovirheitä testattavista ohjelmista.
LisätiedotLinuxissa 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ätiedotYksikkö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ä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ätiedotTitan 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ätiedot811312A 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ätiedotPikalajittelu: 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ätiedot811312A 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ätiedotHarjoitus 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 Timi Suominen, Riia Ohtamaa ja Pessi Moilanen Helsinki..01 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Äärellisten automaattien
LisätiedotSisä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ätiedotT 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ätiedotEi-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ätiedotLUKKARIN 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