Hierarchikus adatszerkezetek

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

Download "Hierarchikus adatszerkezetek"

Átírás

1 Hierarchikus adatszerkezetek A szekveniális adatszerkezetek általánosítása. Minden adatelemnek pontosan 1 megelőzője van, de akárhány rákövetkezője lehet, kivéve egy speciális elemet. Fa (tree) Hierarchikus lista: olyan, mint a fa, csak más a reprezentációja. 11:45:38 1

2 Fa adatszerkezet dinamikus, homogén, hierarchikus adatszerkezet Speciális fogalmakat értelmez: Gyökér(elem): az az elem a fában, amelynek nincs megelőzője. levél elem: az az elem a fában, amelynek nincs rákövetkezője; közbenső elem: az összes többi elem, (néha ide tartoznak a levél elemek is) él: irányított élek: 2 elem között, szülő -től a gyermek felé gyökérelem csúcs O 0. szint él O O O út 1. szint O O O 2. szint 4 (a fa mélysége) 11:45:38 csúcs O O O 3. szint 2

3 Fa adatszerkezet 11:45:38 út: gráfelméleti út fogalom: fában: 2 elem közötti élsorozat; itt (fa adatszerkezetben) az út is irányított szint: a fában: egy adott elem szintje = az adott elem távolsága a gyökértől. A gyökértől az adott elemhez vezető út hossza. magasság: a fa szintjeinek a száma, a gyökérelemtől a levélelemekig vezető utak mentén lévő elemek számának a maximuma. csúcs, csomópont: az elemek a fában (gráfelméleti fogalom) részfa: az eredeti fának egy eleméből (a részfa gyökere) és a belőle elérhető további elemekből (gyermekei, unokái, ) álló része. (Az egész eredeti fa is egy részfa, egyetlen elem (levélelem) is lehet részfa.) 3

4 Részfa a a c b Pl. ez is egy részfa! b c De ez nem részfa! d f e f e d g Meg ez is! g És ez is! 11:45:38 4

5 Rendezetlen Fa rendezetlen fa: az élek sorrendje tetszőleges ha rendezetlen ez a 2 fa, akkor ekvivalensek egymással. a a c b b c d f e f e d g g 11:45:38 5

6 Rendezett Fa, Bináris Fa Rendezett fa: Számít az élek sorrendje. Így az előző 2 fa nem ekvivalens. A továbbiakban csak rendezett fákkal foglalkozunk. (A reprezentáció többnyire automatikusan létrehoz egy sorrendet az élek között.) Bináris fa: fontos az informatikában. Bármely elemének legfeljebb 2 rákövetkezője van (vagy 0, vagy 1, vagy 2) Szigorú értelemben vett bináris fa: a fa bármely elemének vagy 0, vagy 2 rákövetkezője van. Rendezett, bináris fák esetén értelmezettek a következő fogalmak: baloldali / jobboldali részfa Pl. baloldali részfa: részfa, melynek gyökere az adott elem baloldali rákövetkezője. Az elemtől balra van. 6 11:45:38

7 Bináris reprezentáció Minden nem bináris fa (tetszőleges fa), reprezentálható bináris fával. (binarizáljuk) 1. a bináris fa gyökéreleme a nem bináris fa gyökéreleme lesz. 2. a binárisfa egy elemének bal oldali rákövetkezője a nem bináris fa legbaloldalibb rákövetkezője lesz. 3. a nem bináris fa azonos szinten lévő elemeit (testvérelemeket), a most leképezett elem jobboldali rákövetkezőjeként, és azok jobboldali rákövetkezőjeként fűzzűk fel a bináris fában és 3. lépés a binfa minden elemére, mint gyökérelemre megismételjük. 11:45:38 7

8 Bináris reprezentáció a a a b c b c b f e d f e d = c g g f g e Az algoritmus pszeudo-kódja: gyakorlaton! d 11:45:38 8

9 A bináris fa adatszerkezet műveletei Létrehozás: üres fát hozunk létre, majd utána bővítjük. Bővítés: lehet részfával, vagy 1 elemmel. Általában levél elemnél bővítünk (nem mindig, a fa típusától függ) Törlés: részfát vagy 1 elemet. (Ekkor a megmaradt elemeket át kell rendezni, hogy továbbra is fa maradjon. Csere: van, elérés alapján történik. Rendezés: nincs (illetve bővítés közben előfordulhat) 11:45:38 9

10 A bináris fa adatszerkezet műveletei Keresés és elérés: a bejárás alapján történik. Bejárás: adott adatszerkezet elemeit leképezzük egy sorra. 3 algoritmusa van, preorder, inorder és postorder bejárás. Preorder: A gyökérelemet a két részfa előtt dolgozzuk fel. Inorder: A két részfa bejárása között dolgozzuk fel a gyökérelemet. Postorder: A gyökérelemet a két részfa után dolgozzuk fel. 11:45:38 10

11 Bináris fa preorder bejárása (A gyökérelemet a 2 részfa bejárása előtt dolgozzuk fel.) Preorder bejárás algoritmusa: 1. Ha a bejárandó fa üres, akkor a bejárás kész. 2. Különben feldolgozzuk a gyökérelemet, 3. majd preorder módon bejárjuk a baloldali részfáját a gyökérelemnek, 4. majd a jobboldali részfáját járjuk be preorder módon. Rekurzív algoritmus, de maga a fa adatszerkezet is erősen rekurzív adatszerkezet 11:45:38 11

12 Bináris fa preorder bejárása a 1 b e 2 5 c d i f g h 8 9 abcdeifgh 11:45:38 12

13 Bináris fa inorder bejárása (A gyökérelemet a 2 részfa bejárása között dolgozzuk fel.) Inorder bejárás algoritmusa: 11:45:38 Ha a bejárandó fa üres, akkor vége. Különben inorder módon bejárjuk a baloldali részfáját a gyökérelemnek. Majd feldolgozzuk a gyökérelemet. Ezután bejárjuk a gyökér jobboldali részfáját inorder módon. 13

14 Bináris fa inorder bejárása a 4 b e 2 6 c d i f g h 7 9 cbdaiegfh 11:45:38 14

15 Bináris fa postorder bejárása (A gyökérelemet a 2 részfa bejárása után dolgozzuk fel.) Postorder bejárás algoritmusa: 11:45:38 Ha a bejárandó fa üres, akkor a bejárás befejeződik. Különben posztorder módon bejárjuk a gyökérelem baloldali részfáját. Majd posztorder módon bejárjuk a jobboldali részfáját is a gyökérelemnek. Végül feldolgozzuk a gyökérelemet. 15

16 Bináris fa postorder bejárása a 9 b e 3 8 c d i f g h 5 6 cdbighfea 11:45:38 16

17 Reprezentáció Mint minden adatszerkezetet, a fát is lehet folytonosan is és szétszórtan is ábrázolni. Ezzel együtt a kézenfekvő és sokkal gyakrabban alkalmazott, a szétszórt ábrázolás. a gyökér a b e b e c d i f c d i f g h g h 11:45:38 17

18 Reprezentáció Folytonos ábrázolást 3 vektorral szokás megoldani Az egyik tartalmazza az adatokat A másik kettő a bal illetve jobboldali részfa gyökérelemeihez tartozó indexeket, illetve 0-t, ha nincs ilyen rákövetkezője az aktuális elemnek. (Ezek az indexek veszik át a szétszórt ábrázolás mutatóinak szerepét.) 11:45:38 Index Adat Bal Jobb 1 a b c d e i f g h

19 Reprezentáció Index Adat Bal Jobb 11:45:39 a b e c d i f g h 1 a b c d e i f g h

20 Kifejezések kiértékelése A fa adatszerkezet egyik alkalmazási területe: kifejezések kiértékelésénél kifejezés fákat használnak; Unáris, bináris operátorokkal felírt kifejezést lehet ábrázolni bináris fával. Pl: a/b+c*(d-e) + / * a b c - d e 11:45:39 20

21 Kifejezések kiértékelése Aszerint, hogy milyen módon járjuk be ezt a fát, megkülönböztetünk prefix, infix és posztfix kifejezéseket: prefix: +/ab*c-de infix: a/b+c*d-e postfix: ab/cde-*+ (maga a kifejezés, de zárójelek nélkül) A prefix és a postfix alak egyértelmű. Az infix alak viszont nem egyértelmű. (fordított lengyel ábrázolás) Zárójelezéssel és speciális szabályokkal az infix forma is egyértelművé tehető. 11:45:39 21

22 Kifejezések kiértékelése Az alábbi három kifejezésfa infix alakjai megegyeznek. Pedig eltérő kifejezéseket ábrázolnak. a/b+c*(d-e) a/b+c*d-e (a/b+c)*(d-e) + / * a b c - + / - a b * e * + - / c d e d e c d a b 11:45:39 22

23 Speciális fa adatszerkezetek Minimális magasságú fa: akkor ilyen egy fa, ha az aktuális számú elem nem lenne elhelyezhető egy kisebb magasságú fában. Egy lehetséges megvalósítás, ha a levélelemek mindegyike a legalsó két szinten található és a legalsó szint kivételével minden szintre a lehető legtöbb elemet tesszük. Ahogy jönnek az új elemek egyenletesen osztjuk meg őket a bal és a jobb oldalon. Kiegyensúlyozott fa: ha minden elem esetén a bal és jobboldali részfáknak a magasságkülönbsége legfeljebb 1. 11:45:39 23

24 Tökéletesen kiegyensúlyozott fa létrehozása Tökéletesen kiegyensúlyozott fa: ha a fa bármely elemének bal és jobboldali részfájában az elemek száma legfeljebb eggyel tér el. Egy lehetséges algoritmus a létrehozására: (tudjuk, hogy összesen n darab elem lesz a fában.) Az első elem legyen a gyökérelem. Előállítjuk a gyökérnek az n b =[n/2] elemből álló baloldali részfáját ugyanezzel az algoritmussal (rekurzió). Majd előállítjuk a gyökérnek az n j =-n b elemből álló jobboldali részfáját ugyanezzel az algoritmussal. 11:45:39 24

25 Példa: n=21, n b =10 8, 9, 11, 15, 19, 20, 21, 27, 30, 32, 41, 45, 46, 49, 53, 54, 58, 62, 67, 76, :45:39 25

26 Tökéletesen kiegyensúlyozott fa létrehozása Egy lehetséges -másik- algoritmus a létrehozására: (Nem kell tudnunk, hogy összesen hány darab elem lesz a fában.) Ha üres a fa, az első elem legyen a gyökérelem. Egyébként, ha a baloldali részfa elemszáma nem nagyobb a jobboldali részfáénál, akkor helyezzük el a következő elemet ugyanezzel az algoritmussal a baloldali részfában (rekurzió). És végül, ha a baloldali részfa elemszáma nagyobb a jobboldali részfáénál, akkor helyezzük el a következő elemet ugyanezzel az algoritmussal a jobboldali részfában (rekurzió). 11:45:39 26

27 Példa: n=21, n b =10 8, 9, 11, 15, 19, 20, 21, 27, 30, 32, 41, 45, 46, 49, 53, 54, 58, 62, 67, 76, :45:39 27

28 Tökéletesen kiegyensúlyozott fa Minimális magasságú fa Kiegyensúlyozott fa 11:45:39 28

29 Keresőfa Keresőfa (rendezőfa): az elemeket kulcsuk alapján rendezzük és kulcs alapján visszakeressük őket. Egy fa akkor keresőfa, ha bármely elemére igaz, hogy az adott elem kulcsa nagyobb, mint az elem baloldali részfájában lévő kulcsok, és kisebb, mint a jobboldali részfájában lévő kulcsok. Tehát a keresőfában nem lehet két azonos kulcsú elem. 11:45:39 29

30 Keresőfa műveletei Létrehozása: üres fát hozunk létre. Bővítés algoritmusa: (Mindig levélelemmel bővítünk.) ha üres a fa, akkor gyökérelemnek helyezzük el az új elemet. Egyébként az új elemet, ha kisebb mint a gyökér, a baloldali részfába, ha nagyobb, akkor a jobboldali részfába rakjuk. Majd ezt ismételjük a részfára. 11:45:39 30

31 8, 9, 11, 15, 19, 20, 21, 7, 3, 2, 1, 5, 6, 4, 13, 14, 10, 12 17, 16, :45:

32 Keresőfa műveletei Keresés: Egy ilyen fában triviálisan alkalmazhatjuk a bináris keresés algoritmusát. Itt a középső elem a gyökérelem lesz. Ha nem tudok továbbmenni és még nem találtam meg a keresett elemet, akkor nincs benne a fában. (Nem feltétlen olyan hatékony, mint a vektorokban.) Törlés keresőfából: kereséssel kezdődik, ugyanúgy mint a beszúrásnál. Ha nincs benne, nem tudom törölni. Ha benne van három eset lehet a rákövetkezők száma (0, 1, 2) alapján. 11:45:39 32

33 Keresőfa műveletei A törlés három esete 1. Levélelem: kitörlöm, a szülő megfelelő mutatóját NIL-re állítom 2. Egy rákövetkezője van: az egy rákövetkezőjét felcsúsztatjuk (rácsúsztatjuk) a törlendő elem helyére. 3. Két rákövetkezője van: meg kell keresni a törlendő elem baloldali részfájának a legjobboldalibb elemét. Ennek az értékével írjuk felül a törlendő elem értékét (csere). Majd töröljük a baloldali részfa legjobboldalibb elemét. (Az is jó, ha a jobboldali részfa legbaloldalibb elemével csináljuk ugyanezt.) 11:45:39 33

34 :45:39 34

35 Itt 15 volt a törlés előtt :45:39 35

36 Tökéletesen kiegyensúlyozott fa Minimális magasságú fa Kiegyensúlyozott fa 11:45:39 36

37 AVL-fa (G.M. Adelson-Velsky, E.M. Landis) Kiegyensúlyozott keresőfa (AVL-fa): A tökéletesen kiegyensúlyozott keresőfában a beszúrás és a törlés végrehajtása után a tökéletes kiegyensúlyozottság visszaállítása nagyon bonyolult. Az AVL-fában ugyanezek a műveletek egyszerűbben végrehajthatóak. Ez az oka, hogy az AVL-fákat elterjedten alkalmazzák. A kiegyensúlyozott fa magassága elemszámtól függetlenül legfeljebb 45%-kal nagyobb, mint a tökéletesen kiegyensúlyozott fáé. 11:45:39 37

38 Az AVL fa műveletei Új elem beszúrása az AVL-fába: Keresés végrehajtása a fában a keresőfa szabályai szerint. Ha az elem már a fában van: vége (két egyforma elemet nem helyezhetünk el a keresőfában.) Ha nincs a fában, levélelemként szúrjuk be a megfelelő helyre és kiegyensúlyozzuk a fát, ha szükséges. Beszúrás előtt valahogy így néz ki a fa: H-1 H-2 H 11:45:39 38

39 Az AVL fa műveletei (beszúrás) Ha jobboldalra írunk be, nőhet a jobboldali részfa magassága. Így ugyanolyan magas lesz a két részfa. (Ha egyforma magas lett volna, akkor sem lenne gond, mert eggyel magasabb lenne a jobb, mint a bal a beszúrás után, ami még mindig megfelel a kiegyensúlyozottság feltételeinek.) Gond akkor van, ha a magasabb részfába szúrjuk be az újabb elemet és ennek hatására tovább nő a részfa magassága. 11:45:39 39

40 Az AVL fa műveletei (beszúrás) 1. eset: [LL] A részfa gyökérelemére nézve elromlik a kiegyensúlyozottság, mivel a különbség 2 lesz a két részfa között. H H-2 H 11:45:39 40

41 Az AVL fa műveletei (beszúrás) 2. eset [LR]: a baloldali részfa jobboldali részfájába szúrjuk be az új elemet. H H-2 H 11:45:39 41

42 Az AVL fa műveletei (beszúrás) Természetesen ezen esetek szimmetrikus párjai is előfordulhatnak H-2 H-1 H 11:45:39 42

43 Az AVL fa műveletei (beszúrás) 3. eset [RL]: a baloldali részfa H-2-es és a jobboldali részfa H-s magassága rontja el a kiegyensúlyozottságot. H-2 H H 11:45:39 43

44 Az AVL fa műveletei (beszúrás) 4. eset [RR]: a jobboldali részfa jobboldali részfájába szúrúnk be. Az első és a negyedik eset, illetve a második és harmadik eset egymásnak szimmetrikus párjai. H-2 H H 11:45:39 44

45 Az AVL fa műveletei (beszúrás) Első és negyedik eset: külső beszúrás, külső bővítés Második és harmadik eset: belső bővítés, belső beszúrás Először a külső bővítéssel elrontott fát egyensúlyozzuk ki. 1. Külső bővítés utáni kiegyensúlyozás LL-forgatás (left left) (Szimmetrikus párja az RR-forgatás (right right).) A részfa új gyökéreleme a régi gyökér baloldali rákövetkezője lesz; A régi baloldali rákövetkező jobboldali részfája az új jobboldali rákövetkező (a régi gyökér) baloldali részfája lesz. 11:45:39 45

46 k 1 <k 2 A B C A B C :45:

47 Az AVL fa műveletei (beszúrás) 2. Belső bővítés utáni kiegyensúlyozás: a belső bővítés után egy forgatással nem lehet megoldani a kiegyensúlyozást. A B C B C A 11:45:40 47

48 Az AVL fa műveletei (beszúrás) A belülre beírt új elemet először kihozzuk, de a magasság még mindig nem lesz jó LR-forgatás: a baloldali részfa jobboldali részfáját forgatjuk helyre; D A D A B D B A B C C C C 11:45:40 48

49 D A D A B D B C A B C C C :45:

50 Az AVL fa műveletei (beszúrás) A 3. eset a második esetnek a szimmetrikus párja: a harmadik esetet megoldó két forgatás együttesen RL forgatás (RL= Right + Left). A jobboldali részfa baloldali részfájába való beszúrás rontotta el a kiegyensúlyozottságot. Ennek megfelelően zajlik a helyrehozás is. Beszúrás után két lépésben minden AVL-fa kiegyensúlyozható. 11:45:40 50

51 Az AVL fa műveletei (törlés) Törlés kiegyensúlyozott fából: Megkeressük a törlendő elemet, majd töröljük a kereső fából. Ha kiegyensúlyozott maradt a fa, akkor készen vagyunk. Ha nem, akkor az előbbi négy eset valamelyike következik be. Ezeket már tudjuk kezelni. Esetleg: A B. C D A B C D 11:45:40 51

52 Az AVL fa műveletei (törlés) Törlés kiegyensúlyozott fából: Megkeressük a törlendő elemet, majd töröljük a kereső fából. Ha kiegyensúlyozott maradt a fa, akkor készen vagyunk. Ha nem, akkor az előbbi négy eset valamelyike következik be. Ezeket már tudjuk kezelni. Esetleg: A B. C D A B C D 11:45:40 52

53 Piros-Fekete Fa Piros-Fekete-fa: olyan bináris kereső fa, melyben minden elemnek színe van, amely vagy piros vagy fekete. Az elemek szinezésének szabályozásával biztosítható, hogy benne valamely a gyökértől levélig vezető út hossza nem lehet nagyobb, mint a legrövidebb ilyen út hosszának a kétszerese. Ez biztosítja, hogy bármely n db adatelemet tartalmazó piros fekete fa magassága legfeljebb 2*log2(n+1). A piros-fekete fát ezért megközelítőleg kiegyensúlyozottnak tekinthetjük. 11:45:40 53

54 Piros-Fekete Fa Egy kereső fát piros-fekete fának nevezünk, ha teljesülnek rá a következő piros-fekete tulajdonságok: 1. Minden elem színe piros vagy fekete 2. A gyökérelem színe fekete 3. Minden levélelem színe fekete 4. Minden piros elemnek mindkét rákövetkezője fekete 5. Bármely két, azonos elemből induló és levélelemig vezető úton ugyanannyi fekete színű elem van. (A levélemekben nem tárolunk adatokat.) 11:45:40 54

55 Piros-Fekete Fa NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL 11:45:40 55

56 Piros-Fekete Fa (a gyakorlatban leginkább) NIL 11:45:40 56

57 Piros-Fekete Fa műveletei Beszúrás és törlés: úgy történik, mint korábban (a pirosfekete fa is kereső fa), de ez megsértheti a piros-fekete tulajdonságokat. Ezért módosítás után lehet, hogy bizonyos elemek színét meg kell változtatni, esetleg forgatással a fa szerkezetét is meg kell változtatni. Bővítés: a piros-fekete fát mint kereső fát bővítjük. Mindig levélelemmel bővíthető. A beszúrt elem színe legyen: fekete, ha ez az első elem (gyökérelem) és piros, egyébként (általában). Ezt követően meg kell vizsgálni, mely tulajdonságai sérültek a piros-fekete fának? 11:45:40 57

58 Piros-Fekete Fa műveletei (bővítés) 1. Minden elem színe piros vagy fekete OK 2. A gyökérelem színe fekete OK 3. Minden levélelem színe fekete OK (két fekete NIL kapcsolódik hozzá) 4. Minden piros elemnek mindkét rákövetkezője fekete Beszúrt elemnél teljesül, de a szülőjénél sérülhet. (Csak akkor sérül, ha az elem, amihez beszúrtuk az újat, piros színű. Ekkor a fát át kell szervezni.) 5. Bármely két, azonos elemből induló és levélelemig vezető úton ugyanannyi fekete színű elem van. 11:45:40 Teljesül, mert piros elemet szúrtunk be. 58

59 Piros-Fekete Fa műveletei (bővítés) A beszúrt elem szülője fekete: KÉSZ vagyunk A beszúrt elem szülője és nagybátyja piros: Átszínezéssel lokálisan megoldható, vagy a fa gyökere felé tolható a probléma t 1 t 1 x 0 y 0 x 1 y 1 uj 0 uj 0 11:45:40 A probléma tovább gyűrűzhet a fa gyökere irányába 59

60 1. A problémás elem szülője fekete: KÉSZ vagyunk 2. A problémás elem szülője és nagybátyja piros: Átszínezéssel megoldható, vagy a fa gyökere felé tolható a probléma t n t n+1 n x y x n y n z C D E z C D E A B A B 11:45:40 60 A,B,C,D: Fekete gyökerű, azonos fekete-magasságú részfák

61 Piros-Fekete Fa műveletei (bővítés) 3. A problémás csúcs és a szülője nem azonos oldali gyermekek: 1 forgatással átalakítható a következő esetre: 4. A problémás csúcs és a szülője azonos oldali gyermekek: 1 forgatás, plussz átszínezés: helyreállnak a tulajdonságok. z n 3 z n x D y D 11:45:40 A B y C A x B C 61

62 z n 3 z n x D y D A y x C B C A B x n 3 x n A z A y y D B z B C 11:45:40 C D 62 A,B,C,D: Fekete gyökerű, azonos fekete-magasságú részfák

63 4 a z n y? y D x z n 4 b x C A B C D A x n B 4 a y? 4 b A x B y n C z D A y x n z B z A B C D C D 11:45:40 63 A,B,C,D: Fekete gyökerű, azonos fekete-magasságú részfák

64 Törlés Piros-Fekete fából Binfából való törléssel megegyező módon (törlendőnek 0, 1, 2 gyermeke van). Ha 2 gyerek van, áttranszformálással jár. A piros-fekete fa tulajdonságainak helyreállításához a ténylegesen törölt (fizikai-logikai) csomópontot kell figyelembe venni. 11:45:40 64

65 :45:40 65

66 Törlés Piros-Fekete fából Jelölje V a ténylegesen törölt elemet! (V legalább egyik gyermekének levélelemnek kell lennie.) Ha V-nek van egy nem levél gyereke, akkor V helyét ez a gyerek, egyébként egy levélelem veszi át. 1. Ha V piros volt: KÉSZen vagyunk 2. Ha V fekete volt, több tulajdonság is sérül, ill. sérülhet: 2. A gyökérelem színe fekete Talán sérül. (Ha V gyökérelem volt és a gyermeke piros.) 4. Minden piros elemnek mindkét rákövetkezője fekete Talán sérül. (Ha V gyermeke és a szülője is piros) 5. Bármely két, azonos elemből induló és levélelemig vezető úton ugyanannyi fekete színű elem van. 11:45:40 Majdnem bizonyosan sérül. (Az egyetlen kivétel, ha V a gyökér elem volt.) 66

67 Törlés Piros-Fekete fából 2. Jelölje U azt az elemet, amely átveszi a ténylegesen törölt fekete elem helyét! (Ha az U levél volt, tudjuk róla, hogy fekete.) V törlése után egy fekete tokent rendeljünk hozzá ahhoz a csúcshoz, ami V helyére került (U). Ezen a tokenen átmenő, levélig vezető utak eggyel kevesebb fekete elemet tartalmaznak, mint kellene. A token ezt jelzi. Cél: ezt a fekete tokent mind feljebb mozgassuk a fában, vagy teljesen eltüntessük. 11:45:40 67

68 Törlés Piros-Fekete fából Ha egy csomópont fekete színű és rendelkezik ezzel a fekete tokennel, ezt duplán fekete elemnek nevezzük. Fizikai szinten nem jelenik meg a fában a fekete token, csak koncepcionális (fogalmi) szinten. 5 esetet különböztethetünk meg, melyek kölcsönösen kizárják egymást: a) A token egy piros elemnél, vagy a fa gyökerénél van b) A duplán fekete elem testvére piros c) A duplán fekete elem testvére, és mindkét unokaöccse fekete d) A duplán fekete elem testvére és távolabbi unkaöccse fekete, de a közelebbi unokaöccse piros. e) A duplán fekete elem testvére fekete, de a távolabbi unkaöccse 68 piros. 11:45:40

69 Törlés Piros-Fekete fából 2a, A tokennel rendelkező csúcspont piros színű, vagy a fa gyökere, esetleg mindkettő: Ekkor a csúcspont színét feketére váltjuk és vége. Ez a lépés a második és negyedik tulajdonságot azonnal helyreállítja. Az ötödik tulajdonságot is helyreállítja: Pl. az úgynevezett (hiányzó) fekete csúcspontot megkapták azok az utak, amelyekből ez hiányzott. Ha a gyökérben van a token, és a gyökér fekete, akkor csökken a fa fekete-magassága. y n+1 n y n+1 11:45:40 A n B n A n B n A,B: Azonos fekete-magasságú részfák 69

70 Törlés Piros-Fekete fából 2b, Ha a duplán fekete elem testvére piros, akkor egy forgatást és egy színcserét kell végrehajtani. A duplán fekete elem szülője körül forgatunk, a testvért és a szülőt színezzük át. Ez a lépés biztosítja, hogy a duplán fekete csúcspont testvére fekete lesz, így egy lépés múlva, vagy a c, d, e esetek valamelyike fog előállni. A token a forgatással egy szinttel távolabb kerül ugyan a gyökértől, de most már a duplán fekete csúcspont szülője piros, testvére pedig fekete: Ha távolabb kerül a token, a gyökértől, onnantól 4 lépésen belül már el lehet tüntetni (közel vagyunk a megoldáshoz). 11:45:40 70

71 2b y n x n-2 z A n-3 B n-3 C D z? z n y n D y D A n-3 x n-2 B n-3 C A n-3 x n-2 B n-3 C 2?c,d,e? 11:45:40 71 C,D: Fekete gyökerű részfák

72 Törlés Piros-Fekete fából 2c, Tegyük fel, hogy a duplán fekete testvére és mindkét unokaöccse fekete. Ekkor a testvért pirosra színezzük, a tokent egy csúcsponttal feljebb visszük a gyökér irányába. A testvér átszínezésével az utakból (rajta keresztül) egy fekete kitörlődik. y-ba felvisszük a tokent: az y alatti rész eggyel kevesebb feketét tartalmaz, mint kellene. Még fennáll a probléma, de már eggyel feljebb toltuk a tokent. (Ezt csak akkor lehet végrehajtani, ha mindkét unokaöccs fekete.) 11:45:40 72

73 2c y? y? x z n x z A n-2 B n-2 C D A n-2 B n-2 C D 11:45:40 73 C,D,: Fekete gyökerű részfák

74 Törlés Piros-Fekete fából 2d, A duplán fekete csúcspontnak fekete a testvére és a távolabbi unokaöccse, de a közeli unokaöccse piros. y? y? y? x w n x z? x z n A n-2 B n-2 C z D E A n-2 B n-2 C D w n E A n-2 B n-2 C 2e D w E 11:45:40 C,D, E: Fekete gyökerű részfák 74

75 Törlés Piros-Fekete fából 2e, A duplán fekete elem testvére fekete, de a távolabbi unkaöccse piros. (A közelebbi unokaöccse bármilyen színű lehet.) y? z n z? A n-2 x B n-2 C z n D w E A n-2 x y? B n-2 C D w E A n-2 x y n B n-2 C D w n E 11:45:40 D, E: Fekete gyökerű részfák 75

76 Tökéletesen kiegyensúlyozott fa Minimális magasságú fa Kiegyensúlyozott fa Bináris kupac 11:45: :23:20

77 A bináris kupac tulajdonságai A kupac gráfja: A minden szintje teljesen kitöltött, kivéve a legalacsonyabb szintet, ahol balról jobbra haladva csak egy adott csúcsig vannak elemek Azaz, egyértelmű kapcsolat van a kupac elemszáma, és az őt ábrázoló fa gráfja között A kupac-tulajdonság (maximum kupac esetén) A kupac minden i gyökértől különböző elemére teljesül, hogy: Szülő( i ).adat i.adat Azaz, egy részfa legnagyobb értékű eleme mindig a 11:45:40 részfa gyökerében található. 77

78 A maximum kupac műveletei Létrehozás: Létrehozhatunk üres kupacot, vagy Építhetünk kupacot előre megadott elemekből Bővítés: Új elem elhelyezése a kupacban (tulajdonságok megőrzésével) Törlés: Gyökérelemet törlünk (és átszervezés, a tulajdonságok megőrzéséért) Csere: Általában csak valamely elem értékének növelése támogatott (Elsőbbségi sorként való alkalmazás estén.) 11:45:40 78

79 A maximum kupac műveletei Rendezés: Csak a kupac-tulajdonság erejéig Keresés: Nem szokásos Vajon csak teljes keresés lehetséges? Elérés: Szekvenciális Bejárás: Az ábrázolás módjától függően -- alapvetően szekvenciális Feldolgozás: Tipikusan a gyökérelemre korlátozódik, és 11:45:40 79 tipikusan törléssel folytatódik

80 A kupac ábrázolása Szétszórtan (Bár nem lehetetlen, de nem alkalmazzák) Fa és cirkuláris lista (hogy a fa gráfjának speciális formája könnyen megőrizhatő legyen törlésnél és beszúrásnál.) Elemenként: 4 mutató BAL (fa) JOBB (fa) SZÜLŐ (fa) Mivel a műveletei gyakran igénylik. ELŐZŐ (cirkuláris lista) (A gyökérelemnél ELŐZŐ a kupac utolsó elemére mutat.) (Láthatóan nagyon körülményes. Pl. bővítésnél még ilyen sok segégmutatóval is nehéz megtalálni az új elem helyét a fában.) 11:45:41 80

81 A kupac ábrázolása Folytonosan (Ez a tipikus.) Egy vektort szokás alkalmazni. (pl. K) Ekkor beszélhetünk: A vektor méretéről: méret(k) A kupac méretéről: kupac_méret(k) Utóbbi a kupacban aktuálisan található elemek száma. A fa szerkezet ábrázolása a K vektorban: Gyökérelem: K[1] (ha kupac_méret(k)>0) BAL(i) = i+i JOBB(i) = i+i+1 SZÜLŐ(i) = [i / 2] (egészrész) Ez a fajta (folytonos) ábrázolás csak addig hatékony, amíg a fa szerkezete (gráfja) megegyezik a kupac adatszerkezetével. (Más (pl. kereső-) fákra nem célszerű alkalmazni.) 11:45:41 81

82 A kupac tulajdonság fenntartása Feltételezés: Egy bizonyos i elem gyermekeinek részfáira már teljesül a kupac tulajdonság. Feladat: Elérni, hogy az i elemhez tartozó részfára is teljesüljön a tulajdonság :45:41 82

83 A kupac tulajdonság fenntartása Feltételezés: Egy bizonyos i-nél nagyobb indexekre már teljesül a kupac tulajdonság. Feladat: Elérni, hogy az i indexben tárolt elemhez tartozó részfára is teljesüljön a tulajdonság. (Esetleg összehasonlításokban: K[i] <== K[i].kulcs) procedure KUPACOL(K,i) 1. l BAL(i) 2. r JOBB(i) 3. if l kupac_méret(k) és K[l]>K[i] then 4. max l 5. else 6. max i 7. end if if r kupac_méret(k) és K[r]>K[max] then 9. max r 10. end if 11. if max i then 12. Csere K[i] és K[max] 13. KUPACOL(K,max) 14. end if end procedure :45:

84 A kupac alkalmazása elsőbbségi sorok ábrázolására Elsőbbségi sor: Minden elemhez tartozik egy kulcs (prioritás) Az elemek feldolgozása a kulcsok csökkenő/növekvő sorrendjében történik Alapvető algoritmusok: BESZÚR(S,x): az x elemet hozzáadja az S sorhoz. MAXIMUM(S): Megadja S legnagyobb elemét. KIVESZ_MAX(S): Megadja és törli S legnagyobb elemét. Alkalmazása pl. Operációs rendszer ütemezési feladatainál, Esemény vezérelt szimuláció 11:45:

85 Az elsőbbségi sor algoritmusai: BESZÚR BESZÚR(S,15) -- Hová kell elhelyezni az új elemet? :45:41 85

86 Az elsőbbségi sor algoritmusai procedure BESZÚR(S,x) 1. if kupac_méret(s) =méret(s) then 2. KIVÉTEL Kupacméret túlcsordulás 3. end if -- pl. folytonos ábrázolás esetén 4. i kupac_méret(s) kupac_méret(s)+1 5. while i>1 és S[SZÜLŐ(i)].kulcs<x.kulcs do 6. S[i] S[SZÜLŐ(i)] i SZÜLŐ(i) end while S[i] x end procedure :45:41 86

87 Az elsőbbségi sor algoritmusai function KIVESZ_MAX(S) 1. if kupac_méret(s) <1 then 2. KIVÉTEL Kupacméret alulcsordulás 3. end if 4. max S[1] 5. S[1] S[kupac_méret(S)] 6. S[kupac_méret(S)] S[kupac_méret(S)]-1 7. KUPACOL(S,1) 8. return max end function 11:45:41 87

88 A kupac alkalmazása rendezéshez 1. változat procedure KUPACRENDEZÉS_1(K) 1. kupac_méret(k) 1 2. for i 2 to méret(k) do 3. BESZÚR(K,K[i]) 4. end for 5. while kupac_méret(k) > 1 do 6. Csere K[1] és K[kupac_méret(K)] 7. kupac_méret(k) kupac_méret(k)-1 8. KUPACOL(K,1) 9. end while end procedure 11:45:41 88

89 A kupac alkalmazása rendezéshez 2. változat procedure KUPACRENDEZÉS_2(K) 1. kupac_méret(k) méret(k) 2. i méret(k)/2 3. while i>0 do 4. KUPACOL(K,i) 5. i i-1 6. end while 7. while kupac_méret(k) > 1 do 8. Csere K[1] és K[i] 9. kupac_méret(k) kupac_méret(k) KUPACOL(K,1) 11. end while 11:45:41 end procedure 89

90 A kupac alkalmazása rendezéshez 1. változat A szürkével jelölt elemekrél lesz a legtöbb dolga. ~ 1*0+2*1+4*2+ +(n/4)*(log n -1) +(n/2)* log n ~ n*log n A feketével jelölt elemeknél semmi dolga. nem volt. 2. változat 11:45:41 ~ (n/2)* 0 + (n/4)*1 + (n/8)* *log n ~ n 90

91 A kupac alkalmazása rendezéshez 3. változat procedure KUPACRENDEZÉS(K) 1. KUPACOT_ÉPíT(K) 2. while kupac_méret(k) > 1 do 3. Csere K[1] és K[i] 4. kupac_méret(k) kupac_méret(k)-1 5. KUPACOL(K,1) 6. end while end procedure procedure KUPACOT_ÉPíT(K) 1. kupac_méret(k) méret(k) 2. i méret(k)/2 3. while i>0 do 4. KUPACOL(K,i) 5. i i-1 6. end while end procedure 11:45:41 91

92 B-fák (Bayer-fák) B-fa: A B-fák lapokból épülnek fel. A lapokon mutatók és adatelemek helyezkednek el. Az adatelemek a kulcsaik szerint növekvő sorrendben vannak egy lapon. A B-fa is kereső fa. Tehát két azonos kulcsú adatelem nincs benne. A p-vel jelölt mutatók levéllapokon NIL értékűek, egyébként mindig olyan lapot címeznek, amely a B-fa egy olyan részfájának a gyökereként képzelhető el, ahol minden adatelem kulcsa a mutatót körülvevő adatelemek kulcsai közé esnek: p 0 a 1 p 1 a 2 p 2 a 3 p 3... p m-1 a m p m 11:45:41 k 1 < k 2 < k 3 <... < k m 92

93 B-fák További tulajdonsággai: A fának van rendje (n), pl. másodrendű Minden lap legfeljebb 2n adatot tartalmazhat A gyökérlapot kivéve minden lapon legalább n adat van A gyökérlapon lehet ennél kevesebb is (legalább egy elem van ott, ha nem üres a fa) Egy lap, vagy levéllap, vagy m+1 rákövetkezője van. m a lapon elhelyezett adatok száma Minden levéllap ugyanazon a szinten helyezkedik el. 11:45:41 93

94 Példa B-fára. (A fa rendje: 2) M E H P T X B D F G I K L N O Q S V W Y Z 11:45:41 94

95 Keresés a B-fában: A keresés minden esetben a gyökérlapon indul (kivéve, ha üres a fa). 11:45:41 A gyökérlapon végrehajtunk egy lineáris keresést. Ha az elem meg van, KÉSZ. Ha nem találtuk meg, a lineáris keresés megáll valahol. Ha a lineáris keresés úgy áll meg, hogy a vizsgált elem nagyobb, mint a keresett, akkor az előtte lévő mutató által mutatott lapon folytatjuk tovább a keresést. Ha a végére értünk (minden kulcs kisebb volt a keresettnél) és nincs meg, az utolsó mutatóval megyünk tovább. Ha utolsó szinten vagyunk és a mutatók értéke NIL és nincs meg az elem, akkor az nincs is a fában. 95

96 B-fa bővítése A bővítés is kereséssel kezdődik. Meg kell határozni azt a levéllapot, ahol a bővítendő elemet el tudjuk helyezni. B-fát új elemmel mindig csak a levéllapon bővíthetünk. 11:45:41 Ha a lapon m<2n, akkor a rendezettség megmarad, a lapon elhelyezzük az új elemet. Ha a lap tele van (m=2n) ugyan, de az új elemet erre a lapra kellene elhelyezni, a fa szerkezete meg kell, hogy változzon. Az új elemet elhelyezzük a már telített levéllapon. Így itt 2n+1 lesz az elemek száma. Meghatározzuk a középső elemet, ezt kiemeljük a 2n+1 elem közül, és megpróbáljuk a szülő lapján elhelyezni. 96

97 B-fa bővítése A lap e mentén ketté fog válni: a középső elem egy szinttel feljebb vándorol. Két levéllapra két mutatót kell a szülőből állítani. A feljebb csúsztatott elem baloldali mutatóját a nála kisebb levéllapra állítjuk, a jobboldalit a nála nagyobb elemeket tartalmazó levéllapra. Ha a probléma többször megismétlődik, és felgyűrűzik a gyökérig, a gyökér is kettéválik, egy elem (a középső) eggyel feljebb kerül, azaz új gyökérlap jön létre egyetlen elemmel. Ez az egyetlen eset, hogy a fa magassága növekszik. 11:45:41 97

98 Példa B-fa bővítésére C 1 N 2 G 3 A 4 H 5 E 6 K 7 Q 8 M 9 F 10 W 11 L 12 T 13 Z 14 D 15 P 16 R 17 X 18 Y 19 S lépés: Üres B-fa 4. lépés: A C G N 5. lépés: G A C H N 8. lépés: G 9. lépés: G M A C E H K N Q A C E H K N Q 11:45:41 98

99 Példa B-fa bővítésére C 1 N 2 G 3 A 4 H 5 E 6 K 7 Q 8 M 9 F 10 W 11 L 12 T 13 Z 14 D 15 P 16 R 17 X 18 Y 19 S lépés: G M 14. lépés: G M T A C E F H K L N Q T W A C E F H K L N Q W Z 15. lépés: D G M T A C E F H K L N Q W Z 11:45:41 99

100 Példa B-fa bővítésére C 1 N 2 G 3 A 4 H 5 E 6 K 7 Q 8 M 9 F 10 W 11 L 12 T 13 Z 14 D 15 P 16 R 17 X 18 Y 19 S lépés: D G M T A C E F H K L N P Q R W X Y Z 20. lépés: M D G Q T 11:45:41 A C E F H K L N P R S W X Y Z 100

101 Törlés B-fából Törlés B-fából: Ha a törlendő elem levéllapon van. Ekkor fizikailag kitöröljük. Ha nem levéllapon van, akkor ezt az adatot helyettesíteni kell egy levéllapbeli elemmel, amely a rendezettséget megtartja. (Pl. jobboldal legbaloldalibb eleme.) Mindkét esetben az egyik levéllapon csökken az elemek száma. 11:45:41 Ha a levéllapon nem csökken n alá az adatok száma: KÉSZ Ha n alá csökken, de valamelyik szomszédnál (ugyanebben a részfában) legalább n+1 elem van, akkor a szomszéd laptól elemeket veszünk át a B-fa jelleg megőrzésével. Szokás úgy vágni, hogy az elemek egyenlően oszoljanak meg. Ez a művelet természetesen érinti az előd lapot is. 101

102 Törlés B-fából Ha a törléssel n alá csökken az elemek száma, és minden szomszédos lapon n elem van, az egyikkel összevonható a törölt elemet tartalmazó lap: ()+n=2. Az elődlapon eggyel kevesebb mutató kell, így eggyel kevesebb elem is: ezt az elemet rárakjuk az összeolvasztott lapra, így 2n db elem lesz a levéllapon. Mivel ilyenkor csökken az előd elemeinek száma, ez felgyűrűződhet a gyökérlapig: a fa magassága ebben az egy esetben csökkenhet. A B-fa magassága csak a gyökér felől csökkenhet, illetve nőhet, nem pedig a levéllapok felől. 11:45:41 102

103 Példa törlésre B-fából 20. lépés: M D G Q T A C E F H K L N P R S W X Y Z T törlése: M D G Q W A C E F H K L N P R S X Y Z 11:45:41 R törlése: 103

104 Példa törlésre B-fából R törlése: M D G Q X A C E F H K L N P SW Y Z H törlése:? M D G Q X A C E F K L N P S W Y Z 11:45:41 E törlése:? 104

105 Példa törlésre B-fából E törlése 1. lépés: M G Q X A C D F K L N P S W Y Z E törlése 2. lépés: G M Q X A C D F K L N P S W Y Z 11:45:41 105

106 B-fák (egy alternatív lehetőség) B-fa: A B-fák lapokból épülnek fel. A lapokon mutatók és adatelemek helyezkednek el. Az adatelemek a kulcsaik szerint növekvő sorrendben vannak egy lapon. A B-fa is kereső fa. Tehát két azonos kulcsú adatelem nincs benne. A p-vel jelölt mutatók levéllapokon NIL értékűek, egyébként mindig olyan lapot címeznek, amely a B-fa egy olyan részfájának a gyökereként képzelhető el, ahol minden adatelem kulcsa a mutatót körülvevő adatelemek kulcsai közé esnek: p 0 a 1 p 1 a 2 p 2 a 3 p 3... p m-1 a m p m 11:45:41 k 1 < k 2 < k 3 <... < k m 106

107 B-fák (egy alternatív lehetőség) További tulajdonsággai: A fának van rendje (n), pl. másodrendű Minden lap legfeljebb 2n mutatót (2 adatot) tartalmazhat A gyökérlapot kivéve minden lapon legalább n mutató van A gyökérlapon lehet ennél kevesebb is (legalább egy elem van ott, ha nem üres a fa) Egy lap, vagy levéllap, vagy m+1 rákövetkezője van. m a lapon elhelyezett adatok száma Minden levéllap ugyanazon a szinten helyezkedik el. Így elkerülhetőek a visszalépések 11:45:41 107

108 Példa B-fa bővítésére (n=2) C 1 N 2 G 3 A 4 H 5 E 6 K 7 Q 8 M 9 F 10 W 11 L 12 T 13 Z 14 D 15 P 16 R 17 X 18 Y 19 S lépés: Üres B-fa 3. lépés: C G N 4. lépés: (4/1) G 4. lépés: (4/2) G C N A C N 7. lépés: G A C E H K N 8. lépés: (8/1) G K A C E 8. lépés: (8/2) G K H N 11:45:41 A C E H N Q 108

109 Példa B-fa bővítésére (n=2) C 1 N 2 G 3 A 4 H 5 E 6 K 7 Q 8 M 9 F 10 W 11 L 12 T 13 Z 14 D 15 P 16 R 17 X 18 Y 19 S lépés: A C E G K H M N Q 10. lépés: (10/1) C G K 10. lépés: (10/2) C G K A E H M N Q A E F H M N Q 11:45:41 109

110 Példa B-fa bővítésére (n=2) C 1 N 2 G 3 A 4 H 5 E 6 K 7 Q 8 M 9 F 10 W 11 L 12 T 13 Z 14 D 15 P 16 R 17 X 18 Y 19 S lépés: C G K 11. lépés: (11/1) G A E F H M N Q C K A E F H M N Q 11. lépés: (11/2) G 11. lépés: (11/3) G C K N C K N A E F H M Q A E F H M Q W 11:45:41 110

111 Példa B-fa bővítésére (n=2) C 1 N 2 G 3 A 4 H 5 E 6 K 7 Q 8 M 9 F 10 W 11 L 12 T 13 Z 14 D 15 P 16 R 17 X 18 Y 19 S lépés: G C K N A E F H L M Q T W 14. lépés: (14/1) G C K N T A E F H L M Q W 11:45:41 111

112 Példa B-fa bővítésére (n=2) C 1 N 2 G 3 A 4 H 5 E 6 K 7 Q 8 M 9 F 10 W 11 L 12 T 13 Z 14 D 15 P 16 R 17 X 18 Y 19 S lépés: (14/2) G C K N T A E F H L M Q W Z 15. lépés: G C K N T 11:45:41 A D E F H L M Q W Z 112

113 Példa B-fa bővítésére (n=2) C 1 N 2 G 3 A 4 H 5 E 6 K 7 Q 8 M 9 F 10 W 11 L 12 T 13 Z 14 D 15 P 16 R 17 X 18 Y 19 S lépés: (16/1) G N C K T A D E F H L M Q W Z 16. lépés: (16/2) G N C K T 11:45:41 A D E F H L M P Q W Z 113

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

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

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

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

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

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

Kupac adatszerkezet. 1. ábra.

Kupac adatszerkezet. 1. ábra. 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

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

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

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

17. A 2-3 fák és B-fák. 2-3 fák

17. A 2-3 fák és B-fák. 2-3 fák 17. A 2-3 fák és B-fák 2-3 fák Fontos jelentősége, hogy belőlük fejlődtek ki a B-fák. Def.: Minden belső csúcsnak 2 vagy 3 gyermeke van. A levelek egy szinten helyezkednek el. Az adatrekordok/kulcsok csak

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

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

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

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

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

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

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

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

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

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

Edényrendezés. Futási idő: Tegyük fel, hogy m = n, ekkor: legjobb eset Θ(n), legrosszabb eset Θ(n 2 ), átlagos eset Θ(n).

Edényrendezés. Futási idő: Tegyük fel, hogy m = n, ekkor: legjobb eset Θ(n), legrosszabb eset Θ(n 2 ), átlagos eset Θ(n). Edényrendezés Tegyük fel, hogy a rendezendő H = {a 1,...,a n } halmaz elemei a [0,1) intervallumba eső valós számok. Vegyünk m db vödröt, V [0],...,V [m 1] és osszuk szét a rendezendő halmaz elemeit a

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 1. előadás

Adatszerkezetek 1. előadás Adatszerkezetek 1. előadás Irodalom: Lipschutz: Adatszerkezetek Morvay, Sebők: Számítógépes adatkezelés Cormen, Leiserson, Rives, Stein: Új algoritmusok http://it.inf.unideb.hu/~halasz http://it.inf.unideb.hu/adatszerk

Részletesebben

Egyirányban láncolt lista

Egyirányban láncolt lista Egyirányban láncolt lista A tárhely (listaelem) az adatelem értékén kívül egy mutatót tartalmaz, amely a következő listaelem címét tartalmazza. A láncolt lista első elemének címét egy, a láncszerkezeten

Részletesebben

A MAXIMUM-KUPACOL eljárás helyreállítja az A[i] elemre a kupactulajdonságot. Az elemet süllyeszti cserékkel mindaddig, amíg a tulajdonság sérül.

A MAXIMUM-KUPACOL eljárás helyreállítja az A[i] elemre a kupactulajdonságot. Az elemet süllyeszti cserékkel mindaddig, amíg a tulajdonság sérül. Kiválasztás kupaccal 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

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

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

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

Absztrakt adatstruktúrák A bináris fák

Absztrakt adatstruktúrák A bináris fák ciós lámpa a legnagyobb élettartamú és a legjobb hatásfokú fényforrásnak tekinthető, nyugodtan mondhatjuk, hogy a jövő fényforrása. Ezt bizonyítja az a tény, hogy ezen a területen a kutatások és a bejelentett

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

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

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

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

Példa 30 14, 22 55,

Példa 30 14, 22 55, Piros-Fekete fák 0 Példa 14, 22 55, 77 0 14 55 22 77 Piros-Fekete fák A piros-fekete fa olyan bináris keresőfa, amelynek minden pontja egy extra bit információt tartalmaz, ez a pont színe, amelynek értékei:

Részletesebben

Struktúra nélküli adatszerkezetek

Struktúra nélküli adatszerkezetek Struktúra nélküli adatszerkezetek Homogén adatszerkezetek (minden adatelem azonos típusú) osztályozása Struktúra nélküli (Nincs kapcsolat az adatelemek között.) Halmaz Multihalmaz Asszociatív 20:24 1 A

Részletesebben

2. Milyen értéket határoz meg az alábbi algoritmus, ha A egy vektor?. (2 pont)

2. Milyen értéket határoz meg az alábbi algoritmus, ha A egy vektor?. (2 pont) A Név: l 2017.04.06 Neptun kód: Gyakorlat vezet : HG BP l 1. Az A vektor tartalmát az alábbi KUPACOL eljárással rendezzük át maximum kupaccá. A={28, 87, 96, 65, 55, 32, 51, 69} Mi lesz az értéke az A vektor

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

Keresőfák és nevezetes algoritmusaikat szemléltető program

Keresőfák és nevezetes algoritmusaikat szemléltető program EÖTVÖS LORÁND TUDOMÁNYEGYETEM INFORMATIKAI KAR Algoritmusok és Alkalmazásaik Tanszék Keresőfák és nevezetes algoritmusaikat szemléltető program Témavezető: Veszprémi Anna Mestertanár Szerző: Ujj László

Részletesebben

15. A VERSENYRENDEZÉS

15. A VERSENYRENDEZÉS 15. A VERSENYRENDEZÉS A versenyrendezés (tournament sort) a maximum-kiválasztó rendezések közé tartozik, ugyanis az elemek közül újra és újra kiválasztja (eltávolítja és kiírja) a legnagyobbat. Az eljárás

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

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

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

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek Tömb Ugyanolyan típusú elemeket tárol A mérete előre definiált kell legyen és nem lehet megváltoztatni futás során Legyen n a tömb mérete. Ekkor:

Részletesebben

end function Az A vektorban elõforduló legnagyobb és legkisebb értékek indexeinek különbségét.. (1.5 pont) Ha üres a vektor, akkor 0-t..

end function Az A vektorban elõforduló legnagyobb és legkisebb értékek indexeinek különbségét.. (1.5 pont) Ha üres a vektor, akkor 0-t.. A Név: l 2014.04.09 Neptun kód: Gyakorlat vezető: HG BP MN l 1. Adott egy (12 nem nulla értékû elemmel rendelkezõ) 6x7 méretû ritka mátrix hiányos 4+2 soros reprezentációja. SOR: 1 1 2 2 2 3 3 4 4 5 6

Részletesebben

5. A gráf, mint adatstruktúra Gráfelméleti bevezető

5. A gráf, mint adatstruktúra Gráfelméleti bevezető 5. A gráf, mint adatstruktúra 5.1. Gráfelméleti bevezető Az irányított gráf (digráf) A G = ( V, rendezett párt irányított gráfnak (digráfnak) nevezzük. A rendezett pár elemeire tett kikötések: V véges

Részletesebben

Számjegyes vagy radix rendezés

Számjegyes vagy radix rendezés Számláló rendezés Amennyiben a rendezendő elemek által felvehető értékek halmazának számossága kicsi, akkor megadható lineáris időigényű algoritmus. A bemenet a rendezendő elemek egy n méretű A tömbben

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

Algoritmusok és adatszerkezetek gyakorlat 09 Rendezések

Algoritmusok és adatszerkezetek gyakorlat 09 Rendezések Algortmusok és adatszerkezetek gyakorlat 09 Rendezések Néhány órával ezelőtt megsmerkedtünk már a Merge Sort rendező algortmussal. A Merge Sort-ról tuduk, hogy a legrosszabb eset dőgénye O(n log n). Tetszőleges

Részletesebben

Programozás alapjai II. (7. ea) C++ Speciális adatszerkezetek. Tömbök. Kiegészítő anyag: speciális adatszerkezetek

Programozás alapjai II. (7. ea) C++ Speciális adatszerkezetek. Tömbök. Kiegészítő anyag: speciális adatszerkezetek Programozás alapjai II. (7. ea) C++ Kiegészítő anyag: speciális adatszerkezetek Szeberényi Imre BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2016.04.05. - 1

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

- Levelek: operandusok - Csomópontok: operátorok. Fenti kifejezés: (x+ (y 10)) * (6 / z) Bináris Keresőfa (BST) Példa bináris keresőfára.

- Levelek: operandusok - Csomópontok: operátorok. Fenti kifejezés: (x+ (y 10)) * (6 / z) Bináris Keresőfa (BST) Példa bináris keresőfára. Fák Fa definíciója Fa(Tree): csomópontok(nodes) halmaza, amelyeket élek(edges) kötnek össze, és teljesülnek az alábbi feltételek: - létezik egy kitűntetett csomópont: a gyökér (root) - a gyökértől különböző

Részletesebben

EGYSZERŰ, NEM IRÁNYÍTOTT (IRÁNYÍTATLAN) GRÁF

EGYSZERŰ, NEM IRÁNYÍTOTT (IRÁNYÍTATLAN) GRÁF Összefoglaló Gráfok / EGYSZERŰ, NEM IRÁNYÍTOTT (IRÁNYÍTATLAN) GRÁF Adott a G = (V, E) gráf ahol a V a csomópontok, E az élek halmaza E = {(x, y) x, y V, x y (nincs hurokél) és (x, y) = (y, x)) Jelölések:

Részletesebben

Buborékrendezés: Hanoi Tornyai: Asszimptótikus fv.ek: Láncolt ábrázolás: For ciklussal:

Buborékrendezés: Hanoi Tornyai: Asszimptótikus fv.ek: Láncolt ábrázolás: For ciklussal: Buborékrendezés: For ciklussal: Hanoi Tornyai: Asszimptótikus fv.ek: Láncolt ábr.: ha p egy mutató típusú változó akkor p^ az általa mutatott adatelem, p^.adat;p^.mut. A semmibe mutató ponter a NIL.Szabad

Részletesebben

Speciális adatszerkezetek. Programozás alapjai II. (8. ea) C++ Tömbök. Tömbök/2. N dimenziós tömb. Nagyméretű ritka tömbök

Speciális adatszerkezetek. Programozás alapjai II. (8. ea) C++ Tömbök. Tömbök/2. N dimenziós tömb. Nagyméretű ritka tömbök Programozás alapjai II. (8. ea) C++ Kiegészítő anyag: speciális adatszerkezetek Szeberényi Imre BME IIT Speciális adatszerkezetek A helyes adatábrázolás választása, a helyes adatszerkezet

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

9. előadás. A táblázat. A táblázatról általában, soros, önátrendező, rendezett és kulcstranszformációs táblázat

9. előadás. A táblázat. A táblázatról általában, soros, önátrendező, rendezett és kulcstranszformációs táblázat . előadás ról általában, soros, önátrendező, rendezett és kulcstranszformációs Adatszerkezetek és algoritmusok előadás 0. április. ról általában,, és Debreceni Egyetem Informatikai Kar. Általános tudnivalók

Részletesebben

Programozás alapjai II. (7. ea) C++

Programozás alapjai II. (7. ea) C++ Programozás alapjai II. (7. ea) C++ Kiegészítő anyag: speciális adatszerkezetek Szeberényi Imre BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2016.04.05. - 1

Részletesebben

Amortizációs költségelemzés

Amortizációs költségelemzés Amortizációs költségelemzés Amennyiben műveleteknek egy M 1,...,M m sorozatának a futási idejét akarjuk meghatározni, akkor egy lehetőség, hogy külön-külön minden egyes művelet futási idejét kifejezzük

Részletesebben

Táblázatok fontosabb műveletei 1

Táblázatok fontosabb műveletei 1 Táblázatok fontosabb műveletei 1 - - Soros táblázat procedure BESZÚR1(TÁBLA, újelem) - - beszúrás soros táblázatba - - a táblázatot egy rekordokat tartalmazó dinamikus vektorral reprezentáljuk - - a rekordok

Részletesebben

R ++ -tree: an efficient spatial access method for highly redundant point data - Martin Šumák, Peter Gurský

R ++ -tree: an efficient spatial access method for highly redundant point data - Martin Šumák, Peter Gurský R ++ -tree: an efficient spatial access method for highly redundant point data - Martin Šumák, Peter Gurský Recenzió: Németh Boldizsár Térbeli indexelés Az adatszerkezetek alapvetően fontos feladata, hogy

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

Algoritmusok vektorokkal keresések 1

Algoritmusok vektorokkal keresések 1 Algoritmusok vektorokkal keresések 1 function TELJES_KERES1(A, érték) - - teljes keresés while ciklussal 1. i 1 2. while i méret(a) és A[i] érték do 3. i i + 1 4. end while 5. if i > méret(a) then 6. KIVÉTEL

Részletesebben

Gyakorló feladatok ZH-ra

Gyakorló feladatok ZH-ra Algoritmuselmélet Schlotter Ildi 2011. április 6. ildi@cs.bme.hu Gyakorló feladatok ZH-ra Nagyságrendek 1. Egy algoritmusról tudjuk, hogy a lépésszáma O(n 2 ). Lehetséges-e, hogy (a) minden páros n-re

Részletesebben

1. ábra. Számláló rendezés

1. ábra. Számláló rendezés 1:2 2:3 1:3 1,2,3 1:3 1,3,2 3,1,2 2,1,3 2:3 2,3,1 3,2,1 1. ábra. Alsó korlát rendezési algoritmusokra Minden olyan rendezési algoritmusnak a futását, amely elempárok egymással

Részletesebben

5. A gráf, mint adatstruktúra Gráfelméleti bevezető

5. A gráf, mint adatstruktúra Gráfelméleti bevezető 5. A gráf, mint adatstruktúra 5.1. Gráfelméleti bevezető Az irányított gráf (digráf) A G = ( V, E) rendezett párt irányított gráfnak (digráfnak) nevezzük. A rendezett pár elemeire tett kikötések: V véges

Részletesebben

Fájlszervezés. Adatbázisok tervezése, megvalósítása és menedzselése

Fájlszervezés. Adatbázisok tervezése, megvalósítása és menedzselése Fájlszervezés Adatbázisok tervezése, megvalósítása és menedzselése Célok: gyors lekérdezés, gyors adatmódosítás, minél kisebb tárolási terület. Kezdetek Nincs általánosan legjobb optimalizáció. Az egyik

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

A 2016/2017 tanévi Országos Középiskolai Tanulmányi Verseny első forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória

A 2016/2017 tanévi Országos Középiskolai Tanulmányi Verseny első forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória Oktatási Hivatal A 2016/2017 tanévi Országos Középiskolai Tanulmányi Verseny első forduló javítási-értékelési útmutató INFORMATIKA II. (programozás) kategória Kérjük a tisztelt tanár kollégákat, hogy a

Részletesebben

Adatszerkezet - műveletek

Adatszerkezet - műveletek Adatszerkezet - műveletek adatszerkezet létrehozása adat felvétele adat keresése adat módosítása adat törlése elemszám visszaadása minden adat törlése (üresít) adatszerkezet felszámolása (megszüntet) +

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

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

Adatbáziskezelés. Indexek, normalizálás NZS 1

Adatbáziskezelés. Indexek, normalizálás NZS 1 Adatbáziskezelés Indexek, normalizálás NZS 1 Fáljszervezés módjai Soros elérés: a rekordok a fájlban tetszőleges sorrendben, például a felvitel sorrendjében helyezkednek el. A rekord azonosítója vagyis

Részletesebben

Algoritmuselmélet. Gráfok megadása, szélességi bejárás, összefüggőség, párosítás. Katona Gyula Y.

Algoritmuselmélet. Gráfok megadása, szélességi bejárás, összefüggőség, párosítás. Katona Gyula Y. Algoritmuselmélet Gráfok megadása, szélességi bejárás, összefüggőség, párosítás Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 2. előadás

Részletesebben

Térinformatikai adatszerkezetek

Térinformatikai adatszerkezetek Térinformatikai adatszerkezetek 1. Pont Egy többdimenziós pont reprezentálható sokféle módon. A választott reprezentáció függ attól, hogy milyen alkalmazás során akarjuk használni, és milyen típusú műveleteket

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

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

Programozás alapjai 9. előadás. Wagner György Általános Informatikai Tanszék

Programozás alapjai 9. előadás. Wagner György Általános Informatikai Tanszék 9. előadás Wagner György Általános Informatikai Tanszék Leszámoló rendezés Elve: a rendezett listában a j-ik kulcs pontosan j-1 kulcsnál lesz nagyobb. (Ezért ha egy kulcsról tudjuk, hogy 27 másiknál nagyobb,

Részletesebben

angolul: greedy algorithms, románul: algoritmi greedy

angolul: greedy algorithms, románul: algoritmi greedy Mohó algoritmusok angolul: greedy algorithms, románul: algoritmi greedy 1. feladat. Gazdaságos telefonhálózat építése Bizonyos városok között lehet direkt telefonkapcsolatot kiépíteni, pl. x és y város

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

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

Algoritmuselmélet. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 6. Algorimuselméle Keresőfák, piros-fekee fák Kaona Gyula Y. Sámíásudományi és Információelmélei Tansék Budapesi Műsaki és Gadaságudományi Egyeem. előadás Kaona Gyula Y. (BME SZIT) Algorimuselméle. előadás

Részletesebben

Fák 3. előadás. (Horváth Gyula anyagai felhasználásával)

Fák 3. előadás. (Horváth Gyula anyagai felhasználásával) Fák 3. előadás (Horváth Gyula anyagai felhasználásával) Fák Bináris fa "fordított" ábrázolása, a levelektől vissza: Ha a bináris fa elemei címezhetőek is (pl. sorszámuk van), akkor elképzelhető egy olyan

Részletesebben

21. Adatszerkezetek Az adattípus absztrakciós szintjei Absztrakt adattípus (ADT) Absztrakt adatszerkezet (ADS) Egyszerű adattípusok Tömbök

21. Adatszerkezetek Az adattípus absztrakciós szintjei Absztrakt adattípus (ADT) Absztrakt adatszerkezet (ADS) Egyszerű adattípusok Tömbök 2. Adatszerkezetek Az adattípus absztrakciós szintjei http://people.inf.elte.hu/fekete/docs_/adt_ads.pdf Absztrakt adattípus (ADT) Az adattípust úgy specifikáljuk, hogy szerkezetére, reprezentálására,

Részletesebben

Tartalomjegyzék. Köszönetnyilvánítás. 1. Az alapok 1

Tartalomjegyzék. Köszönetnyilvánítás. 1. Az alapok 1 Köszönetnyilvánítás Bevezetés Kinek szól a könyv? Elvárt előismeretek A könyv témája A könyv használata A megközelítés alapelvei Törekedjünk az egyszerűségre! Ne optimalizáljunk előre! Felhasználói interfészek

Részletesebben

Körkörös listák. fej. utolsó. utolsó. fej

Körkörös listák. fej. utolsó. utolsó. fej Körkörös listák fej utolsó fej utolsó Példa. Kiszámolós játék. Körben áll n gyermek. k-asával kiszámoljuk őket. Minden k-adik kilép a körből. Az nyer, aki utolsónak marad. #include using namespace

Részletesebben

Algoritmusok bonyolultsága

Algoritmusok bonyolultsága Algoritmusok bonyolultsága 9. előadás http://www.ms.sapientia.ro/~kasa/komplex.htm 1 / 18 Közelítő algoritmusok ládapakolás (bin packing) Adott n tárgy (s i tömeggel) és végtelen sok 1 kapacitású láda

Részletesebben

Programozási segédlet

Programozási segédlet Programozási segédlet Programozási tételek Az alábbiakban leírtam néhány alap algoritmust, amit ismernie kell annak, aki programozásra adja a fejét. A lista korántsem teljes, ám ennyi elég kell legyen

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

5. SOR. Üres: S Sorba: S E S Sorból: S S E Első: S E

5. SOR. Üres: S Sorba: S E S Sorból: S S E Első: S E 5. SOR A sor adatszerkezet is ismerős a mindennapokból, például a várakozási sornak számos előfordulásával van dolgunk, akár emberekről akár tárgyakról (pl. munkadarabokról) legyen szó. A sor adattípus

Részletesebben

Miről lesz ma szó? A PROGAMOZÁS ALAPJAI 1. Dinamikus adatszerkezetek. Dinamikus adatszerkezetek. Önhivatkozó struktúrák. Önhivatkozó struktúrák

Miről lesz ma szó? A PROGAMOZÁS ALAPJAI 1. Dinamikus adatszerkezetek. Dinamikus adatszerkezetek. Önhivatkozó struktúrák. Önhivatkozó struktúrák 2012. március 27. A PROGAMOZÁS ALAPJAI 1 Vitéz András egyetemi adjunktus BME Híradástechnikai Tanszék vitez@hit.bme.hu Miről lesz ma szó? Dinamikus adatszerkezetek Önhivatkozó struktúra keresés, beszúrás,

Részletesebben

10. Egy családfában csak a férfiakat és fiúgyerekeket ábrázoljuk, egy közös ősből kiindulva. Készíts

10. Egy családfában csak a férfiakat és fiúgyerekeket ábrázoljuk, egy közös ősből kiindulva. Készíts 1. Egy családfában csak a férfiakat és fiúgyerekeket ábrázoljuk, egy közös ősből kiindulva. Készíts programot, amely felépíti a fát, majd megszámolja, hogy hány embernek nincsenek gyerekei! 2. Egy családfában

Részletesebben

Egyesíthető prioritási sor

Egyesíthető prioritási sor Egyesíthető prioritási sor Értékhalmaz: EPriSor = S E, E-n értelmezett a lineáris rendezési reláció. Műveletek: S,S 1,S 2 : EPriSor, x : E {Igaz} Letesit(S, ) {S = /0} {S = S} Megszuntet(S) {} {S = S}

Részletesebben

A lista adatszerkezet A lista elemek egymásutániságát jelenti. Fajtái: statikus, dinamikus lista.

A lista adatszerkezet A lista elemek egymásutániságát jelenti. Fajtái: statikus, dinamikus lista. Lista adatszerkezet A lista adatszerkezet jellemzői 1 Különböző problémák számítógépes megoldása során gyakran van szükség olyan adatszerkezetre, amely nagyszámú, azonos típusú elem tárolására alkalmas,

Részletesebben

2. Visszalépéses keresés

2. Visszalépéses keresés 2. Visszalépéses keresés Visszalépéses keresés A visszalépéses keresés egy olyan KR, amely globális munkaterülete: egy út a startcsúcsból az aktuális csúcsba (az útról leágazó még ki nem próbált élekkel

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

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

Felvételi vizsga mintatételsor Informatika írásbeli vizsga BABEȘ BOLYAI TUDOMÁNYEGYETEM MATEMATIKA ÉS INFORMATIKA KAR A. tételsor (30 pont) Felvételi vizsga mintatételsor Informatika írásbeli vizsga 1. (5p) Egy x biten tárolt egész adattípus (x szigorúan pozitív

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

3/1. tétel: Linearis adatszerkezetek és műveleteik

3/1. tétel: Linearis adatszerkezetek és műveleteik 3/1. tétel: Linearis adatszerkezetek és műveleteik A gyűjtemények (collections) közé sorolhatók a halmaz (set), a csomag (bag, multiset) és a vector (sequence, list). Gyűjtemények általánosan Értelmezzük

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

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