B-puu (äännetään venäjäksi B-puuksi ) on tietorakenne , hakupuu. Ulkoisen loogisen esityksen näkökulmasta tasapainoinen , voimakkaasti haarautunut puu . Käytetään usein tietojen tallentamiseen ulkoiseen muistiin.
R. Bayer ja E. McCreight ehdottivat ensimmäisen kerran B-puiden käyttöä vuonna 1970 .
Tasapainotettu tarkoittaa, että minkä tahansa kahden polun pituudet juuresta lehtiin eroavat enintään yhden.
Puun haarautuminen on jokaisen puusolmun ominaisuus viitata suureen määrään jälkeläisiä solmuja.
Fyysisen organisoinnin näkökulmasta B-puu on esitetty muistisivujen multilist-rakenteena, eli jokainen puun solmu vastaa muistilohkoa (sivua). Sisä- ja lehtisivuilla on yleensä erilainen rakenne.
B-puurakennetta käytetään indeksien järjestämiseen monissa nykyaikaisissa DBMS -järjestelmissä .
B-puuta voidaan käyttää kiintolevyllä olevien tietojen (yleensä metatietojen) jäsentämiseen (indeksointiin). Kiintolevyn mielivaltaisen lohkon käyttöaika on erittäin pitkä (millisekuntien luokkaa), koska sen määrää levyn pyörimisnopeus ja pään liike. Siksi on tärkeää vähentää kunkin toiminnon yhteydessä skannattujen solmujen määrää. Listahaun käyttäminen joka kerta satunnaisen lohkon löytämiseksi voi johtaa liialliseen määrään levyhakuja johtuen tarpeesta käydä läpi kaikki sen elementit, jotka edeltävät tiettyä lohkoa, kun taas haku B-puussa, johtuen tasapaino ja korkea haarautuminen, voivat merkittävästi vähentää tällaisten toimintojen määrää.
Algoritmien suhteellisen yksinkertainen toteutus ja valmiiden kirjastojen (mukaan lukien C :n) olemassaolo B-puurakenteen kanssa työskentelyä varten tekevät tällaisesta muistijärjestelystä suositun monissa ohjelmissa, jotka toimivat suurilla tietomäärillä.
B-puu on puu, joka täyttää seuraavat ominaisuudet:
Ominaisuus 2 voidaan ilmaista eri tavalla: B-puun jokaista solmua lehtiä lukuun ottamatta voidaan pitää järjestettynä listana, jossa avaimet ja osoittimet vuorottelevat lapsiin.
Jos avain sisältyy juureen, se löytyy. Muussa tapauksessa määritämme välin ja siirrymme vastaavaan jälkeläiseen. Toistamme.
Kutsumme tietyn solmun jälkeläisten puuta alipuuksi, joka koostuu tästä solmusta ja sen jälkeläisistä.
Ensin määritellään funktio, joka lisää avaimen K solmun x lapsipuuhun. Toiminnon suorittamisen jälkeen kaikissa hyväksytyissä solmuissa, paitsi ehkä itse solmussa x , avaimet ovat pienempiä kuin , mutta ei pienempiä kuin .
Nyt määritellään avaimen K lisääminen koko puuhun. Kirjain R tarkoittaa juurisolmua.
Jos juuri on myös lehti, eli puussa on vain yksi solmu, poistamme yksinkertaisesti avaimen tästä solmusta. Muussa tapauksessa löydämme ensin avaimen sisältävän solmun, muistaen polun siihen. Olkoon tämä solmu .
Jos - lehti, poista avain sieltä. Jos solmussa on jäljellä ainakin avaimia , pysähdymme siihen. Muussa tapauksessa tarkastelemme avainten määrää kahdessa viereisessä sisarussolmussa. Jos naapurissa on oikea naapurisolmu ja sillä on vähintään avaimet, lisäämme sen ja viereisen oikean solmun väliseen erotinavaimeen ja tämän avaimen tilalle laitamme viereisen oikean solmun ensimmäisen avaimen, jonka jälkeen lopetamme . Jos näin ei ole, mutta naapurissa on vasen solmu ja siinä on vähintään avaimet, lisäämme sen ja viereisen vasemman solmun väliseen erotinavaimeen ja tämän avaimen tilalle laitamme naapurisolmun viimeisen avaimen. vasen solmu, jonka jälkeen pysähdymme. Lopuksi, jos vasen avain epäonnistuu, yhdistämme solmun viereiseen vasempaan tai oikeaan solmuun ja siirrämme nämä kaksi solmua aiemmin erottaneen avaimen yhdistettyyn solmuun. Tässä tapauksessa vain avaimet voivat jäädä pääsolmuun . Sitten, jos se ei ole juuri, suoritamme samanlaisen toimenpiteen sen kanssa. Jos tämän seurauksena olemme päässeet juureen ja siinä on 1 - avaimia jäljellä, mitään ei tarvitse tehdä, koska juurilla voi olla vähemmän avaimia. Jos juuressa ei ole jäljellä yhtään avainta, jätetään juurisolmu pois ja tehdään sen ainoa lapsi puun uudeksi juureksi.
Jos ei ole lehti ja K on sen -:s avain, poista oikeanpuoleisin avain -:nnen jälkeläisen jälkeläisten alipuusta , tai päinvastoin, vasemmanpuoleisin avain -:nnen jälkeläisen jälkeläisten alipuusta . Tämän jälkeen korvaamme avaimen K kauko-avaimella. Avaimen poistaminen tapahtuu edellisessä kappaleessa kuvatulla tavalla.
B-puiden suurin haittapuoli on, että niillä ei ole tehokasta tapaa hakea dataa (eli puun läpikulkumenetelmää), joka on järjestetty muun ominaisuuden kuin valitun avaimen mukaan.
Puu (tietorakenne) | |
---|---|
Binääripuut | |
Itsetasapainottavat binaaripuut |
|
B-puut | |
etuliite puita |
|
Avaruuden binaarinen osiointi | |
Ei-binääripuut |
|
Avaruuden hajottaminen |
|
Muut puut |
|
Algoritmit |