1 Puu, Keko ja Prioriteettijono



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

811312A Tietorakenteet ja algoritmit III Lajittelualgoritmeista

Algoritmit 2. Luento 2 To Timo Männikkö

Algoritmit 2. Luento 2 Ke Timo Männikkö

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

Hakupuut. tässä luvussa tarkastelemme puita tiedon tallennusrakenteina

5. Keko. Tietorakenne keko eli kasa (heap) on tehokas toteutus abstraktille tietotyypille prioriteettijono, jonka operaatiot ovat seuraavat:

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

9 Erilaisia tapoja järjestää

TKT20001 Tietorakenteet ja algoritmit Erilliskoe , malliratkaisut (Jyrki Kivinen)

Algoritmit 2. Demot Timo Männikkö

1 Erilaisia tapoja järjestää

AVL-puut. eräs tapa tasapainottaa binäärihakupuu siten, että korkeus on O(log n) kun puussa on n avainta

4 Tehokkuus ja algoritmien suunnittelu

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

A TIETORAKENTEET JA ALGORITMIT

Algoritmit 1. Luento 7 Ti Timo Männikkö

Tiraka, yhteenveto tenttiinlukua varten

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.

Algoritmi on periaatteellisella tasolla seuraava:

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

Algoritmit 2. Luento 6 To Timo Männikkö

Miten käydä läpi puun alkiot (traversal)?

Algoritmit 2. Luento 3 Ti Timo Männikkö

1.1 Tavallinen binäärihakupuu

Algoritmit 2. Luento 7 Ti Timo Männikkö

Binäärihaun vertailujärjestys

13 Lyhimmät painotetut polut

Algoritmit 2. Luento 3 Ti Timo Männikkö

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

Algoritmit 2. Luento 5 Ti Timo Männikkö

Algoritmit 2. Luento 5 Ti Timo Männikkö

Algoritmit 2. Luento 4 To Timo Männikkö

14 Tasapainotetut puurakenteet

Algoritmit 2. Luento 6 Ke Timo Männikkö

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

Algoritmit 2. Luento 14 Ke Timo Männikkö

3. Hakupuut. B-puu on hakupuun laji, joka sopii mm. tietokantasovelluksiin, joissa rakenne on talletettu kiintolevylle eikä keskusmuistiin.

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

58131 Tietorakenteet (kevät 2008) 1. kurssikoe, ratkaisuja

4. Joukkojen käsittely

Algoritmit 1. Luento 8 Ke Timo Männikkö

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

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

Tietorakenteet ja algoritmit - syksy

Algoritmit 2. Luento 4 Ke Timo Männikkö

5 Kertaluokkamerkinnät

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

3 Lajittelualgoritmeista

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

9.3 Algoritmin valinta

58131 Tietorakenteet Erilliskoe , ratkaisuja (Jyrki Kivinen)

Tietorakenteet, laskuharjoitus 6,

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

Algoritmit 1. Luento 1 Ti Timo Männikkö

A TIETORAKENTEET JA ALGORITMIT

Tietorakenteet, laskuharjoitus 7, ratkaisuja

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.

10. Painotetut graafit

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

TIE Tietorakenteet ja algoritmit 25

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

Kierros 4: Binäärihakupuut

HENRI MYLLYOJA BINÄÄRI- JA FIBONACCI-KEOT PRIORITEETTIJONON TO- TEUTUKSEEN. Kandidaatintyö

811120P Diskreetit rakenteet

Luku 7. Verkkoalgoritmit. 7.1 Määritelmiä

1.1 Pino (stack) Koodiluonnos. Graafinen esitys ...

811312A Tietorakenteet ja algoritmit, , Harjoitus 7, ratkaisu

A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä.

58131 Tietorakenteet ja algoritmit Uusinta- ja erilliskoe ratkaisuja (Jyrki Kivinen)

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

811312A Tietorakenteet ja algoritmit II Perustietorakenteet

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

Algoritmit 1. Luento 3 Ti Timo Männikkö

58131 Tietorakenteet ja algoritmit Uusinta- ja erilliskoe malliratkaisut ja arvosteluperusteet

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

CS-A1140 Tietorakenteet ja algoritmit

811120P Diskreetit rakenteet

Algoritmit 1. Demot Timo Männikkö

Algoritmit 2. Luento 11 Ti Timo Männikkö

4 Lajittelualgoritmeista

Algoritmit 2. Luento 9 Ti Timo Männikkö

Algoritmit 1. Luento 6 Ke Timo Männikkö

58131 Tietorakenteet (kevät 2009) Harjoitus 11, ratkaisuja (Topi Musto)

8. Lajittelu, joukot ja valinta

3. Binääripuu, Java-toteutus

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

Algoritmit 1. Luento 10 Ke Timo Männikkö

7. Tasapainoitetut hakupuut

811312A Tietorakenteet ja algoritmit Kertausta jälkiosasta

Datatähti 2019 loppu

811312A Tietorakenteet ja algoritmit, , Harjoitus 5, Ratkaisu

Graafit ja verkot. Joukko solmuja ja joukko järjestämättömiä solmupareja. eli haaroja. Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria

Algoritmit 1. Luento 9 Ti Timo Männikkö

811312A Tietorakenteet ja algoritmit Kertausta jälkiosasta

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

Lähteet. OHJ-2010 TIETORAKENTEIDEN KÄYTTÖ lukuvuosi Terhi Kilamo

Algoritmit 1. Luento 10 Ke Timo Männikkö

Kierros 3: Puut. Tommi Junttila. Aalto University School of Science Department of Computer Science

Algoritmit 1. Luento 4 Ke Timo Männikkö

Transkriptio:

TIE-20100 Tietorakenteet ja algoritmit 1 1 Puu, Keko ja Prioriteettijono Tässä luvussa käsitellään algoritmien suunnitteluperiaatetta muunna ja hallitse (transform and conquer) Lisäksi esitellään binääripuun käsite ja kekorakenne. Luvussa tutustutaan kekoon perustuvaan järjestelyalgoritmiin HEAPSORTiin. Prioriteettijono (priority queue) eli rakenne, jossa alkioilla on järjestettävä ominaisuus prioriteetti esitellään lopuksi.

TIE-20100 Tietorakenteet ja algoritmit 2 1.1 Suunnitteluperiaate: Muunna ja hallitse Muunna ja hallitse on suunnitteluperiaate, joka Ensin muokkaa ongelman instanssia muotoon, joka on helpompi ratkaista muunnosvaihe Sitten ongelma voidaan ratkaista hallintavaihe Ongelman instanssi voidaan muuntaa kolmella eri tavalla: Yksinkertaistaminen (Instance simplification): yksinkertaisempi tai kätevämpi instanssi samasta ongelmasta Esitystavan muutos (Representation change): saman instanssin toinen esitystapa Ongelman muunnos (Problem reduction): ratkaistaan sellaisen ongelman, jolle algoritmi on jo valmiina, instanssi

TIE-20100 Tietorakenteet ja algoritmit 3 1.2 Järjestäminen keon avulla Tässä kappaleessa esitellään hyvin tärkeään tietorakenteeseen keko perustuva järjestämisalgoritmi HEAPSORT. Binääripuut Ennen kuin käydään käsiksi kekoon, määritellään käsite binääripuu. se on rakenne, joka koostuu solmuista, joilla on kullakin 0, 1 tai 2 lasta lasten nimet ovat vasen (left) ja oikea (right) solmu on lapsiensa isä (parent) lapseton solmu on lehti (leaf), ja muut solmut ovat sisäsolmuja (internal node) binääripuussa on korkeintaan yksi solmu, jolla ei ole isää, juuri (root) kaikki muut solmut ovat juuren lapsia, lastenlapsia jne.

TIE-20100 Tietorakenteet ja algoritmit 4 kunkin solmun jälkeläiset muodostavat binääripuun alipuun, jonka juuri kyseinen solmu on binääripuun solmun korkeus (height) on pisimmän solmusta suoraan alas lehteen vievän polun pituus pituus lasketaan kaarien mukaan, jolloin lehden korkeus on 0 binääripuun korkeus on sen juuren korkeus sisäsolmuja lehtiä juuri

TIE-20100 Tietorakenteet ja algoritmit 5 binääripuu on täydellisesti tasapainotettu (completely balanced), jos sen juuren lasten määräämien alipuiden korkeudet eroavat toisistaan enintään yhdellä, ja alipuut on täydellisesti tasapainotettu n-solmuisen binäärihakupuun korkeus on vähintään lg n ja korkeintaan n - 1 O(n) ja Ω(lg n) Keko Taulukko A[1... n] on keko, jos A[i] A[2i] ja A[i] A[2i + 1] aina kun 1 i n 2 (ja 2i + 1 n).

TIE-20100 Tietorakenteet ja algoritmit 6 Tämä on helpompi ymmärtää, kun tulkitaan keko täydellisesti tasapainotetuksi binääripuuksi, jonka juuri on talletettu taulukon paikkaan 1 paikkaan i talletetun solmun lapset (jos olemassa) on talletettu paikkoihin 2i ja 2i + 1 paikkaan i talletetun solmun isä on talletettu paikkaan i 2 7 2 7 Tällöin jokaisen solmun arvo on suurempi tai yhtä suuri kuin sen lasten arvot. Kekopuun jokainen kerros on täysi, paitsi ehkä alin, joka on täytetty vasemmasta reunasta alkaen. 15 14 5 17 8 12 10

TIE-20100 Tietorakenteet ja algoritmit 7 Jotta kekoa olisi helpompi ajatella puuna, määrittelemme isäja lapsisolmut löytävät aliohjelmat. ne ovat toteutettavissa hyvin tehokkaasti bittisiirtoina kunkin suoritusaika on aina Θ(1) PARENT(i) return i/2 LEFT(i) return 2i RIGHT(i) return 2i + 1

TIE-20100 Tietorakenteet ja algoritmit 8 Nyt keko-ominaisuus voidaan lausua seuraavasti: A[PARENT(i)] A[i] aina kun 2 i A.heapsize A.heapsize kertoo keon koon (myöhemmin nähdään, ettei se aina ole välttämättä sama kuin taulukon koko) Keko-ominaisuudesta seuraa, että keon suurin alkio on aina keon juuressa, siis taulukon ensimmäisessa lokerossa. Jos keon korkeus on h, sen solmujen määrä on välillä 2 h... 2 h+1 1. Jos keossa n solmua, sen korkeus on Θ(lg n).

TIE-20100 Tietorakenteet ja algoritmit 9 Alkion lisääminen kekoon ylhäältä: oletetaan, että A[1... n] on muuten keko, mutta kekoominaisuus ei päde kekopuun juurelle toisin sanoen A[1] < A[2] tai A[1] < A[3] 8 7 2 7 4 9 15 2 14 5 10 9 1 12 3 8 10 5 6 7 ongelma saadaan siirrettyä alemmas puussa valitsemalla juuren lapsista suurempi, ja vaihtamalla se juuren kanssa jotta keko-ominaisuus ei rikkuisi, pitää valita lapsista suurempi - siitähän tulee toisen lapsen uusi isä 2 8 4 9 9 2 7 14 7 5 15 10 1 8 12 3 10 5 6 7

TIE-20100 Tietorakenteet ja algoritmit 10 sama voidaan tehdä alipuulle, jonka juureen ongelma siirtyi, ja sen alipuulle jne. kunnes ongelma katoaa ongelma katoaa viimeistään kun saavutetaan lehti puu muuttuu keoksi 2 8 7 7 4 9 14 5 2 9 15 10 1 8 12 3 10 5 6 7

TIE-20100 Tietorakenteet ja algoritmit 11 Sama pseudokoodina: HEAPIFY( A, i ) (i kertoo paikan, jonka alkio saattaa olla liian pieni) 1 repeat (toistetaan, kunnes keko on ehjä) 2 old_i := i (otetaan i:n arvo talteen) 3 l := LEFT( i ) 4 r := RIGHT( i ) 5 if l A.heapsize and A[ l ] > A[ i ] then (vasen lapsi on suurempi kuin i) 6 i := l 7 if r A.heapsize and A[ r ] > A[ i ] then (oikea lapsi on vielä suurempi) 8 i := r 9 if i old_i then (jos suurempi lapsi löytyi...) 10 exchange A[ old_i ] A[ i ] (...siirretään rike alaspäin) 11 until i = old_i (jos keko oli jo ehjä, lopetetaan) Suoritus on vakioaikaista kun rivin 11 ehto toteutuu heti ensimmäisellä kerralla kun sinne päädytään: Ω(1). Pahimmassa tapauksessa uusi alkio joudutaan siirtämään lehteen asti koko korkeuden verran. Suoritusaika on O(h) = O(lg n).

TIE-20100 Tietorakenteet ja algoritmit 12 Keon rakentaminen seuraava algoritmi järjestää taulukon uudelleen niin, että siitä tulee keko: BUILD-HEAP(A) 1 A.heapsize := A.length (koko taulukosta tehdään keko) 2 for i := A.length/2 downto 1 do (käydään taulukon alkupuolisko läpi) 3 HEAPIFY(A, i) (kutsutaan Heapifyta) Lähdetään käymään taulukkoa läpi lopusta käsin ja kutsutaan HEAPIFYTA kaikille alkioille. ennen HEAPIFY-funktion kutsua keko-ominaisuus pätee aina i:n määräämälle alipuulle, paitsi että paikan i alkio on mahdollisesti liian pieni yhden kokoisia alipuita ei tarvitse korjata, koska niissä keko-ominaisuus pätee triviaalisti HEAPIFY(A, i):n jälkeen i:n määräämä alipuu on keko HEAPIFY(A, 1):n jälkeen koko taulukko on keko

TIE-20100 Tietorakenteet ja algoritmit 13 BUILD-HEAP ajaa for-silmukan n 2 kertaa ja HEAPIFY on Ω(1) ja O(lg n), joten nopein suoritusaika on n 2 Ω(1) + Θ(n) = Ω(n) ohjelma ei voi koskaan käyttää enempää aikaa kuin n 2 O(lg n) + Θ(n) = O(n lg n) Näin saamamme hitaimman tapauksen suoritusaika on kuitenkin liian pessimistinen: HEAPIFY on O(h), missä h on kekopuun korkeus i:n muuttuessa myös puun korkeus vaihtelee kerros h HEAPIFY-suoritusten määrä alin 0 0 toinen 1 n 4 kolmas 2 n 8......... ylin lg n 1 siis pahimman tapauksen suoritusaika onkin n 4 1 + n 8 2 + n 16 3 + = n 2 i i=1 = n 2 i 2 2 = n O(n) BUILD-HEAPIN suoritusaika on aina Θ(n)

TIE-20100 Tietorakenteet ja algoritmit 14 Taulukon järjestäminen keon avulla Taulukon järjestäminen voidaan toteuttaa tehokkaasti seuraavan algoritmin avulla: HEAPSORT( A ) 1 BUILD-HEAP( A ) (muutetaan taulukko keoksi) 2 for i := A.length downto 2 do (käydään taulukko läpi lopusta alkuun) 3 exchange A[ 1 ] A[ i ] (siirretään keon suurin alkio keon viimeiseksi) 4 A.heapsize := A.heapsize 1 (siirretään suurin alkio keon ulkopuolelle) 5 HEAPIFY( A, 1 ) (korjataan keko, joka on muuten kunnossa, mutta...) (... sen ensimmäinen alkio saattaa olla liian pieni) Esitetäänpä sama kuvien avulla: ensin taulukko muutetaan keoksi esimerkistä on helppo havaita, ettei operaatio ole kovin raskas keko-ominaisuus on selvästi järjestystä heikompi 9 12 8 14 7 15 9 12 15 14 7 8 9 14 15 12 7 8 15 14 9 12 7 8

TIE-20100 Tietorakenteet ja algoritmit 15 kuvassa voi nähdä kuinka järjestetyn loppuosan koko kasvaa, kunnes koko taulukko on järjestyksessä kasvatusten välillä keko-osuus korjataan korjaus näyttää tällaisessa pienessä esimerkissä tarpeettoman monimutkaiselta korjaukseen ei suurillakaan taulukoilla kulu kovin montaa askelta, ainoastaan logaritminen määrä 15 14 14 8 9 12 7 15 14 9 12 8 7 8 14 9 12 7 12 9 8 7 15 15 7 12 9 8 14 15 12 7 9 8 12 8 7 9 7 8 9 14 15 14 15 12 14 15 9 8 7 12 14 15 7 8 9 12 14 15 8 7 9 12 14 15 8 7 9 12 14 15

TIE-20100 Tietorakenteet ja algoritmit 16 HEAPSORTIN suoritusaika koostuu seuraavista osista. BUILD-HEAP rivillä 1 suoritetaan kerran: Θ(n) for-silmukan sisältö suoritetaan n - 1 kertaa rivien 3 ja 4 operaatiot ovat vakioaikaisia HEAPIFY käyttää aikaa Ω(1) ja O(lg n) Saadaan yhteensä Ω(n) ja O(n lg n) alaraja on tarkka jos kaikki alkiot ovat samanarvoisia, keon korjaustoimenpiteitä ei tarvita koskaan ja HEAPIFY on aina vakioaikainen myös yläraja on tarkka tämän osoittaminen on hieman hankalampaa ja tyydymmekin myöhemmin saatavaan tulokseen vertailuun perustuvan järjestämisen nopeudesta

TIE-20100 Tietorakenteet ja algoritmit 17 Huom! Edelliset suoritusaikalaskelmat olettavat, että keon pohjana käytettävällä tietorakenteella on vakioaikainen indeksointi. Kekoa kannattaa käyttää ainoastaan silloin! HEAPSORTIN etuja ja haittoja Etuja: järjestää taulukon paikallaan ei koskaan käytä enempää kuin Θ(n lg n) aikaa Haittoja: suoritusajan vakiokerroin on suurehko epävakaus samanarvoisten alkioiden keskinäinen järjestys ei säily

TIE-20100 Tietorakenteet ja algoritmit 18 1.3 Prioriteettijono Prioriteettijono (priority queue) on tietorakenne, joka pitää yllä joukkoa S alkioita, joista jokaiseen liittyy avain (key), ja sallii seuraavat operaatiot: INSERT(S, x) lisää alkion x joukkoon S MAXIMUM(S) palauttaa sen alkion, jonka avain on suurin jos monella eri alkiolla on sama, suurin avain, valitsee vapaasti minkä tahansa niistä EXTRACT-MAX(S) poistaa ja palauttaa sen alkion, jonka avain on suurin vaihtoehtoisesti voidaan toteuttaa operaatiot MINIMUM(S) ja EXTRACT-MIN(S) samassa jonossa on joko vain maksimi- tai vain minimioperaatiot!

TIE-20100 Tietorakenteet ja algoritmit 19 Prioriteettijonoilla on monia käyttökohteita tehtävien ajoitus käyttöjärjestelmässä uusia tehtäviä lisätään komennolla INSERT kun edellinen tehtävä valmistuu tai keskeytetään, seuraava valitaan komennolla EXTRACT-MAX tapahtumapohjainen simulointi jono tallettaa tulevia (= vielä simuloimattomia) tapahtumia avain on tapahtuman tapahtumisaika tapahtuma voi aiheuttaa uusia tapahtumia lisätään jonoon operaatiolla INSERT EXTRACT-MIN antaa seuraavan simuloitavan tapahtuman lyhimmän reitin etsintä kartalta simuloidaan vakionopeudella ajavia, eri reitit valitsevia autoja, kunnes ensimmäinen perillä prioriteettijonoa tarvitaan käytännössä myöhemmin esiteltävässä lyhimpien polkujen etsintäalgoritmissa

TIE-20100 Tietorakenteet ja algoritmit 20 Prioriteettijonon voisi käytännössä toteuttaa järjestämättömänä tai järjestettynä taulukkona, mutta se olisi tehotonta. järjestämättömässä taulukossa MAXIMUM ja EXTRACT-MAX ovat hitaita järjestetyssä taulukossa INSERT on hidas Sen sijaan keon avulla prioriteettijonon voi toteuttaa tehokkaasti. Joukon S alkiot talletetaan kekoon A. MAXIMUM( S ) on hyvin helppo, ja toimii ajassa Θ(1). HEAP-MAXIMUM( A ) 1 if A.heapsize < 1 then (tyhjästä keosta ei löydy maksimia) 2 error heap underflow 3 return A[ 1 ] (muuten palautetaan taulukon ensimmäinen alkio)

TIE-20100 Tietorakenteet ja algoritmit 21 EXTRACT-MAX(S) voidaan toteuttaa korjaamalla keko poiston jälkeen HEAPIFYN avulla. HEAPIFY dominoi algoritmin ajoaikaa: O(lg n). HEAP-EXTRACT-MAX( A ) 1 if A.heapsize < 1 then (tyhjästä keosta ei löydy maksimia) 2 error heap underflow 3 max := A[ 1 ] (suurin alkio löytyy taulukon alusta) 4 A[ 1 ] := A[ A.heapsize ] (siirretään viimeinen alkio juureen) 5 A.heapsize := A.heapsize 1 (pienennetään keon kokoa) 6 HEAPIFY( A, 1 ) (korjataan keko) 7 return max

TIE-20100 Tietorakenteet ja algoritmit 22 INSERT(S, x) lisää uuden alkion kekoon asettamalla sen uudeksi lehdeksi, ja nostamalla sen suuruutensa mukaiselle paikalle. se toimii kuten HEAPIFY, mutta alhaalta ylöspäin lehti joudutaan nostamaan pahimmassa tapauksessa juureen asti: ajoaika O(lg n) HEAP-INSERT( A, key ) 1 A.heapsize := A.heapsize + 1 (kasvatetaan keon kokoa) 2 i := A.heapsize (lähdetään liikkeelle taulukon lopusta) 3 while i > 1 and A[ PARENT(i) ] < key do (edetään kunnes ollaan juuressa tai...) (...kohdassa jonka isä on avainta suurempi) 4 A[ i ] := A[ PARENT(i) ] (siirretään isää alas päin) 5 i := PARENT(i) (siirrytään ylöspäin) 6 A[ i ] := key (asetetaan avain oikealle paikalleen) Keon avulla saadaan jokainen prioriteettijonon operaatio toimimaan ajassa O(lg n).

TIE-20100 Tietorakenteet ja algoritmit 23 Prioriteettijonoa voidaan ajatella abstraktina tietotyyppinä, johon kuuluu talletettu data (joukko S) ja operaatiot (INSERT, MAXIMUM,EXTRACT-MAX. käyttäjälle kerrotaan ainoastaan operaatioiden nimet ja merkitykset, muttei toteutusta toteutus kapseloidaan esimerkiksi pakkaukseksi (Ada), luokaksi (C++) tai itsenäiseksi tiedostoksi (C) Toteutusta on helppo ylläpitää, korjata ja tarvittaessa vaihtaa toiseen, ilman että käyttäjien koodiin tarvitsee koskea.