Sekvenssi: kokoelma peräkkäisiä alkioita (lineaarinen

Samankaltaiset tiedostot
4. Sekvenssit Astetta soveltavat sekvenssit

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

Algoritmit 2. Luento 2 To Timo Männikkö

Algoritmit 2. Luento 2 Ke Timo Männikkö

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

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

18. Abstraktit tietotyypit 18.1

Algoritmit 1. Luento 4 Ke Timo Männikkö

Tieto- ja tallennusrakenteet

Sisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto

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.

A TIETORAKENTEET JA ALGORITMIT

Algoritmit 2. Luento 7 Ti Timo Männikkö

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes)

811312A Tietorakenteet ja algoritmit II Perustietorakenteet

Algoritmit 1. Luento 6 Ke Timo Männikkö

Pinot, jonot, yleisemmin sekvenssit: kokoelma peräkkäisiä alkioita (lineaarinen järjestys) Yleisempi tilanne: alkioiden hierarkia

Algoritmit 2. Luento 4 Ke Timo Männikkö

Pino S on abstrakti tietotyyppi, jolla on ainakin perusmetodit:

Algoritmit 2. Luento 5 Ti Timo Männikkö

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

Algoritmit 1. Luento 3 Ti Timo Männikkö

Algoritmit 1. Luento 9 Ti Timo Männikkö

Algoritmit 2. Luento 4 To Timo Männikkö

Algoritmit 2. Luento 3 Ti Timo Männikkö

Tietorakenteet ja algoritmit - syksy

Algoritmit 2. Luento 3 Ti Timo Männikkö

Imperatiivisen ohjelmoinnin peruskäsitteet. Meidän käyttämän pseudokielen lauseiden syntaksi

Algoritmit 1. Luento 5 Ti Timo Männikkö

Algoritmit 2. Luento 14 Ke Timo Männikkö

(p j b (i, j) + p i b (j, i)) (p j b (i, j) + p i (1 b (i, j)) p i. tähän. Palaamme sanakirjaongelmaan vielä tasoitetun analyysin yhteydessä.

Algoritmit 1. Luento 10 Ke Timo Männikkö

A215 Tietorakenteet. Tietojenkäsittelytieteiden laitos Tampereen yliopisto. Periodit I-II, syksy 2007

Algoritmit 2. Luento 5 Ti Timo Männikkö

Tietorakenteet ja algoritmit

Algoritmit 1. Luento 1 Ti Timo Männikkö

Algoritmit 1. Demot Timo Männikkö

3. Pinot, jonot ja linkitetyt listat

A TIETORAKENTEET JA ALGORITMIT

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

TIETORAKENTEET JA ALGORITMIT

Algoritmit 1. Luento 14 Ke Timo Männikkö

TKT20001 Tietorakenteet ja algoritmit Erilliskoe , malliratkaisut (Jyrki Kivinen)

Algoritmit 1. Luento 7 Ti Timo Männikkö

Algoritmit 2. Luento 6 To Timo Männikkö

Ohjelmoinnin perusteet Y Python

Rakenteiset tietotyypit Moniulotteiset taulukot

3. Pinot, jonot ja linkitetyt listat

Algoritmit 1. Luento 8 Ke Timo Männikkö

Listarakenne (ArrayList-luokka)

Algoritmit 1. Demot Timo Männikkö

A TIETORAKENTEET JA ALGORITMIT

Sisältö. 2. Taulukot. Yleistä. Yleistä

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

2. Perustietorakenteet

811312A Tietorakenteet ja algoritmit Kertausta jälkiosasta

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

Algoritmit 1. Luento 2 Ke Timo Männikkö

Ohjelmoinnin peruskurssien laaja oppimäärä

Algoritmit 2. Luento 6 Ke Timo Männikkö

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

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

f(n) = Ω(g(n)) jos ja vain jos g(n) = O(f(n))

Tietorakenteet, laskuharjoitus 3, ratkaisuja

4. Joukkojen käsittely

Ohjelmistojen mallintaminen viikon 4 laskareiden mallivastauksia

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

Ohjelmointi 1 Taulukot ja merkkijonot

Algoritmit 1. Luento 10 Ke Timo Männikkö

Binäärihaun vertailujärjestys

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

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.

3. Pinot, jonot ja linkitetyt listat

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

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

Tietorakenteet. JAVA-OHJELMOINTI Osa 5: Tietorakenteita. Sisällys. Merkkijonot (String) Luokka String. Metodeja (public)

Tarvitaanko adaptoituvia tietorakenteita

Tarkennamme geneeristä painamiskorotusalgoritmia

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit

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

58131 Tietorakenteet ja algoritmit (syksy 2015)

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta.

Kysymyksiä koko kurssista?

Tietorakenteet ja algoritmit

Jokaisella tiedostolla on otsake (header), joka sisältää tiedostoon liittyvää hallintatietoa

Lyhyt kertaus osoittimista

Algoritmi on periaatteellisella tasolla seuraava:

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

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin perusteet Y Python

811312A Tietorakenteet ja algoritmit, , Harjoitus 3, Ratkaisu

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen

Abstraktit tietotyypit. TIEA341 Funktio ohjelmointi 1 Syksy 2005

5.6. C-kielen perusteet, osa 6/8, Taulukko , pva, kuvat jma

8. Lajittelu, joukot ja valinta

Anna Kuikka Pyöräkatu 9 B Kuopio GSM: Opiskelijanro: 60219K. Prioriteettijonot

Koe ma 1.3 klo salissa A111, koeaika kuten tavallista 2h 30min

Ohjelmoinnin jatkokurssi, kurssikoe

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus

Transkriptio:

Sekvenssi Sekvenssi: kokoelma peräkkäisiä alkioita (lineaarinen järjestys) Timo Esim. pino, jono ja kaksiloppuinen jono ovat sekvenssin erikoistapauksia sekvenssejä, jotka kohdistavat operaationsa ensimmäiseen/viimeiseen alkioon alkiolla on yksikäsitteinen seuraaja- ja edeltäjäalkio (paitsi alussa/lopussa) Sekvenssi Yleinen sekvenssi: kullakin alkiolla on aste (rank, järjestysnumero ) Timo ensimmäisen alkion aste on 0, toisen 1, jne. aste alkion indeksi sekvenssissä Tietorakenteet, syksy 2007 1 Tietorakenteet, syksy 2007 2 Yleinen sekvenssi kullakin alkiolla on paikka abstrakti sijoituspaikan käsite abstraktina tietotyyppinä: alkio on datajäsen, ja metodi element() palauttaa alkion vrt. esim. solmu, johon alkio on tallennettu paikka v Timo Yleinen sekvenssi operaatioita voidaan suorittaa sekvenssin mihin tahansa kohtaan kohdan määritys: joko alkion aste, tai sekvenssissä olevan alkion paikka huom: luentomonisteessa käsitellään aluksi erillisinä tapauksina: astetta soveltava sekvenssi (asteet, ei paikkoja) paikkasekvenssi (paikat, ei asteita) Tietorakenteet, syksy 2007 3 Tietorakenteet, syksy 2007 4

ElemAtRank(r): palauttaa asteen r omaavan alkion virhe, jos r ei kuulu väliin 0...n 1, kun alkioita n kpl ElemAtRank(1), palauttaa alkion ReplaceElemAtRank(r,x): korvaa asteen r omaavan alkion alkiolla x, ja palauttaa korvatun alkion virhe, jos r ei kuulu väliin 0...n 1 Heli ReplaceElemAtRank(1, Heli), palauttaa alkion Tietorakenteet, syksy 2007 5 Tietorakenteet, syksy 2007 6 InsertElemAtRank(r,x): lisää alkion x sekvenssiin r-asteiseksi alkioksi virhe, jos r ei kuulu väliin 0...n palauttaa uuden alkion paikan (luentomoniste: ei palauta mitään, koska sovelsi vain astetta) paikka p Anu InsertElemAtRank(3,), palauttaa paikan c InsertElemAtRank(1,Anu), palauttaa paikan p Tietorakenteet, syksy 2007 7 RemoveElemAtRank(r): poistaa asteen r omaavan alkion ja palauttaa sen virhe, jos r ei kuulu väliin 0...n 1 myös poistetun alkion paikka häviää RemoveElemAtRank(2) palauttaa alkion Tietorakenteet, syksy 2007 8

paikka h Hanna Size(): palauttaa sekvenssin alkioiden lukumäärän IsEmpty(): palautusarvo true/false kertoo, onko sekvenssi tyhjä Replace(p,x): korvaa paikassa p olevan alkion alkiolla x, ja palauttaa korvatun alkion Topi Replace(y, Topi), palauttaa alkion First()/Last(): palauttaa sekvenssin ensimmäisen/viimeisen alkion paikan Before(p)/After(p): palauttaa paikkaa p edeltävän/seuraavan paikan sekvenssissä Tietorakenteet, syksy 2007 9 Tietorakenteet, syksy 2007 10 Swap(p,q): vaihtaa paikkojen p ja q alkiot keskenään Swap(a,c) InsertFirst(x)/InsertLast(x): lisää alkion x sekvenssin ensimmäiseksi/viimeiseksi alkioksi ja palauttaa alkion paikan InsertFirst(), palauttaa paikan b InsertLast(), palauttaa paikan d paikka d Tietorakenteet, syksy 2007 11 Tietorakenteet, syksy 2007 12

InsertBefore(p,x)/InsertAfter(p,x): lisää alkion x paikassa p olevan alkion eteen/perään ja palauttaa uuden alkion paikan paikka h Hanna InserBefore(c, ) palauttaa paikan y InsertAfter(a, Hanna) palauttaa paikan h Remove(p): poistaa paikassa p olevan alkion ja palauttaa sen Remove(b), palauttaa alkion AtRank(r): palauttaa r-asteisen alkion paikan RankOf(p): palauttaa paikassa p olevan alkion asteen Tietorakenteet, syksy 2007 13 Tietorakenteet, syksy 2007 14 Sekvenssin toteutuksesta Sekvenssi on luontevaa toteuttaa kaksoislinkitetyllä listalla paikka: viite alkiota vastaavaan solmuun Operaatioiden aikavaativuudet O(n), jos operaation sovelluskohta täytyy etsiä selaamalla listaa AtRank, RankOf, ElemAtRank, ReplaceElemAtRank, InsertElemAtRank, RemoveElemAtRank muut operaatiot: O(1) Tietorakenteet, syksy 2007 15 Sekvenssin toteutuksesta Sekvenssin toteutus taulukossa erilliset paikkatietueet paikka h Hanna 0 1 2 3 4 5 6 7 8 9 taulukossa viitteet paikkatietueisiin paikka säilyy samana, vaikka aste muuttuisi Tietorakenteet, syksy 2007 16

Sekvenssin toteutuksesta Lisäys/poisto taulukon keskellä: O(n) 0 1 2 3 4 5 6 7 8 9 Sekvenssin toteutuksesta Seuraus: taulukossa operaatioiden InsertAfter, InsertBefore, InsertElemAtRank, RemoveElemAt- Rank ja Remove aikavaatimus on O(n) Kaikki muut operaatiot O(1) käytetään rengasrakennetta (a la jono) kun lisäys/poisto alkuun/loppuun 0 1 2 3 4 5 6 7 8 9 Tietorakenteet, syksy 2007 17 Tietorakenteet, syksy 2007 18 Dynaaminen taulukko (esim. Javan Vector) jos koon N taulukko täyttyy(n = N), varataan kokoa 2N oleva taulukko jos n N/4, varataan kokoa N/2 oleva taulukko siirto uuteen taulukkoon: Θ(n) työtä voidaan osoittaa, että pahimmassakin tapauksessa keskimäärin O(1) per alkio Tietorakenteet, syksy 2007 19 siirto uuteen taulukkoon: Θ(n) työtä voidaan osoittaa, että pahimmassakin tapauksessa keskimäärin O(1) per alkio N/4 n N taulukon tilahukka O(n) Tietorakenteet, syksy 2007 20

Linkitetty lista: kussakin solmussa tietoalkio (tai viite sellaiseen) ja lisäksi viite toiseen solmuun listan tilahukka on Θ(n) vrt. dynaaminen taulukko: O(n) kutakin lisättyä/poistettua alkiota kohden tehty tietoalkion ja viitteen asetus vrt. dynaamisessa taulukossa siirrettävien alkioiden lukumäärä verrannollinen lisättyjen/poistettujen alkioden määrään Keskusmuisti (RAM) Taulukko A Tietorakenteet, syksy 2007 21 Tietorakenteet, syksy 2007 22 Keskusmuisti (RAM) Yhtenäiselle taulukolle voi olla hankalampaa varata muistia Taulukon ja (kaksoislinkitetyn) listan keskeinen suoritusajan tradeoff: alkion haku indeksin perusteella: taulukossa O(1), listassa O(n) lisäys/poisto keskellä: taulukossa O(n), listassa O(1) (jos lisäyskohta jo tiedetään) Tietorakenteet, syksy 2007 23 Tietorakenteet, syksy 2007 24