• Embed Doc
  • Readcast
  • Collections
  • CommentGo Back
 
8. B-fák
Általános keres ˝ ofák
Az általános keres ˝ ofa olyan absztrakt adatszerkezet, amely fa és minden cellájában adatsorozat van;
Adat 
:
 E 
.Tehát minden
p
-re
Adat 
(
 p
) =
a
1
,
···
,
a
.Ekkor azt mondjuk, hogy
p
rangja
,
Rang
(
 p
) =
.
Definíció.
Az
fa (általános) keres ˝ ofa, ha
 p
-re teljesül:1.
p
-nek
Rang
(
 p
)+
1
=
Fok 
(
 p
)
számú fia van.2.
Adat 
(
 p
) =
a
1
,
···
,
a
rendezett sorozat.3.
Max
(
 fiu
(
 p
,
i
1
)
)
a
i
 Min
(
 fiu
(
 p
,
i
)
)
,
i
=
1
,
···
,
 Rang
(
 p
)
, ahol
 fiu
(
 p
,
i
)
az
fa
fiu
(
 p
,
i
)
-gyöker˝ u részfája.
Definíció.
Az
fa
-rend˝ u
(
2
)
B-fa
, ha teljesül rá az alábbi 4 feltétel:
...
 fiu
(
 p
,
1
)
a
1
a
 fiu
(
 p
,
0
)
...
 p
 fiu
(
 p
,
)
1. ábra. Általános keres ˝ ofa szemléltetése.1. Keres ˝ ofa.2. A gyökér kivételével minden
p
pontra
1
 Rang
(
 p
)
2
1
.3. Minden
p
nem levél pontra
Fiu
(
 p
,
i
)
=
,
i
=
0
,
···
,
 Rang
(
 p
)
.4. Minden
p
levélpontra
(
 p
) =
h
(
)
, azaz minden levél pont mélysége azonos.
............... ... ............... .........
2. ábra. B-fa séma.
8.1. lemma.
Minden 
n
adatot tartalmazó 
-rend˝  
B-fára 
h
(
)
log
n
+
12
+
1
.
Bizonyítás.
A legkevesebb adatot tartalmazó B-fában a gyökérben 1, a többi pontban
1
adat van. A második szinten
2
pont1
 
... ......... ......
h
1234122
2
2
2
h
2
12
(
1
)
2
(
1
)
2
2
(
1
)
2
h
2
(
1
)
Szint 
...
Pont Ada
3. ábra.
h
magasságú, legkevesebb adatot tartalmazó B-fa.van, az i-ediken
i
>
2
esetén
2
i
2
pont van. Tehát a
h
magasságú
-rend˝ u B-fa legalább
1
+
h
i
=
2
2
i
2
(
1
) =
1
+
2
(
1
)
h
i
=
2
i
2
=
1
+
2
(
1
)
h
2
i
=
0
i
=
1
+
2
(
1
)
h
1
1
1
=
1
+
2
(
h
1
1
) =
2
h
1
1
Tehát
n
2
h
1
1
n
+
12
h
1
h
1
log
n
+
12
h
log
n
+
12
+
1
¤ 
Például, ha
n
=
10000000
,
=
100
, akkor
h
(
)
4
.
349
Egy
p
pontot
telítettnek 
nevezünk, ha
Rang
(
 p
) =
2
1
, illetve
minimálisnak 
, ha
Rang
(
 p
) =
1
.
8.1. B-fa b ˝ ovítése
Legyen
 p
1
,...,
 p
m
a
-kulcshoz tartozó b ˝ ovít ˝ oút pontjainak sorozata, tehát
p
1
a fa gyökere és
p
m
levélpont. A b ˝ ovítés mindiglevélpontba történik.
8.1.1. Optimista stratégia
El ˝ oször keressük meg a b ˝ ovít ˝ oút
p
m
végpontját. Ha
p
m
nem telített, akkor szúrjuk be az új
kulcsú adatot. Ha
p
m
telített, akkorkét két változat szerint folytatódhat a m˝ uvelet:
Egyszer˝ u módszer:
Vágjuk ketté az aktuális pontot, és a keletkez ˝ o
(
b
,
q
)
adat-pointer párnak az apába történ ˝ o beszúrásávalfolytassuk a b ˝ ovít ˝ o úton visszafelé haladva mindaddig, amíg nem telített ponthoz érünk, vagy a gyökérpontot kettévágva újgyökérpont keletkezik (ekkor növekszik a fa magassága).2
 
Körültekint ˝ o módszer:
Ha az aktuális pont bal vagy jobb testvére nem telített, akkor adjunk át egy adat-pointer párt, amivel azaktuális pont telítettségét megszüntetjük. Ha nem lehet átadni egyik testvérnek sem, akkor az egyszer˝ u módszer szerintikettévágást végezzünk.
8.1.2. Optimista stratégia
El ˝ oször keressük meg a b ˝ ovít ˝ oút
p
m
végpontját. Ha
p
m
nem telített, akkor szúrjuk be az új
kulcsú adatot. Ha
p
m
telített, akkorkét két változat szerint folytatódhat a m˝ uvelet:
Egyszer˝ u módszer:
Vágjuk ketté az aktuális pontot, és a keletkez ˝ o
(
b
,
q
)
adat-pointer párnak az apába történ ˝ o beszúrásávalfolytassuk a b ˝ ovít ˝ o úton visszafelé haladva mindaddig, amíg nem telített ponthoz érünk, vagy a gyökérpontot kettévágva újgyökérpont keletkezik (ekkor növekszik a fa magassága).
Körültekint ˝ o módszer:
Ha az aktuális pont bal vagy jobb testvére nem telített, akkor adjunk át egy adat-pointer párt, amivel azaktuális pont telítettségét megszüntetjük. Ha nem lehet átadni egyik testvérnek sem, akkor az egyszer˝ u módszer szerintikettévágást végezzünk.
8.1.3. Pesszimista stratégia
A b ˝ ovít ˝ oúton lefelé haladva minden telített pont telítettségét megszüntetjük, így a
p
m
végponthoz érve az nem lesz telített, tehátbeszúrhatjuk az új adatot. A telítettség megszüntetésére két módszer is kínálkozik.
Egyszer˝ u módszer:
Vágjuk ketté az aktuális pontot, és a keletkez ˝ o
(
b
,
q
)
adat-pointer párt szúrjuk be az apába, amely márbiztosan nem telített.
Körültekint ˝ o módszer:
Ha az aktuális pont bal vagy jobb testvére nem telített, akkor adjunk át egy adat-pointer párt, amivel azaktuális pont telítettségét megszüntetjük. Ha nem lehet átadni egyik testvérnek sem, akkor az egyszer˝ u módszer szerintikettévágást végezzünk.
8.2. B-fa törlés
Legyen
 p
1
,...,
 p
u
a
-kulcshozvezet ˝ okeres ˝ oútpontjainaksorozata, tehát
p
1
afagyökereés
Kulcs
(
 p
u
) =
. Legyen
 p
u
+
1
,...,
 p
v
a
kulcs
1
követ ˝ ojét tartalmazó ponthoz vezet ˝ o út. El ˝ oször másoljuk át
helyére a
1
kulcsot (és a hozzá tartozó adatot is, haazt is tároljuk a fában). A tényleges törlés a
p
v
ponttól indul és célja az aktuális pontbeli hiány megszüntetése.
000
1
000
 p
4
 p
5
 p
1
 p
2
 p
u
 p
v
4. ábra. Törléshez tartozó pontsorozat.3
of 00

Leave a Comment

You must be to leave a comment.
Submit
Characters: ...
You must be to leave a comment.
Submit
Characters: ...