Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaEszter Nemes Megváltozta több, mint 5 éve
1
2-3-fák A 2-3-fa egy gyökeres fa az alábbi tulajdonságokkal:
A rekordok a fa leveleiben helyezkednek el, a kulcs értéke szerint balról jobbra növekvő sorrendben. Egy levél egy rekordot tartalmaz. Minden belső (nem levél) csúcsnak 2 vagy három gyereke van. A csúcs szerkezete: m1,k1,m2, vagy m1,k1,m2, k2,m3. k1 < k2. Az m1 mutató szerinti részfában minden kulcs kisebb, mint k1, az m2 mutató szerinti részfa legkisebb kulcsa k1, és minden kulcs ott kisebb, mint k2 (ha van a csúcsban), az m3 mutató (ha van) szerinti részfában a legkisebb kulcs k2. A fa levelei a gyökértől egyforma távolságra vannak. :27:35 ADAT-08
2
2-3-fák Tétel: Ha a 2-3-fának k szintje van, akkor a levelek száma legalább 2k-1. Fordítva: ha a tárolt rekordok száma n, akkor k log2n +1 Keresés 2-3-fában: A gyökértől elindulva a belső csúcsokban 1 vagy 2 összehasonlítás után tovább lehet menni egy szinttel lejjebb. A műveletigény (log n). :27:35 ADAT-08
3
2-3-fák – Beszúrás-1 J K beszúrása J K C J C J K J I beszúrása I J C J
A beszúrása C J C J A C J :27:35 ADAT-08
4
2-3-fák – Beszúrás-2 H C J H beszúrása A C J C J A C H J K H K C J
:27:35 ADAT-08
5
2-3-fák – Törlés-1 J K C törlése K C J K J K J K J törlése K C J K C K
K törlése J C J K C J :27:35 ADAT-08
6
2-3-fák – Törlés-2 K P J törlése J L N C C J K L N L P K N C C K L N
:27:35 ADAT-08
7
2-3-fák – Törlés-3 K P K törlése J M A J K M P J M A J M
:27:35 ADAT-08
8
B-fák Definíció: A B-fa egy olyan gyökeres fa, amely rendelkezik a következő tulajdonságokkal: Minden csúcsnak a következő mezői vannak: A. n[x] az x csúcsban tárolt kulcsok darabszáma B. az n[x] darab kulcs (nemcsökkenő sorrendben) kulcs1[x] kulcs2[x] kulcsn[x][x] C. levél[x] egy logikai változó, melynek az értéke IGAZ, ha x a levél és HAMIS, ha x egy belső csúcs. Ha x belső csúcs, akkor tartalmazza a c1[x], c2[x], ,cn[x]+1[x] mutatókat, melyek az x gyerekeire mutatnak. A levél csúcsoknak nincsenek gyerekei és így e mezők definiálatlanok. A kulcsi[x] értékek meghatározzák a kulcsértékek azon tartományait, amelyekbe a részfák kulcsai esnek. Ha ki egy olyan kulcs, amelyik a ci[x] gyökerű részfában van, akkor k1 kulcs1[x] k2 kulcs2[x] kn[x] kulcsn[x][x] kn[x]+1 Minden levélnek azonos a mélysége, ez az érték a fa magassága :27:35 ADAT-08
9
B-fák A csúcsokban található kulcsok darabszámára adott egy alsó és egy felső korlát. Ezeket a korlátokat egy rögzített t egész számmal (t 2 ) lehet kifejezni, és ezt a számot a B-fa minimális fokszámának nevezzük. A. Ezért minden nem gyökér csúcsnak legalább t-1 kulcsa van Minden belső csúcsnak legalább t gyereke van Ha a fa nem üres, akkor a gyökércsúcsnak legalább egy kulcsának kell lennie. B. Minden csúcsnak legfeljebb 2t-1 kulcsa lehet. Tehát egy belső csúcsnak legfeljebb 2t gyereke lehet. Azt mondjuk, hogy egy csúcs telített, ha pontosan 2t-1 kulcsa van. Ha t=2, akkor a B-fa neve fa. Tétel: Ha n 1, és T egy olyan n-kulcsos B-fa, amelynek magassága h és minimális fokszáma t 2, akkor h logt((n+1)/2). :27:35 ADAT-08
10
B-fák – műveletek -1 B_FÁBAN_KERES(x,k) i 1
WHILE i n[x] és k>kulcsi[x] DO i i+1 IF i n[x] és k=kulcsi[x] THEN RETURN (x,i) IF levél[x] THEN RETURN( NIL) ELSE LEMEZRŐL_OLVAS(ci[x]) RETURN(B_FÁBAN_KERES(ci[x],k) O(t logt n) Az egész fában keresés: B_FÁBAN_KERES(gyökér[T],k) :27:35 ADAT-08
11
B-fák – műveletek - 2 B_FÁBA_BESZÚR(T,k) r gyökér[T] IF n[r]=2t-1
THEN s CSÚCSOT_ELHELYEZ( ) gyökér[T] s levél[s] HAMIS n[s] 0 c1[s] r B_FA_VÁGÁS_GYEREK(s,1,r) NEM_TELITETT_B_FÁBA_BESZÚR(s,k) ELSE NEM_TELITETT_B_FÁBA_BESZÚR(s,k) O(t logt n) CSÚCSOT_ELHELYEZ = lefoglalja az új csúcsnak a lemez egy blokkját B_FA_VÁGÁS_GYEREK(x,i,y) = Az y=ci[x] telített csúcsot két részre vágja és x-et (nem telített belső csúcs) úgy alakítja át, hogy eggyel több gyereke lesz. :27:35 ADAT-08
12
B-fák – műveletek - Beszúrás
A kezdeti fa G M P X A C D E J K N O R S T U V Y Z B beszúrása G M P X A B C D E J K N O R S T U V Y Z Q beszúrása G M P T X A B C D E J K N O Q R S U V Y Z :27:35 ADAT-08
13
B-fák – műveletek - Beszúrás
L beszúrása P G M T X A B C D E J K L N O Q R S U V Y Z F beszúrása P C G M T X A B D E F J K L N O Q R S U V Y Z :27:35 ADAT-08
14
B-fák – műveletek - Törlés
A kezdeti fa P C G M T X A B D E F J K L N O Q R S U V Y Z F törlése P C G M T X A B D E J K L N O Q R S U V Y Z :27:35 ADAT-08
15
B-fák – műveletek - Törlés
M törlése P C G L T X A B D E J K N O Q R S U V Y Z G törlése P C L T X A B D E J K N O Q R S U V Y Z :27:35 ADAT-08
16
B-fák – műveletek - Törlés
D törlése C L P T X A B E J K N O Q R S U V Y Z B törlése E L P T X A C J K N O Q R S U V Y Z :27:35 ADAT-08
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.