Self-balancering binær søgning træ

I datalogi, en selv-balancering binær søgning træ er enhver node-baserede binær søgning træ, der automatisk holder sin højde små i lyset af vilkårlige post indsættelser og sletninger.

Disse strukturer levere effektive implementeringer for foranderlig bestilt lister, og kan anvendes til andre abstrakte datastrukturer såsom associative arrays, prioriterede køer og sæt.

Oversigt

De fleste operationer på en binær søgning træ tager tid direkte proportional med højden af ​​træet, så det er ønskeligt at holde højden små. Et binært træ med højden h kan indeholde højst 2 + 2 + ··· + 2 = 2-1 noder. Heraf følger, at for et træ med n knuder og højde h:

Og det indebærer:

.

Med andre ord, den mindste højde af et træ med n knuder er log2, rundet ned; det er, :.

De simpleste algoritmer til BST element indsættelse, kan dog give et træ med højden n i temmelig almindelige situationer. For eksempel, når de poster indsættes i sorterede nøgle orden, træet degenererer til en linket liste med n knuder. Forskellen i ydelse mellem de to situationer kan være enorme: for n = 1.000.000, for eksempel, den mindste højde er.

Hvis dataelementerne er kendt forud for tid, kan højden holdes lille, i gennemsnit forstand, ved at tilføje værdier i en tilfældig rækkefølge, hvilket resulterer i en tilfældig binær søgning træ. Men der er mange situationer, hvor dette randomisering ikke er levedygtig.

Selvafbalancerende binære træer løse dette problem ved at udføre transformationer på træet på centrale tidspunkter, for at holde højden i forhold til log2. Selv om en vis overliggende er involveret, kan det være berettiget i det lange løb ved at sikre hurtig gennemførelse af senere operationer.

Vedligeholdelse af højden altid ved dens minimale værdi er ikke altid rentabel; det kan bevises, at enhver indsættelse algoritme, der gjorde det ville have en overdreven overhead. Derfor er de fleste selvstændige afbalanceret BST algoritmer holde højden inden for en konstant faktor i denne nedre grænse.

I det asymptotiske forstand, en selv-balancering BST struktur, der indeholder n elementer gør det muligt for opslag, indsættelse og fjernelse af et produkt i O worst-case tid, og beordrede optælling af alle elementer i O tid. For nogle implementeringer disse er pr-operation tid bounds, mens det for andre, de afskrives grænser over en sekvens af operationer. Disse tider er asymptotisk optimal blandt alle datastrukturer, der manipulerer nøglen kun gennem sammenligninger.

Implementeringer

Populære datastrukturer til gennemførelse af denne type træ kan nævnes:

  • 2-3 træ
  • AA træ
  • AVL træ
  • Rød-sort træ
  • Syndebuk træ
  • Defekter træ
  • Treap

Applikationer

Selvafbalancerende binære søgetræer kan anvendes på en naturlig måde at konstruere og vedligeholde ordnede lister, som de prioriterede køer. De kan også anvendes til associative arrays; nøgleværdipar er simpelthen indsat med en bestilling baseret på nøglen alene. I denne egenskab selvstændige balancering BSTS har en række fordele og ulemper end deres største konkurrent, hash tabeller. En fordel af selv-balancing BSTS er, at de tillader hurtig optælling af elementerne i centrale rækkefølge, som hash tabeller ikke giver. En ulempe er, at deres lookup algoritmer får mere kompliceret, når der kan være flere elementer med samme nøgle. Self-balancering BSTS har bedre værst tænkelige opslag ydeevne end hash tabeller (O sammenlignet med O), men har dårligere gennemsnit-tilfælde ydeevne (O i forhold til O).

Self-balancering BSTS kan bruges til at implementere nogen algoritme, der kræver foranderlig ordnede lister, for at opnå optimal worst case asymptotiske resultater. For eksempel, hvis binært træ slags er implementeret med en selvstændig afbalanceret BST, har vi en meget enkel at beskrive endnu asymptotisk optimal O sortering algoritme. Ligeledes mange algoritmer i beregningsmæssige geometri udnytte variationer på selv-balancering BSTS til at løse problemer som linjestykket krydset problem, og det punkt placering problemet effektivt.

Self-balancering BSTS er fleksible datastrukturer, i, at det er nemt at udvide dem til effektivt at optage yderligere oplysninger eller udføre nye operationer. For eksempel kan man registrere antallet af knudepunkter i hver undertræ har en vis egenskab, tillader en at tælle antallet af knuder i en bestemt nøgle sortiment med ejendommen i O tid. Disse udvidelser kan anvendes, for eksempel for at optimere databaseforespørgsler eller andre liste-bearbejdningsalgoritmer.

  0   0
Forrige artikel APEC Australien 2007
Næste artikel Billy Meier

Kommentarer - 0

Ingen kommentar

Tilføj en kommentar

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
Tegn tilbage: 3000
captcha