Hash array kartoitettu trie

Hash joukko kartoitettu trie on täytäntöönpano tällainen taulukko, jossa yhdistyvät ominaisuudet hajautustaulun ja joukko kartoitettu trie. Se on hienostunut versio yleisempi käsite hash puu.

Toiminta

HAMT on joukko kartoitettu trie jossa avaimet ensimmäinen hajauttamat varmistaakseen tasaisen avaimet ja jatkuva avaimen pituus.

Tyypillisessä toteutuksessa on HAMT: n joukko kartoitettu trie, jokainen solmu on taulukko joidenkin kiinteä määrä N lähtö kunkin aikavälin, joka sisältää joko nolla osoitinta tai osoittimen toiseen solmuun. N on tavallisesti 32. jakamisesta tilaa N viitteitä kullekin solmulle olisi kallista, kukin solmu sen sijaan sisältää bittikartan, joka on N bittiä pitkä, jossa kukin bitti osoittaa, että läsnä on ei-nolla osoitinta. Tämän jälkeen joukko osoittimia yhtä pitkä ykkösten bittikartassa ,.

Edut HAMTs

Hash joukko kartoitettu trie saavuttaa lähes tiiviste-kuten nopeus, kun käytät muisti taloudellisesti paljon. Myös hajautustaulua voidaan joutua ajoittain kokoa, kallis toimenpide, kun taas HAMTs kasvaa dynaamisesti. Yleensä HAMT suorituskyky paranee suuremman juuri pöytä joidenkin useita N lähtö; jotkut HAMT vaihtoehtoja anna root kasvaa laiskasti kanssa vähäinen vaikutus suorituskykyyn.

Ongelmia HAMTs

Täytäntöönpano HAMT liittyy käytön väkiluku toiminto, joka laskee määrän pienimmille binääriesityksen numeron. Tämä toiminto on saatavilla monissa Ohjeisto arkkitehtuurit, mutta se on saatavilla vain joitakin korkean tason kielellä. Vaikka väkiluku voidaan toteuttaa ohjelmistoja O-aika käyttämällä sarjaa muutos ja lisätä ohjeita, sillä se saattaa suorittaa operaation suuruusluokkaa hitaampaa.

Tämä ei tietenkään ole niin paljon ongelmia HAMTs vaan osoitus siitä, että HAMT suorituskykyä voidaan parantaa edelleen, jos laitteisto on käytettävissä.

Toteutukset

Ohjelmointikielet Clojure ja Scala käyttää pysyviä variantti hasista joukko kartoitettu yrittää niiden syntyperäinen hash kartta tyyppi. Haskell kirjasto järjestämättömiä-kontteja käyttää samaa toteuttamaan pysyviä kartta ja asettaa tietotyypit. JavaScript HAMT kirjasto, joka perustuu Clojure toteutus on myös saatavilla. Rubinius täytäntöönpano Ruby sisältää HAMT, enimmäkseen kirjoitettu Ruby mutta 3 perusalkioiden. On C ++ HAMT täytäntöönpanoa että mahdollisesti käyttää POPCNT CPU opetusta.

Samanaikainen lock-ilmainen versio hash trien kutsutaan Ctrie on epävakainen ketju turvallinen täytäntöönpanosta, joka takaa edistymistä. Data-rakenne on osoittautunut oikeaksi - Ctrie toiminta on todettu olevan atomisuuden, linearizability ja lukko-vapauden ominaisuuksia.

  0   0
Edellinen artikkeli Karl Heinrich Ritthausen
Seuraava artikkeli Mudra

Kommentit - 0

Ei kommentteja

Lisääkommentti

smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile
Merkkiä jäljellä: 3000
captcha