You are on page 1of 7

17.

A 2-3 fk s B-fk 2-3 fk


Fontos jelentsge, hogy bellk fejldtek ki a B-fk. Def.: Minden bels cscsnak 2 vagy 3 gyermeke van. A levelek egy szinten helyezkednek el. Az adatrekordok/kulcsok csak a levelekben vannak trolva. A bels pontokban a keresst informl kulcsok s mutatk vannak. A levelekben balrl jobbra nnek a kulcsok. A bels pontokban fizikailag ilyen szerkezet van: (szlre mutat pointer)

Logikailag a bels cscs ktfle: a, 3 gyerek

[+] k1 a legkisebb kulcs

k2 a legkisebb kulcs

Ez az elrs nem mindentt szerepel, nlunk igen! b, 2 gyerek

[+] k1 a legkisebb kulcs A kt tpus kztti vltst csak logikailag kezeljk. (csere) Pl.: 2 klnbz szerkezet 2-3 fa, n = 13

Megjegyzs: n = 0 t = NIL vagy res gykr n = 1 kivtelesen a gykrnek egy gyereke van. sszefggs n s h kztt: 2h n 3h h log2n Mg 2-es elgazsi tnyez esetn is korltos a fa magassga. Mveletek: Keress sszehasonltsok szma 1,2,,h-1 magassgban: 1-2 h magassgban: 1 T(n) 2h+1 2log2n+1 = (logn) Beszrs Keresssel meghatrozzuk a helyt. ( I ) A legals bels pontnak 2 gyereke van ( elfr mg egy harmadik is)

Tovbb felfel haladva korriglni kell a megfelel kulcsrtket 2-re. ( II ) A lagals bels pontnak 3 gyereke van k=8 A megolds a cscsvgs.

A szlben is mdostani kell. Ha a szlnek eleve 3 gyereke volt, akkor itt is cscsvgsra van szksg, s gy tovbb felel. Ha valahol ezen az ton van egy 2 gyermekes bels cscs, akkor ott megll a beszrs, mert annak lehet 3 gyereke.

Ha ezen az ton minden bels pontnak 3 gyereke volt, akkor a cscsvgs felgyrzik a gykrig. Ekkor a ktfel vgott gyokr fl egy j gykeret kell tenni. Az elz brt vve alapul:

Ntt a h!

Trls Megkeressk a trlend kulcsot. ( I ) A kulcs szljnek 3 gyereke van (teht neki 2 testvre van).

a, k = 5 b, k = 10 c, k = 12 a, => + korrekci a szlben 5 => 10-esre ( II ) A trlend elemnek csak 1 testvre van, azaz a szlnek 2 gyereke van. II / 1 Ha a szlnek van 3 gyerekes testvre, akkor az 1 gyereket tad k=5 =>

II / 2 Ha a szlnek nincs 3 gyerekes testvre

=>

cscssszevons Szksg esetn a cscssszevonsokat folytatjuk felfel. Ez felgyrzhet a gykrig. k = 10 j gykr => h cskkent!

Mveletek kltsge: T(n) = (h) = (logn) Megjegyzs: Invarins (+) felttel akkor srl, amikor a minimlis elemet trljk, vagy a minimlissal kisebb elemet szrunk be.

B-fk
A 2-3 fk termszetes ltalnostsai: 3 => r, 2 => ; gyakorlatban kb. 50 r 1000 ( egy 2 fra r rgztett!) A httrtrolkon val nagy mennyisg adat trolsnak legjobb mdszere. Elmleti alapok: Definci: B-fa (r-ris / r-edrend keres-/rendezfa): A gykr s legazsszma 2 s r (kivve az n=0,1 eseteket) A (gykr alatti) tbbi bels pont szma: s r 2 Egy bels pont logikai tartalma:
r r

Az itteni k kulcsokra: k1 k < k2 s k1 minimlis kulcs. A levelek mind egy szinten, a gykrtl egyenl tvolsgra helyeszkednek el. A tulajdonkppeni adatok ( rekordok) itt vannak. A teljes fa esetleg nhny fels szint kivtelvel httrtroln van. A levelek ilyenkor ltalban tbb rekordot tartalmaznak. Mveletek: Keress, beszrs s trls: a keresfk ill. 2-3 fk alapjn knnyen elkpzelhet. Meggondoljuk: Keress: A bels pontokban lineris vagy logaritmikus keress; lineris keress esetn M = r-1 Mg a levlben is keresnk tbb rekord esetn. Beszrs: Itt is cscsvgssal (ha elrtk r-et) Pl.: r = 11, =6 2 Ha egy betelt cscshoz adunk +1 gyereket, akkor 12 lenne, amibl ellltunk 6+6-ot.
r

Trls: Itt is cscssszevonssal ( ha elrtk az -t lefel) 2 Ha egy pont alatt 6 gyerek van ( elz pont: Beszrs beli pldnknl) s ennek minden testvre alatt is, akkor a trls utn 5 lenne => 5+6=11 Mgneslemezes httrtroln val elhelyezs sv (track) szektor (block) 512 byte nagyobb egysg (cluster)/lap/bucket pl. 2048 vagy 4096 byte ez az tvitel egysge (lehet +1 szint)
r

lap egy olyan logikai egysg, amelyet a rendszer egytt kezel ( tvitel ) Legyen pl. 1000000 rekord 1 lap = 2048 byte 1 rek = csaknem 500 byte (480)

1 lapon 4 rekord fr el. kulcs 16 byte cmek 4 byte Ekkor egy bels pont ( = index lap) esetn r = 100 A levelek szma = 250000 A fa mrete: max h

min h

Az brzols paramtereinek a kritriuma: Az tlagos elrse id ~ lemezhez fordulsok szma. Itt: 3-4 Fontos javts: gykr mindig a memriban van, esetleg mg az alatta lv szint is; kiegszt memriaterleten [cash] bizonyos elrsi tvonalak trolsa.

You might also like