Binääripuut Kaksihaaraista puuta sanotaan binääripuuksi:

Slides:



Advertisements
Samankaltaiset esitykset
18. Abstraktit tietotyypit
Advertisements

Linssit (lenses).
@ Leena Lahtinen Helia Ohjelman perusrakenteet 1. PERÄKKÄISRAKENNE 2. VALINTARAKENNE 3. TOISTORAKENNE.
Olio-ohjelmoinnin perusteet luento 3: Muuttujista ja funktioista Sami Jantunen LTY/Tietotekniikan osasto.
Maapallo – ihmisen koti
Portal-ohje opiskelijoille. 2 Kirjaudu sisään tunnuksella ja salasanalla. Portaliin kirjauduttaessa käytetään samoja tunnuksia kuin muihin VAMKin IT-järjestelmiin.
JavaScript (c) Irja & Reino Aarinen, 2007
1 Heli Lepomäki Yritysten ja muiden organisaatioiden käyttöön sähköinen työpöytä on jo leviämässä, koska niiden toiminta ja asiakaspalvelu.
Ohjelman perusrakenteet
1756 Rinnakkaisalgoritmien suunnittelu Rinnakkaisuuden hyödyntämisen perustekniikat J. Porras.
vuorovaikutteiset www-sivut 1.Asiakas-palvelinmalli kuvana Request Response request.asp response.asp.
Tietorakenteet ja algoritmit
2.8.3 Abstraktit tietotyypit
Markku Siermala, IMT Bioinformatiikan koulutusohjelma
Tavanomaisimpien tietorakenteiden ja algoritmien testauksesta
Sovellusohjelman suunnittelu & toteutus
AS Automaation signaalinkäsittelymenetelmät
TMA.003 / L3 ( )1 3. Funktioista 3.1. Kuvaus ja funktio Olkoon A ja B ei-tyhjiä joukkoja. Tulojoukon A  B = {(x,y) | x  A, y  B} osajoukko on.
5.3.3 Koodin generointi Koodin generointi tarkoittaa objektikoodin eli konekielisen ohjelman tuottamista. Generointi jakautuu kolmeen osatehtävään: 1.Muistin.
Kompleksisuuden kertaluokat
Binäärinen hakupuu Jokaisessa solmussa on yksikäsitteinen avain
Ohjelman perusrakenteet
2. Vuokaaviot.
Pseudokoodi Tietokoneohjelmien perusidea:
Tiedonhakumenetelmät Helena Ahonen-Myka Kevät 2004, osa 9 Merkkijonohahmon etsintä selaamalla.
© Lammi-Niskala-Kossarev ADT:n toteutus Imperatiivinen paradigma Imperatiivinen paradigma toimenpiteet aktiivisia, tiedot passiivisia toimenpiteet.
Suuntaamattoman graafin syvyyshaku
Map-luokka Mikä Map on? Mapin esittely ja luonti Map-luokan metodeja Mappiin lisääminen Mapin läpikäynti Mapista poistaminen 1.
ict1td002 - Copyright Raine Kauppinen 1 Alkuarvot ja tyyppimuunnokset (1/5)  Aiemmin olemme jo antaneet muuttujille alkuarvoja, esimerkiksi: int.
Visual Basic -ohjelmointi
mieluummin useampikin?
2.7 Rekursio ja iteraatio Algoritminen ongelmanratkaisu ei ole
Metsät ja ilmasto Miksi istuttaa puu tai mieluummin useampikin?
2.8 TIETO- JA TALLETUSRAKENTEET
© Lammi-Niskala-Kossarev 1 Kertausta (lu 05-06) Algoritmin perusvaatimukset Miksi ei luonnollista kieltä ohjelmointiin Syntaksi, semantiikka ja pragmatiikka.
3.2 Kompleksisuus Vain pieni osa kaikista tehtävistä on laskettavissa tai edes osittainkaan laskettavissa. Laskettavien osalta saattaa olla tarpeellista.
Tietokannan normalisointi
Johdatus Informaatioteknologiaan II Turun yliopisto, Informaatioteknologian laitos, periodi 1 / 2011 Lasse Bergroth.
PARAABELI (2. ASTEEN FUNKTION KUVAAJIA)
RAKENNUSPALIKOITA SEINÄJOEN KANSALAISOPISTO Jussi Rasku Aki Sirviö.
Visual Basic -ohjelmointi
Kontrollirakenteet laajemmin
S ysteemianalyysin Laboratorio Teknillinen korkeakoulu Esitelmä 2 - Jirka Poropudas Optimointiopin seminaari - Kevät 2005 / 1 Bayes-verkoista s
Keskusmuistitietokantahakemistot Vilho Raatikka Solid Information Technology Tietokannat NYT! Helsinki,
Valintarakenne valintarakenne alkaa aina kysymyksellä eli ehdolla ehto tarkoittaa, että muuttujan sisältöä verrataan toisen muuttujan sisältöön tai vakioon.
Listat eli luettelot listaelementit ovat lohkoelementtejä:  lista ja listan alkiot alkavat uudelta riviltä  listan jälkeen tuleva elementti alkaa uudelta.
S ysteemianalyysin Laboratorio Aalto-yliopiston teknillinen korkeakoulu Esitelmä 22 – Jussi Kangaspunta Optimointiopin seminaari - Syksy 2010 Ohjaamaton.
FOR i := 0...N-1 DO summa := summa + A[i] tulo := tulo * A[i] ENDFOR.
Prioriteettijonot ja kekolajittelu (heapsort)
Kuplalajittelu (bubble sort)
Puun määritelmä Puu on yhden tai useamman kytketyn solmun muodostama hierarkinen joukko Lehtisolmuista juurisolmuun on yksikäsitteinen polku Käytetään.
Ohjelma Mikro-ohjelmointi Symbolinen konekieli Osoitustavat.
Lajittelun sovelluksia Yksilöllisyyden testaaminen Kopioiden poistaminen Mediaani/n:ksi suurimman valinta frekvenssien laskenta/yleisin alkio, l.moodi.
Ohjelmassa tänään Ohjelmointimallit Pseudokieli Modulaarisuus.
Graafi G - terminologia Ei-tyhjä solmujen/kärkien (vertex) joukko V(G) Kaarien (edge) joukko E(G) Suuntaamaton (G 1 ), Suunnattu (G 2 ) solmu kaari.
Hajakoodaus Talletetaan alkiot avain-indeksoituun taulukkoon Hajakoodausfunktio Menetelmä avain-indeksin laskemiseen avaimesta Törmäyksen selvitysstrategia.
Muuttujan osoite int a=1; 0xbfffea64 /* tulostetaan a:n osoite*/ printf(“%p\n”, &a); 0xbfffea68 /* tulostetaan a:n osoite + 1*/ printf(“%p\n”, &a+1); /*
Symbolitaulut Joukko hakuavaimen omaavia tietueita LISÄÄ uusi tietue ETSI tietue hakuavaimen perusteella Sovelluksia: Spell checker etsii sanoja sanakirjasta.
KSAO, Datanomit, käytön tuki kevät 2015 Lauri Tapola
Jenna Nyblom Katri Vanhatalo Oskari Anttalainen
Missä kaupunki X? Esimerkki PaikkaOpin käytöstä opetuksessa tehtävän idea: luokanopettaja Minna Glogan toteutus: koordinaattori Virpi Hirvensalo.
Missä kaupunki X? Esimerkki PaikkaOpin käytöstä opetuksessa tehtävän idea: luokanopettaja Minna Glogan toteutus: koordinaattori Virpi Hirvensalo.
Laiska laskenta, korekursio ja äärettömyys
Missä kaupunki X? Esimerkki PaikkaOpin käytöstä opetuksessa
PaikkaOppi Mobiilin käyttöohje
toista 12 kertaa käännä kortti lähetä käännetty
© Lammi-Niskala-Kossarev
Kontrollirakenteet laajemmin
Petteri Nurmi, Eero Huvio, Jussi Kollin & Mikko Waris
Ohjelman perusrakenteet
Esityksen transkriptio:

2.8.3.4 Binääripuut Kaksihaaraista puuta sanotaan binääripuuksi: solmulla on 0, 1 tai 2 seuraajaa vasemman puolen seuraajista muodostuu vasen alipuu (vasen poikapuu) ja oikean puolen seuraajista muodostuu oikea alipuu (oikea poikapuu) huom: lista on 1-haarainen puu eli unaaripuu !

Binääripuu … Puun läpikäyntijärjestykset (vasen alipuu ennen oikeaa alipuuta): esijärjestys (preorder tree walk): solmussa käydään aina ennen solmun alipuita välijärjestys (inorder): solmussa käydään aina alipuiden välissä jälkijärjestys (postorder): solmusssa käydään aina alipuiden jälkeen.

Binääripuu … Binääripuuoperaatioita: puun tyhjyyden testaus (puu p = tyhjä tai p  tyhjä) p.oikea tarkoittaa oikeaa alipuuta p.vasen tarkoittaa vasenta alipuuta puun alkioiden käsittelyt (lisäys, poisto, onko alkio puussa jne.).

Binääripuu … Esimerkki: puun alkioiden tulostus välijärjestyksessä: MODULE välijärjestys (p) IF p  tyhjä THEN välijärjestys (p.vasen) tulosta (p.arvo) ENDIF ENDMODULE Välijärjestys on yleisin läpikäyntijärjestys.

Binääripuu … Määritelmä: Puu p on järjestetty binääripuu, jos: p on tyhjä tai p on ei-tyhjä ja seuraavat ehdot ovat voimassa p:n juuren arvo > p:n vasemman alipuun jokaisen solmun arvo p:n juuren arvo < p:n oikean alipuun jokaisen solmun arvo p:n vasen ja oikea alipuu ovat järjestettyjä binääripuita.

Esimerkki: järjestettyjä binääripuita: Välijärjestys tuottaa järjestetyt listat: 12, 18, 24,30, 36, 42 ja Bertta, Fredi Jaana, Jussi, Kati, Mari, Sami

Binääripuu … Järjestettyä binääripuuta sanotaan usein myös binääriseksi hakupuuksi, koska puusta löydetään haluttu tieto nopeasti. Seuraavassa esimerkissä binääripuuta käytetään hyväksi lajittelussa. Tämä perustuu siihen, että välijärjestysläpikäynti tuottaa järjestetyn listan.

Esimerkki: Järjestetyn binääripuun käyttö listan järjestämisessä järjestämätön lista  järjestetty binääripuu  järjestetty lista MODULE lajittele (lista l) ListaPuuksi (l, p) PuuListaksi (p, l) ENDMODULE Parametri l viittaa listan alkuun.

Esimerkki: Järjestetyn binääripuun käyttö listan järjestämisessä järjestämätön lista  järjestetty binääripuu  järjestetty lista MODULE ListaPuuksi (l, p) p:= tyhjä puu WHILE l  tyhjä DO LisääPuuhun(l.arvo, p) l:=l.seuraava ENDWHILE ENDMODULE (* ListaPuuksi muodostaa järjestetyn binääripuun *)

Esimerkki: Järjestetyn binääripuun käyttö listan järjestämisessä MODULE LisääPuuhun (alkio a, p) IF p=tyhjä THEN p.arvo:=a p.vasen:=tyhjä p.oikea:=tyhjä ELSE IF a < p.arvo THEN LisääPuuhun(a, p.vasen) ELSE LisääPuuhun(a, p.oikea) ENDIF ENDMODULE (* LisääPuuhun vie yhden alkion järjestettyyn binääripuuhun *)

Esimerkki: Järjestetyn binääripuun käyttö listan järjestämisessä MODULE PuuListaksi (p, l) IF p  tyhjä THEN PuuListaksi (p.vasen, l) Lisää juuren arvo listan l loppuun PuuListaksi (p.oikea, l) ENDIF ENDMODULE

2.8.3.5 Binääripuun toteutus Kaksi päätoteutustapaa: linkitetty rakenne sulkumerkki- eli termiesitys listana tallentaminen Toteutustapa riippuu mm. käytettävän ohjelmointikielen tarjoamista keinoista.

2.8.3.5 Binääripuun toteutus … Linkitetty rakenne Jokaiseen solmuun talletetaan tietokenttien arvojen (tai arvon) lisäksi osoittimet vasempaan ja oikeaan alipuuhun. Toteutustapa riippuu mm. käytettävän ohjelmointikielen tarjoamista keinoista.

Sulkumerkki- eli termiesitys Seuraajat kirjoitetaan sulkeisiin juuren jälkeen. esim. 18 (12, 36). Tyhjälle puulle käytetään sovittua symbolia, esim. . Lehtien tyhjiä seuraajia ei merkitä. Perustuu esijärjestykseen. Esimerkiksi Jussi(Fredi(Bertta, Jaana), Kati (, Sami(Mari, )))

Listaesitys, esimerkiksi vektorissa: Puun juuri on listarakenteen 1. alkio. Paikassa i sijaitsevan solmun vasen seuraaja sijaitsee paikassa 2i ja oikea seuraaja paikassa 2i+1. implisiittinen tietorakenne – sisäänrakennettu sääntö Esim. [ Jussi, Fredi, Kati, Bertta, Jaana, _, Sami, _,_,_,_,_,_Mari,_] Keko solmun arvo on suurempi kuin poikasolmujen arvot poikasolmujen välillä ei määrättyä järjestystä listaesityksessä V[i]>V[2i] ja V[i]>V[2i+1] maksimin haku on triviaali tehtävä – löytyy puun juuresta

2.8.3.6 Graafi kärjet (solmut) ja niitä yhdistävät kaaret puurakenteen yleistys ei hierarkiaa kuten puissa solmun aste = niiden kaarien lukumäärä, jotka lähtevät tästä solmusta muihin solmuihin

(huom. tässä ei etäisyyksiä) Graafin esitysmuodot graafinen kartta bittikartta  (huom. tässä ei etäisyyksiä) Kuopio-solmun aste = 3

Graafinen kartta vs. taulukko kaupunkien väliset etäisyydet graafinen kartta bittikartta etäisyys ei heti saatavilla, täytyy laskea löytyy helposti rakenteen muuttuessa (lisäkaaria) päivitys helppoa yleensä vaatii koko matriisin läpikäymisen

2.8.3.7 Graafin toteutus Linkitetyt rakenteet Bittikarttaesitykset: kustakin solmusta linkit kaikkiin niihin solmuihin, joihin tästä solmusta on kaari miten tallennetaan linkit? tietueen kenttinä – täytyy asettaa yläraja miten muuten? (pohdinta) Bittikarttaesitykset: ykkösen sijalla voi olla kaaren paino, esim. välimatka tiedot kahteen kertaan taulukossa!

Tyypillisimpiä graafeja Suuntamaton graafi kaksisuuntaiset kaaret maantiekartta Suunnattu graafi kaupungin katuverkko yksisuuntaisine katuineen Puijonkatu 2-suuntaiset kadut kahtena kaarena Painotettu graafi kaaret varustetaan lukuarvoilla useampi kuin yksi kaari 2 solmun välillä kaistojen lkm, etäisyys kaupunkien välillä Suunnattu syklitön graafi

Suunnattu syklitön graafi Directed Acyclic Graph, DAG Sykli = kaarien muodostama polku, joka päättyy samaan solmuun mistä se alkaa symmetriset suhteet kaksisuuntaisilla kaareilla aiheuttavat syklejä epäsymmetriset suhteet yksisuuntaisilla kaareilla eivät Esim. perhejäsenten suhteet DAG:na puurakenne ei riitä, koska lapsella on 2 vanhempaa (edeltäjää) vanhempien välillä suhteet mies/vaimo vanhempi/lapsi epäsymmetrinen suhde sisarus-suhde luo syklejä – ratkaisu esikoinen/pikkusisarus -relaatiot