logo

B Trädvisualisering

I följande handledning kommer vi att lära oss om B Tree-datastrukturen och överväga att visualisera den.

Så, låt oss börja.

Vad är ett B-träd?

De B Träd är en speciell typ av flervägssökträd , allmänt känd som M-väg träd, som balanserar sig själv. På grund av sin balanserade struktur används dessa träd ofta för att driva och hantera enorma databaser och förenkla sökningar. I ett B-träd kan varje nod ha högst n underordnade noder. B Tree är ett exempel på Multilevel Indexing i ett Database Management System (DBMS). Blad- och interna noder kommer båda att ha postreferenser. B-träd är känt som Balanced Stored Tree eftersom alla lövnoder är på samma nivå.

Följande diagram är ett exempel på ett B-träd:

B Trädvisualisering

Figur 1. A B-träd med ordning 3

Förstå reglerna för B-trädet

Följande är de viktiga egenskaperna hos ett B-träd:

  1. Alla bladnoder är på samma nivå.
  2. B-trädets datastruktur definieras av termen minimigrad 'd'. Värdet på 'd' beror på storleken på diskblocket.
  3. Varje nod, exklusive roten, måste bestå av minst d-1-nycklar. Rotnoden kan bestå av minst 1 nyckel.
  4. Alla noder (inklusive rotnoden) får bestå av högst (2d-1) nycklar.
  5. Antalet barn i en nod är lika med tillägg av antalet nycklar som finns i den och .
  6. Alla nycklar i en nod sorteras i stigande ordning. Barnet mellan två nycklar, k1 och k2, består av alla nycklar som sträcker sig mellan k1 respektive k2.
  7. Till skillnad från det binära sökträdet, växer B-trädets datastruktur och krymper från roten. Medan det binära sökträdet växer nedåt och krymper nedåt.
  8. I likhet med andra självbalanserade binära sökträd är tidskomplexiteten för B-trädets datastruktur för operationer som sökning, infogning och radering O(log?n) .
  9. Införandet av en nod i B-trädet sker endast vid lövnoden.

Låt oss betrakta följande exempel på ett B-träd med minsta ordning 5.

B Trädvisualisering

Figur 2. A B Ordningsträd 5

Notera: Värdet på den minsta beställningen är mycket mer än 5 i en praktisk B-träd.

I diagrammet ovan kan vi observera att alla lövnoder är på samma nivå, och alla icke-lövnoder har inget tomt underträd och består av nycklar en mindre än antalet barn.

Den fastställda formuleringen av B-trädets regler:

Varje B-träd beror på ett positivt konstant heltal känt som MINIMUM , som används för att bestämma antalet dataelement som kan hållas i en enda nod.

hur många veckor på en månad

Regel 1: Roten kan ha så få som bara ett dataelement (eller till och med inga dataelement om det inte heller är några barn); varannan nod har minst MINIMUM dataelement.

Regel 2: Det maximala antalet dataelement som lagras i en nod är två gånger värdet av MINIMUM .

Regel 3: Dataelementen för varje nod i B-trädet lagras i en delvis fylld array, sorterad från det minsta dataelementet (vid index 0 ) till det största dataelementet (vid den slutliga använda positionen för arrayen).

Regel 4: Det totala antalet underträd under en icke-bladsnod är alltid en mer än antalet dataelement i den noden.

  • underträd 0, underträd 1,...

Regel 5: Med avseende på alla icke-bladsnoder:

  1. Ett dataelement vid index är större än alla dataelement i underträdets nummer i av noden, och
  2. Ett dataelement vid index är mindre än alla dataelement i underträdets nummer i+1 av noden.

Regel 6: Varje löv i ett B-träd har samma djup. Således säkerställer det att ett B-träd förhindrar problemet med ett obalanserat träd.

Operationer på en B Tree-datastruktur

För att säkerställa att ingen av egenskaperna för en B Tree-datastruktur kränks under operationen, kan B-trädet delas eller sammanfogas. Följande är några operationer som vi kan utföra på ett B-träd:

  1. Söka efter ett dataelement i B Tree
  2. Infogning av ett dataelement i B Tree
  3. Radering av ett dataelement i B Tree

Sökoperation på ett B-träd

Att söka efter ett element i ett B-träd liknar det i ett binärt sökträd. Men istället för att fatta ett tvåvägsbeslut (vänster eller höger) som ett binärt sökträd, fattar ett B-träd ett m-vägsbeslut vid varje nod där m är antalet barn i noden.

Steg för att söka efter ett dataelement i ett B-träd:

Steg 1: Sökningen börjar från rotnoden. Jämför sökelementet k med roten.

Steg 1.1: Om rotnoden består av elementet k kommer sökningen att slutföras.

Steg 1.2: Om elementet k är mindre än det första värdet i roten kommer vi att flytta till barnet längst till vänster och söka efter barnet rekursivt.

Steg 1.3.1: Om roten bara har två barn kommer vi att flytta till barnet längst till höger och rekursivt söka efter barnnoderna.

Steg 1.3.2: Om roten har fler än två nycklar kommer vi att söka efter resten.

Steg 2: Om elementet k inte hittas efter att ha korsat hela trädet, så finns inte sökelementet i B-trädet.

Låt oss visualisera stegen ovan med hjälp av ett exempel. Antag att vi ville söka efter en nyckel k=34 i följande B-träd:

B Trädvisualisering

Figur 3.1. Ett givet B-träd

  1. Först kommer vi att kontrollera om nyckeln k = 34 är vid rotnoden. Eftersom nyckeln inte är vid roten kommer vi att gå vidare till dess underordnade noder. Vi kan också observera att rotnoden har två barn; därför kommer vi att jämföra det erforderliga värdet mellan de två nycklarna.
    B Trädvisualisering
    Figur 3.2. Nyckeln k finns inte i roten
  2. Nu när vi kan lägga märke till att nyckeln k är större än rotnoden, d.v.s. 30, kommer vi att fortsätta med rotens högra underordnade.
    B Trädvisualisering
    Figur 3.3. Nyckeln k > 30, flytta till höger barn
  3. Vi kommer nu att jämföra nyckeln k med värdena som finns på noden, dvs 40 respektive 50. Eftersom nyckeln k är mindre än den vänstra tangenten, dvs 40, kommer vi att flytta till nodens vänstra underordnade.
    B Trädvisualisering
    Figur 3.4. Nyckeln k<40, move to left child< li>
  4. Eftersom värdet i det vänstra barnet på 40 är 34, vilket är det obligatoriska värdet, kan vi dra slutsatsen att nyckeln hittas och sökoperationen är klar.
    B Trädvisualisering
    Figur 3.4. Nyckeln k = 34, det vänstra barnet på 40

Vi jämförde nyckeln med fyra olika värden i exemplet ovan tills vi hittade den. Sålunda är tidskomplexiteten som krävs för sökoperationen i ett B-träd O(log?n) .

Infoga operation på ett B-träd

När vi infogar ett dataelement i ett B-träd måste vi först kontrollera om det elementet redan finns i trädet eller inte. Om dataelementet hittas i B-trädet, sker inte infogningsoperationen. Men om så inte är fallet kommer vi att gå vidare med infogningen. Det finns två scenarier som måste tas om hand när ett element infogas i bladnoden:

    Noden består inte av fler än MAXIMUM antal nycklar -Vi kommer att infoga nyckeln i noden på rätt plats.En nod består av ett MAXIMALT antal nycklar -Vi kommer att infoga nyckeln till den fullständiga noden, och sedan kommer en delad operation att äga rum, som delar upp den fullständiga noden i tre delar. Den andra eller mediannyckeln kommer att flyttas till föräldranoden, och den första och den tredje delen kommer att fungera som vänster respektive höger undernod. Denna process kommer att upprepas med föräldernoden om den också består av ett MAXIMUMT antal nycklar.

Steg för att infoga ett dataelement i ett B-träd:

Steg 1: Vi börjar med att beräkna det maximala antalet nycklar i noden på basis av B-trädets ordning.

Steg 2: Om trädet är tomt tilldelas en rotnod, och vi kommer att infoga nyckeln som fungerar som rotnod.

Steg 3: Vi kommer nu att söka i den tillämpliga noden för infogning.

Steg 4: Om noden är full:

Steg 4.1: Vi kommer att infoga dataelementen i stigande ordning.

Steg 4.2: Om dataelementen är större än det maximala antalet nycklar kommer vi att dela upp hela noden vid medianen.

Steg 4.3: Vi kommer att trycka mediantangenten uppåt och dela upp vänster och höger tangenter som vänster och höger barn.

Steg 5: Om noden inte är full kommer vi att infoga noden i stigande ordning.

Låt oss visualisera stegen ovan med hjälp av ett exempel. Antag att vi måste skapa ett B-träd av ordning 4. Dataelementen som måste infogas i B-trädet är 5,3,21,11,1,16,8,13,4 och 9 .

  1. Eftersom m är lika med 3, är det maximala antalet nycklar för en nod = m-1 = 3-1 = 2 .
  2. Vi börjar med att infoga 5 i det tomma trädet.
    B Trädvisualisering
    Figur 4.1. Lägger in 5
  3. Vi kommer nu att infoga 3 i trädet. Eftersom 3 är mindre än 5 kommer vi att infoga 3 till vänster om 5 i samma nod.
    B Trädvisualisering
    Figur 4.2. Lägger in 3
  4. Vi kommer nu att infoga 21 i trädet, och eftersom 21 är större än 5, kommer det att infogas till höger om 5 i samma nod. Men eftersom vi vet att det maximala antalet nycklar i noden är 2, kommer en av dessa nycklar att flyttas till en nod ovanför för att dela upp den. Således kommer 5, det mellersta dataelementet, att flytta uppåt, och 3 och 21 kommer att bli dess vänstra respektive högra noder.
    B Trädvisualisering
    Figur 4.3. Lägger in 21
  5. Nu är det dags att infoga nästa dataelement, dvs 11, som är större än 5 men mindre än 21. Därför kommer 11 att infogas som en nyckel till vänster om noden som består av 21 som en nyckel.
    B Trädvisualisering
    Figur 4.4. Lägger in 11
  6. På liknande sätt kommer vi att infoga nästa dataelement 1 i trädet, och som vi kan observera är 1 mindre än 3; därför kommer den att infogas som en nyckel till vänster om noden som består av 3 som en nyckel.
    B Trädvisualisering
    Figur 4.5. Lägger in 1
  7. Nu kommer vi att infoga dataelement 16 i trädet, vilket är större än 11 ​​men mindre än 21. Antalet nycklar i den noden överstiger dock det maximala antalet nycklar. Därför kommer noden att delas och flytta mitttangenten till roten. Följaktligen kommer 16 att infogas till höger om 5:an och dela 11 och 21 i två separata noder.
    B Trädvisualisering
    Figur 4.6. Lägger in 16
  8. Dataelementet 8 kommer att infogas som en nyckel till vänster om 11.
    B Trädvisualisering
    Figur 4.7. Lägger in 8
  9. Vi kommer att infoga 13 i trädet, vilket är mindre än 16 och större än 11. Därför bör dataelement 13 infogas till höger om noden som består av 8 och 11. Men eftersom det maximala antalet nycklar i trädet kan endast vara 2 kommer en uppdelning att ske, vilket flyttar det mellersta dataelementet 11 till ovanstående nod och 8 och 13 till två separata noder. Nu kommer ovanstående nod att bestå av 5, 11 och 16, vilket återigen överskrider det maximala nyckelantalet. Därför kommer det att ske ytterligare en uppdelning, vilket gör dataelementet 11 till rotnoden med 5 och 16 som underordnade.
    B Trädvisualisering
    Figur 4.8. Lägger in 13
  10. Eftersom dataelementet 4 är mindre än 5 men större än 3, kommer det att infogas till höger om noden som består av 1 och 3, vilket kommer att överskrida det maximala antalet nycklar i en nod igen. Därför kommer ett spill att inträffa igen och flyttar 3:an till den övre noden bredvid 5.
    B Trädvisualisering
    Figur 4.9. Lägger in 4
  11. Till sist kommer dataelementet 9, som är större än 8 men mindre än 11, att infogas till höger om noden som består av 8 som en nyckel.
    B Trädvisualisering
    Figur 4.10. Lägger in 9

I exemplet ovan har vi gjort olika jämförelser. Det första värdet infogades direkt i trädet; efter det måste varje värde jämföras med de tillgängliga noderna i det trädet. Tidskomplexiteten för infogningsoperationen i ett B-träd beror på antalet noder och .

Ta bort operation på ett B-träd

Att ta bort ett dataelement på ett B-träd innehåller tre primära händelser:

  1. Genom att söka på noden där nyckeln som ska raderas finns,
  2. Ta bort nyckeln och
  • Balansera trädet vid behov.

När ett element tas bort från trädet kan ett tillstånd som kallas underflöde uppstå. Underflöde uppstår när en nod består av färre än det minsta antalet nycklar; det borde hålla.

Följande är några termer som måste förstås innan du visualiserar borttagnings-/borttagningsåtgärden:

    Föregångare i ordning:Den viktigaste nyckeln på vänster underordnad av en nod är känd som dess föregångare i ordning.Efterträdare i ordning:Den molltonen på högra underordnade av en nod är känd som dess efterföljare i ordning.

Följande är tre framträdande fall av raderingsoperationen i ett B-träd:

Fall 1: Borttagning/borttagning av nyckeln ligger i Leaf-noden - Detta ärende är vidare uppdelat i två olika fall:

1. Raderingen/borttagningen av nyckeln bryter inte mot egenskapen för det minsta antal nycklar som en nod ska ha.

Låt oss visualisera detta fall med hjälp av ett exempel där vi tar bort nyckel 32 från följande B-träd.

B Trädvisualisering

Figur 4.1: Ta bort en lövnodnyckel (32) från B-trädet

Som vi kan observera strider inte mot ovanstående egenskap att ta bort 32 från detta träd.

2. Raderingen/borttagningen av nyckeln bryter mot egenskapen för det minsta antal nycklar som en nod ska ha. I det här fallet måste vi låna en nyckel från dess närmaste syskonnod i ordningen från vänster till höger.

Först ska vi besöka det närmaste Vänstersyskonet. Om den vänstra syskonnoden har mer än ett minsta antal nycklar, kommer den att låna en nyckel från denna nod.

Annars kommer vi att kontrollera för att låna från den närmaste högra syskonnoden.

Låt oss nu visualisera detta fall med hjälp av ett exempel där vi tar bort 31 från ovanstående B-träd. Vi kommer att låna en nyckel från vänster syskonnod i detta fall.

B Trädvisualisering

Figur 4.2: Ta bort en lövnodnyckel (31) från B-trädet

Om båda de närliggande syskonnoderna redan består av ett minsta antal nycklar, kommer vi att slå samman noden med antingen den vänstra syskonnoden eller den högra. Denna sammanslagningsprocess görs genom föräldernoden.

Låt oss visualisera igen genom att ta bort nyckeln 30 från ovanstående B-träd.

B Trädvisualisering

Figur 4.3: Ta bort en lövnodnyckel (30) från B-trädet

Fall 2: Borttagning/borttagning av nyckeln ligger i non-Leaf-noden - Detta fall är ytterligare uppdelat i olika fall:

1. Noden som inte är löv/intern, som tas bort, ersätts av en föregångare i ordning om den vänstra underordnade noden har fler än det minsta antalet nycklar.

hög och hög sort

Låt oss visualisera detta fall med hjälp av ett exempel där vi tar bort nyckeln 33 från B-trädet.

B Trädvisualisering

Figur 4.4: Ta bort en lövnodnyckel (33) från B-trädet

2. Noden som inte är löv/intern, som tas bort, ersätts av en efterföljare i ordning om den högra underordnade noden har fler än det minsta antalet nycklar.

Om något av barnen har ett minsta antal nycklar, kommer vi att slå samman Vänster och Höger underordnade noder.

Låt oss visualisera detta fall genom att ta bort nyckeln 30 från B-trädet.

B Trädvisualisering

Figur 4.5: Ta bort en lövnodnyckel (30) från B-trädet

Efter sammanslagning, om föräldernoden har mindre än det minsta antalet nycklar, kan man leta efter syskonen, som i Fall 1 .

Fall 3: I följande fall krymper trädets höjd. Om målnyckeln ligger i en intern nod, och borttagningen av nyckeln leder till färre nycklar i noden (vilket är mindre än det minsta nödvändiga), leta sedan efter föregångaren i ordning och efterföljare i ordning. Om båda barnen har ett minsta antal nycklar kan lån inte ske. Det här leder till Fall 2(3) d.v.s. sammanslagning av barnnoderna.

Vi ska återigen leta efter syskon för att låna nyckel. Men om syskonen också består av ett minsta antal nycklar, kommer vi att slå ihop noden med syskonen tillsammans med föräldernoden och ordna de underordnade noderna enligt kraven (stigande ordning).

Låt oss visualisera detta fall med hjälp av ett exempel där vi tar bort dataelementet 10 från det givna B-trädet.

B Trädvisualisering

Figur 4.6: Ta bort en lövnodnyckel (10) från B-trädet

Tidskomplexiteten i exemplen ovan varierar beroende på varifrån nyckeln behöver raderas. Sålunda är tidskomplexiteten för raderingsoperationen i ett B-träd O(log?n) .

Slutsatsen

I den här handledningen har vi lärt oss om B-trädet och visualiserat dess olika funktioner med olika exempel. Vi har också förstått några grundläggande egenskaper och regler för B-trädet.