Algoritmusok és adatszerkezetek II. el adásjegyzet (részletek)

Méret: px
Mutatás kezdődik a ... oldaltól:

Download "Algoritmusok és adatszerkezetek II. el adásjegyzet (részletek)"

Átírás

1 Algoritmusok és adatszerkezetek II. el adásjegyzet (részletek) Ásványi Tibor 19. február 4.

2 Tartalomjegyzék 1. Bevezetés, Ajánlott irodalom 3. Tematika 6 3. AVL fák AVL fák: beszúrás AVL fák: a remmin(t, minp) eljárás AVL fák: törlés Az AVL fák magassága* Általános fák 4. B+ fák és m veleteik 6

3 1. Bevezetés, Ajánlott irodalom Kedves Hallgatók! A vizsgára való készülésben els sorban az el adásokon és a gyakorlatokon készített jegyzeteikre támaszkodatnak. További ajánlott források: Hivatkozások [1] Ásványi Tibor, Algoritmusok és adatszerkezetek II. Útmutatások a tanulásoz, Tematika, AVL fák (19) ttp://aszt.inf.elte.u/ asvanyi/ad/adjegyzet.pdf [] Ásványi Tibor, Algoritmusok II. gyakorló feladatok (16) ttp://aszt.inf.elte.u/ asvanyi/ad/adfeladatok.pdf [3] Cormen, T.H., Leiserson, C.E., Rivest, R.L., Stein, C., magyarul: Új Algoritmusok, Scolar Kiadó, Budapest, 3. ISBN angolul: Introduction to Algoritms (Tird Edititon), Te MIT Press, 9. [4] Fekete István, Algoritmusok jegyzet ttp://ifekete.web.elte.u/ [] Koruely Gábor, Szalay Ricárd, Algoritmusok és adatszerkezetek, 1/16 tavaszi félév (allgatói jegyzet, lektorált és javított) ttp://aszt.inf.elte.u/ asvanyi/ad/ [6] Rónyai Lajos Ivanyos Gábor Szabó Réka, Algoritmusok, T ypot E X Kiadó, ISBN [7] Tarjan, Robert Endre, Data Structures and Network Algoritms, CBMS-NSF Regional Conference Series in Applied Matematics, [8] Weiss, Mark Allen, Data Structures and Algoritm Analysis, Addison-Wesley, 199, 1997, 7, 1, 13. [9] Carl Burc, Ásványi Tibor, B+ fák ttp://aszt.inf.elte.u/ asvanyi/ad/b+ fa.pdf 3

4 [1] Ásványi Tibor, Algoritmusok és adatszerkezetek I. el adásjegyzet (17) ttp://aszt.inf.elte.u/ asvanyi/ad/ad1jegyzet.pdf [11] Wirt, N., Algoritms and Data Structures, Prentice-Hall Inc., 1976, 198, 4. magyarul: Algoritmusok + Adatstruktúrák = Programok, M szaki Könyvkiadó, Budapest, 198. ISBN Az itt következ el adásjegyzetekben bizonyos fejezetek még nem teljesek; egyel re csak az AVL fákkal kapcsolatos részeket dolgoztam ki részletesen, az általános fákat részben, illetve a B+ fák témakörben angol nyelv egyetemi tananyag fordítását bocsátom rendelkezésükre. Nagy segítség leet még a felkészülésben a fent ivatkozott allgatói jegyzet is []. Az el adásokon tárgyalt programok struktogramjait igyekeztem minden esetben megadni, a másolási ibák kiküszöbölése érdekében. E tananyagon kívül a megértést segít ábrák találatóak b ségesen az ajánlott segédanyagokban. Ezúton szeretnék köszönetet mondani Umann Kristófnak az ebben a jegyzetben találató szép, színvonalas szemléltet ábrák elkészítéséért, az ezekre szánt id ért és szellemi ráfordításért! A vizsgákon az elméleti kérdések egy-egy tétel bizonyos részleteire vonatkoznak. Lesznek még megoldandó feladatok, amik részben a tanult algoritmusok m ködésének szemléltetését, bemutatását, részben a szerzett ismeretek kreatív felasználását kérik számon. Egy algoritmus, program, m velet bemutatásának mindig része a m veletigény elemzése. Az el adások els sorban a CLRS könyv [3] (ld. alább) angol eredetijének armadik kiadását követik, de pl. a piros-fekete fák elyett az AVL fákat tárgyaljuk. (A CLRS könyv [3] érintett fejezeteiben a magyar és az angol változat között leginkább csak néány jelölésbeli különbséget találtunk.) Az egyes struktogramokat általában nem dolgozzuk ki az értékadó utasítások szintjéig. Az olyan implementációs részleteket, mint a listák és egyéb adatszerkezetek, adattípusok m veleteinek pontos kódja, a dinamikusan allokált objektumok deallokálása stb. általában az Olvasóra agyjuk, iszen ezekkel az el z félévben foglalkoztunk. Használni fogunk olyan absztrakt fogalmakat, mint a véges almazok, sorozatok, gráfok. Ezeket, a valamely eljárás paraméterlistáján szerepelnek mint strukturált adatokat minden esetben cím szerint vesszük át. (A skalárok változatlanul érték vagy cím szerint adódnak át, aol az érték szerinti paraméterátvétel az alapértelmezett.) A struktogramokban a for ciklusok (illetve a for eac ciklusok) mintájára alkalmazni fogunk a ciklusfeltételek elyén pl. x : P (x) alakú 4

5 kifejezéseket, ami azt jelenti, ogy a ciklusmagot a P (x) állítás igazsáalmazának minden x elemére végre kell ajtani, valamint v V alakúakat, ami a v : v V rövidítése. Eez P (x) igazságalmazának, illetve V -nek végesnek, és atékonyan felsorolatónak kell lennie. Ez ideális esetben azt jelenti, ogy a felsorolás m veletigénye az igazságalmaz, illetve V méretét l lineárisan függ. Ha a ciklus fejében i = u to v alakú kifejezést látunk, akkor a ciklusmag az u..v egész intervallum i elemeire szigorúan monoton növekv sorrendben ajtódik végre. Ha pedig a ciklus fejében i = u downto v alakú kifejezést látunk, akkor a ciklusmag a v..u egész intervallum i elemeire ajtódik végre, de szigorúan monoton csökken sorrendben. A fentiek szerint az egyszer bb programrészletek elyén gyakran szerepelnek majd magyar nyelv utasítások, amiknek részletes átgondolását, esetleges kidolgozását, a korábban tanultak alapján, szintén az Olvasóra bízzuk. A struktogramokban az ilyen, formailag általában felszólító mondatok végér l a felkiáltójelet elagyjuk (mivel az adott szövegkörnyezetben ez gyakran faktoriális függvényként lenne [félre]értet ).

6 . Tematika Minden tételez: Hivatkozások: például a [3] 8., 8.3, 8.4 jelentése: a [3] sorszámú szakirodalom adott (al)fejezetei. 1. Veszteségmentes adattömörítés. Naiv módszer. Human kód, kódfa, optimalitás. LZW (Lempel-Ziv-Welc) tömörítés. []. Általános fák, bináris láncolt reprezentáció, bejárások ([1]; [11] 4.7 bevezetése). Egyéb reprezentációk? (HF) 3. AVL fák és m veleteik: kiegyensúlyozási sémák, programok. Az AVL fa magassága ([1], [4] 1; [11] 4.). 4. B+ fák és m veleteik [9].. Elemi gráf algoritmusok ([3] ). Gráf ábrázolások (representations of graps). A szélességi gráfkeresés (breadt-rst searc: BFS). A szélességi gráfkeresés futási ideje (te run-time analysis of BFS). A legrövidebb utak (sortest pats). A szélességi feszít fa (breadt-rst tree). HF: A szélességi gráfkeresés megvalósítása a klasszikus gráf ábrázolások esetén; atékonyság. A mélységi gráfkeresés (dept-rst searc: DFS). Mélységi feszít erd (dept-rst forest). A gráf csúcsainak szín és id pont címkéi (colors and timestamps of vertexes). Az élek osztályozása (classication of edges, its connections wit te colors and timestamps of te vertexes). A mélységi gráfkeresés futási ideje (te run-time analysis of DFS). Topologikus rendezés (topological sort). HF: A mélységi gráfkeresés és a topologikus rendezés megvalósítása a klasszikus gráf ábrázolások esetén; atékonyság. 6. Minimális feszít fák (Minimum Spanning Trees: MSTs). Egy általános algoritmus (A general algoritm). Egy tétel a biztonságos élekr l és a minimális feszít fákról (A teorem on safe edges and MSTs). Prim és Kruskal algoritmusai (Te algoritms of Kruskal and Prim). A futási id k elemzése (Teir run-time analysis). HF: A Prim algoritmus implementációja a két f gráfábrázolás és a szükséges prioritásos sor különböz megvalósításai esetén (Te implementations of te algoritm of Prim wit respect to te main grap representations and representations of te priority queue). 7. Legrövidebb utak egy forrásból (Single-Source Sortest Pats). A legrövidebb utak fája (Sortest-pats tree). Negatív körök (Negative cycles). Közelítés (Relaxation). 6

7 A sor-alapú (Queue-based) Bellman-Ford algoritmus. A menet (pass) fogalma. Futási id elemzése. Helyessége. A legrövidebb út kinyomtatása. Legrövidebb utak egy forrásból, körmentes irányított gráfokra. (DAG sortest pats.) Futási id elemzése. Helyessége. Dikstra algoritmusa. Helyessége. Fontosabb implementációi a két f gráfábrázolás és a szükséges prioritásos sor különböz megvalósításai esetén. A futási id k elemzése. 8. Legrövidebb utak minden csúcspárra (All-Pairs Sortest Pats). A megoldás ábrázolása a (D, Π) mátrix-párral. HF: Adott csúcspárra a legrövidebb út kinyomtatása. A Floyd-Warsall algoritmus és a (D (k), Π (k) ) mátrix párok. A futási id elemzése. Összeasonlítás a Dijkstra algoritmus, illetve (HF:) a sor-alapú Bellman-Ford algoritmus G.V -szeri végreajtásával. Irányított gráf tranzitív lezártja (Transitive closure of a directed grap) és a T (k) mátrixok. Az algoritmus és futási ideje. HF: összeasonlítás a szélességi keresés G.V -szeri végreajtásával. 9. Mintaillesztés (String Matcing). Egy egyszer mintailleszt algoritmus (Te naive string-matcing algoritm). A futási id elemzése. A Rabin-Karp algoritmus. Inicializálása. A futási id elemzése. A Knut-Morris-Pratt algoritmus. Inicializálása. A futási id elemzése. A Quick Searc algoritmus. Inicializálása. A futási id elemzése. 7

8 3. AVL fák Az AVL fák kiegyensúlyozásának szabályai megtalálatók az 1-6. ábrákon. Az AVL fák magasság szerint kiegyensúlyozott bináris keres fák. Egy bináris fa magasság szerint kiegyensúlyozott, a minden csúcsa kiegyensúlyozott. (Mostantól kiegyensúlyozott alatt magasság szerint kiegyensúlyozottat értünk.) Egy bináris fa egy ( p) csúcsa kiegyensúlyozott, a a csúcs (p b) egyensúlyára (balance) p b 1. A ( p) csúcs egyensúlya deníció szerint: p b = (t rigt) (t left) Az AVL fákat láncoltan reprezentáljuk. A csúcsokban a b egyensúly attribútumot expliciten tároljuk. (Egy másik leet ség a két részfa magasságainak tárolása lenne; egy armadik, ogy csak az aktuális részfa magasságát tároljuk.) A Node osztályt teát a következ képpen módosítjuk: Node + key : T // T is some known type + b : 1..1 // te balance of te node + left, rigt : Node* + Node() { left = rigt = ; b = } // create a tree of a single node + Node(x:T) { left = rigt = ; b = ; key = x } Egyel re részletes bizonyítás nélkül közöljük az alábbi eredményt: Tétel: Tetsz leges n csúcsú nemüres AVL fa magasságára: lg n 1, 4 lg n, azaz Θ(lg n) A bizonyítás vázlata: El ször a magasságú, nemüres KBF-ek (kiegyensúlyozott, bináris fák) n méretére adunk alsó és fels becslést. Az n < +1 becslésb l azonnal adódik lg n. Másrészt megatározzuk a mélység, legkisebb méret KBF-ek csúcsainak f számát. Erre kapjuk, ogy f = 1, f 1 =, f = 1 + f 1 + f ( ). Ezért az ilyen fákat Fibonacci fáknak ívjuk. Mivel tetsz leges magasságú KBF n méretére n f, némi matematikai ügyességgel kapatjuk a 1, 4 lg n egyenl tlenséget. Mivel az AVL fák magassága Θ(lg n), ezért a bináris keres fák searc(t, k), min(t) és max(t) függvényeire t AVL fa esetén automatikusan MT (n) Θ(lg n), aol n = t. 8

9 t t (t) = + 3 α T ++ β R + γ + 1 L R T α β γ + 1 (t) = + 1. ábra. (++, +) forgatás. t t (t) = + 3 α + 1 L - β T -- γ R α + 1 L β T γ (t) = +. ábra. (, ) forgatás. 9

10 t t (t) = + 3 α T β 1 ++ L R - + γ 1 - δ RL - α T β 1 L γ 1 R + δ (t) = + 3. ábra. (++, ) forgatás. t t (t) = + 3 α L β 1 + R T - + γ 1 -- δ LR - α L β 1 R γ 1 T + δ (t) = + 4. ábra. (, +) forgatás. 1

11 t t T -- L + (t) = + 3 L α β γ R α + 1 T β γ (t) = + 3. ábra. (, ) forgatás. t t T ++ R - (t) = + 3 α R β γ L α T + β + 1 γ + 1 (t) = ábra. (++, ) forgatás. 11

12 Az insert(t, k), a del(t, k), a remmin(t, minp) és a remmax(t, maxp) eljárások azonban változtatják a fa alakját. Így elromolat a kiegyensúlyozottság, és már nem garantált a fenti m veletigény. Ennek elkerülésére ezeket az eljárásokat úgy módosítjuk, ogy minden egyes rekurzív eljárásívás után ellen rizni fogjuk, ogyan változott a megfelel részfa magassága, és ez ogyan befolyásolta a felette lev csúcs kiegyensúlyozottságát, szükség esetén elyreállítva azt. Ez minden szinten legfeljebb konstans mennyiség extra m veletet fog jelenteni, és így a kiegészített eljárások futási ideje megtartja az MT (n) Θ(lg n) (aol n = t ) nagyságrendet. A példákoz a (bal_részfa gyökér jobb_részfa) jelölést vezetjük be, aol az üres részfákat elagyjuk, és a könnyebb olvasatóság kedvéért [] és {} zárójeleket is alkalmazunk. Például a {[]4[(6)8(1)]} bináris keres fa gyökere a 4; bal részfája a [], ami egyetlen levélcsúcsból (és annak üres bal és jobb részfáiból) áll; jobb részfája a [(6)8(1)], aminek gyökere a 8, bal részfája a (6), jobb részfája a (1). Az így ábrázolt fák inorder bejárása a zárójelek elagyásával adódik. A bels csúcsok egyensúlyait kb formában jelöljük, aol k a csúcsot azonosító kulcs, b pedig a csúcs egyensúlya, a :, 1:+, :++, -1:, -: megfeleltetéssel. Mivel a levélcsúcsok egyensúlya mindig nulla, a leveleknél nem jelöljük az egyensúlyt. A fenti AVL fa például a megfelel egyensúlyokkal a következ : {[]4+[(6)8 (1)]} Az AVL fák m veletei során a kiegyensúlyozatlan részfák kiegyensúlyozásáoz forgatásokat fogunk asználni. Az alábbi forgatási sémákban görög kisbet k jelölik a részfákat (amelyek minden esetben AVL fák lesznek), latin nagybet k pedig a csúcsok kulcsait (1. és. ábrák, az egyensúlyok nélkül): Balra forgatás (Left rotation): [α T (β R γ)] [(α T β) R γ] Jobbra forgatás (Rigt rotation): [(α L β) T γ] [α L (β T γ)] Vegyük észre, ogy a fa inorder bejárását egyik forgatás sem változtatja, így a bináris keres fa tulajdonságot is megtartják. Mint látni fogjuk, a kiegyensúlyozatlan részfák kiegyensúlyozása minden esetben egy vagy két forgatásból áll. Ezért a bináris keres fa tulajdonságot a kiegyensúlyozások is megtartják AVL fák: beszúrás Nézzük most el ször a bináris keres fák insert(t, k) eljárását! A {[]4+[(6)8 (1)]} AVL fából az 1 beszúrásával az {[(1) ]4 [(6)8 (1)]} AVL fa adódik, a 3 beszúrásával pedig az {[+(3)]4 [(6)8 (1)]} AVL fa. 1

13 A fenti {[]4+[(6)8 (1)]} AVL fából a 7 beszúrásával azonban a {[]4++[(6+{7})8 (1)]} fát kapjuk, a 9 beszúrásával pedig a {[]4++[(6)8+({9}1 )]} fát. Mindkett bináris keres fa, de már nem AVL fa, mivel a 4++ csúcs nem kiegyensúlyozott. A legutolsó esetben a bináris keres fa könnyen kiegyensúlyozató, a meggondoljuk, ogy az a következ sémára illeszkedik, amiben görög kisbet k jelölik a kiegyensúlyozott részfákat, latin nagybet k pedig a csúcsok kulcsait: [α T++ (β R+ γ)], aol T=4, α=[], R=8, β=(6) és γ=({9}1 ). A kiegyensúlyozásoz szükséges transzformáció a fa balra forgatása (1. ábra): [ α T++ (β R+ γ) ] [ (α T β) R γ ] A fenti példán ez a következ t jelenti: {[]4++[(6)8+({9}1 )]} { [()4 (6)] 8 [(9)1 ] } A transzformáció elyességének belátásáoz bevezetjük a = (α) jelölést. Ebb l a kiinduló fára a T++ és R+ egyensúlyok miatt ((β R γ)) = +, (γ) = +1 és (β) = adódik, innét pedig az eredmény fára (α) = = (β) miatt T ; továbbá ((α T β)) = + 1 = (γ) miatt R adódik. Az eredeti {[]4+[(6)8 (1)]} AVL fába a 7 beszúrásával adódó { []4++[(6+{7})8 (1)] } kiegyensúlyozatlan bináris keres fa kiegyensúlyozásával pedig {[()4 ] 6 [(7)8 (1)]} adódik, amire az { α T++ [(β L + γ) R δ] } { [α T β] L [γ R+ δ] } séma (3. ábra) szolgál, aol α, β, γ és δ AVL fák, és a árom jelb l álló egyensúlyok sorban árom esetet jelentenek úgy, ogy a bal oldalon az i-edik alternatívának a jobb oldalon is az i-edik eset felel meg (i {1; ; 3}). A fenti séma a példában T=4, α = [], R=8, δ = (1), L=6, + egyensúllyal (armadik eset), β = és γ = {7} elyettesítéssel alkalmazató. A transzformációt kett s forgatásnak is tekintetjük: Az { α T [(β L γ) R δ] } fára el ször az R csúcsnál alkalmaztunk egy jobbra forgatást, aminek eredményeképpen az { α T [β L (γ R δ)] } bináris keres fát kaptuk, majd az eredmény fát balra forgattuk, ami az { [α T β] L [γ R δ] } AVL fát eredményezte. A kett s forgatás elyességének ellen rzéséez kiszámítjuk az eredmény fa egyensúlyait. Most is bevezetjük a = (α) jelölést. Mivel a kett s forgatás 13

14 el tti fában T++, azért ([(β L γ) R δ]) = +. Innét R miatt ((β L γ)) = +1 és (δ) =. Most L leetséges egyensúlyai szerint árom eset van. (1) L esetén (β) = és (γ) = 1 az eredmény fában T és R+. () L esetén (β) = és (γ) = az eredmény fában T és R. (3) L+ esetén (β) = 1 és (γ) = az eredmény fában T és R. Mindárom esetben ([α T β]) = + 1 = ([γ R δ]), így L. Ezzel beláttuk a kett s forgatási séma elyességét. Vegyük észre, ogy a fentiek alapján, az L csúcsnak a kett s forgatás el tti egyensúlyát s-sel, a T és a R csúcsoknak pedig a kett s forgatás utáni egyensúlyát rendre s t -vel, illetve s r -vel jelölve a következ összefüggéseket íratjuk fel: s t = (s + 1)/ és s r = (1 s)/ Az eddigi két kiegyensúlyozási séma mellett természetes módon adódnak ezek tükörképei, a forgatások el tt a T csúccsal a gyökérben. Ezek teát a következ k (. és 4. ábra): [ (α L β) T γ ] [ α L (β T γ) ] { [α L+ (β R + γ)] T δ } [ (α L β) R (γ T+ δ) ] s l = (s + 1)/ és s t = (1 s)/ aol s az R csúcs kett s forgatás el tti egyensúlya; s l, illetve s t pedig rendre az L és T csúcsoknak a kett s forgatás utáni egyensúlya Eddig nem beszéltünk arról, ogy az AVL fában az új csúcs beszúrása után mely csúcsoknak és milyen sorrendben számoljuk újra az egyensúlyát, sem ogy mikor ütemezzük be a kiegyensúlyozást. Csak a beszúrás nyomvonalán visszafelé aladva kell újraszámolnunk az egyensúlyokat, és csak itt kell kiegyensúlyoznunk, a kiegyensúlyozatlan csúcsot találunk. Így a futási id a fa magasságával arányos marad, ami AVL fákra O(lg n). Most teát részletezzük a beszúró és kiegyensúlyozó algoritmus m ködését. Ennek során a fa magassága vagy eggyel növekszik (d = true), vagy ugyanannyi marad (d = false). 14

15 t = new Node(k) d = true AVLinsert( &t:node* ; k:t ; &d:b ) k < t key AVLinsert(t left, k, d) d leftsubtreegrown (t, d) SKIP t == k > t key AVLinsert(t rigt, k, d) d rigtsubtreegrown (t, d) leftsubtreegrown( &t:node* ; &d:b ) l = t left t b == 1 l b == 1 balancemmm(t, l) balancemmp(t, l) d = false SKIP t b = t b 1 d = (t b < ) ELSE d = amis rigtsubtreegrown( &t:node* ; &d:b ) t b == 1 r = t rigt t b = t b + 1 r b == 1 balanceppp(t, r) balanceppm(t, r) d = (t b > ) d = false balanceppp( &t, r : Node* ) t rigt = r left r left = t r b = t b = t = r balancemmm( &t, l : Node* ) t left = l rigt l rigt = t l b = t b = t = l 1

16 balanceppm( &t, r : Node* ) l = r left t rigt = l left r left = l rigt l left = t l rigt = r t b = (l b + 1)/ r b = (1 l b)/ l b = t = l balancemmp( &t, l : Node* ) r = b rigt l rigt = r left t left = r rigt r left = l r rigt = t l b = (r b + 1)/ t b = (1 r b)/ r b = t = r Az AVL fába való beszúrást röviden összefoglalva: 1. Megkeressük a kulcs elyét a fában.. Ha a kulcs benne van a fában, KÉSZ vagyunk. 3. Ha a kulcs elyén egy üres részfa találató, beszúrunk az üres fa elyére egy új, a kulcsot tartalmazó levélcsúcsot, azzal, ogy ez a részfa eggyel magasabb lett. 4. egyet fölfelé lépünk a keres fában. Mivel az a részfa, amib l fölfele léptünk, eggyel magasabb lett, az aktuális csúcs egyensúlyát megfelel képp módosítjuk. (Ha a jobb részfa lett magasabb, ozzáadunk az egyensúlyoz egyet, a a bal, levonunk bel le egyet.). Ha az aktuális csúcs egyensúlya lett, akkor az aktuális csúcsoz tartozó részfa alacsonyabb ága ozzán tt a magasabbikoz, teát az aktuális részfa most ugyanolyan magas, mint a beszúrás el tt volt, és így egyetlen más csúcs egyensúlyát sem kell módosítani: KÉSZ vagyunk. 6. Ha az aktuális csúcs új egyensúlya 1 vagy -1, akkor el tte volt, ezért az aktuális részfa magasabb lett eggyel. Ekkor a 4. ponttól folytatjuk. 7. Ha az aktuális csúcs új egyensúlya vagy -, 1 akkor a ozzá tartozó részfát ki kell egyensúlyozni. A kiegyensúlyozás után az aktuális részfa visszanyeri a beszúrás el tti magasságát, ezért már egyetlen más csúcs egyensúlyát sem kell módosítani: KÉSZ vagyunk. Az az állítás, ogy ebben az algoritmusban a kiegyensúlyozás után az aktuális részfa visszanyeri a beszúrás el tti magasságát, még igazolásra vár. Azt az esetet nézzük meg, amikor a kiegyensúlyozandó részfa gyökere T++. A T 1 A és - eseteket a struktogramban nem számoltuk ki expliciten, ogy az egyensúly tárolására elég legyen két bit. 16

17 eset asonlóan fontolató meg. sémák (1. és 3. ábra): A T++ esetez tartozó kiegyensúlyozási [ α T++ (β R+ γ) ] [(α T β) R γ] { α T++ [(β L + γ) R δ] } { [α T β] L [γ R+ δ] } El ször belátjuk, ogy a a T csúcs jobboldali R gyereke + vagy súlyú, akkor a fenti sémák közül a megfelel alkalmazató: Mivel a beszúró algoritmus a fában a beszúrás elyét l egyesével fölfele lépked, és az els kiegyensúlyozatlan csúcsnál azonnal kiegyensúlyoz, ez alatt nincs kiegyensúlyozatlan csúcs, azaz az α, β és γ, illetve a δ részfák is kiegyensúlyozottak, ez pedig éppen a fenti forgatások feltétele, amellett, ogy bináris keres fát akarunk kiegyensúlyozni, amit viszont a kiegyensúlyozás nélküli beszúró algoritmus garantál. Most még be kell látni, ogy a fenti sémák minden esetet lefednek, azaz R+ vagy R : egyrészt, R nem leet a beszúrás által létreozott új csúcs, mert különben T-nek a beszúrás el tti jobboldali részfája üres lett volna, teát most nem leetne T++. Másrészt, a a fölfele lépkedés során nulla egyensúlyú csúcs áll el, akkor a fölötte lev csúcsok egyensúlya már nem módosul, így kiegyensúlyozatlan csúcs sem állat el. Márpedig most T++. Így teát az új csúcstól T-ig fölfelé vezet úton minden csúcs, azaz R egyensúlya is + vagy. Most belátjuk, ogy a kiegyensúlyozások visszaállítják a részfa beszúrás el tti magasságát. A T++ kiegyensúlyozatlan csúcs a beszúrás el tt kiegyensúlyozott volt. Mivel a beszúrás, a beszúrás elyét l kezdve T-ig fölfelé vezet úton mindegyik részfa magasságát pontosan eggyel növelte, a beszúrás el tt T+ volt. Ezért a beszúrás el tt, = (α) jelöléssel, a T gyöker részfa + magas volt. A beszúrás után teát T++ lett, és így a T gyöker részfa + 3 magas lett. A beszúrás utáni, de még a kiegyensúlyozás el tti állapotot tekintve a továbbiakban megkülönböztetjük a T jobboldali R gyerekére a R+ és a R eseteket. R+ esetén már láttuk, ogy (α) = = (β) és (γ) = + 1. Ezért a kiegyensúlyozás után ([(α T β) R γ]) = +. R esetén pedig már láttuk, ogy (α) = = (δ) és ([β L γ]) = + 1. Ezért (β), (γ). Így a kiegyensúlyozás után ({[α T β] L [γ R δ]}) = +. Ezzel beláttuk, ogy a kiegyensúlyozások mindkét esetben visszaállítják a részfa beszúrás el tti magasságát, mégpedig úgy, ogy a beszúrás által eggyel megnövelt magasságot eggyel csökkentik. Szimmetria okokból ez asonlóan látató be T esetén is, gyelembe véve a L és a L+ eseteket. 17

18 3.. AVL fák: a remmin(t, minp) eljárás Bináris keres fákra a remmin eljárás: remmin( &t, &minp : Node* ) t left == minp = t t = minp rigt remmin(t left, minp) minp rigt = Ezt például a { []4+[(6)8 (1)] } AVL fára alkalmazva, a minp key = eredmény mellett, a { 4++[(6)8 (1)] } kiegyensúlyozatlan bináris keres fa adódna. Látjuk, ogy a kiegyensúlyozatlan 4++ csúcs jobboldali gyereke a 8. Ennek az esetnek a kezelésére új kiegyensúlyozási sémát kell alkalmaznunk. Szerencsére egy balra forgatás, a megfelel egyensúly beállítások mellett most is megoldja a problémát (6. ábra): { α T++[β R γ] } { [α T+ β] R γ }. T++ miatt = (α) jelöléssel nyilván (β) = + 1 = (γ), így a forgatás után az egyensúlyokat a fenti séma szerint kell beállítani. A fa magassága a forgatás el tt és után is + 3 lesz, ez a fajta kiegyensúlyozás teát az eddigiekkel szemben nem csökkenti az aktuális részfa magasságát. Ezután az AVL fákra alkalmazott, a megfelel kiegyensúlyozásokkal kiegészített AVLremMin eljárás pl. a következ leet (d most azt jelöli, ogy csökkent-e az aktuális részfa magassága): AVLremMin( &t, &minp:node* ; &d:b ) t left == minp = t t = minp rigt minp rigt = d = true AVLremMin(t left, minp, d) d leftsubtreesrunk(t, d) SKIP 18

19 leftsubtreesrunk( &t:node* ; &d:b ) t b == 1 balance_pp(t, d) t b = t b + 1 d = (t b = ) r b == 1 balanceppm(&t, r) balance_pp( &t:node* ; &d:b ) r = t rigt r b == balancepp(&t, r) d = false r b == 1 balanceppp(&t, r) balancepp( &t, r : Node* ) t rigt = r left r left = t t b = 1 r b = 1 t = r Az algoritmus elyessége asonlóan gondolató meg, mint a beszúrás esetén. Lényeges különbség azonban, ogy ott minden beszúrást csak egyetlen kiegyensúlyozás követ, míg itt el fordulat, ogy a minimális csúcs eltávolítása után, minden felette lév szinten ki kell egyensúlyozni Feladat. Mutassunk ilyen, legalább négy magasságú fát! 3.. Feladat. Írjuk meg az AVLremMin(t, minp, d) eljárás mintájára az AVLremMax(t, maxp, d) eljárást és segédeljárásait! 19

20 3.3. AVL fák: törlés Bináris keres fákra a del(t, k) és a delroot(t) eljárások: k < t key del(t left, k) del( &t:node* ; k:t ) t k > t key k == t key del(t rigt, k) delroot(&t) SKIP t left == p = t t = p rigt delete p delroot( &t:node* ) t rigt == p = t t = p left delete p t left t rigt remmin(t rigt, p) p left = t left p rigt = t rigt delete t ; t = p Ezeket fogjuk most az AVLremMin(&t, &minp, &d) eljárás mintájára kiegészíteni a d paraméterrel; majd a rekurzív töröl ívásokból, valamint az AVLremMin eljárásból való visszatérés után megkérdezzük, csökkent-e az aktuális részfa magassága. Ha igen, az AVLremMin(&t, &minp, &d) eljárás mintájára módosítjuk a t b értéket, a kell, kiegyensúlyozunk, és a kell, d-t beállítjuk. k < t key AVLdel(t left, k, d) d leftsubtreesrunk (t, d) AVLdel( &t:node* ; k:t ; &d:b ) SKIP t k > t key AVLdel(t rigt, k, d) d rigtsubtreesrunk (t, d) SKIP k == t key AVLdelRoot (t, d) d = amis

21 t left == p = t t = p rigt delete p d = true AVLdelRoot( &t:node* ; &d:b ) t rigt == p = t t = p left delete p d = true t left t rigt rigtsubtreemintoroot(t, d) d rigtsubtreesrunk(t, d) rigtsubtreemintoroot( &t:node* ; &d:b ) AVLremMin(t rigt, p, d) p left = t left ; p rigt = t rigt ; p b = t b delete t ; t = p SKIP Itt is leetséges, ogy több szinten, a legrosszabb esetben akár minden szinten is ki kell egyensúlyozni. Mivel azonban egyetlen kiegyensúlyozás sem tartalmaz se rekurziót, se ciklust, és ezért konstans számú eljárásívásból áll, ez sem itt, sem az AVLremMin eljárásnál nem befolyásolja a futási id nek az AVLinsert eljárásra is érvényes MT (n) Θ(lg n) (aol n = t ) nagyságrendjét Feladat. A leftsubtreesrunk(t, d) eljárás mintájára dolgozzuk ki a rigtsubtreesrunk(t, d) eljárást, ennek segédeljárásait, és az eez szükséges kiegyensúlyozási sémát (megoldás:. ábra)! Mutassuk be az AVLdel( t, k) eljárás m ködését néány példán! Mutassunk olyan, legalább négy magasságú fát és kulcsot, amelyre az AVLdel(t, k) eljárás minden, a zikailag törölt csúcs feletti szinten kiegyensúlyozást végez! 3.4. Feladat. Írjuk meg az AVLdel(t, k) eljárás egy olyan változatát, amely abban az esetben, a a k kulcsot olyan bels csúcs tartalmazza, aminek két gyereke van, ezt a törlend csúcsot a bal részfája legynagyobb kulcsú csúcsával elyettesíti! 3.4. Az AVL fák magassága* Tétel: Tetsz leges n csúcsú nemüres AVL fa magasságára: lg n 1, 4 lg n 1

22 Bizonyítás: Az lg n egyenl tlenség bizonyításáoz elég azt belátni, ogy ez tetsz leges nemüres bináris fára igaz. Egy tetsz leges bináris fa nulladik (gyökér) szintjén legfeljebb = 1 csúcs van, az els szintjén maximum 1 = csúcs, a második szintjén nem több, mint = 4 csúcs. Általában, a az i- edik szinten i csúcs van, akkor az i + 1-edik szinten legfeljebb i+1 csúcs, iszen minden csúcsnak maximum két gyereke van. Innét egy mélység bináris fa csúcsainak n számára n = +1 1 < +1. Innét lg n lg n < lg +1 = + 1, amib l lg n. A 1, 4 lg n egyenl tlenség bizonyításáoz elég azt belátni, ogy ez tetsz leges nemüres, kiegyensúlyozott bináris fára (KBF-re) igaz. Eez el ször megatározzuk egy magasságú (azaz nemüres) KBF csúcsainak minimális f számát. Nyilván f = 1 és f 1 =, iszen egy nulla magasságú KBF csak a gyökércsúcsból áll, az egy magasságú KBF-ek pedig ((B)G(J)), ((B)G), vagy (G(J)) alakúak. Az is világos, ogy az < f, f 1, f,... > sorozat szigorúan monoton növekv. (Ennek igazolásáoz vegyünk egy i + 1 magas, f i+1 csúcsú t KBF-et! Ekkor a t bal és jobb részfái közül az egyik magassága i. Legyen ez az f részfa! Jelölje most s(b) egy tetsz leges b bináris fa csúcsainak számát! Akkor f i+1 = s(t) > s(f) f i.) Ezután esetén f = 1 + f 1 + f. (Ha ugyanis t egy magasságú, minimális, azaz f méret KBF, akkor ennek bal és jobb részfáiban is, a részfák magasságáoz mérten a leet legkevesebb csúcs van. Az egyik részfája kötelez en 1 magas, ebben teát f 1 csúcs van. Mivel t KBF, a másik részfája 1 vagy magas. A másik részfában teát f 1 vagy f csúcs van, és f < f 1, teát a másik részfában f csúcs van, és így f = 1 + f 1 + f.) A képlet emlékeztet a Fibonacci sorozatra: F =, F 1 = 1, F = F 1 + F, a. Megjegyzés: A magasságú, és f méret KBF-eket ezért Fibonacci fáknak ívjuk. Az el bbiek szerint egy magasságú Fibonacci fa mindig (ϕ 1 G ϕ ) vagy (ϕ G ϕ 1 ) alakú, aol ϕ 1 és ϕ 1, illetve magasságú Fibonacci fák. 3.. Feladat. Rajzoljunk..4 magasságú Fibonacci fákat! Megvizsgáljuk, van-e valami összefüggés az < f : N > és az < F : N > sorozatok között.

23 F f A fenti táblázat alapján az els néány értékre f = F Teljes indukcióval könnyen látató, ogy ez tetsz leges egész számra igaz: Feltéve, ogy k 1 esetén igaz, = k + 1-re: f = f k+1 = 1 + f k + f k 1 = 1 + F k F k+ 1 = F k+4 1 = F Tudjuk, ogy ( F = ) ( 1 ) Az F -ra vonatkozó explicit képlet segítségével összefüggést adunk tetsz leges KBF n mérete és magassága között. ( n f = F +3 1 = ) +3 ( 1 ) +3 1 ( ) +3 ( 1 ) +3 1 Mivel < < 3, azért 1 ( / < 1 és 1 ) +3 < 1. Eszerint ( n > ) +3 ( 1 1 = ) 3 ( 1 + ) 1 + Mivel ( ) 3 = ( ) + ( ) 3 8 = = + Ezt beelyettesítve az el bbi, n -re vonatkozó egyenl tlenségbe: n > + ( 1 + ) 1 + 3

24 Az els együttatót tagokra bontva, a disztributív szabállyal: ( 1 + ) ( n > ) 1 + Most ( 1 + ) 1 + Eszerint 1 esetén ( 1 + n > ( = -ra pedig n = 1, és így n = ( 1+ ) 1 + ) 1 + ) 1 A fentiekb l tetsz leges, nemüres KBF n méretére és magasságára ( 1 + ) n Innét, a vesszük mindkét oldal kettes alapú logaritmusát, majd lg 1+ -tel osztunk: 1 lg 1+ 1 Mivel 1, 44 < 1, 444 < < 1, 4441 < 1, 4, azért tetsz leges, lg 1+ nemüres KBF n méretére és magasságára lg n 1, 4 lg n 4. Általános fák Az általános fák esetében, a bináris fákkal összeasonlítva, egy csúcsnak tetsz legesen sok gyereke leet. Itt azonban, tetsz leges csúcsoz tartozó részfák száma pontosan egyenl a gyerekek számával, azaz nem tartoznak ozzá üres részfák. Ha a gyerekek sorrendje lényeges, akkor rendezett fákról beszélünk. Általános fákkal modellezetjük például a számítógépünkben a mappák ierarciáját, a programok blokkstruktúráját, a függvénykifejezéseket, a családfákat és bármelyik ierarcikus struktúrát. 4

25 Vegyük észre, ogy ugyan minden konkrét általános fában van az egy csúcsoz tartozó gyerekek számára valamilyen r fels korlát, de ett l a fa még nem tekintet r-árisnak, mert ez a korlát nem abszolút: a fa tetsz leges csúcsa gyerekeinek száma tetsz legesen növelet. Másrészt, mivel itt nem értelmezzük az üres részfa fogalmát, ez mégsem általánosítása az r-áris fa fogalmának. Értelmezzük azonban a gyökércsúcs (nincs szül je) és a levélcsúcs (nincs gyereke) fogalmát, azaz továbbra is gyökeres fákról beszélünk. Az általános fák természetes ábrázolási módja a bináris láncolt reprezentáció. Itt egy csúcs szerkezete a következ (aol most cild1 az els gyerekre, sibling pedig a következ testvérre mutat). A p csúcs akkor levél, a p cild1 = ; és a p csúcs akkor utolsó testvér, a p sibling =. Node + cild1, sibling : Node* // cild1: els gyerek; sibling: következ testvér + key : T // T ismert típus + Node() { cild1 = sibling = } // egycsúcsú fát képez bel le + Node(x:T) { cild1 = sibling = ; key = x } Természetesen itt is leet szül pointer, ami a gyerekek közös szül jére mutat vissza Feladat. Próbáljunk megadni az általános fákra másfajta láncolt reprezentációkat is! Hasonlítsuk össze az általunk adott ábrázolásokat és a bináris láncolt reprezentációt, memóriaigény és rugalmasság szempontjából! A szöveges (zárójeles) reprezentációban az általános fáknál a gyökeret el re szokás venni. Így egy nemüres fa általános alakja (G t 1... t n ), aol G a gyökércsúcs tartalma, t 1... t n pedig a részfák. Így pl. az { 1 [ () ] (3) [ 4 (6) (7) ] } általános fában az 1 van a gyökérben, a gyerekei a, a 3 és a 4, a ozzájuk tartozó részfák pedig sorban a [ () ], a (3) és a [ 4 (6) (7) ]. A fa levelei az, a 3, a 6 és a Feladat. Rajzoljuk le a fenti fát! Írjunk programot, ami kiír egy binárisan láncolt fát a fenti zárójeles alakban! Írjunk olyat is, ami egy szövegfájlból visszaolvassa! Készítsük el a kiíró és a visszaolvasó programokat az általunk kidolgozott alternatív láncolt ábrázolásokra is! (A visszaolvasó programokat általában neezebb megírni.) Ellentétben az ún. szabad fákkal, amik irányítatlan, körmentes gráfok.

26 Az általános fa preorder bejárása 3 a cild1 left és sibling rigt megfeleltetéssel a bináris reprezentáció preorder bejárását igényli. Az általános fa postorder bejárásáoz 4 azonban (az el bbi megfeleltetéssel) a bináris reprezentáció inorder bejárása szükséges. preorder(t) t process(t) preorder(t cild1) t = t sibling postorder(t) t postorder(t cild1) process(t) t = t sibling 4.3. Feladat. Lássuk be a fenti bejárások elyességét! (Ötlet: A testvérek listájának mérete szerinti teljes indukció pl. célravezet.) Lássuk be egy ellenpélda segítségével, ogy az általános fa inorder bejárása 6 nem szimulálató a bináris reprezentáció egyik nevezetes bejárásával 7 sem! Írjuk meg a bináris láncolt reprezentációra az általános fa inorder bejárását és szintfolytonos bejárását is! 4.4. Feladat. Írjuk meg a fenti bejárásokat az általunk adott aletrnatív láncolt reprezentációkra is! Írjunk olyan programokat, amelyek képesek tetsz leges általános fa egy adott reprezentációjából egy adott másik ábrázolású másolatot készíteni!. B+ fák és m veleteik ttp://aszt.inf.elte.u/ asvanyi/ad/b+ fa.pdf 3 el ször a gyökér, majd sorban a gyerekeiez tartozó részfák 4 el bb sorban a gyökér gyerekeiez tartozó részfák, végül a gyökér A fájlrendszerekben általában preorder bejárás szerint keresünk, míg a függvénykifejezéseket (eltekintve most a lusta kiértékelést l, aminek a tárgyalása túl messzire vezetne) postorder bejárással értékeljük ki. 6 A (G t 1... t n ) fára n > esetén el bb t 1 -et járja be, majd feldolgozza G-t, aztán bejárja sorban a t... t n részfákat; n = esetén csak feldolgozza G-t. 7 preorder, inorder, postorder, szintfolytonos 6

Algoritmusok és adatszerkezetek gyakorlat 07

Algoritmusok és adatszerkezetek gyakorlat 07 Algoritmusok és adatszerkezetek gyakorlat 0 Keresőfák Fák Fa: összefüggő, körmentes gráf, melyre igaz, hogy: - (Általában) egy gyökér csúcsa van, melynek 0 vagy több részfája van - Pontosan egy út vezet

Részletesebben

Algoritmusok és adatszerkezetek II. Útmutatások a tanuláshoz, Tematika (2016)

Algoritmusok és adatszerkezetek II. Útmutatások a tanuláshoz, Tematika (2016) Algoritmusok és adatszerkezetek II. Útmutatások a tanuláshoz, Tematika (2016) Kedves Hallgatók! A vizsgára való készülésben els sorban az el adásokon és a gyakorlatokon készített jegyzeteikre támaszkodhatnak.

Részletesebben

Adatszerkezetek és algoritmusok

Adatszerkezetek és algoritmusok 2010. január 8. Bevezet El z órák anyagainak áttekintése Ismétlés Adatszerkezetek osztályozása Sor, Verem, Lengyelforma Statikus, tömbös reprezentáció Dinamikus, láncolt reprezentáció Láncolt lista Lassú

Részletesebben

Algoritmusok és adatszerkezetek II. régebbi vizsgakérdések.

Algoritmusok és adatszerkezetek II. régebbi vizsgakérdések. Algoritmusok és adatszerkezetek II. régebbi vizsgakérdések. Ásványi Tibor asvanyi@inf.elte.hu 2017. július 4. Az eljárásokat és függvényeket megfelel en elnevezett és paraméterezett struktogramok segítségével

Részletesebben

Algoritmusok II. gyakorló feladatok

Algoritmusok II. gyakorló feladatok Algoritmusok II. gyakorló feladatok Ásványi Tibor 2019. március 15. Mj.: Az alábbi anyagban M S az algoritmusok maximális munkatárigényére vonatkozik. Ez nem tartalmazza az input

Részletesebben

Algoritmusok és adatszerkezetek II.

Algoritmusok és adatszerkezetek II. Szegedi Tudományegyetem - Természettudományi és Informatikai Kar - Informatikai Tanszékcsoport - Számítógépes Algoritmusok és Mesterséges Intelligencia Tanszék - Németh Tamás Algoritmusok és adatszerkezetek

Részletesebben

file:///d:/okt/ad/jegyzet/ad1/b+fa.html

file:///d:/okt/ad/jegyzet/ad1/b+fa.html 1 / 5 2016. 11. 30. 12:58 B+ fák CSci 340: Database & Web systems Home Syllabus Readings Assignments Tests Links Computer Science Hendrix College Az alábbiakban Dr. Carl Burch B+-trees című Internetes

Részletesebben

B-fa. Felépítés, alapvető műveletek. Programozás II. előadás. Szénási Sándor.

B-fa. Felépítés, alapvető műveletek. Programozás II. előadás.  Szénási Sándor. B-fa Felépítés, alapvető műveletek előadás http://nik.uni-obuda.hu/prog2 Szénási Sándor szenasi.sandor@nik.uni-obuda.hu Óbudai Egyetem,Neumann János Informatikai Kar B-fa Felépítése Beszúrás művelete Törlés

Részletesebben

Gráfok 2. Legrövidebb utak, feszítőfák. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor

Gráfok 2. Legrövidebb utak, feszítőfák. Szoftvertervezés és -fejlesztés II. előadás.   Szénási Sándor Gráfok 2. Legrövidebb utak, feszítőfák előadás http://nik.uni-obuda.hu/sztf2 Szénási Sándor Óbudai Egyetem,Neumann János Informatikai Kar Legrövidebb utak keresése Minimális feszítőfa keresése Gráfok 2

Részletesebben

Elemi adatszerkezetek

Elemi adatszerkezetek 2017/12/16 17:22 1/18 Elemi adatszerkezetek < Programozás Elemi adatszerkezetek Szerző: Sallai András Copyright Sallai András, 2011, 2014 Licenc: GNU Free Documentation License 1.3 Web: http://szit.hu

Részletesebben

Algoritmusok és adatszerkezetek I. régebbi vizsgakérdések.

Algoritmusok és adatszerkezetek I. régebbi vizsgakérdések. Algoritmusok és adatszerkezetek I. régebbi vizsgakérdések. Ásványi Tibor asvanyi@inf.elte.hu 2019. június 22. A vizsgákon természetesen olyan kérdések is szerepelhetnek, amelyek a régebbi vizsgákon nem

Részletesebben

Fák 2009.04.06. Témakörök. Fa definíciója. Rekurzív típusok, fa adatszerkezet Bináris keresőfa, bejárások Bináris keresőfa, módosítás B-fa

Fák 2009.04.06. Témakörök. Fa definíciója. Rekurzív típusok, fa adatszerkezet Bináris keresőfa, bejárások Bináris keresőfa, módosítás B-fa Fák szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Rekurzív típusok, fa adatszerkezet Bináris keresőfa, bejárások Bináris keresőfa, módosítás B-fa Témakörök 2 Fa (Tree): csomópontok

Részletesebben

16. Az AVL-fa. (Adelszon-Velszkij és Landisz, 1962) Definíció: t kiegyensúlyozott (AVL-tulajdonságú) t minden x csúcsára: Pl.:

16. Az AVL-fa. (Adelszon-Velszkij és Landisz, 1962) Definíció: t kiegyensúlyozott (AVL-tulajdonságú) t minden x csúcsára: Pl.: 6. Az AVL-fa Adelszo-Velszkij és Ladisz, 96 Defiíció: t kiegyesúlyozott AVL-tulajdoságú t mide x csúcsára: bal x jobb x. Pl.: A majdem teljes biáris fa AVLtulajdoságú. Az AVL-fára, mit speciális alakú

Részletesebben

Adatszerkezetek 7a. Dr. IványiPéter

Adatszerkezetek 7a. Dr. IványiPéter Adatszerkezetek 7a. Dr. IványiPéter 1 Fák Fákat akkor használunk, ha az adatok között valamilyen alá- és fölérendeltség van. Pl. könyvtárszerkezet gyökér () Nincsennek hurkok!!! 2 Bináris fák Azokat a

Részletesebben

7. BINÁRIS FÁK 7.1. A bináris fa absztrakt adattípus 7.2. A bináris fa absztrakt adatszerkezet

7. BINÁRIS FÁK 7.1. A bináris fa absztrakt adattípus 7.2. A bináris fa absztrakt adatszerkezet 7. BINÁRIS FÁK Az előző fejezetekben már találkoztunk bináris fákkal. Ezt a központi fontosságú adatszerkezetet most vezetjük be a saját helyén és az általános fák szerepét szűkítve, csak a bináris fát

Részletesebben

A számítástudomány alapjai. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

A számítástudomány alapjai. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem A számítástudomány alapjai Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem Bináris keresőfa, kupac Katona Gyula Y. (BME SZIT) A számítástudomány

Részletesebben

Adatszerkezetek I. 7. előadás. (Horváth Gyula anyagai felhasználásával)

Adatszerkezetek I. 7. előadás. (Horváth Gyula anyagai felhasználásával) Adatszerkezetek I. 7. előadás (Horváth Gyula anyagai felhasználásával) Bináris fa A fa (bináris fa) rekurzív adatszerkezet: BinFa:= Fa := ÜresFa Rekord(Elem,BinFa,BinFa) ÜresFa Rekord(Elem,Fák) 2/37 Bináris

Részletesebben

Algoritmusok és adatszerkezetek II.

Algoritmusok és adatszerkezetek II. Algoritmusok és adatszerkezetek II. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar horvath@inf.u-szeged.hu 3. Kiegyensúlyozott keresőfák A T tulajdonság magasság-egyensúlyozó

Részletesebben

Algoritmuselmélet. 2-3 fák. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 8.

Algoritmuselmélet. 2-3 fák. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 8. Algoritmuselmélet 2-3 fák Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 8. előadás Katona Gyula Y. (BME SZIT) Algoritmuselmélet 8. előadás

Részletesebben

Algoritmusok bonyolultsága

Algoritmusok bonyolultsága Algoritmusok bonyolultsága 5. előadás http://www.ms.sapientia.ro/~kasa/komplex.htm 1 / 27 Gazdaságos faváz Kruskal-algoritmus Joseph Kruskal (1928 2010) Legyen V = {v 1, v 2,..., v n }, E = {e 1, e 2,...,

Részletesebben

10. előadás Speciális többágú fák

10. előadás Speciális többágú fák 10. előadás Adatszerkezetek és algoritmusok előadás 2018. április 17., és Debreceni Egyetem Informatikai Kar 10.1 A többágú fák kezelésére nincsenek általános elvek, implementációjuk elsősorban alkalmazásfüggő.

Részletesebben

Sorozatok és Sorozatok és / 18

Sorozatok és Sorozatok és / 18 Sorozatok 2015.11.30. és 2015.12.02. Sorozatok 2015.11.30. és 2015.12.02. 1 / 18 Tartalom 1 Sorozatok alapfogalmai 2 Sorozatok jellemz i 3 Sorozatok határértéke 4 Konvergencia és korlátosság 5 Cauchy-féle

Részletesebben

file:///d:/apa/okt/ad/jegyzet/ad1/b+fa.html

file:///d:/apa/okt/ad/jegyzet/ad1/b+fa.html 1 / 6 2018.01.20. 23:23 B+ fák CSci 340: Database & Web systems Home Syllabus Readings Assignments Tests Links Computer Science Hendrix College Az alábbiakban Dr. Carl Burch B+-trees című Internetes tananyagának

Részletesebben

26. MINIMÁLIS KÖLTSÉGŰ UTAK MINDEN CSÚCSPÁRRA

26. MINIMÁLIS KÖLTSÉGŰ UTAK MINDEN CSÚCSPÁRRA 26. MINIMÁLIS KÖLTSÉGŰ UTAK MINDEN CSÚCSPÁRRA Az előző két fejezetben tárgyalt feladat általánosításaként a gráfban található összes csúcspárra szeretnénk meghatározni a legkisebb költségű utat. A probléma

Részletesebben

Algoritmuselmélet. Mélységi keresés és alkalmazásai. Katona Gyula Y.

Algoritmuselmélet. Mélységi keresés és alkalmazásai. Katona Gyula Y. Algoritmuselmélet Mélységi keresés és alkalmazásai Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 9. előadás Katona Gyula Y. (BME SZIT) Algoritmuselmélet

Részletesebben

Tuesday, March 6, 12. Hasító táblázatok

Tuesday, March 6, 12. Hasító táblázatok Hasító táblázatok Halmaz adattípus U (kulcsuniverzum) K (aktuális kulcsok) Függvény adattípus U (univerzum) ÉT (értelmezési tartomány) ÉK (érték készlet) Milyen az univerzum? Közvetlen címzésű táblázatok

Részletesebben

Rendezettminta-fa [2] [2]

Rendezettminta-fa [2] [2] Rendezettminta-fa Minden p ponthoz tároljuk a p gyökerű fa belső pontjainak számát (méretét) Adott elem rangja: az elem sorszáma (sorrendben hányadik az adatszekezetben) Adott rangú elem keresése - T[r]

Részletesebben

Gyakori elemhalmazok kinyerése

Gyakori elemhalmazok kinyerése Gyakori elemhalmazok kinyerése Balambér Dávid Budapesti M szaki és Gazdaságtudományi Egyetem Villamosmérnöki és Informatikai Kar Számítástudomány szakirány 2011 március 11. Balambér Dávid (BME) Gyakori

Részletesebben

A programozás alapjai előadás. [<struktúra változó azonosítók>] ; Dinamikus adatszerkezetek:

A programozás alapjai előadás. [<struktúra változó azonosítók>] ; Dinamikus adatszerkezetek: A programozás alapjai 1 Dinamikus adatszerkezetek:. előadás Híradástechnikai Tanszék Dinamikus adatszerkezetek: Adott építőelemekből, adott szabályok szerint felépített, de nem rögzített méretű adatszerkezetek.

Részletesebben

Diszkrét matematika 2. estis képzés

Diszkrét matematika 2. estis képzés Diszkrét matematika 2. estis képzés 2018. tavasz 1. Diszkrét matematika 2. estis képzés 11. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék

Részletesebben

Bevezetés. 1. fejezet. Algebrai feladatok. Feladatok

Bevezetés. 1. fejezet. Algebrai feladatok. Feladatok . fejezet Bevezetés Algebrai feladatok J. A számok gyakran használt halmazaira a következ jelöléseket vezetjük be: N a nemnegatív egész számok, N + a pozitív egész számok, Z az egész számok, Q a racionális

Részletesebben

Rendezések. Összehasonlító rendezések

Rendezések. Összehasonlító rendezések Rendezések Összehasonlító rendezések Remdezés - Alapfeladat: Egy A nevű N elemű sorozat elemeinek nagyság szerinti sorrendbe rendezése - Feltételezzük: o A sorozat elemei olyanok, amelyekre a >, relációk

Részletesebben

A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai

A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai A programozás alapjai 1 1. előadás Híradástechnikai Tanszék Amiről szólesz: A tárgy címe: A programozás alapjai A számítógép részegységei, alacsony- és magasszintű programnyelvek, az imperatív programozási

Részletesebben

Ugrólisták. RSL Insert Example. insert(22) with 3 flips. Runtime?

Ugrólisták. RSL Insert Example. insert(22) with 3 flips. Runtime? Ugrólisták Ugrólisták Ugrólisták Ugrólisták RSL Insert Example insert(22) with 3 flips 13 8 29 20 10 23 19 11 2 13 22 8 29 20 10 23 19 11 2 Runtime? Ugrólisták Empirical analysis http://www.inf.u-szeged.hu/~tnemeth/alga2/eloadasok/skiplists.pdf

Részletesebben

Kupac adatszerkezet. A[i] bal fia A[2i] A[i] jobb fia A[2i + 1]

Kupac adatszerkezet. A[i] bal fia A[2i] A[i] jobb fia A[2i + 1] Kupac adatszerkezet A bináris kupac egy majdnem teljes bináris fa, amely minden szintjén teljesen kitöltött kivéve a legalacsonyabb szintet, ahol balról jobbra haladva egy adott csúcsig vannak elemek.

Részletesebben

Haladó rendezések. PPT 2007/2008 tavasz.

Haladó rendezések. PPT 2007/2008 tavasz. Haladó rendezések szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Témakörök Alapvető összehasonlító rendezések Shell rendezés Kupacrendezés Leszámláló rendezés Radix rendezés Edényrendezés

Részletesebben

Hierarchikus adatszerkezetek

Hierarchikus adatszerkezetek 5. előadás Hierarchikus adatszerkezetek A hierarchikus adatszerkezet olyan < A, R > rendezett pár, amelynél van egy kitüntetett r A gyökérelem úgy, hogy: 1. r nem lehet végpont, azaz a A esetén R(a,r)

Részletesebben

Relációk. 1. Descartes-szorzat. 2. Relációk

Relációk. 1. Descartes-szorzat. 2. Relációk Relációk Descartes-szorzat. Relációk szorzata, inverze. Relációk tulajdonságai. Ekvivalenciareláció, osztályozás. Részbenrendezés, Hasse-diagram. 1. Descartes-szorzat 1. Deníció. Tetsz leges két a, b objektum

Részletesebben

Információs Technológia

Információs Technológia Információs Technológia Rekurzió, Fa adatszerkezet Fodor Attila Pannon Egyetem Műszaki Informatika Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.hu 2010. november 18. Rekurzió Rekurzió

Részletesebben

Az optimális megoldást adó algoritmusok

Az optimális megoldást adó algoritmusok Az optimális megoldást adó algoritmusok shop ütemezés esetén Ebben a fejezetben olyan modellekkel foglalkozunk, amelyekben a munkák több műveletből állnak. Speciálisan shop ütemezési problémákat vizsgálunk.

Részletesebben

Diszkrét matematika 2.C szakirány

Diszkrét matematika 2.C szakirány Diszkrét matematika 2.C szakirány 2017. tavasz 1. Diszkrét matematika 2.C szakirány 3. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék 2017.

Részletesebben

22. GRÁFOK ÁBRÁZOLÁSA

22. GRÁFOK ÁBRÁZOLÁSA 22. GRÁFOK ÁBRÁZOLÁSA A megoldandó feladatok, problémák modellezése során sokszor gráfokat alkalmazunk. A gráf fogalmát a matematikából ismertnek vehetjük. A modellezés során a gráfok több változata is

Részletesebben

Chomsky-féle hierarchia

Chomsky-féle hierarchia http://www.cs.ubbcluj.ro/~kasa/formalis.html Chomsky-féle hierarchia G = (N, T, P, S) nyelvtan: 0-s típusú (általános vagy mondatszerkezet ), ha semmilyen megkötést nem teszünk a helyettesítési szabályaira.

Részletesebben

Diszkrét matematika 2. estis képzés

Diszkrét matematika 2. estis képzés Diszkrét matematika 2. estis képzés 2018. tavasz 1. Diszkrét matematika 2. estis képzés 10. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék

Részletesebben

Taylor-polinomok. 1. Alapfeladatok. 2015. április 11. 1. Feladat: Írjuk fel az f(x) = e 2x függvény másodfokú Maclaurinpolinomját!

Taylor-polinomok. 1. Alapfeladatok. 2015. április 11. 1. Feladat: Írjuk fel az f(x) = e 2x függvény másodfokú Maclaurinpolinomját! Taylor-polinomok 205. április.. Alapfeladatok. Feladat: Írjuk fel az fx) = e 2x függvény másodfokú Maclaurinpolinomját! Megoldás: A feladatot kétféle úton is megoldjuk. Az els megoldásban induljunk el

Részletesebben

Feladat. Ternáris fa. Típusspecikáció. Reprezentáció. Absztrakt implementáció. Érdi Gerg EAF II. 4/3.

Feladat. Ternáris fa. Típusspecikáció. Reprezentáció. Absztrakt implementáció. Érdi Gerg EAF II. 4/3. Feladat djuk meg, hogy egy ternáris fa INORDER bejárás szerint sorozatba f zött értékei között mekkora a leghosszabb csupa pozitív számot tartalmazó részsorozat. Ternáris fa Típusspecikáció z alaphalmaz

Részletesebben

30. ERŐSEN ÜSSZEFÜGGŐ KOMPONENSEK

30. ERŐSEN ÜSSZEFÜGGŐ KOMPONENSEK 30. ERŐSEN ÜSSZEFÜGGŐ KOMPONENSEK A gráfos alkalmazások között is találkozunk olyan problémákkal, amelyeket megoldását a részekre bontott gráfon határozzuk meg, majd ezeket alkalmas módon teljes megoldássá

Részletesebben

Adatszerkezetek 2. Dr. Iványi Péter

Adatszerkezetek 2. Dr. Iványi Péter Adatszerkezetek 2. Dr. Iványi Péter 1 Fák Fákat akkor használunk, ha az adatok között valamilyen alá- és fölérendeltség van. Pl. könyvtárszerkezet gyökér (root) Nincsennek hurkok!!! 2 Bináris fák Azokat

Részletesebben

6. előadás. Kiegyensúlyozottság, AVL-fa, piros-fekete fa. Adatszerkezetek és algoritmusok előadás március 6.

6. előadás. Kiegyensúlyozottság, AVL-fa, piros-fekete fa. Adatszerkezetek és algoritmusok előadás március 6. 6. előadás, AVL-fa, piros-fekete fa Adatszerkezetek és algoritmusok előadás 2018. március 6.,, és Debreceni Egyetem Informatikai Kar 6.1 Általános tudnivalók Ajánlott irodalom: Thomas H. Cormen, Charles

Részletesebben

5/1. tétel: Optimalis feszítőfák, Prim és Kruskal algorithmusa. Legrövidebb utak graphokban, negatív súlyú élek, Dijkstra és Bellman Ford algorithmus.

5/1. tétel: Optimalis feszítőfák, Prim és Kruskal algorithmusa. Legrövidebb utak graphokban, negatív súlyú élek, Dijkstra és Bellman Ford algorithmus. 5/1. tétel: Optimalis feszítőfák, Prim és Kruskal algorithmusa. Legrövidebb utak graphokban, negatív súlyú élek, Dijkstra és Bellman Ford algorithmus. Optimalis feszítőfák Egy összefüggő, irányítatlan

Részletesebben

Általános algoritmustervezési módszerek

Általános algoritmustervezési módszerek Általános algoritmustervezési módszerek Ebben a részben arra mutatunk példát, hogy miként használhatóak olyan általános algoritmustervezési módszerek mint a dinamikus programozás és a korlátozás és szétválasztás

Részletesebben

Más szavakkal formálisan:, ahol olyan egész szám, hogy. Más szavakkal formálisan:, ahol olyan egész szám, hogy.

Más szavakkal formálisan:, ahol olyan egész szám, hogy. Más szavakkal formálisan:, ahol olyan egész szám, hogy. Bevezetés 1. Definíció. Az alsó egészrész függvény minden valós számhoz egy egész számot rendel hozzá, éppen azt, amely a tőle nem nagyobb egészek közül a legnagyobb. Az alsó egészrész függvény jele:,

Részletesebben

10. tétel. Adatszerkezetek és algoritmusok vizsga Frissült: 2013. január 28.

10. tétel. Adatszerkezetek és algoritmusok vizsga Frissült: 2013. január 28. 10. tétel Adatszerkezetek és algoritmusok vizsga Frissült: 2013. január 28. 2-3 fák Hatékony keresőfa-konstrukció. Ez is fa, de a binárisnál annyival bonyolultabb hogy egy nem-levél csúcsnak 2 vagy 3 fia

Részletesebben

Egyváltozós függvények 1.

Egyváltozós függvények 1. Egyváltozós függvények 1. Filip Ferdinánd filip.ferdinand@bgk.uni-obuda.hu siva.banki.hu/jegyzetek 015 szeptember 1. Filip Ferdinánd 015 szeptember 1. Egyváltozós függvények 1. 1 / 5 Az el adás vázlata

Részletesebben

Függvények július 13. f(x) = 1 x+x 2 f() = 1 ()+() 2 f(f(x)) = 1 (1 x+x 2 )+(1 x+x 2 ) 2 Rendezés után kapjuk, hogy:

Függvények július 13. f(x) = 1 x+x 2 f() = 1 ()+() 2 f(f(x)) = 1 (1 x+x 2 )+(1 x+x 2 ) 2 Rendezés után kapjuk, hogy: Függvények 015. július 1. 1. Feladat: Határozza meg a következ összetett függvényeket! f(x) = cos x + x g(x) = x f(g(x)) =? g(f(x)) =? Megoldás: Összetett függvény el állításához a küls függvényben a független

Részletesebben

Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések)

Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések) Adatszerkezetek Nevezetes algoritmusok (Keresések, rendezések) Keresések A probléma általános megfogalmazása: Adott egy N elemű sorozat, keressük meg azt az elemet (határozzuk meg a helyét a sorozatban),

Részletesebben

Diszkrét matematika 2.C szakirány

Diszkrét matematika 2.C szakirány Diszkrét matematika 2.C szakirány 2015. ősz 1. Diszkrét matematika 2.C szakirány 3. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék 2015.

Részletesebben

Ellenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t

Ellenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t Ellenőrző kérdések 2. Kis dolgozat kérdései 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t 37. Ha t szintű indexet használunk,

Részletesebben

Keresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán

Keresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán Keresés Rendezés Feladat Keresés és rendezés A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán 2016. november 7. Farkas B., Fiala

Részletesebben

Programozás I. - 11. gyakorlat

Programozás I. - 11. gyakorlat Programozás I. - 11. gyakorlat Struktúrák, gyakorlás Tar Péter 1 Pannon Egyetem M szaki Informatikai Kar Rendszer- és Számítástudományi Tanszék Utolsó frissítés: November 16, 2009 1 tar@dcs.vein.hu Tar

Részletesebben

Algoritmusok és adatszerkezetek I. 1. előadás

Algoritmusok és adatszerkezetek I. 1. előadás Algoritmusok és adatszerkezetek I 1 előadás Típusok osztályozása Összetettség (strukturáltság) szempontjából: elemi (vagy skalár, vagy strukturálatlan) összetett (más szóval strukturált) Strukturálási

Részletesebben

Bevezetés a programozásba I.

Bevezetés a programozásba I. Bevezetés a programozásba I. 3. gyakorlat Tömbök, programozási tételek Surányi Márton PPKE-ITK 2010.09.21. ZH! PlanG-ból papír alapú zárthelyit írunk el reláthatólag október 5-én! Tömbök Tömbök Eddig egy-egy

Részletesebben

Fa (Tree): csomópontok (nodes) halmaza, amelyeket élek (edges) kötnek össze, és teljesülnek az alábbi feltételek:

Fa (Tree): csomópontok (nodes) halmaza, amelyeket élek (edges) kötnek össze, és teljesülnek az alábbi feltételek: Fák szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Témakörök Rekurzív típusok, fa adatszerkezet Bináris keresőfa, bejárások Bináris keresőfa, módosítás Piros-fekete fa B-fa 2 Fa

Részletesebben

Adatszerkezetek és algoritmusok

Adatszerkezetek és algoritmusok 2009. november 13. Ismétlés El z órai anyagok áttekintése Ismétlés Specikáció Típusok, kifejezések, m veletek, adatok ábrázolása, típusabsztakció Vezérlési szerkezetek Függvények, paraméterátadás, rekurziók

Részletesebben

Kiegészítő részelőadás 1. Az algoritmusok hatékonyságának mérése

Kiegészítő részelőadás 1. Az algoritmusok hatékonyságának mérése Kiegészítő részelőadás 1. Az algoritmusok hatékonyságának mérése Dr. Kallós Gábor 2014 2015 1 Az Ordó jelölés Azt mondjuk, hogy az f(n) függvény eleme az Ordó(g(n)) halmaznak, ha van olyan c konstans (c

Részletesebben

Diszkrét matematika 2.C szakirány

Diszkrét matematika 2.C szakirány Diszkrét matematika 2.C szakirány 2017. tavasz 1. Diszkrét matematika 2.C szakirány 4. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék 2017.

Részletesebben

OOP I. Egyszerő algoritmusok és leírásuk. Készítette: Dr. Kotsis Domokos

OOP I. Egyszerő algoritmusok és leírásuk. Készítette: Dr. Kotsis Domokos OOP I. Egyszerő algoritmusok és leírásuk Készítette: Dr. Kotsis Domokos Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendı anyag vázlatát képezik. Ismeretük

Részletesebben

Algoritmuselmélet 2. előadás

Algoritmuselmélet 2. előadás Algoritmuselmélet 2. előadás Katona Gyula Y. Budapesti Műszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b kiskat@cs.bme.hu 2002 Február 12. ALGORITMUSELMÉLET 2. ELŐADÁS 1 Buborék-rendezés

Részletesebben

Megoldott feladatok november 30. n+3 szigorúan monoton csökken, 5. n+3. lim a n = lim. n+3 = 2n+3 n+4 2n+1

Megoldott feladatok november 30. n+3 szigorúan monoton csökken, 5. n+3. lim a n = lim. n+3 = 2n+3 n+4 2n+1 Megoldott feladatok 00. november 0.. Feladat: Vizsgáljuk az a n = n+ n+ sorozat monotonitását, korlátosságát és konvergenciáját. Konvergencia esetén számítsuk ki a határértéket! : a n = n+ n+ = n+ n+ =

Részletesebben

Bináris keresőfa. Felépítés, alapvető műveletek. Programozás II. előadás. Szénási Sándor

Bináris keresőfa. Felépítés, alapvető műveletek. Programozás II. előadás.  Szénási Sándor Bináris keresőfa Felépítés, alapvető műveletek előadás http://nik.uni-obuda.hu/prog2 Szénási Sándor szenasi.sandor@nik.uni-obuda.hu Óbudai Egyetem,Neumann János Informatikai Kar Bináris keresőfa Rekurzív

Részletesebben

Adatszerkezetek I. 8. előadás. (Horváth Gyula anyagai felhasználásával)

Adatszerkezetek I. 8. előadás. (Horváth Gyula anyagai felhasználásával) Adatszerkezetek I. 8. előadás (Horváth Gyula anyagai felhasználásával) Kereső- és rendezőfák Közös tulajdonságok: A gyökérelem (vagy kulcsértéke) nagyobb vagy egyenlő minden tőle balra levő elemnél. A

Részletesebben

7 7, ,22 13,22 13, ,28

7 7, ,22 13,22 13, ,28 Általános keresőfák 7 7,13 13 13 7 20 7 20,22 13,22 13,22 7 20 25 7 20 25,28 Általános keresőfa Az általános keresőfa olyan absztrakt adatszerkezet, amely fa és minden cellájában nem csak egy (adat), hanem

Részletesebben

Relációk. 1. Descartes-szorzat

Relációk. 1. Descartes-szorzat Relációk Descartes-szorzat. Relációk szorzata, inverze. Relációk tulajdonságai. Ekvivalenciareláció, osztályozás. Részbenrendezés, Hasse-diagram.. Descartes-szorzat A kurzuson már megtanultuk mik a halmazok

Részletesebben

5. házi feladat. AB, CD kitér élpárra történ tükrözések: Az ered transzformáció: mivel az origó xpont, így nincs szükség homogénkoordinátás

5. házi feladat. AB, CD kitér élpárra történ tükrözések: Az ered transzformáció: mivel az origó xpont, így nincs szükség homogénkoordinátás 5. házi feladat 1.feladat A csúcsok: A = (0, 1, 1) T, B = (0, 1, 1) T, C = (1, 0, 0) T, D = ( 1, 0, 0) T AB, CD kitér élpárra történ tükrözések: 1 0 0 T AB = 0 1 0, elotlási rész:(i T AB )A = (0, 0, )

Részletesebben

4. Előfeltételek (ha vannak) 4.1 Tantervi Nincs 4.2 Kompetenciabeli Feladatok kijelentéseinek megértése

4. Előfeltételek (ha vannak) 4.1 Tantervi Nincs 4.2 Kompetenciabeli Feladatok kijelentéseinek megértése A TANTÁRGY ADATLAPJA 1. A képzési program adatai 1.1 Felsőoktatási intézmény Babeș Bolyai Tudományegyetem 1.2 Kar Matematika és Informatika 1.3 Intézet Magyar Matematika és Informatika 1.4 Szakterület

Részletesebben

OEP Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1. Feladat. Elemzés 1

OEP Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1. Feladat. Elemzés 1 OEP Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1. Feladat Különféle élőlények egy túlélési versenyen vesznek részt. A lények egy pályán haladnak végig, ahol váltakozó terep viszonyok vannak.

Részletesebben

A félév során előkerülő témakörök

A félév során előkerülő témakörök A félév során előkerülő témakörök rekurzív algoritmusok rendező algoritmusok alapvető adattípusok, adatszerkezetek, és kapcsolódó algoritmusok dinamikus programozás mohó algoritmusok gráf algoritmusok

Részletesebben

Számláló rendezés. Példa

Számláló rendezés. Példa Alsó korlát rendezési algoritmusokra Minden olyan rendezési algoritmusnak a futását, amely elempárok egymással való összehasonlítása alapján működik leírja egy bináris döntési fa. Az algoritmus által a

Részletesebben

Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I.

Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I. Keresés Rendezés Feladat Keresés Rendezés Feladat Tartalom Keresés és rendezés A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán

Részletesebben

GRÁFOK ÉS ALGORITMUSOK ELMÉLETE VIZSGAKÉRDÉSEK Matematika BSc Elemző szakirány II. év 1. félév

GRÁFOK ÉS ALGORITMUSOK ELMÉLETE VIZSGAKÉRDÉSEK Matematika BSc Elemző szakirány II. év 1. félév GRÁFOK ÉS ALGORITMUSOK ELMÉLETE VIZSGAKÉRDÉSEK Matematika BSc Elemző szakirány II. év 1. félév Az írásbeli vizsgán öt kérdést kell kidolgozni, A kérdések az alábbiak közül kerülnek kiválasztásra, a műfaji

Részletesebben

V. Kétszemélyes játékok

V. Kétszemélyes játékok Teljes információjú, véges, zéró összegű kétszemélyes játékok V. Kétszemélyes játékok Két játékos lép felváltva adott szabályok szerint. Mindkét játékos ismeri a maga és az ellenfele összes választási

Részletesebben

Komplex számok. Komplex számok és alakjaik, számolás komplex számokkal.

Komplex számok. Komplex számok és alakjaik, számolás komplex számokkal. Komplex számok Komplex számok és alakjaik, számolás komplex számokkal. 1. Komplex számok A komplex számokra a valós számok kiterjesztéseként van szükség. Ugyanis már középiskolában el kerülnek olyan másodfokú

Részletesebben

Lineáris egyenletrendszerek

Lineáris egyenletrendszerek Lineáris egyenletrendszerek 1 Alapfogalmak 1 Deníció Egy m egyenletb l álló, n-ismeretlenes lineáris egyenletrendszer általános alakja: a 11 x 1 + a 12 x 2 + + a 1n x n = b 1 a 21 x 1 + a 22 x 2 + + a

Részletesebben

Határozott integrál és alkalmazásai

Határozott integrál és alkalmazásai Határozott integrál és alkalmazásai 5. május 5.. Alapfeladatok. Feladat: + d = Megoldás: Egy határozott integrál kiszámolása a feladat. Ilyenkor a Newton-Leibniz-tételt használhatjuk, mely azt mondja ki,

Részletesebben

Függvények növekedési korlátainak jellemzése

Függvények növekedési korlátainak jellemzése 17 Függvények növekedési korlátainak jellemzése A jellemzés jól bevált eszközei az Ω, O, Θ, o és ω jelölések. Mivel az igények általában nemnegatívak, ezért az alábbi meghatározásokban mindenütt feltesszük,

Részletesebben

Permutációk véges halmazon (el adásvázlat, február 12.)

Permutációk véges halmazon (el adásvázlat, február 12.) Permutációk véges halmazon el adásvázlat 2008 február 12 Maróti Miklós Ennek az el adásnak a megértéséhez a következ fogalmakat kell tudni: ismétlés nélküli variáció leképezés indulási és érkezési halmaz

Részletesebben

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája Adatszerkezetek Összetett adattípus Meghatározói: A felvehető értékek halmaza Az értékhalmaz struktúrája Az ábrázolás módja Műveletei Adatszerkezet fogalma Direkt szorzat Minden eleme a T i halmazokból

Részletesebben

Bináris keres fák kiegyensúlyozásai. Egyed Boglárka

Bináris keres fák kiegyensúlyozásai. Egyed Boglárka Eötvös Loránd Tudományegyetem Természettudományi Kar Bináris keres fák kiegyensúlyozásai BSc szakdolgozat Egyed Boglárka Matematika BSc, Alkalmazott matematikus szakirány Témavezet : Fekete István, egyetemi

Részletesebben

mul : S T N 1 ha t S mul(s, t) := 0 egyébként Keresés Ezt az eljárást a publikus m veletek lenti megvalósításánál használjuk.

mul : S T N 1 ha t S mul(s, t) := 0 egyébként Keresés Ezt az eljárást a publikus m veletek lenti megvalósításánál használjuk. Érdi Gerg EF II. 2/2. Feladat Készítsen egy zsák típust! lkalmazzon osztályt! zsákokat rendezett láncolt listával ábrázolja! Implementálja a szokásos m veleteket, egészítse ki az osztályt a kényelmes és

Részletesebben

1. tétel - Gráfok alapfogalmai

1. tétel - Gráfok alapfogalmai 1. tétel - Gráfok alapfogalmai 1. irányítatlan gráf fogalma A G (irányítatlan) gráf egy (Φ, E, V) hátmas, ahol E az élek halmaza, V a csúcsok (pontok) halmaza, Φ: E {V-beli rendezetlen párok} illeszkedési

Részletesebben

2018, Diszkre t matematika. 10. elo ada s

2018, Diszkre t matematika. 10. elo ada s Diszkre t matematika 10. elo ada s MA RTON Gyo ngyve r mgyongyi@ms.sapientia.ro Sapientia Egyetem, Matematika-Informatika Tansze k Marosva sa rhely, Roma nia 2018, o szi fe le v MA RTON Gyo ngyve r 2018,

Részletesebben

Haladók III. kategória 2. (dönt ) forduló

Haladók III. kategória 2. (dönt ) forduló Haladók III. kategória 2. (dönt ) forduló 1. Tetsz leges n pozitív egész számra jelölje f (n) az olyan 2n-jegy számok számát, amelyek megegyeznek az utolsó n számjegyükb l alkotott szám négyzetével. Határozzuk

Részletesebben

Melykeres(G) for(u in V) {szin(u):=feher Apa(u):=0} for(u in V) {if szin(u)=feher then MBejar(u)}

Melykeres(G) for(u in V) {szin(u):=feher Apa(u):=0} for(u in V) {if szin(u)=feher then MBejar(u)} Mélységi keresés Ez az algoritmus a gráf pontjait járja be, eredményképpen egy mélységi feszítőerdőt ad vissza az Apa függvény által. A pontok bejártságát színekkel kezeljük, fehér= érintetlen, szürke=meg-

Részletesebben

Nagyságrendek. Kiegészítő anyag az Algoritmuselmélet tárgyhoz. Friedl Katalin BME SZIT február 1.

Nagyságrendek. Kiegészítő anyag az Algoritmuselmélet tárgyhoz. Friedl Katalin BME SZIT február 1. Nagyságrendek Kiegészítő anyag az Algoritmuselmélet tárgyhoz (a Rónyai Ivanyos Szabó: Algoritmusok könyv mellé) Friedl Katalin BME SZIT friedl@cs.bme.hu 018. február 1. Az O, Ω, Θ jelölések Az algoritmusok

Részletesebben

Diszkrét matematika 1. estis képzés

Diszkrét matematika 1. estis képzés Diszkrét matematika 1. estis képzés 2019. tavasz 1. Diszkrét matematika 1. estis képzés 11. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Mérai László diái alapján

Részletesebben

Példa Hajtsuk végre az 1 pontból a Dijkstra algoritmust az alábbi gráfra. (A mátrixban a c i j érték az (i, j) él hossza, ha nincs él.

Példa Hajtsuk végre az 1 pontból a Dijkstra algoritmust az alábbi gráfra. (A mátrixban a c i j érték az (i, j) él hossza, ha nincs él. Legrövidebb utak súlyozott gráfokban A feladat egy súlyozott gráfban egy adott pontból kiinduló legrövidebb utak megkeresése. Az input a súlyozott gráf és a kiindulási s pont. Outputként egy legrövidebb

Részletesebben

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós február 18. Széchenyi István Egyetem, Gy r

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós február 18. Széchenyi István Egyetem, Gy r Programozás (GKxB_INTM021) Széchenyi István Egyetem, Gy r 2018. február 18. Minimum és maximumkeresés u s i n g n a m e s p a c e s t d ; i n t main ( ) { c o u t

Részletesebben

1. ábra. Egy rekurzív preorder bejárás. Egy másik rekurzív preorder bejárás

1. ábra. Egy rekurzív preorder bejárás. Egy másik rekurzív preorder bejárás Preorder ejárás Fa bejárásán olyan algoritmust értünk, amelynek bemenete egy F fa és egy M művelet, és az algoritmus adott sorrendben pontosan egyszer végrehajtja az M műveletet a fa pontjaiban lévő adatokra.

Részletesebben

2. Visszalépéses stratégia

2. Visszalépéses stratégia 2. Visszalépéses stratégia A visszalépéses keres rendszer olyan KR, amely globális munkaterülete: út a startcsúcsból az aktuális csúcsba (ezen kívül a még ki nem próbált élek nyilvántartása) keresés szabályai:

Részletesebben

Információk. Ismétlés II. Ismétlés. Ismétlés III. A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin. Algoritmus. Algoritmus ábrázolása

Információk. Ismétlés II. Ismétlés. Ismétlés III. A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin. Algoritmus. Algoritmus ábrázolása 1 Információk 2 A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin Elérhetőség mesko.katalin@tfk.kefo.hu Fogadóóra: szerda 9:50-10:35 Számonkérés időpontok Április 25. 9 00 Május 17. 9 00 Június

Részletesebben