• Nem Talált Eredményt

Láncolt lista

N/A
N/A
Protected

Academic year: 2022

Ossza meg "Láncolt lista"

Copied!
8
0
0

Teljes szövegt

(1)

A számítástudomány alapjai

Katona Gyula Y.

Számítástudományi és Információelméleti Tanszék Budapesti M ˝uszaki és Gazdaságtudományi Egyetem

Bináris keres ˝ofa, kupac

Katona Gyula Y. (BME SZIT) A számítástudomány alapjai Bináris keres ˝ofa, kupac 1 / 16

Bináris fa adatszerkezet

Láncolt lista

x

Bináris fa

bal fiú jobb fiú

x

x x x x x x x x

x x

M ˝uveletek: gyökér, bal-fiú, jobb-fiú, keres, beszúr, töröl

(2)

Bináris fa (Binary tree)

Fa csúcsai → elem(x),bal(x),jobb(x) esetleg

apa(x) és reszfa(x) (=az x gyöker ˝u fészfa csúcsainak száma)

*

5 6

+

8 9

ha x a gyökér, y pedig a 9-es csúcs, akkor

bal(jobb(x)) = y, apa(apa(y)) = x, elem(bal(x)) = ∗,

reszfa(x) = 7, reszfa(∗) = 3.

Katona Gyula Y. (BME SZIT) A számítástudomány alapjai Bináris keres ˝ofa, kupac 3 / 16

Bináris fa bejárásai

pre(x) in(x) post(x)

begin begin begin

látogat(x); in(bal(x)); post(bal(x));

pre(bal(x)); látogat(x); post(jobb(x));

pre(jobb(x)) in(jobb(x)) látogat(x)

end end end

*

5 6

+

8 9

ha x a gyökér, y pedig a 9-es csúcs, akkor

PREORDER: + ∗85− 96 INORDER: 8 ∗5+ 9− 6 POSTORDER: 85∗96 −+ Lépésszám: cn

(3)

Bináris keres ˝ofa (Binary search tree)

Tároljuk az U rendezett halmaz elemeit, hogy BESZÚR, TÖRÖL, KERES, MIN, (MAX, TÓLIG) hatékonyak legyenek.

Definíció (Keres ˝ofa-tulajdonság)

Tetsz ˝oleges x csúcsra és az x baloldali részfájában lev ˝o bármely y csúcsra igaz, hogy elem(y) ≤ elem(x). Hasonlóan, ha z egy csúcs az x jobb részfájából, akkor elem(x) ≤ elem(z).

4 2

13 1

6

9 8

10

Házi feladat: Igazoljuk, hogy egy bináris keres ˝ofa elemeit a fa inorder bejárása növekv ˝o sorrendben látogatja meg.

Egy kényelmes megállapodás: a továbbiakban feltesszük, hogy nincsenek ismétl ˝od ˝o elemek a keres ˝ofában.

Katona Gyula Y. (BME SZIT) A számítástudomány alapjai Bináris keres ˝ofa, kupac 5 / 16

Algoritmusok

2 4

6

1

8 9 KERES(4,S)

KERES(s,S): Összehasonlítjuk s-et S gyökerével s0-vel.

Ha s = s0, akkor megtaláltuk.

Ha s < s0, akkor balra megyünk tovább.

Ha s > s0, akkor jobbra megyünk.

Ugyanezt az utat járjuk be a KERES(5,S) kapcsán, de azt nem találjuk meg.

Lépésszám: cl, ahol l a fa mélysége MIN: mindig balra lépünk, amíg lehet MAX: mindig jobbra lépünk, amíg lehet Lépésszám: cl

TÓLIG(a,b,S): KERES(a,S) =⇒ INORDER a-tól b-ig Lépésszám: cn

(4)

BESZÚR

BESZÚR(s,S): KERES(s,S)-sel megkeressük hova kerülne és új levelet adunk hozzá, pl. BESZÚR(3,S):

4 2

6

1

8 9

=⇒

4 2

3 1

6

8 9

Lépésszám: cl

Katona Gyula Y. (BME SZIT) A számítástudomány alapjai Bináris keres ˝ofa, kupac 7 / 16

Faépítés beszúrásokkal

Ha pl. az 1,2, . . . ,n sorozatból építünk fát így, akkor ezt kapjuk:

Az építés költsége: 2+ 3+ . . .+ (n − 1) = cn2

n 3

2 1

Tétel

Ha egy véletlen sorozatból építünk fát naiv beszúrásokkal, akkor az építés költsége átlagosan c(nlog2n). A kapott fa mélysége átlagosan clog2n.

(5)

Rendezés bináris keres ˝ofával

Építsünk keres ˝ofát beszúrásokkal.

Költsége: Legrosszabb esetben cn2, átlagosan c(nlog2n).

INORDER bejárással kilistázzuk az elemeket Költsége: cn.

Költsége összesen: Legrosszabb esetben cn2 + cn ≈ cn2, átlagosan c(nlog2n) + cn ≈ c(nlog2n).

Katona Gyula Y. (BME SZIT) A számítástudomány alapjai Bináris keres ˝ofa, kupac 9 / 16

Kupac (Heap) adatszerkezet

Egész számok egy S véges részhalmazát szeretnénk tárolni, hogy a beszúrás és a minimális elem törlése (mintör) hatékony legyen.

Alkalmazások:

Jobok indítása

Több rendezett halmaz összefésülése Gyors rendezési algoritmus

Teljes bináris fa:

gyökér

levelek

(6)

Bináris fa ábrázolása tömbbel

A fa csúcsai az A[1 : n] tömb elemei.

Az A[i] csúcs bal fia A[2i], a jobb fia pedig A[2i +1].

=⇒ A[j] csúcs apja A[bj/2c]

4

5 9

8

2

6 7

2 4 6 8 5 9 7

Kupac tulajdonság: apa < fia

Katona Gyula Y. (BME SZIT) A számítástudomány alapjai Bináris keres ˝ofa, kupac 11 / 16

Kupacépítés

f

1

f

2

a

c

b

f1 és f2 kupacok

kupacol(f)

{ Ha min{a,b} < c, akkor min{a,b} és c helyet cserél

Ha a c elem a-val cserélt helyet, akkor kupacol(f1), ha b-vel, akkor kupacol(f2) }

c addig megy lefelé, amig sérti a kupac tulajdonságot.

Lépésszám: Ha l a fa szintjeinek száma, akkor ≤ l − 1 csere és ≤ 2(l − 1) össze- hasonlítás

kupacépítés(f)

{ Az f fa v csúcsaira lentr ˝ol felfelé, jobbról balra kupacol(v). }

Az el ˝obbi sorrend a kupac tömb reprezentációjában épp a jobbról balra sorrendet jelenti.

(7)

Kupac mélysége

Bináris fában:

1. szint: 1 pont 2. szint: 2 pont 3. szint: 22 pont

...

l −1-edik szint: 2l−2 pont

l-edik szint: > 1 és ≤ 2l−1 pont

=⇒ n ≥ 1 +Pl−2

i=02i = 2l−1 =⇒ l ≤ 1 +log2n

Tétel

Kupacépítés költsége: cn

Katona Gyula Y. (BME SZIT) A számítástudomány alapjai Bináris keres ˝ofa, kupac 13 / 16

MINTÖR

A minimális elem az f gyökerében van, ezt töröljük.

Helyére tesszük a fa utolsó szintjének jobb széls ˝o elemét, majd kupacol(f).

5 9

4

2

8

6

2 4

5 9

8

6

2 5

8 9

4

6

Költség: cl = c(log2n)

(8)

BESZÚR

Új levelet adunk a fához (ügyelve a teljességre), ide tesszük az s elemet. Ezután s-et mozgatjuk felfelé, mindig összehasonlítjuk az apjával.

5 9

4

2

8 1

6

5 9

4

2

8 6

1

5 9

4

8 6

1

2

Költség: cl = c(log2n)

Katona Gyula Y. (BME SZIT) A számítástudomány alapjai Bináris keres ˝ofa, kupac 15 / 16

A kupacos rendezés (heap sort)

El ˝oször kupacot építünk, utána n darab MINTÖR adja nem csökken ˝o sorrendben az elemeket.

[J. W. J. Williams és R. W. Floyd, 1964]

Költség: c1n +c2(nlog2n) = c3(nlog2n)

Legjobb ismert rendez ˝o algoritmus.

Pontos implementációval:

2nblog2nc +3n (összehasonlítások száma) és nblog2nc +2,5n (cserék száma).

Hivatkozások

KAPCSOLÓDÓ DOKUMENTUMOK

Egy n cs´ ucs´ u bin´ aris keres˝ ofa n´ eh´ any cs´ ucsa ki vannak

továbbra is van KERES, BESZÚR, TÖRÖL, MIN, MAX művelet, és ezeken kívül van még RANG és K-ADIK művelet is, ahol RANG(x) azt adja vissza, hogy a tárolt elemek között az x

A láncolt lista olyan absztrakt adatszerkezet, amelyben az adatok, a tömbökhöz hasonlóan, lineáris sorrendben követik egymást.. Ezt a megoldást főleg akkor

Továbbá ahhoz, hogy hatékonyak legyenek a megtett erőfeszítések olyan adekvát közös stratégiai kutatási és innovációs keretrendszer megalkotása szükséges,

Az épületek felismerése után töröl minden olyan vonalat, amely csak épülethez tartozik, és nem út/utca határvonalának része.. Ennek módja: az épület élekhez folytatást

Az Ohio State University munkatársai néhány nap- pal ezelőtt a Nature Machine Intelligence oldalán tették közzé friss eredményeiket egy olyan keret- rendszer

Még a legfiatalabb korosztály körében is csak minden ötödik válaszadó mondta, hogy rendszeresen ke- res ilyen információkat a neten2.

rneten „minden” megtalál- ő k sok fájlt és publikus adatbázist indexelnek ugyan, de az el ő fize- téshez és regisztrációhoz kötött adatbáziso- kat, illetve a