Algoritmit 2. Demot Timo Männikkö

Samankaltaiset tiedostot
Algoritmit 2. Luento 4 To Timo Männikkö

Algoritmit 2. Demot Timo Männikkö

Algoritmit 2. Luento 4 Ke Timo Männikkö

Algoritmit 2. Luento 5 Ti Timo Männikkö

Algoritmit 2. Luento 6 To Timo Männikkö

Algoritmit 2. Luento 5 Ti Timo Männikkö

Algoritmit 2. Luento 3 Ti Timo Männikkö

Algoritmit 1. Demot Timo Männikkö

Algoritmit 2. Luento 6 Ke Timo Männikkö

Algoritmit 2. Luento 3 Ti Timo Männikkö

Algoritmit 1. Demot Timo Männikkö

Algoritmit 2. Luento 10 To Timo Männikkö

Algoritmit 2. Luento 2 Ke Timo Männikkö

811312A Tietorakenteet ja algoritmit II Perustietorakenteet

Algoritmit 2. Luento 2 To Timo Männikkö

Algoritmit 2. Luento 7 Ti Timo Männikkö

811312A Tietorakenteet ja algoritmit, , Harjoitus 5, Ratkaisu

Algoritmit 1. Luento 5 Ti Timo Männikkö

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

Algoritmit 2. Luento 11 Ti Timo Männikkö

Algoritmit 1. Demot Timo Männikkö

Algoritmit 2. Luento 10 To Timo Männikkö

811312A Tietorakenteet ja algoritmit, , Harjoitus 5, Ratkaisu

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

Algoritmit 1. Demot Timo Männikkö

Algoritmit 2. Luento 9 Ti Timo Männikkö

Algoritmit 1. Luento 12 Ti Timo Männikkö

Ohjelmoinnin peruskurssi Y1

811312A Tietorakenteet ja algoritmit V Hash-taulukot ja binääriset etsintäpuut

Algoritmit 1. Luento 11 Ti Timo Männikkö

Algoritmit 2. Luento 14 Ke Timo Männikkö

Ohjelmoinnin perusteet Y Python

Algoritmit 2. Luento 12 To Timo Männikkö

Luento 5. Timo Savola. 28. huhtikuuta 2006

Algoritmit 1. Luento 12 Ke Timo Männikkö

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

Kaksiloppuinen jono D on abstrakti tietotyyppi, jolla on ainakin seuraavat 4 perusmetodia... PushFront(x): lisää tietoalkion x jonon eteen

List-luokan soveltamista. Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen

Algoritmit 1. Luento 7 Ti Timo Männikkö

Tietorakenteet, laskuharjoitus 7, ratkaisuja

Algoritmit 1. Luento 4 Ke Timo Männikkö

Algoritmit 1. Luento 6 Ke Timo Männikkö

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

Ohjelmoinnin perusteet Y Python

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

Muuttujien roolit Kiintoarvo cin >> r;

Ohjelmoinnin perusteet Y Python

Algoritmit 2. Luento 13 Ti Timo Männikkö

58131 Tietorakenteet Erilliskoe , ratkaisuja (Jyrki Kivinen)

Algoritmit 1. Luento 10 Ke Timo Männikkö

5. Hash-taulut ja binääriset etsintäpuut

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.

Algoritmit 1. Luento 8 Ke Timo Männikkö

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

Ohjelmoinnin peruskurssi Y1

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

811312A Tietorakenteet ja algoritmit, , Harjoitus 6, Ratkaisu

Ohjelmoinnin perusteet Y Python

Algoritmit 2. Demot Timo Männikkö

Oikeasta tosi-epätosi -väittämästä saa pisteen, ja hyvästä perustelusta toisen.

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 2. Luento 9 Ti Timo Männikkö

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

58131 Tietorakenteet ja algoritmit (kevät 2014) Uusinta- ja erilliskoe, , vastauksia

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.

Ohjelmoinnin perusteet Y Python

B + -puut. Kerttu Pollari-Malmi

4. Perustietorakenteet

Algoritmit 1. Luento 1 Ti Timo Männikkö

A TIETORAKENTEET JA ALGORITMIT

Merkkijonon tutkiminen matches-metodilla

Ohjelmointiharjoituksia Arduino-ympäristössä

ITKP102 Ohjelmointi 1, syksy 2007

811312A Tietorakenteet ja algoritmit, , Harjoitus 6, Ratkaisu

Kysymyksiä koko kurssista?

Ohjelmoinnin perusteet Y Python

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

1.1 Tavallinen binäärihakupuu

2. Perustietorakenteet

5/20: Algoritmirakenteita III

5. Hajautus. Tarkastellaan edelleen sivulla 161 esitellyn joukkotietotyypin toteuttamista

Algoritmit 1. Luento 10 Ke Timo Männikkö

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Java-kielen perusteita

Sisältö. 22. Taulukot. Yleistä. Yleistä

Hakupuut. tässä luvussa tarkastelemme puita tiedon tallennusrakenteina

Algoritmit 1. Luento 3 Ti Timo Männikkö

7.4 Sormenjälkitekniikka

18. Abstraktit tietotyypit 18.1

Binäärihaun vertailujärjestys

Ohjelmoinnin perusteet Y Python

Tietorakenteet, laskuharjoitus 6,

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

Lineaarinen optimointitehtävä

Java-kielen perusteita

9.3 Algoritmin valinta

58131 Tietorakenteet (kevät 2009) Harjoitus 9, ratkaisuja (Antti Laaksonen)

Tutoriaaliläsnäoloista

Ohjelmoinnin perusteet Y Python

Pino S on abstrakti tietotyyppi, jolla on ainakin perusmetodit:

Transkriptio:

Algoritmit 2 Demot 2 3.-4.4.2019 Timo Männikkö

Tehtävä 1 Avoin osoitteenmuodostus: Hajautustaulukko t (koko m) Erikoisarvot VAPAA ja POISTETTU Hajautusfunktio h(k,i) Operaatiot: lisaa etsi poista Algoritmit 2 Kevät 2019 Demot 2 3.-4.4.2019 2/35

Tehtävä 1 (a) lisaa(t,alkio) { k = alkio.avain; for (i = 0; i < m; i++) { j = h(k,i); if (t[j] == VAPAA t[j] == POISTETTU) { t[j] = alkio; return true; // onnistui } } return false; // taulukko täynnä } Algoritmit 2 Kevät 2019 Demot 2 3.-4.4.2019 3/35

Tehtävä 1 (b) etsi(t,alkio) { k = alkio.avain; for (i = 0; i < m; i++) { j = h(k,i); if (t[j] == VAPAA) break; // alkioketju loppui, lopetetaan if (t[j]!= POISTETTU && t[j].avain == k) return j; // löytyi, palautetaan indeksi } return -1; // ei löytynyt, palautetaan virhe } Algoritmit 2 Kevät 2019 Demot 2 3.-4.4.2019 4/35

Tehtävä 1 (c) poista(t,alkio) { j = etsi(t,alkio); if (j < 0) return error; else t[j] = POISTETTU; } Algoritmit 2 Kevät 2019 Demot 2 3.-4.4.2019 5/35

Tehtävä 2 (a) Lisätään luvut 23, 47, 17, 75, 53, 33, 62 ja 18 h(k, i) = ((k mod 10) + i) mod 10, i = 0, 1, 2,... 0 1 2 3 4 5 6 7 8 9 - - - 23 - - - - - - i = 0 - - - 23 - - - 47 - - i = 0 - - - 23 - - - 47 17 - i = 1 - - - 23-75 - 47 17 - i = 0 - - - 23 53 75-47 17 - i = 1 - - - 23 53 75 33 47 17 - i = 3 - - 62 23 53 75 33 47 17 - i = 0 - - 62 23 53 75 33 47 17 18 i = 1 Algoritmit 2 Kevät 2019 Demot 2 3.-4.4.2019 6/35

Tehtävä 2 (b) Lisätään luvut 23, 47, 17, 75, 53, 33, 62 ja 18 h(k, i) = ((k mod 10) + i 2 ) mod 10, i = 0, 1, 2,... 0 1 2 3 4 5 6 7 8 9 - - - 23 - - - - - - i = 0 - - - 23 - - - 47 - - i = 0 - - - 23 - - - 47 17 - i = 1 - - - 23-75 - 47 17 - i = 0 - - - 23 53 75-47 17 - i = 1 - - 33 23 53 75-47 17 - i = 3, i 2 = 9 - - 33 23 53 75 62 47 17 - i = 2, i 2 = 4 - - 33 23 53 75 62 47 17 18 i = 1 Algoritmit 2 Kevät 2019 Demot 2 3.-4.4.2019 7/35

Tehtävä 2 (c) Lisätään luvut 23, 47, 17, 75, 53, 33, 62 ja 18 h(k, i) = ((k mod 10) + i (7 (k mod 7))) mod 10 0 1 2 3 4 5 6 7 8 9 - - - 23 - - - - - - i = 0 - - - 23 - - - 47 - - i = 0-17 - 23 - - - 47 - - i = 1, 7 (17 mod 7) = 4-17 - 23-75 - 47 - - i = 0-17 - 23-75 53 47 - - i = 1, 7 (53 mod 7) = 3-17 - 23-75 53 47-33 i = 3, 7 (33 mod 7) = 2-17 62 23-75 53 47-33 i = 0-17 62 23-75 53 47 18 33 i = 0 Algoritmit 2 Kevät 2019 Demot 2 3.-4.4.2019 8/35

Tehtävä 3 (a) 20 30 48 58 70 88 11 15 17 22 28 35 49 50 62 66 73 79 90 96 Lisätään 13: x 48 haarautumissolmu y 20,30 ei täysi x 20,30 haarautumissolmu y 11,15,17 täysi, halkaistaan (a=15) Algoritmit 2 Kevät 2019 Demot 2 3.-4.4.2019 9/35

Tehtävä 3 (a) jatkuu 15 20 30 48 58 70 88 11 17 22 28 35 49 50 62 66 73 79 90 96 x 15,20,30 y 11, z 17 x 11 lehtisolmu joten lisätään Algoritmit 2 Kevät 2019 Demot 2 3.-4.4.2019 10/35

Tehtävä 3 (a) jatkuu 48 15 20 30 58 70 88 11 13 17 22 28 35 49 50 62 66 73 79 90 96 Algoritmit 2 Kevät 2019 Demot 2 3.-4.4.2019 11/35

Tehtävä 3 (b) 20 30 48 58 70 88 11 15 17 22 28 35 49 50 62 66 73 79 90 96 Lisätään 52: x 48 haarautumissolmu y 58,70,88 täysi, halkaistaan (a=70) Algoritmit 2 Kevät 2019 Demot 2 3.-4.4.2019 12/35

Tehtävä 3 (b) jatkuu 20 30 48 70 58 88 11 15 17 22 28 35 49 50 62 66 73 79 90 96 x 48,70 y 58, z 88 x 58 haarautumissolmu y 49,50 ei täysi x 49,50 lehtisolmu joten lisätään Algoritmit 2 Kevät 2019 Demot 2 3.-4.4.2019 13/35

Tehtävä 3 (b) jatkuu 48 70 58 88 20 30 11 15 17 22 28 35 49 50 52 62 66 73 79 90 96 Algoritmit 2 Kevät 2019 Demot 2 3.-4.4.2019 14/35

Tehtävä 4 (a) 20 30 48 58 70 88 11 15 17 22 28 35 49 50 62 66 73 79 90 96 Poistetaan 35: x 48 haarautumissolmu y 20,30 ei puoliksi täysi x 20,30 haarautumissolmu y 35 puoliksi täysi z 22,28 yksi yli minimin, siirretään (a=30, b=28) Algoritmit 2 Kevät 2019 Demot 2 3.-4.4.2019 15/35

Tehtävä 4 (a) jatkuu 20 28 48 58 70 88 11 15 17 22 30 35 49 50 62 66 73 79 90 96 x 20,28 z 22, y 30,35 x 30,35 lehtisolmu joten poistetaan Algoritmit 2 Kevät 2019 Demot 2 3.-4.4.2019 16/35

Tehtävä 4 (a) jatkuu 20 28 48 58 70 88 11 15 17 22 30 49 50 62 66 73 79 90 96 Algoritmit 2 Kevät 2019 Demot 2 3.-4.4.2019 17/35

Tehtävä 4 (b) 20 30 48 58 70 88 11 15 17 22 28 35 49 50 62 66 73 79 90 96 Poistetaan 58: x 48 haarautumissolmu y 58,70,88 ei puoliksi täysi x 58,70,88 haarautumissolmu, sisältää poistettavan y 49,50 yksi yli minimin k 50 poistettavan edeltäjä Algoritmit 2 Kevät 2019 Demot 2 3.-4.4.2019 18/35

Tehtävä 4 (b) jatkuu 20 30 48 58 70 88 11 15 17 22 28 35 49 50 62 66 73 79 90 96 Poistetaan k =50: x 58,70,88 haarautumissolmu y 49,50 ei puoliksi täysi x 49,50 lehtisolmu joten poistetaan Algoritmit 2 Kevät 2019 Demot 2 3.-4.4.2019 19/35

Tehtävä 4 (b) jatkuu 20 30 48 58 70 88 11 15 17 22 28 35 49 62 66 73 79 90 96 Poisto k =50 tehty, palataan takaisin: x 58,70,88 korvataan 58 alkiolla k =50 Algoritmit 2 Kevät 2019 Demot 2 3.-4.4.2019 20/35

Tehtävä 4 (b) jatkuu 20 30 48 50 70 88 11 15 17 22 28 35 49 62 66 73 79 90 96 Algoritmit 2 Kevät 2019 Demot 2 3.-4.4.2019 21/35

Tehtävä 5 (a) Tallennetaan nelipuuhun pisteet (7,15), (3,2), (13,3), (5,10), (6,6), (6,13), (1,3) (7,15) Algoritmit 2 Kevät 2019 Demot 2 3.-4.4.2019 22/35

Tehtävä 5 (a) jatkuu Tallennetaan nelipuuhun pisteet (7,15), (3,2), (13,3), (5,10), (6,6), (6,13), (1,3) ( o x x o ) / / (7,15) (3,2) Algoritmit 2 Kevät 2019 Demot 2 3.-4.4.2019 23/35

Tehtävä 5 (a) jatkuu Tallennetaan nelipuuhun pisteet (7,15), (3,2), (13,3), (5,10), (6,6), (6,13), (1,3) ( o x x x ) / \ / \ (7,15) (3,2) (13,3) Algoritmit 2 Kevät 2019 Demot 2 3.-4.4.2019 24/35

Tehtävä 5 (a) jatkuu Tallennetaan nelipuuhun pisteet (7,15), (3,2), (13,3), (5,10), (6,6), (6,13), (1,3) ( o x x x ) / \ / \ (x o o x) (3,2) (13,3) (7,15) (5,10) Algoritmit 2 Kevät 2019 Demot 2 3.-4.4.2019 25/35

Tehtävä 5 (a) jatkuu Tallennetaan nelipuuhun pisteet (7,15), (3,2), (13,3), (5,10), (6,6), (6,13), (1,3) ( o x x x ) / \ / \ (x o o x) (x o x o) (13,3) \ (7,15) (5,10) (6,6) (3,2) Algoritmit 2 Kevät 2019 Demot 2 3.-4.4.2019 26/35

Tehtävä 5 (a) jatkuu Tallennetaan nelipuuhun pisteet (7,15), (3,2), (13,3), (5,10), (6,6), (6,13), (1,3) ( o x x x ) / \ / \ (x o o x) (x o x o) (13,3) / \ (x o o x) (5,10) (6,6) (3,2) (7,15) (6,13) Algoritmit 2 Kevät 2019 Demot 2 3.-4.4.2019 27/35

Tehtävä 5 (a) jatkuu Tallennetaan nelipuuhun pisteet (7,15), (3,2), (13,3), (5,10), (6,6), (6,13), (1,3) ( o x x x ) / \ / \ (x o o x) (x o x o) (13,3) / \ (x o o x) (5,10) (6,6) (x x o o) / \ (7,15) (6,13) (3,2) (1,3) Algoritmit 2 Kevät 2019 Demot 2 3.-4.4.2019 28/35

Tehtävä 5 (b) Tallennetaan nelipuuhun pisteet (6,6), (1,3), (3,2), (7,15), (6,13), (5,10), (13,3) (6,6) Algoritmit 2 Kevät 2019 Demot 2 3.-4.4.2019 29/35

Tehtävä 5 (b) jatkuu Tallennetaan nelipuuhun pisteet (6,6), (1,3), (3,2), (7,15), (6,13), (5,10), (13,3) ( o o x o ) (x o x o) \ (6,6) (1,3) Algoritmit 2 Kevät 2019 Demot 2 3.-4.4.2019 30/35

Tehtävä 5 (b) jatkuu Tallennetaan nelipuuhun pisteet (6,6), (1,3), (3,2), (7,15), (6,13), (5,10), (13,3) ( o o x o ) (x o x o) \ (6,6) (x x o o) / \ (3,2) (1,3) Algoritmit 2 Kevät 2019 Demot 2 3.-4.4.2019 31/35

Tehtävä 5 (b) jatkuu Tallennetaan nelipuuhun pisteet (6,6), (1,3), (3,2), (7,15), (6,13), (5,10), (13,3) ( o x x o ) / / (7,15) (x o x o) \ (6,6) (x x o o) / \ (3,2) (1,3) Algoritmit 2 Kevät 2019 Demot 2 3.-4.4.2019 32/35

Tehtävä 5 (b) jatkuu Tallennetaan nelipuuhun pisteet (6,6), (1,3), (3,2), (7,15), (6,13), (5,10), (13,3) ( o x x o ) / / (x o o o) (x o x o) / \ (x o o x) (6,6) (x x o o) / \ (7,15) (6,13) (3,2) (1,3) Algoritmit 2 Kevät 2019 Demot 2 3.-4.4.2019 33/35

Tehtävä 5 (b) jatkuu Tallennetaan nelipuuhun pisteet (6,6), (1,3), (3,2), (7,15), (6,13), (5,10), (13,3) ( o x x o ) / / (x o o x) (x o x o) / \ (x o o x) (5,10) (6,6) (x x o o) / \ (7,15) (6,13) (3,2) (1,3) Algoritmit 2 Kevät 2019 Demot 2 3.-4.4.2019 34/35

Tehtävä 5 (b) jatkuu Tallennetaan nelipuuhun pisteet (6,6), (1,3), (3,2), (7,15), (6,13), (5,10), (13,3) ( o x x x ) / \ / \ (x o o x) (x o x o) (13,3) / \ (x o o x) (5,10) (6,6) (x x o o) / \ (7,15) (6,13) (3,2) (1,3) Algoritmit 2 Kevät 2019 Demot 2 3.-4.4.2019 35/35