A TIETORAKENTEET JA ALGORITMIT

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

A TIETORAKENTEET JA ALGORITMIT

A TIETORAKENTEET JA ALGORITMIT

4 Tehokkuus ja algoritmien suunnittelu

Algoritmit 2. Luento 3 Ti Timo Männikkö

Algoritmit 2. Luento 3 Ti Timo Männikkö

811312A Tietorakenteet ja algoritmit, , Harjoitus 3, Ratkaisu

Algoritmit 1. Luento 10 Ke Timo Männikkö

Tietorakenteet, laskuharjoitus 10, ratkaisuja. 1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa:

Algoritmit 1. Luento 11 Ti Timo Männikkö

Tietorakenteet ja algoritmit - syksy

TIE Tietorakenteet ja algoritmit 25

Tietorakenteet ja algoritmit. Järjestäminen. Ari Korhonen

Mukautuvat järjestämisalgoritmit

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

9 Erilaisia tapoja järjestää

Tietorakenteet ja algoritmit. Hajautus. Ari Korhonen Tietorakenteet ja algoritmit - syksy

Algoritmit 2. Luento 4 Ke Timo Männikkö

TAMPEREEN TEKNILLINEN YLIOPISTO

Tiraka, yhteenveto tenttiinlukua varten

Algoritmit 2. Luento 4 To Timo Männikkö

1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa:

Algoritmit 1. Luento 12 Ti Timo Männikkö

Algoritmit 1. Luento 3 Ti Timo Männikkö

Algoritmit 1. Luento 12 Ke Timo Männikkö

TKHJ:ssä on yleensä komento create index, jolla taululle voidaan luoda hakemisto

Liitosesimerkki Tietokannan hallinta, kevät 2006, J.Li 1

Liitosesimerkki. Esim R1 R2 yhteinen attribuutti C. Vaihtoehdot

Algoritmit 1. Luento 10 Ke Timo Männikkö

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

Algoritmit 2. Demot Timo Männikkö

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

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

A TIETORAKENTEET JA ALGORITMIT

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu

Algoritmit 2. Luento 2 Ke Timo Männikkö

Algoritmit 2. Luento 14 Ke Timo Männikkö

(a) L on listan tunnussolmu, joten se ei voi olla null. Algoritmi lisäämiselle loppuun:

Algoritmit 2. Luento 2 To Timo Männikkö

TAMPEREEN TEKNILLINEN YLIOPISTO

1 Erilaisia tapoja järjestää

5 Kertaluokkamerkinnät

useampi ns. avain (tai vertailuavain) esim. opiskelijaa kuvaavassa alkiossa vaikkapa opintopistemäärä tai opiskelijanumero

TIE Tietorakenteet ja algoritmit 1. TIE Tietorakenteet ja algoritmit

811312A Tietorakenteet ja algoritmit Kertausta jälkiosasta

Metropolia ammattikorkeakoulu TU00BS : ICT-teknologiaosaaminen Tuntitehtävät 7 Pasi Ranne

A TIETORAKENTEET JA ALGORITMIT

8. Lajittelu, joukot ja valinta

811312A Tietorakenteet ja algoritmit, , Harjoitus 4, Ratkaisu

ja λ 2 = 2x 1r 0 x 2 + 2x 1r 0 x 2

811312A Tietorakenteet ja algoritmit, , Harjoitus 7, ratkaisu

Hajautusrakenteet. R&G Chapter Tietokannan hallinta, kevät 2006, Jan 1

Hajautus. operaatiot insert ja search pyritään tekemään erittäin nopeiksi

A TIETORAKENTEET JA ALGORITMIT

811312A Tietorakenteet ja algoritmit III Lajittelualgoritmeista

Tietorakenteet ja algoritmit syksy Laskuharjoitus 1

Algoritmit 1. Demot Timo Männikkö

8. Lajittelu, joukot ja valinta

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ä 2: Loppuosataulukko

Satunnaisalgoritmit. Topi Paavilainen. Laskennan teorian opintopiiri HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

HY / Avoin yliopisto Lineaarialgebra ja matriisilaskenta II, kesä 2015 Harjoitus 1 Ratkaisut palautettava viimeistään maanantaina klo

Algoritmit 1. Luento 1 Ti Timo Männikkö

XML tehtävien työnkulku

Ohjelmointi 2 / 2010 Välikoe / 26.3

TIETOTEKNIIKAN MATEMATIIKKA

T harjoitustehtävät, syksy 2011

Tämä on helpompi ymmärtää, kun tulkitaan keko täydellisesti tasapainotetuksi binääripuuksi, jonka juuri on talletettu taulukon paikkaan

Tentti erilaiset kysymystyypit

Kerta 2. Kerta 2 Kerta 3 Kerta 4 Kerta Toteuta Pythonilla seuraava ohjelma:

CS-A1140 Tietorakenteet ja algoritmit

5. Hajautus. Tarkastellaan edelleen sivulla 161 esitellyn joukkotietotyypin toteuttamista

Kierros 5: Hajautus. Tommi Junttila. Aalto University School of Science Department of Computer Science

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

Algoritmit 1. Demot Timo Männikkö

Algoritmit 1. Demot Timo Männikkö

Tietorakenteet ja algoritmit

Salausmenetelmät. Veikko Keränen, Jouko Teeriaho (RAMK, 2006)

9.3 Algoritmin valinta


6. Sanakirjat. 6. luku 298

Algoritmit 1. Demot Timo Männikkö

4. Joukkojen käsittely

Hajautusrakenteet. Hajautukseen perustuvat tiedostorakenteet. Hajautukseen perustuvat tiedostorakenteet. Hajautukseen perustuvat tiedostorakenteet

MS-A0004/MS-A0006 Matriisilaskenta Laskuharjoitus 6 / vko 42

811312A Tietorakenteet ja algoritmit, , Harjoitus 5, Ratkaisu

etunimi, sukunimi ja opiskelijanumero ja näillä

58131 Tietorakenteet ja algoritmit (kevät 2013) Kurssikoe 2, , vastauksia

2 Konekieli, aliohjelmat, keskeytykset

Testaa taitosi 1: Lauseen totuusarvo

Tentti erilaiset kysymystyypit

Algoritmit 2. Luento 7 Ti Timo Männikkö

Demo 1: Simplex-menetelmä

Tietotekniikan laitos T /1223 Tietorakenteet ja algoritmit T/Y

Kierros 2: Järjestämisalgoritmeja

4.3. Matemaattinen induktio

MS-A0003/A0005 Matriisilaskenta Laskuharjoitus 3 /

Osittaistuenta Gaussin algoritmissa: Etsitään 1. sarakkeen itseisarvoltaan suurin alkio ja vaihdetaan tämä tukialkioiksi (eli ko. rivi 1. riviksi).

Numeeriset menetelmät

811312A Tietorakenteet ja algoritmit Kertausta jälkiosasta

Transkriptio:

A274105 TIETORAKENTEET JA ALGORITMIT HARJOITUSTEHTÄVÄT 6 DEADLINE 1.4.2009 KLO 9:00 Kynätehtävät tehdään kirjallisesti ja esitetään harjoituksissa. Välivaiheet näkyviin! Ohjelmointitehtävät sähköisesti zip tai rar-pakettina, e-mail: teemu.saarelainen@kyamk.fi Katso, että palautuksista löytyy ainakin seuraavat tiedot: 1. Nimi, opiskelijanumero, vuosikurssi, päiväys 2. Kurssi ja tehtävien numero (esim. H1 ja O.1. a), jne.) 3. Varsinainen ohjelmakoodi + kääntö- ja ajokomennot suorittava skripti (.bat,.sh) tai ohjeet kääntämiseen ja ajamiseen. Eli: ohjelman toiminnan tarkistuksen tulee olla helppoa HUOM!!! MIKÄLI TEHTÄVIEN SUORITUKSESSA TAI PALAUTUKSEEN LIITTYEN TULEE ONGELMIA, OTA AJOISSA YHTEYTTÄ!!! KyAMK - TiRak, kevät 2009 31.3.2009 1

Kynätehtävä 1: Avoin hajautus eli erillinen ketjutus Hajauta 11-paikkaiseen rakenteeseen järjestyksessä annetut alkiot käyttäen erillistä ketjutusta eli avointa hajautusta (separate chaining, open hashing). Alkiot: A C O M P L E X S E N T E N C E F O R H A S H I N G Hajautusfunktio: h(k) = (k+1) mod 11 Käytä kirjaimille seuraavia numeroarvoja (k): A 1 H 8 O 15 V 22 B 2 I 9 P 16 W 23 C 3 J 10 Q 17 X 24 D 4 K 11 R 18 Y 25 E 5 L 12 S 19 Z 26 F 6 M 13 T 20 G 7 N 14 U 21 KyAMK - TiRak, kevät 2009 31.3.2009 2

Kynätehtävä 2: Suljettu hajautus eli avoin osoitus Hajauta 19-paikkaiseen taulukkoon järjestyksessä annetut alkiot käyttäen suljettua hajautusta eli avointa osoitusta, törmäystenkäsittelytapana lineaarinen kokeilu (linear probing). Alkiot: A S I M P L E E X E R C I S E Hajautusfunktio: h(k) = k mod 19 Käytä kirjaimille seuraavia numeroarvoja (k): A 1 H 8 O 15 V 22 B 2 I 9 P 16 W 23 C 3 J 10 Q 17 X 24 D 4 K 11 R 18 Y 25 E 5 L 12 S 19 Z 26 F 6 M 13 T 20 G 7 N 14 U 21 KyAMK - TiRak, kevät 2009 31.3.2009 3

Kynätehtävä 3: Inversiot Inversioiksi kutsutaan järjestettävän aineiston lukupareja, jotka ovat epäjärjestyksessä. Luettele taulukossa olevat inversiot, kun järjestämisperuste on pienimmästä suurimpaan: [9, 2, 6, 5, 7, 1] Sitten yleisempi tehtävä samasta aiheesta. Järjestettäessä taulukkoa a[] vaihdetaan keskenään kaksi alkiota: a[i] ja a[i+k], jotka ovat epäjärjestyksessä (k>0). Määritä ja perustele b) kuinka monta inversiota poistuu vähintään c) kuinka monta inversiota poistuu enintään kun vaihto on tehty? KyAMK - TiRak, kevät 2009 31.3.2009 4

Kynätehtävä 4: Lajittelumenetelmien stabiilisuus Lajittelumenetelmä on stabiili eli vakaa, jos se säilyttää yhtä suurten alkioiden (tark. alkioiden, joilla sama avain) alkuperäisen järjestyksen. Selvitä seuraavien lajittelumenetelmien stabiilisuus: Straight selection, Straight exchange, Straight insertion, Shellsort, Quicksort, Mergesort ja Heapsort. Perustele vastauksesi eli vastauksen pitää olla laajempi kuin vain pelkkä on/ei menetelmää kohti. KyAMK - TiRak, kevät 2009 31.3.2009 5

Ohjelmointitehtävä 1: Lajittelumenetelmien toteutus Toteuta (implementoi) metodit/funktiot, jotka järjestävät taulukon a) Shell-sort b) Merge-sort c) Quicksort -menetelmällä. Kirjoita myös testipääohjelma, joka käyttää toteuttamasi menetelmiä esim. satunnaisen 20-alkioisen kokonaislukutaulukon järjestämiseen. KyAMK - TiRak, kevät 2009 31.3.2009 6

Ohjelmointitehtävä 2: Lajittelumenetelmien nopeus Suorita edellä toteutettujen lajittelumenetelmien suoritusaikavertailu. Käytä mielellään valmiita ajanottofunktioita (C/C++,Java) mittaamaan suoritusaikaa ja laske kokonaissuoritusaika sekä suoritusaika yhtä alkiota kohti. Testaa seuraavilla taulukkotyypeillä: järjestyksessä oleva taulukko, käänteisessä järjestyksessä oleva taulukko, satunnaistaulukko. Käytä ainakin kolmea eri kokoa olevia taulukoita, esim. 100, 10 000, 1 000 000 alkiota. KyAMK - TiRak, kevät 2009 31.3.2009 7

Ohjelmointitehtävä 3: Quickselect Toisinaan joudutaan järjestämättömästä datasta valitsemaan k:nneksi pienin/suurin alkio. Tämä voidaan tehdä nopeamminkin kuin ensin järjestämällä data ja sitten valitsemalla kysytty alkio. Eräs parhaita tunnettuja menetelmiä on Quickselect. Se perustuu Quicksort-algoritmiin mutta kannattaa toteuttaa iteratiivisena. Jakovaiheessa aina lasketaan, kuinka moni alkioista on pienempi kuin pivot-alkio ja kuinka moni suurempi tai yhtä suuri. Esimerkiksi jos datan koko n = 100, k = 33 ja 1. jaossa pivot-alkiota pienempiä oli 46 ja loput yhtä suuria tai suurempia, tiedetään, että etsitty 33:nneksi suurin on 46 ensimmäisen alkion joukossa. Loppuosa unohdetaan ja jatketaan toistamalla menettely 46ensimmäisen alkion joukossa. Toteuta (implementoi) Quickselect ja kirjoita myös testipääohjelma. KyAMK - TiRak, kevät 2009 31.3.2009 8

Ohjelmointitehtävä 4: Quickselectin nopeus Vertaa Quickselectin nopeutta edellä toteutettujen lajittelumenetelmien kokonaissuoritusaikaan. Testaa seuraavilla taulukkotyypeillä: järjestyksessä oleva taulukko, käänteisessä järjestyksessä oleva taulukko, satunnaistaulukko. Käytä ainakin kolmea eri kokoa olevia taulukoita, esim. 100, 10 000, 1 000 000 alkiota. KyAMK - TiRak, kevät 2009 31.3.2009 9