Wat zijn de voordelen van T-bomen over B +/- bomen?

stemmen
12

Ik heb de definities van verkend T-bomen en B- / B + bomen. Uit documenten op het web Ik heb begrepen dat B-bomen beter presteren in hiërarchisch geheugen, zoals harde schijven en in de cache geheugen.

Wat ik niet begrijp is waarom T-bomen werden / worden gebruikt, zelfs voor platte geheugen?

Ze worden aangeprezen als de ruimte efficiënt alternatief voor AVL bomen.

In het ergste geval zijn alle blad knooppunten van een T-boom bevatten slechts één element en alle interne knopen staan ​​de minimale toegestane bedrag, dat dicht bij vol. Dit betekent dat gemiddeld slechts de helft van de toegekende ruimte benut. Als ik mij niet vergis, is dit hetzelfde gebruik als het ergste geval van B-bomen, als de knooppunten van een B-tree is half vol.

Aangenomen dat beide bomen opgeslagen sleutels lokaal in de knooppunten, maar het gebruik pointers te verwijzen naar de registers, het enige verschil is dat B-bomen pointers opgeslagen voor ieder van de takken. Dit zou in het algemeen leiden tot 50% overhead of minder (meer dan T-bomen), afhankelijk van de grootte van de toetsen. In feite is dit dicht bij de overhead verwacht in AVL bomen, ervan uitgaande dat geen enkele ouder wijzer, records ingebed in de knooppunten, sleutels ingebed in de administratie. Is dit de verwachte efficiencywinst die ons ervan weerhoudt het gebruik van B-bomen in plaats daarvan?

T-bomen worden meestal uitgevoerd op de top van AVL bomen. AVL bomen zijn meer in balans dan B-bomen. Kan dit in verband met de toepassing van T-bomen?

De vraag is gesteld op 29/01/2011 om 15:43
bron van user
In andere talen...                            


2 antwoorden

stemmen
3

Ik kan u een persoonlijk verhaal dat de helft van het antwoord heeft betrekking op te geven, dat is de reden waarom ik schreef enkele Pascal code voor het programmeren B + bomen zo'n 18 jaar geleden.

mijn doelsysteem was een PC met twee schijven, moest ik een index op niet-vluchtig geheugen op te slaan en ik wilde beter te begrijpen wat ik leerde op de universiteit. Ik was zeer ontevreden met de prestaties van een commercieel pakket, waarschijnlijk DBase III, of een Fox product, kan ik me niet herinneren.

hoe dan ook: ik nodig had deze handelingen:

  • opzoeken
  • invoeging
  • verwijdering
  • volgende item
  • vorige item

  • maximumgrootte van index was onbekend

  • dus data had op de harde schijf te verblijven
  • elke toegang tot de steun had hoge kosten
  • die een geheel blok kosten hetzelfde als het lezen van een byte

B + -bomen gemaakt dat kleine trage pc echt vliegen door de gegevens!

de bladeren had twee extra pointers zodat ze vormden een dubbel gelinkte lijst, voor opeenvolgende zoekopdrachten.

antwoordde op 11/02/2011 om 23:49
bron van user

stemmen
2

In werkelijkheid ligt het verschil in het systeem dat u gebruikt. Zoals mijn mentor op de universiteit merkte op dat: als uw probleem ligt in een tekort geheugen of in een tekort hdd zal bepalen welke boom en waarin met de uitvoering die u wilt gebruiken. Waarschijnlijk zal het B + boom.

Omdat er honderden implementaties, bijvoorbeeld met 2direction wachtrij en één richting wachtrijen waar je moet loop gedachte elementen, en ook zijn er meerdere manieren om de index op te slaan en terug te halen zal de echte nadelen en minuten van elke implementatie te bepalen.

antwoordde op 25/02/2011 om 09:02
bron van user

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more