• Nem Talált Eredményt

Hsnvyp{t|zlstésl{ ;5 ls ˝vhkáz

N/A
N/A
Protected

Academic year: 2022

Ossza meg "Hsnvyp{t|zlstésl{ ;5 ls ˝vhkáz"

Copied!
81
0
0

Teljes szövegt

(1)

Algoritmuselmélet 4. el ˝ oadás

Katona Gyula Y.

Budapesti M ˝uszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz.

I. B. 137/b

kiskat@cs.bme.hu

2002 Február 25.

(2)
(3)

ALGORITMUSELMÉLET 4. EL ˝OADÁS 2

AVL-fák

G. M. Adelszon-Velszkij, E. M. Landisz, 1962 =⇒ kiegyensúlyozott bináris keres ˝ofa

(4)

egy csúcsa; ekkor m(x) jelöli az x-gyöker ˝u részfa magasságát.

Definíció (AVL-tulajdonság). Egy bináris keres ˝ofa AVL-fa, ha minden x csúcsára teljesül, hogy

|m(bal(x)) − m(jobb(x))| ≤ 1.

(5)

ALGORITMUSELMÉLET 4. EL ˝OADÁS 2

AVL-fák

G. M. Adelszon-Velszkij, E. M. Landisz, 1962 =⇒ kiegyensúlyozott bináris keres ˝ofa

Jelölje m(f) az f bináris fa magasságát (szintjeinek számát), ha x az f fa egy csúcsa; ekkor m(x) jelöli az x-gyöker ˝u részfa magasságát.

Definíció (AVL-tulajdonság). Egy bináris keres ˝ofa AVL-fa, ha minden x csúcsára teljesül, hogy

|m(bal(x)) − m(jobb(x))| ≤ 1.

Mekkora a k szint ˝u AVL-fa minimális csúcsszáma?

(6)

egy csúcsa; ekkor m(x) jelöli az x-gyöker ˝u részfa magasságát.

Definíció (AVL-tulajdonság). Egy bináris keres ˝ofa AVL-fa, ha minden x csúcsára teljesül, hogy

|m(bal(x)) − m(jobb(x))| ≤ 1.

Mekkora a k szint ˝u AVL-fa minimális csúcsszáma?

~

T T

T T

TT B

B B

B BB

~

~

~

~

~

~

T

T T

T TT

B B

B B

BB

~

~

~

~ e

e e e ee

~

~

~

G4 = 7 G3 = 4

G2 = 2 G1 = 1

(7)

ALGORITMUSELMÉLET 4. EL ˝OADÁS 3

A k szintszámú minimális csúcsszámú AVL-fa gyökerének egyik részfája k − 1, a másik k − 2 szint ˝u; az eredeti fa minimalitása miatt pedig mindkét részfa minimális csúcsszámú.

k−1 k−2

k

(8)

k−1 k−2 k

=⇒ rekurzió

Gk = 1 + Gk1 + Gk2.

(9)

ALGORITMUSELMÉLET 4. EL ˝OADÁS 3

A k szintszámú minimális csúcsszámú AVL-fa gyökerének egyik részfája k − 1, a másik k − 2 szint ˝u; az eredeti fa minimalitása miatt pedig mindkét részfa minimális csúcsszámú.

k−1 k−2

k

=⇒ rekurzió

Gk = 1 + Gk1 + Gk2. Tétel. Gk = Fk+2 − 1 ha k ≥ 1.

(10)

k−1 k−2 k

=⇒ rekurzió

Gk = 1 + Gk1 + Gk2. Tétel. Gk = Fk+2 − 1 ha k ≥ 1.

Bizonyítás: k = 1, 2

=⇒ indukció:

Gk = 1 + Gk1 + Gk2 = 1 + Fk+1 − 1 + Fk − 1 = Fk+2 − 1.

(11)

ALGORITMUSELMÉLET 4. EL ˝OADÁS 4

Tétel. Egy n-pontú AVL-fa szintjeinek k száma nem több mint O(log n), pontosabban k ≤ 1.44 log2(n + 1).

(12)
(13)

ALGORITMUSELMÉLET 4. EL ˝OADÁS 4

Tétel. Egy n-pontú AVL-fa szintjeinek k száma nem több mint O(log n), pontosabban k ≤ 1.44 log2(n + 1).

Bizonyítás: tétel =⇒ n ≥ Fk+2 − 1

Fibonacci-számokra vonatkozó alsó becslésb ˝ol n + 1 ≥ φk

(14)

=⇒ logφ(n + 1) ≥ k =⇒ k ≤ 1.44 log2(n + 1)

(15)

ALGORITMUSELMÉLET 4. EL ˝OADÁS 5

Az AVL-tulajdonság meg ˝ orzése

Hogyan lehet a BESZÚR és TÖRÖL eljárásokat úgy megvalósítani, hogy megtartsák az AVL-tulajdonságot?

(16)
(17)

ALGORITMUSELMÉLET 4. EL ˝OADÁS 5

Az AVL-tulajdonság meg ˝ orzése

Hogyan lehet a BESZÚR és TÖRÖL eljárásokat úgy megvalósítani, hogy megtartsák az AVL-tulajdonságot? =⇒ forgatás

jobb forgatás bal forgatás

f g

h

g f

h y

x

x y

(18)

jobb forgatás bal forgatás

f g

h

g f

h y

x

x y

dupla forgatás

g h

f

i

g i

f h

y

x

z

z

y x

(19)

ALGORITMUSELMÉLET 4. EL ˝OADÁS 6

Tétel. Legyen S egy n csúcsból álló AVL-fa. BESZÚR(s, S) után legfeljebb egy (esetleg dupla) forgatással helyreállítható az AVL-tulajdonság. A

beszúrás költsége ezzel együtt is O(log n).

(20)
(21)

ALGORITMUSELMÉLET 4. EL ˝OADÁS 6

Tétel. Legyen S egy n csúcsból álló AVL-fa. BESZÚR(s, S) után legfeljebb egy (esetleg dupla) forgatással helyreállítható az AVL-tulajdonság. A

beszúrás költsége ezzel együtt is O(log n).

Bizonyítás: Minden csúcsban tartsuk számon m(f)-et, az f gyöker ˝u részfa mélységét, ez könnyen karban tartható.

KERES(s, S) segítségével megkeressük s helyét.

(22)

KERES(s, S) segítségével megkeressük s helyét.

A keresési utat végigjárva megkeressük a legalsó olyan csúcsot, ahol sérül az AVL-tulajdonság =⇒ x

s

s

keresési út

nagyítva

l l−1

f g

h h h’

x

y

x

(23)

ALGORITMUSELMÉLET 4. EL ˝OADÁS 6

Tétel. Legyen S egy n csúcsból álló AVL-fa. BESZÚR(s, S) után legfeljebb egy (esetleg dupla) forgatással helyreállítható az AVL-tulajdonság. A

beszúrás költsége ezzel együtt is O(log n).

Bizonyítás: Minden csúcsban tartsuk számon m(f)-et, az f gyöker ˝u részfa mélységét, ez könnyen karban tartható.

KERES(s, S) segítségével megkeressük s helyét.

A keresési utat végigjárva megkeressük a legalsó olyan csúcsot, ahol sérül az AVL-tulajdonság =⇒ x

s

s

keresési út

nagyítva

l l−1

f g

h h h’

x

y

x

x definíciója =⇒ m(h0) 6= m(h)

(24)

KERES(s, S) segítségével megkeressük s helyét.

A keresési utat végigjárva megkeressük a legalsó olyan csúcsot, ahol sérül az AVL-tulajdonság =⇒ x

s

s

keresési út

nagyítva

l l−1

f g

h h h’

x

y

x

x definíciója =⇒ m(h0) 6= m(h)

feltehetjük, hogy m(h0) = l, m(h) = l − 1

(25)

ALGORITMUSELMÉLET 4. EL ˝OADÁS 6

Tétel. Legyen S egy n csúcsból álló AVL-fa. BESZÚR(s, S) után legfeljebb egy (esetleg dupla) forgatással helyreállítható az AVL-tulajdonság. A

beszúrás költsége ezzel együtt is O(log n).

Bizonyítás: Minden csúcsban tartsuk számon m(f)-et, az f gyöker ˝u részfa mélységét, ez könnyen karban tartható.

KERES(s, S) segítségével megkeressük s helyét.

A keresési utat végigjárva megkeressük a legalsó olyan csúcsot, ahol sérül az AVL-tulajdonság =⇒ x

s

s

keresési út

nagyítva

l l−1

f g

h h h’

x

y

x

x definíciója =⇒ m(h0) 6= m(h)

feltehetjük, hogy m(h0) = l, m(h) = l − 1

Két eset van:

a) s az f részfába kerül b) s a g részfába kerül

(26)

s

s

(27)

ALGORITMUSELMÉLET 4. EL ˝OADÁS 7

s

f g s

h

g f

h y

x

x

y a) eset:

m(f) < m(g) =⇒ x-ben nem sérül az AVL-tul.

(28)

s

s

(29)

ALGORITMUSELMÉLET 4. EL ˝OADÁS 7

s

f g s

h

g f

h y

x

x

y a) eset:

m(f) < m(g) =⇒ x-ben nem sérül az AVL-tul.

m(f) > m(g) =⇒ y-ben is sérül az AVL-tul.

=⇒

m(f) = m(g) = m(h) =

= m(y) − 1 = l − 1

(30)

s

s m(f) = m(g) = m(h) =

= m(y) − 1 = l − 1

=⇒ jobb forgatás helyre állítja az AVL-tul.

(31)

ALGORITMUSELMÉLET 4. EL ˝OADÁS 7

s

f g s

h

g f

h y

x

x

y a) eset:

m(f) < m(g) =⇒ x-ben nem sérül az AVL-tul.

m(f) > m(g) =⇒ y-ben is sérül az AVL-tul.

=⇒

m(f) = m(g) = m(h) =

= m(y) − 1 = l − 1

=⇒ jobb forgatás helyre állítja az AVL-tul.

A forgatás után y mindkét részfájának a magassága l lesz, x új részfái g és h, mindkett ˝o szintszáma l − 1.

(32)

s

s m(f) = m(g) = m(h) =

= m(y) − 1 = l − 1

=⇒ jobb forgatás helyre állítja az AVL-tul.

A forgatás után y mindkét részfájának a magassága l lesz, x új részfái g és h, mindkett ˝o szintszáma l − 1.

y feletti csúcsok magassága nem változik, így az AVL-feltétel feljebb is megmarad a keres ˝o út mentén.

(33)

ALGORITMUSELMÉLET 4. EL ˝OADÁS 8

b1) eset: s a g részfába került és s az y csúcs fia (l = 1)

(34)

s

y y x

(35)

ALGORITMUSELMÉLET 4. EL ˝OADÁS 9

b2) eset: s a g részfába került és s nem az y csúcs fia (l > 1)

(36)

s

g’ g’’

s

f

h g’ g’’

f h

z

(37)

ALGORITMUSELMÉLET 4. EL ˝OADÁS 9

b2) eset: s a g részfába került és s nem az y csúcs fia (l > 1)

s

g’ g’’

s

f

h g’ g’’

f h

y

x

z

y x

z

=⇒ m(f) = l − 1 (mert y-ban az AVL-tul. teljesül), és

m(g0) = m(g00) = l − 2 (mert z-ben sincs baj az AVL-tulajdonsággal)

(38)

s

g’ g’’

s

f

h g’ g’’

f h

z

=⇒ m(f) = l − 1 (mert y-ban az AVL-tul. teljesül), és

m(g0) = m(g00) = l − 2 (mert z-ben sincs baj az AVL-tulajdonsággal)

=⇒ dupla forgatás elég

(39)

ALGORITMUSELMÉLET 4. EL ˝OADÁS 9

b2) eset: s a g részfába került és s nem az y csúcs fia (l > 1)

s

g’ g’’

s

f

h g’ g’’

f h

y

x

z

y x

z

=⇒ m(f) = l − 1 (mert y-ban az AVL-tul. teljesül), és

m(g0) = m(g00) = l − 2 (mert z-ben sincs baj az AVL-tulajdonsággal)

=⇒ dupla forgatás elég

Költség: 1.44 log2(n + 1) = O(log n)

(40)
(41)

ALGORITMUSELMÉLET 4. EL ˝OADÁS 10

Törlés AVL-fából

Tétel. Az n pontú AVL-fából való naiv törlés után legfeljebb 1.44 log2 n (szimpla vagy dupla) forgatás helyreállítja az AVL-tulajdonságot.

Nem bizonyítjuk, a módszer hasonló, de nem mindig elég egy forgatás. Pl.:

(42)

Java animáció: AVL-fa

(43)

ALGORITMUSELMÉLET 4. EL ˝OADÁS 11

További kiegyensúlyozott fák

Az AVL-tulajdonság csak egy a lehetséges kiegyensúlyozottsági feltételek közül.

(44)

Legyen k ≥ 1 egy egész szám. Egy bináris keres ˝ofa HB[k]-fa, ha minden x csúcsára teljesül, hogy

|m(bal(x)) − m(jobb(x))| ≤ k.

(45)

ALGORITMUSELMÉLET 4. EL ˝OADÁS 11

További kiegyensúlyozott fák

Az AVL-tulajdonság csak egy a lehetséges kiegyensúlyozottsági feltételek közül. Általánosítása:

Definíció. HB[k]-fák: (C. C. Foster, 1973)

Legyen k ≥ 1 egy egész szám. Egy bináris keres ˝ofa HB[k]-fa, ha minden x csúcsára teljesül, hogy

|m(bal(x)) − m(jobb(x))| ≤ k.

=⇒ HB[1]-fák → AVL-fák

(46)
(47)

ALGORITMUSELMÉLET 4. EL ˝OADÁS 12

Súlyra kiegyensúlyozott fák

A részfák súlya legyen a csúcsszámuk: s(f).

Definíció. Egy bináris keres ˝ofát súlyra kiegyensúlyozott fának (röviden SK-fának) nevezünk, ha minden x bels ˝o csúcsára teljesül, hogy

√2 − 1 < s(bal(x))

s(jobb(x)) < √

2 + 1.

(48)

√2 − 1 < s(bal(x))

s(jobb(x)) < √

2 + 1.

Feladat: Igazoljuk, hogy a leheletnyivel szigorúbb 1/2 < s(jobb(x))s(bal(x)) < 2 korlátokat már csak az l szintb ˝ol álló 2l − 1 pontú bináris fák a teljesítik.

(49)

ALGORITMUSELMÉLET 4. EL ˝OADÁS 12

Súlyra kiegyensúlyozott fák

A részfák súlya legyen a csúcsszámuk: s(f).

Definíció. Egy bináris keres ˝ofát súlyra kiegyensúlyozott fának (röviden SK-fának) nevezünk, ha minden x bels ˝o csúcsára teljesül, hogy

√2 − 1 < s(bal(x))

s(jobb(x)) < √

2 + 1.

Feladat: Igazoljuk, hogy a leheletnyivel szigorúbb 1/2 < s(jobb(x))s(bal(x)) < 2 korlátokat már csak az l szintb ˝ol álló 2l − 1 pontú bináris fák a teljesítik.

Tétel. Egy n csúcsú SK-fa mélysége ≤ 2 log2 n + 1.

Bizonyítás:

x

y z

(50)

√2 − 1 < s(bal(x))

s(jobb(x)) < √

2 + 1.

Feladat: Igazoljuk, hogy a leheletnyivel szigorúbb 1/2 < s(jobb(x))s(bal(x)) < 2 korlátokat már csak az l szintb ˝ol álló 2l − 1 pontú bináris fák a teljesítik.

Tétel. Egy n csúcsú SK-fa mélysége ≤ 2 log2 n + 1.

Bizonyítás:

x

y z

s(x) > s(y) +s(z) > s(y) + (√

2−1)s(y) = √

2s(y)

(51)

ALGORITMUSELMÉLET 4. EL ˝OADÁS 12

Súlyra kiegyensúlyozott fák

A részfák súlya legyen a csúcsszámuk: s(f).

Definíció. Egy bináris keres ˝ofát súlyra kiegyensúlyozott fának (röviden SK-fának) nevezünk, ha minden x bels ˝o csúcsára teljesül, hogy

√2 − 1 < s(bal(x))

s(jobb(x)) < √

2 + 1.

Feladat: Igazoljuk, hogy a leheletnyivel szigorúbb 1/2 < s(jobb(x))s(bal(x)) < 2 korlátokat már csak az l szintb ˝ol álló 2l − 1 pontú bináris fák a teljesítik.

Tétel. Egy n csúcsú SK-fa mélysége ≤ 2 log2 n + 1.

Bizonyítás:

x

y z

s(x) > s(y) +s(z) > s(y) + (√

2−1)s(y) = √

2s(y) Legyenek x1, x2, . . . , xk egy k-hosszúságú gyökért ˝ol levélig men ˝o út csúcsai.

(52)

√2 − 1 < s(bal(x))

s(jobb(x)) < √

2 + 1.

Feladat: Igazoljuk, hogy a leheletnyivel szigorúbb 1/2 < s(jobb(x))s(bal(x)) < 2 korlátokat már csak az l szintb ˝ol álló 2l − 1 pontú bináris fák a teljesítik.

Tétel. Egy n csúcsú SK-fa mélysége ≤ 2 log2 n + 1.

Bizonyítás:

x

y z

s(x) > s(y) +s(z) > s(y) + (√

2−1)s(y) = √

2s(y) Legyenek x1, x2, . . . , xk egy k-hosszúságú gyökért ˝ol levélig men ˝o út csúcsai.

n = s(x1) > √

2s(x2) > (√

2)2s(x3) > · · · >

(√

2)k1s(xk) = (√

2)k1 = 2(k1)/2.

(53)

ALGORITMUSELMÉLET 4. EL ˝OADÁS 12

Súlyra kiegyensúlyozott fák

A részfák súlya legyen a csúcsszámuk: s(f).

Definíció. Egy bináris keres ˝ofát súlyra kiegyensúlyozott fának (röviden SK-fának) nevezünk, ha minden x bels ˝o csúcsára teljesül, hogy

√2 − 1 < s(bal(x))

s(jobb(x)) < √

2 + 1.

Feladat: Igazoljuk, hogy a leheletnyivel szigorúbb 1/2 < s(jobb(x))s(bal(x)) < 2 korlátokat már csak az l szintb ˝ol álló 2l − 1 pontú bináris fák a teljesítik.

Tétel. Egy n csúcsú SK-fa mélysége ≤ 2 log2 n + 1.

Bizonyítás:

x

y z

s(x) > s(y) +s(z) > s(y) + (√

2−1)s(y) = √

2s(y) Legyenek x1, x2, . . . , xk egy k-hosszúságú gyökért ˝ol levélig men ˝o út csúcsai.

n = s(x1) > √

2s(x2) > (√

2)2s(x3) > · · · >

(√

2)k1s(xk) = (√

2)k1 = 2(k1)/2.

=⇒

(54)
(55)

ALGORITMUSELMÉLET 4. EL ˝OADÁS 13

S-fák

Splay-tree: D. D. Sleator és R. E. Tarjan, 1983.

Olyan bináris fa, ami tanul: pl. gyakran keresett elemet feljebb teszi.

(56)

lesz.

(57)

ALGORITMUSELMÉLET 4. EL ˝OADÁS 13

S-fák

Splay-tree: D. D. Sleator és R. E. Tarjan, 1983.

Olyan bináris fa, ami tanul: pl. gyakran keresett elemet feljebb teszi.

=⇒ Hosszú átlagos m ˝uveletsor alatt az egy lépésre es ˝o költség optimális lesz.

F ˝o öltlet:

KIFORDÍT(x, f) átszervezi az f S-fát úgy, hogy x lesz az új gyökér, ha x ∈ f; különben f gyökere x valamelyik szomszédja lesz:

vagy max{y ∈ f; y < x} vagy min{y ∈ f; y > x}.

(58)

lesz.

F ˝o öltlet:

KIFORDÍT(x, f) átszervezi az f S-fát úgy, hogy x lesz az új gyökér, ha x ∈ f; különben f gyökere x valamelyik szomszédja lesz:

vagy max{y ∈ f; y < x} vagy min{y ∈ f; y > x}.

KIFORDÍT(x, f) implementációja: KERES(x, f) =⇒ ha x ∈ f, akkor majd x-et visszük fel,

(59)

ALGORITMUSELMÉLET 4. EL ˝OADÁS 13

S-fák

Splay-tree: D. D. Sleator és R. E. Tarjan, 1983.

Olyan bináris fa, ami tanul: pl. gyakran keresett elemet feljebb teszi.

=⇒ Hosszú átlagos m ˝uveletsor alatt az egy lépésre es ˝o költség optimális lesz.

F ˝o öltlet:

KIFORDÍT(x, f) átszervezi az f S-fát úgy, hogy x lesz az új gyökér, ha x ∈ f; különben f gyökere x valamelyik szomszédja lesz:

vagy max{y ∈ f; y < x} vagy min{y ∈ f; y > x}.

KIFORDÍT(x, f) implementációja: KERES(x, f) =⇒ ha x ∈ f, akkor majd x-et visszük fel, ha x 6∈ f, akkor a keresés x egyik szomszédjánál

(max{y ∈ f; y < x} vagy min{y ∈ f; y > x}) ér véget, vegyük ezt.

(60)

lesz.

F ˝o öltlet:

KIFORDÍT(x, f) átszervezi az f S-fát úgy, hogy x lesz az új gyökér, ha x ∈ f; különben f gyökere x valamelyik szomszédja lesz:

vagy max{y ∈ f; y < x} vagy min{y ∈ f; y > x}.

KIFORDÍT(x, f) implementációja: KERES(x, f) =⇒ ha x ∈ f, akkor majd x-et visszük fel, ha x 6∈ f, akkor a keresés x egyik szomszédjánál

(max{y ∈ f; y < x} vagy min{y ∈ f; y > x}) ér véget, vegyük ezt.

=⇒ feltehetjük, hogy x ∈ f.

(61)

ALGORITMUSELMÉLET 4. EL ˝OADÁS 14

A következ ˝o eljárás x-et maximum két szinttel viszi feljebb, addig alkalmazzuk, amig x felér.

(62)
(63)

ALGORITMUSELMÉLET 4. EL ˝OADÁS 14

A következ ˝o eljárás x-et maximum két szinttel viszi feljebb, addig alkalmazzuk, amig x felér.

(0) Ha x gyökér, akkor készen vagyunk.

(* A továbbiakban jelölje y az x apját. *)

(1) Ha x-nek nincs nagyapja, akkor FORGAT(x), különben

(64)

(1) Ha x-nek nincs nagyapja, akkor FORGAT(x), különben

(2) ha x és y is baloldali (jobboldali) gyerek,

(65)

ALGORITMUSELMÉLET 4. EL ˝OADÁS 14

A következ ˝o eljárás x-et maximum két szinttel viszi feljebb, addig alkalmazzuk, amig x felér.

(0) Ha x gyökér, akkor készen vagyunk.

(* A továbbiakban jelölje y az x apját. *)

(1) Ha x-nek nincs nagyapja, akkor FORGAT(x), különben

(2) ha x és y is baloldali (jobboldali) gyerek,x y

z y

x z

x y

z

(66)

(1) Ha x-nek nincs nagyapja, akkor FORGAT(x), különben

(2) ha x és y is baloldali (jobboldali) gyerek,x y

z y

x z

x y

z akkor FORGAT(y), majd FORGAT(x), különben

(3) ha x és y különböz ˝o oldali gyerekek,

akkor FORGAT(x), majd ismét FORGAT(x).

(67)

ALGORITMUSELMÉLET 4. EL ˝OADÁS 14

A következ ˝o eljárás x-et maximum két szinttel viszi feljebb, addig alkalmazzuk, amig x felér.

(0) Ha x gyökér, akkor készen vagyunk.

(* A továbbiakban jelölje y az x apját. *)

(1) Ha x-nek nincs nagyapja, akkor FORGAT(x), különben

(2) ha x és y is baloldali (jobboldali) gyerek,x y

z y

x z

x y

z akkor FORGAT(y), majd FORGAT(x), különben

(3) ha x és y különböz ˝o oldali gyerekek,

akkor FORGAT(x), majd ismét FORGAT(x).

z x y y

z x

x

y z

(68)

(1) Ha x-nek nincs nagyapja, akkor FORGAT(x), különben

(2) ha x és y is baloldali (jobboldali) gyerek,x y

z y

x z

x y

z akkor FORGAT(y), majd FORGAT(x), különben

(3) ha x és y különböz ˝o oldali gyerekek,

akkor FORGAT(x), majd ismét FORGAT(x).

z x y y

z x

x

y z

(69)

ALGORITMUSELMÉLET 4. EL ˝OADÁS 15

M ˝ uveletek az S-fákban

A keres ˝ofákra jellemz ˝o KERES(x, f), BESZÚR(x, f) és TÖRÖL(x, f) m ˝uveletek a szokásosak.

(70)

feltéve, hogy x < y teljesül minden x ∈ f és y ∈ f0 kulcsra.

(71)

ALGORITMUSELMÉLET 4. EL ˝OADÁS 15

M ˝ uveletek az S-fákban

A keres ˝ofákra jellemz ˝o KERES(x, f), BESZÚR(x, f) és TÖRÖL(x, f) m ˝uveletek a szokásosak.

A RAGASZT(f, f0) m ˝uvelet az f és f0 S-fákból egyetlen S-fát szervez, feltéve, hogy x < y teljesül minden x ∈ f és y ∈ f0 kulcsra.

A VÁG(x, f) m ˝uvelet szétvágja f-et az f0 és f00 S-fákra úgy, hogy y ≤ x ≤ z teljesül minden y ∈ f0 és z ∈ f00 csúcsra.

(72)

feltéve, hogy x < y teljesül minden x ∈ f és y ∈ f0 kulcsra.

A VÁG(x, f) m ˝uvelet szétvágja f-et az f0 és f00 S-fákra úgy, hogy y ≤ x ≤ z teljesül minden y ∈ f0 és z ∈ f00 csúcsra.

Tétel. Az ismertetett m ˝uveletek mindegyike megvalósítható konstans számú KIFORDÍT és konstans számú elemi operáció (összehasonlítás, mutató

beállítás, stb.) segítségével.

Bizonyítás: Csak két m ˝uvelet, a RAGASZT és a TÖRÖL esetét nézzük meg közelebbr ˝ol, többi trivi.

(73)

ALGORITMUSELMÉLET 4. EL ˝OADÁS 15

M ˝ uveletek az S-fákban

A keres ˝ofákra jellemz ˝o KERES(x, f), BESZÚR(x, f) és TÖRÖL(x, f) m ˝uveletek a szokásosak.

A RAGASZT(f, f0) m ˝uvelet az f és f0 S-fákból egyetlen S-fát szervez, feltéve, hogy x < y teljesül minden x ∈ f és y ∈ f0 kulcsra.

A VÁG(x, f) m ˝uvelet szétvágja f-et az f0 és f00 S-fákra úgy, hogy y ≤ x ≤ z teljesül minden y ∈ f0 és z ∈ f00 csúcsra.

Tétel. Az ismertetett m ˝uveletek mindegyike megvalósítható konstans számú KIFORDÍT és konstans számú elemi operáció (összehasonlítás, mutató

beállítás, stb.) segítségével.

Bizonyítás: Csak két m ˝uvelet, a RAGASZT és a TÖRÖL esetét nézzük meg közelebbr ˝ol, többi trivi.

RAGASZT(f, f0) =⇒ el ˝oször KIFORDÍT(+∞, f) =: f

(74)

feltéve, hogy x < y teljesül minden x ∈ f és y ∈ f0 kulcsra.

A VÁG(x, f) m ˝uvelet szétvágja f-et az f0 és f00 S-fákra úgy, hogy y ≤ x ≤ z teljesül minden y ∈ f0 és z ∈ f00 csúcsra.

Tétel. Az ismertetett m ˝uveletek mindegyike megvalósítható konstans számú KIFORDÍT és konstans számú elemi operáció (összehasonlítás, mutató

beállítás, stb.) segítségével.

Bizonyítás: Csak két m ˝uvelet, a RAGASZT és a TÖRÖL esetét nézzük meg közelebbr ˝ol, többi trivi.

RAGASZT(f, f0) =⇒ el ˝oször KIFORDÍT(+∞, f) =: f =⇒ f gyökere x az új fa legnagyobb kulcsa

(75)

ALGORITMUSELMÉLET 4. EL ˝OADÁS 15

M ˝ uveletek az S-fákban

A keres ˝ofákra jellemz ˝o KERES(x, f), BESZÚR(x, f) és TÖRÖL(x, f) m ˝uveletek a szokásosak.

A RAGASZT(f, f0) m ˝uvelet az f és f0 S-fákból egyetlen S-fát szervez, feltéve, hogy x < y teljesül minden x ∈ f és y ∈ f0 kulcsra.

A VÁG(x, f) m ˝uvelet szétvágja f-et az f0 és f00 S-fákra úgy, hogy y ≤ x ≤ z teljesül minden y ∈ f0 és z ∈ f00 csúcsra.

Tétel. Az ismertetett m ˝uveletek mindegyike megvalósítható konstans számú KIFORDÍT és konstans számú elemi operáció (összehasonlítás, mutató

beállítás, stb.) segítségével.

Bizonyítás: Csak két m ˝uvelet, a RAGASZT és a TÖRÖL esetét nézzük meg közelebbr ˝ol, többi trivi.

RAGASZT(f, f0) =⇒ el ˝oször KIFORDÍT(+∞, f) =: f =⇒ f gyökere x az új fa legnagyobb kulcsa

=⇒ csatoljuk f0-t x jobb fiának

(76)

feltéve, hogy x < y teljesül minden x ∈ f és y ∈ f0 kulcsra.

A VÁG(x, f) m ˝uvelet szétvágja f-et az f0 és f00 S-fákra úgy, hogy y ≤ x ≤ z teljesül minden y ∈ f0 és z ∈ f00 csúcsra.

Tétel. Az ismertetett m ˝uveletek mindegyike megvalósítható konstans számú KIFORDÍT és konstans számú elemi operáció (összehasonlítás, mutató

beállítás, stb.) segítségével.

Bizonyítás: Csak két m ˝uvelet, a RAGASZT és a TÖRÖL esetét nézzük meg közelebbr ˝ol, többi trivi.

RAGASZT(f, f0) =⇒ el ˝oször KIFORDÍT(+∞, f) =: f =⇒ f gyökere x az új fa legnagyobb kulcsa

=⇒ csatoljuk f0-t x jobb fiának

(77)

ALGORITMUSELMÉLET 4. EL ˝OADÁS 16

TÖRÖL(x, f) =⇒ KIFORDÍT(x, f)

(78)
(79)

ALGORITMUSELMÉLET 4. EL ˝OADÁS 16

TÖRÖL(x, f) =⇒ KIFORDÍT(x, f)ha a kapott fa gyökere nem x, akkor x 6∈ f =⇒

Ha x az új fa gyökere, töröljük és a kapott két f1 és f2 részfára RAGASZT(f1, f2)

(80)

melyben n beszúrás van, O(m log n).

(81)

ALGORITMUSELMÉLET 4. EL ˝OADÁS 16

TÖRÖL(x, f) =⇒ KIFORDÍT(x, f)ha a kapott fa gyökere nem x, akkor x 6∈ f =⇒

Ha x az új fa gyökere, töröljük és a kapott két f1 és f2 részfára RAGASZT(f1, f2)

Tétel. Egy üres S-fából induló olyan m m ˝uveletb ˝ol álló sorozat költsége, melyben n beszúrás van, O(m log n).

Java animáció: S-fa

Hivatkozások

KAPCSOLÓDÓ DOKUMENTUMOK

Területi szinten azt is megállapíthatjuk, hogy a központi és Nyugat-Dunántúl régióban nagyobb valószí- nűséggel találni reziliens iskolát, ez pedig azért érdekes, mert

Az állítás bizonyításához legyen T e az a Turing-gép, amit T -ből az alábbi egyszerű változtatással kapunk: Az átmeneti függvényt úgy írjuk át, hogy ha T -nél az

Hangsúlyozza, hogy még soha sem létezett ennyire elterjedt és következményeiben ilyen kevéssé kikísérletezett gyógyszer. Minden ilyenfajta készítményt évtizedekig sorozatosan

Kálmán Rita.. A legkisebbek, az óvodás csoportok látogatása- kor fontos a játékosság, ezen keresztül az első élmé- nyek megszerzése a könyvtárunkról. A bevezető

Így ha két azonos kulcsú elem közül az egyik megel ˝ozi a másikat,. akkor a rendezés után sem változik

• Ez az átírás azért is jó, mert egy kapcsolatot majd úgyis valahogy így tudunk kezelni a fizikai megvalósításban: a kapcsolat egy eleme egy három mutatóból álló tömb

Barna és pesti barátai a falu virtuális leképezésének segít- ségével elhitetik a székelyekkel, hogy veszély fenyegeti a valahogy Ámerikába átkerült fa- lut, így

Már nincs ojan meleg a szobába mint mikor Margit it volt és tüzelt mindig el felejtenek rá teni a kájhára voltam uszo tréningen most nem én kaptam a kis labdát hanem aki