R*-puu

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 12. joulukuuta 2019 tarkistetusta versiosta . vahvistus vaatii 1 muokkauksen .
R* puu
Tyyppi tietorakenne
Keksintövuosi 1990
Tekijä Norbert Beckmann, Hans-Peter Kriegel, Ralf Schneider ja Bernhard Seeger
Monimutkaisuus O - symboleissa
Keskiverto Pahimmillaan
Muistin kulutus O( n ) O( n )
Hae O( kirjaudu sisään )
Lisää O( kirjaudu sisään )
 Mediatiedostot Wikimedia Commonsissa

R*-puut ovat muunnelmia R-puista, joita käytetään paikkatietojen indeksointiin. R*-puiden luominen on hieman kalliimpaa kuin tavallisten R-puiden, koska tiedot on ehkä järjestettävä uudelleen (poista + lisää), mutta tuloksena olevalla puulla on yleensä parempi kyselyn suorituskyky. Kuten tavallinen R-puu, se voi tallentaa sekä pisteitä että paikkatietoja. Puun ehdottivat Norbert Beckmann, Hans-Peter Kriegel, Ralf Schneider ja Bernhard Seeger vuonna 1990 [1] .

Ero R*-puiden ja R-puiden välillä

Sekä peiton että päällekkäisyyden minimoiminen on tärkeää R-puiden suorituskyvyn kannalta. Päällekkäisyys tarkoittaa, että tietoja haettaessa tai lisättäessä on laajennettava useampi kuin yksi puun haara (koska menetelmä jakaa tiedot alueille, jotka voivat olla päällekkäisiä). Minimaalinen kattavuus parantaa poistamista sallimalla kokonaisten sivujen sulkemisen pois hauista useammin, erityisesti negatiivisten vaihteluvälien kyselyissä. R*-puu yrittää pienentää molempia arvoja käyttämällä skannatun solmun jakamisalgoritmin ja pakotetun uudelleenasennuksen konseptia solmun ylivuodon yhteydessä. Lähestymistapa perustuu havaintoon, että R-puurakenteet ovat erittäin herkkiä puuelementtien lisäysjärjestykseen, joten lisäyspohjaiset (eikä bulkkilataus) rakenteet ovat todennäköisemmin alioptimaalisia. Puuelementtien poistaminen ja lisääminen uudelleen antaa heille mahdollisuuden "löytää" puusta paikan, joka on sopivampi kuin niiden alkuperäinen sijainti.

Kun solmu ylivuodon, jotkin sen elementit poistetaan solmusta ja asennetaan uudelleen puuhun. (Jotta vältetään loputon peräkkäinen nollaus, jonka aiheuttaa toinen solmu ylivuoto tässä toiminnossa, nollausmenettely voidaan kutsua vain kerran kullakin puun tasolla, kun uusi elementti lisätään.) Tämä johtaa paremmin klusteroituihin elementtiryhmiin solmuja, mikä vähentää solmun peittoa. Lisäksi usein solmun jakaminen viivästyy, mikä johtaa solmun keskimääräisen täyttömäärän kasvuun. Uudelleenasettamista voidaan pitää tekniikana kasvavan puun optimoimiseksi solmun ylivuodon yhteydessä.

Suorituskyky

Algoritmi ja monimutkaisuus

Huonoin tapauksen kyselyt ja poiston monimutkaisuus ovat samat kuin R-puussa. R*-puun lisäysstrategia on monimutkainen ja monimutkaisempi kuin R-puun lineaarinen jakostrategia ( ), mutta se on vähemmän monimutkainen kuin objektien sivukoon neliöjakostrategia ( ) , ja sillä on pieni vaikutus yleistä monimutkaisuutta. Yleinen lisäyksen monimutkaisuus on verrattavissa R-puuhun: uudelleenlisäys vaikuttaa enintään yhteen puun haaraan ja antaa siksi toistuvia lisäyksiä, mikä on suorituskyvyltään verrattavissa tavalliseen R-puuhun. Joten R*-puun kokonaismonimutkaisuus on sama kuin normaalin R-puun.

Koko algoritmin toteutuksen tulee käsitellä monia kulmatapauksia ja riippuvaisia ​​tilanteita, joita ei käsitellä tässä.

Muistiinpanot

  1. 1 2 Beckmann, Kriegel, Schneider, Seeger, 1990 , s. 322.
  2. Guttman, 1984 , s. 47.
  3. Ang, Tan, 1997 , s. 337-349.

Kirjallisuus