Hierarchikus adatszerkezetek

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

Download "Hierarchikus adatszerkezetek"

Átírás

1 5. előadás

2

3 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) 2. a {A\{r}} elem egyszer és csak egyszer lehet végpont, azaz a {A\{r}}-hez b a, b A: R(b,a)

4 Hierarchikus adatszerkezetek 3. a {A\{r}} elem r-ből elérhető, azaz a1, a2, an A, an = a : R(r,a1), R(a1, a2) R(an-1, an) A hierarchikus adatszerkezetek valamilyen értelemben a lista általánosításai.

5 Hierarchikus adatszerkezetek Egy elemnek akárhány rákövetkezője lehet, de minden elemnek csak egyetlen megelőző eleme van, azaz az adatelemek között egy-sok jellegű kapcsolat áll fenn. Minden adatelem csak egy helyről érhető el, de egy adott elemből tetszés szerinti számú adatelem látható. (Pl. fa, összetett lista, B-fa)

6 Fák A fa egy hierarchikus adatszerkezet, mely véges számú csomópontból áll, és igazak a következők: Két csomópont között a kapcsolat egyirányú, az egyik a kezdőpont, a másik a végpont. Van a fának egy kitüntetett csomópontja, ami nem lehet végpont. Ez a fa gyökere. Az összes többi csomópont pontosan egyszer végpont.

7 Fák A fa rekurzív definíciója: A fa vagy üres, vagy Van egy kitüntetett csomópontja, ez a gyökér. A gyökérhez 0 vagy több diszjunkt fa kapcsolódik. Ezek a gyökérhez tartozó részfák. A fával kapcsolatos algoritmusok gyakran rekurzívak.

8 gyökér 0.szint a 1.szint b c részfa levél d e f 3.szint g

9 Fák Az adatszerkezetben a fa csúcsai az adatelemeknek felelnek meg, az élek az adatelemek egymás utáni sorrendjét határozzák meg - egy csomópontból az azt követőbe húzott vonal egy él. A gyökérelem a fa első eleme, amelynek nincs megelőzője. Levélelem a fa azon eleme, amelynek nincs rákövetkezője. Közbenső elem az összes többi adatelem.

10 Fák Minden közbenső elem egy részfa gyökereként tekinthető, így a fa részfákra bontható: részfa: t részfája "a" -nak, ha "a" a gyökere, azaz közvetlen megelőző eleme t -nek, vagy t részfája "a" valamely részfájának elágazásszám: közvetlen részfák száma A fa szintje a gyökértől való távolságot mutatja. A gyökérelem a 0. szinten van. A gyökérelem rákövetkezői az 1. szinten. stb. A fa szintjeinek száma a fa magassága.

11 Fák További definíciók: Csomópont foka: a csomóponthoz kapcsolt részfák száma Fa foka: a fában található legnagyobb fokszám Levél: 0 fokú csomópont Elágazás(közbenső v. átmenő csomópont): >0 fokú csomópont Szülő (ős) : kapcsolat kezdőpontja (csak a levelek nem szülők) Gyerek (leszármazott): kapcsolat végpontja (csak a gyökér nem gyerek) Ugyanazon csomópont leszármazottai egymásnak testvérei Szintszám: gyökértől mért távolság. A gyökér szintszáma 0. Ha egy csomópont szintszáma n, akkor a hozzá kapcsolódó csomópontok szintszáma n+1.

12 Fák útvonal: az egymást követő élek sorozata Minden levélelem a gyökértől pontosan egy úton érhető el. ág: az az útvonal, amely levélben végződik Üresfa az a fa, amelyiknek egyetlen eleme sincs. ( ) Fa magassága: a levelekhez vezető utak közül a leghosszabb. Mindig eggyel nagyobb, mint a legnagyobb szintszám. Minimális magasságú az a fa, amelynek a magassága az adott elemszám esetén a lehető legkisebb. (Valójában ilyenkor minden szintre a maximális elemszámú elemet építjük be.)

13 Fák Egy fát kiegyensúlyozottnak nevezünk, ha csomópontjai azonos fokúak, és minden szintjén az egyes részfák magassága nem ingadozik többet egy szintnél. Rendezett fa: ha az egy szülőhöz tartozó részfák sorrendje lényeges, azok rendezettek.

14 Feladat Maximum hány csomópont helyezhető el egy f fokú, m magasságú fában? f M 1 1 f 1

15 Fák műveletei Lekérdező Üres_e logikai értéket ad vissza Gyökérelem visszaadja a gyökér adatelemet Keres(e) adott e adatelemet keres, egy ilyen elem mutatóját adja vissza

16 Fák műveletei Módosító Üres Beszúr(e) MódosítGyökér(e) Töröl(e) TörölFa létrehoz egy üres fát adott e adatelemet beszúr adott e adatelem lesz a gyökér törli az e adatelemet (egy előfordulást összes előfordulást) törli az összes elemet

17 Fák műveletei Fák bejárása: A fa csomópontjaiban általában adatokat tárolunk. Ezeket valamilyen sorrendben szeretnénk egymás után elérni. Általános fa esetén a bejárási stratégiák: Gyökérkezdő (preorder): gyökér, majd a részfák bejárása sorban (pl. balról jobbra) Gyökérvégző (postorder): részfák bejárása sorban, majd a gyökér

18 a Preorder bejárás b c a b c d g e f d e f g

19 a Postorder bejárás b c b g d e f c a d e f g

20 Bináris fák A bináris fa olyan fa, amelynek csúcspontjaiból maximum 2 részfa nyílik (azaz fokszáma 2). A szülő mindig a gyerekek között helyezkedik el => van értelme a gyökérközepű (inorder) bejárásnak.

21 Bináris fa a b c d e f g h i j

22 Bináris fák bejárása A bejárási stratégiák: Gyökérkezdő (preorder): gyökér, bal részfa, jobb részfa Gyökérközepű (inorder): bal részfa, gyökér, jobb részfa Gyökérvégző (postorder): bal részfa, jobb részfa, gyökér

23 Preorder a jobb részfa gyökér b c d e f bal részfa g h a b d c e g h i j f i j

24 Inorder a jobb részfa gyökér b c d e f bal részfa g h d b a g e i h j c f i j

25 Postorder a jobb részfa gyökér b c d e f bal részfa g h d b g i j h e f c a i j

26 Reprezentáció Általános fa esetén pl. bal-gyermek, jobb-testvér Minden csomóponthoz tartozik három mutató: bal-gyermek a csúcs gyermekei közül a bal szélsőre mutat jobb-testvér a csúcsnak arra a testvérére mutat, amelyik közvetlenül jobbra mellette található (azonos szinten ugyanahhoz az őshöz tartozó következő szomszédos elemre) szülő

27 Általános fa a b c d e f g

28 nil a nil Bal-gyermek jobb-testvér nil b c nil d nil e nil f nil nil g nil

29 Reprezentáció Általános fa esetén például multilista: Minden csomóponthoz tartozik egy lineáris lista, amelynek első eleme az adat, a többi a kapcsolatok listája Annyi kapcsolati elem, ahány fokú a csomópont. A kapcsolatok újabb csomópontokra, illetve lineáris listákra mutatnak.

30 Általános fa a b c d e f g

31 a Multilista nil b nil c d nil nil g nil e nil nil f

32 Reprezentáció Korlátos általános fa esetén pl. aritmetikai ábrázolás is lehetséges láncolt, ahol minden csomópontnak van pontosan k db mutatója a max. k gyerekre

33 Reprezentáció Bináris fa Aritmetikai ábrázolás: szintfolytonosan egy tömbben: ind(bal(c)) = 2* ind(c) ind(jobb(c)) = 2* ind(c)

34 Reprezentáció Bináris fa Láncolt mutató a bal és a jobb gyerekre (esetenként a szülőre is):

35 Bináris fák Egy bináris fa akkor tökéletesen kiegyensúlyozott, ha minden elem bal-, illetve jobboldali részfájában az elemek száma legfeljebb eggyel tér el. Teljesnek nevezünk egy bináris fát, ha minden közbenső elemének pontosan két leágazása van. Majdnem teljes: ha csak a levelek szintjén van esetleg hiány.

36 Bináris fák Lehetséges műveletek: üres fa inicializálása az üres fa gyökérelemének definiálása a gyökér és a két részfa csoportosítása (az egyik részfa lehet üres) egy elem hozzáadása egy olyan elem bal (jobb) oldalához, amelynek nincs bal (jobb) oldali leágazása jelezzük, ha a fa üres jelezzük, ha nincs bal (jobb) oldali leágazása az aktuális elemnek

37 Bináris fák Műveletek (folytatás): a gyökérelem elérése egy adott elem elérése, egy elem bal (jobb) oldali részfájának az elérése a gyökérből egy fa kettéválasztása egy elemre (régi gyökér) és egy vagy két részfára (attól függően, hogy a gyökérnek egy vagy két leágazása volt) egy (rész-)fa törlése (a fa lehet egyetlen elem?) egy részfa helyettesítése egy másik részfával

38 Bináris fák Kiszámítási- vagy kifejezésfa Az a struktúra, amely egy nyelv szimbólumai és különböző műveletei közötti precedenciát jeleníti meg. Aritmetikai kifejezések ábrázolására használják. Minden elágazási pont valamilyen operátort, A levélelemek operandusokat tartalmaznak. A részfák közötti hierarchia fejezi ki az operátorok precedenciáját, illetve a zárójelezést.

39 Kifejezés fák (a + b) * c - d / e - * / + c d e a b

40 Példa Legyen adott egy kifejezés lengyel formája az lf sorban, állítsuk elő az f kifejezésfát belőle! a b + + a b

41 Példa Lengyel forma a b c + * * a + b c

42 Fa_generál Használjuk a fák vermét! v.empty not lf.isempty e lf.out t operandus(e)? v akt levélgen(e) v.push(t) operátor(e)? jobb v.pop bal v.pop összefűz(bal,e,jobb,t) v.push(t) fa v.pop

43 összefűz(f1,e,f2,t) levélgen(e) összefűz(,e,,fa) return fa new(t) t.tart e t.jobb f2 t.bal f1

44

45 Rendezési (kereső) fák A rendezési fa (vagy keresőfa) olyan bináris fa adatszerkezet, amelynek kialakítása a különböző adatelemek között meglévő rendezési relációt követi. A fa felépítése olyan, hogy minden csúcsra igaz az, hogy a csúcs értéke nagyobb, mint tetszőleges csúcsé a tőle balra lévő leszálló ágon és a csúcs értéke kisebb minden, a tőle jobbra lévő leszálló ágon található csúcs értékénél. A T fa bármely x csúcsára és bal(x) bármely y csúcsára és jobb(x) bármely z csúcsára: y<x<z

46 Rendezési (kereső) fák A rendezési fa az őt tartalmazó elemek beviteli sorrendjét is visszatükrözi. Ugyanazokból az elemekből különböző rendezési fák építhetők fel.

47 6,3,1,9,7,5,

48 9,7,6,5,10,3,

49 Rendezési (kereső) fák Fontos tulajdonság: inorder bejárással a kulcsok rendezett sorozatát kapjuk. Az algoritmus pszeudokódja: Inorder-fa-bejárás(x) if x NIL then Inorder-fa-bejárás(bal[x]) print(kulcs[x]) Inorder-fa-bejárás(jobb[x]) Egy T bináris keresőfa összes értékének kiíratásához: Inorder-fa-bejárás(gyökér[T])

50 Rendezési (kereső) fák Az algoritmus helyessége a bináris-kereső-fa tulajdonságból indukcióval adódik. Egy n csúcsú bináris kereső fa bejárása O(n) ideig tart, mivel a kezdőhívás után a fa minden csúcspontja esetében pontosan kétszer (rekurzívan) meghívja önmagát, egyszer a baloldali részfára, egyszer a jobboldali részfára.

51 Műveletek Keresés: A T fában keressük a k kulcsú elemet (csúcsot); ha ez létezik, akkor visszaadja az elem címét, egyébként NIL-t. Az algoritmust megadjuk rekurzív és iteratív megoldásban is, ez utóbbi a legtöbb számítógépen hatékonyabb.

52 Műveletek Keresés: A rekurzív algoritmus pszeudokódja: Fában-keres(x, k) if x = NIL or k = kulcs[x] then return x if k < kulcs[x] then return Fában-keres(bal[x], k) else return Fában-keres(jobb[x], k)

53 Műveletek Keresés: Az iteratív algoritmus pszeudokódja: Fában-iteratívan-keres(x, k) while x NIL and k kulcs[x] do if k < kulcs[x] then x bal[x] else x jobb[x] return x

54 Műveletek Minimum keresés: tegyük fel, hogy T NIL Addig követjük a baloldali mutatókat, amíg NIL mutatót nem találunk. Az iteratív algoritmus pszeudokódja: Fában-minimum (T) x gyökér[t] while bal[x] NIL do x bal[x] return x Helyessége a bináris-kereső-fa tulajdonságból következik. Lefut O(h) idő alatt, ahol h a fa magassága.

55 Műveletek Maximum keresés: tegyük fel, hogy T NIL Addig követjük a jobboldali mutatókat, amíg NIL mutatót nem találunk. Az iteratív algoritmus pszeudokódja: Fában-maximum (T) x gyökér[t] while jobb[x] NIL do x jobb[x] return x Helyessége a bináris-kereső-fa tulajdonságból következik. Lefut O(h) idő alatt, ahol h a fa magassága.

56 Műveletek Következő elem: x csúcs rákövetkezőjét adja vissza, ha van, NIL különben if jobb[x] NIL then return Fában-minimum (jobb[x]) például a 10 rákövetkezője a

57 Műveletek Következő elem: x csúcs rákövetkezőjét adja vissza, ha van, NIL különben. y szülő[x] while y NIL és x = jobb[y] do x y y szülő[x] return y rákövetkezője a Nem biztos, hogy gyökér!

58 Műveletek Következő elem: x csúcs rákövetkezőjét adja vissza, ha van, NIL különben. Fában-következő(T, x) if jobb[x] NIL then return Fában-minimum (jobb[x]) y szülő[x] while y NIL és x = jobb[y] do x y y szülő[x] return y

59 Műveletek Fában-következő(T, x) futási ideje h magasságú fák esetén O(h). Megelőző elem: x csúcs megelőzőjét adja vissza, ha van, NIL különben. Fában-megelőző(T, x) házi feladat!

60 Műveletek Tétel: A dinamikus halmazokra vonatkozó Keres, Minimum, Maximum, Következő és Előző műveletek h magasságú bináris keresőfában O(h) idő alatt végezhetők el. Bizonyítás: az előzőekből következik.

61 Műveletek Beszúrás: A T bináris keresőfába a p csúcsot szúrjuk be. Kezdetben: kulcs[p]=k, bal[p]= NIL, jobb[p]= NIL, szülő[p] = NIL Feltételezzük, hogy a fában még nincs k kulcsú csúcs! (Ha ezt is ellenőrizni kell: házi feladat!)

62 Műveletek Fába beszúr: szúrjuk be például a 36-t! 1. megkeressük a helyét: 21 <

63 Műveletek Fába beszúr: szúrjuk be például a 36-t! 1. megkeressük a helyét: <

64 Műveletek Fába beszúr: szúrjuk be például a 36-t! 1. megkeressük a helyét: > a 42 balgyerekének kell befűzni! 11 16

65 Műveletek Fába beszúr: szúrjuk be például a 36-t! 2. beláncoljuk:

66 Műveletek Fába-beszúr(T,p) y NIL; x gyökér[t] whilex NIL do y x if kulcs[p] < kulcs[x] then x bal[x] else x jobb[x] szülő[p] y if y = NIL then gyökér[t] p else if kulcs[p] < kulcs[y] then bal[y] p else jobb[y] p megkeressük a helyét beláncoljuk

67 Műveletek Törlés: A T bináris keresőfából a p csúcsot töröljük. Lehetőségek: 1. p-nek még nincs gyereke: szülőjének mutatóját NIL-re állítjuk 2. p-nek egy gyereke van: a szülője és a gyermeke között építünk ki kapcsolatot 3. p-nek két gyereke van: átszervezzük a fát: kivágjuk azt a legközelebbi rákövetkezőjét, aminek nincs balgyereke, így 1., vagy 2. típusú törlés, majd ennek tartalmát beírjuk p-be.

68 Műveletek Törlés: töröljük ki például a 11-t! nek még nincs gyereke szülőjének mutatóját NIL-re állítjuk

69 Műveletek Törlés: töröljük ki például a 12-t! nek egy gyereke van a szülője és a gyermeke között építünk ki kapcsolatot

70 Műveletek Törlés: töröljük ki például a 12-t! nek egy gyereke van a szülője és a gyermeke között építünk ki kapcsolatot

71 Műveletek Törlés: töröljük ki például az 5-t! nek két gyereke van: átszervezzük a fát: kivágjuk azt a legközelebbi rákövetkezőjét, (aminek nincs balgyereke), így I., vagy II. típusú törlés, majd ennek tartalmát beírjuk az eddigi 5-be (ha lenne balgyereke, akkor nem ez lenne a legközelebbi rákövetkező) 7

72 Műveletek Törlés: töröljük ki például az 5-t! nek két gyereke van: átszervezzük a fát: kivágjuk azt a legközelebbi rákövetkezőjét, (aminek nincs balgyereke), így I., vagy II. típusú törlés, majd ennek tartalmát beírjuk az eddigi 5-be 7

73 Műveletek Törlés: töröljük ki például az 5-t! nek két gyereke van: átszervezzük a fát: kivágjuk azt a legközelebbi rákövetkezőjét, aminek nincs balgyereke, így I., vagy II. típusú törlés, majd ennek tartalmát beírjuk az eddigi 5-be 7

74 Műveletek Törlés: töröljük ki például az 5-t! nek két gyereke van: átszervezzük a fát: kivágjuk azt a legközelebbi rákövetkezőjét, aminek nincs balgyereke, így I., vagy II. típusú törlés, majd ennek tartalmát beírjuk az eddigi 5-be 7 Az algoritmus pszeudokódja:

75 Műveletek Fából-töröl (T,p) (feltesszük, hogy p a T-ben egy létező csúcs) if bal[p] = NIL vagy jobb[p] = NIL then y p -- 0 vagy 1 gyerek else y Fában-következő(T, p) -- 2 gyerek if bal[y] NIL then x bal[y] -- x az y 0 vagy 1 gyerekére else x jobb[y] -- mutat if x NIL -- ha volt (egy) gyereke, then szülő[x] szülő[y] -- befűzzük

76 Műveletek Fából-töröl (T,p) folytatás: if szülő[y] =NIL then gyökér[t ] x -- ha a gyökeret töröltük else if y = bal[szülő[y]] -- y szülőjének megfelelő then bal[szülő[y]] x -- oldali mutatóját else jobb[szülő[y]] x -- x-re állítjuk if y p -- ha a log. törlendő fiz. törlendő then kulcs[p] kulcs[y] -- és a további mezők is return y

77

78 Keresések Sok adat esetén milyen adatszerkezetben lehet hatékonyan keresni, módosítani, beszúrni és törölni? A gyakorlat azt mutatja, hogy fákban és táblázatokban.

79 Keresések Szekvenciális keresések a keresési idő n-nel arányos: O(n) rendezetlen tömbök láncolt listák Bináris keresés rendezett tömbök a keresési idő log 2 n -nel arányos: O(log 2 n)

80 Keresések Rendezett tömb létrehozása elem hozzáadása megfelelő helyre megkeresem a pozícióját: eltolom: összesen: vagyis: c 1 log 2 n c 2 n c 1 log 2 n + c 2 n c 2 n Minden elem hozzáadása a rendezett tömbhöz: O(n) Nem lehetne-e a rendezett tömböt olcsóbb beszúrásokkal karbantartani? domináns

81 Keresések Szótár (dictionary) egy adatszerkezet, ha értelmezve vannak a következő műveletek: Keres Beszúr Töröl (Tól-ig)

82 Keresések Prioritásos sor egy adatszerkezet, ha az előzőeken kívül értelmezve vannak a következők is: Minimum Maximum Előző Rákövetkező Ezzel lehet rendezni

83 Keresések Adatok a struktúrában: kulcs + mezők (rekordok) Lehetőségek: I. minden kulcs különböző II. lehetnek azonos kulcsok A. rekordok: (k, m1, m2,..mn) B. csak a kulcsokat nézzük: k Mi most az I. és B.-t választjuk.

84 Bináris keresőfák Mennyire hatékony a bináris keresőfa? Minden művelet egy útvonal bejárását jelenti a fában. A h magasságú fákban O(h) idő alatt hajtódnak végre. Ahogy elemeket beszúrunk és törlünk, változik a fa magassága a műveletek ideje is. Itt ugyanis nem tudom a fa átlagos magasságát. Ha csak beszúrások a felépítés során, könnyebben tudok elemezni:

85 Bináris keresőfák Legyen adva n különböző kulcs, ebből bináris keresőfát építünk. Ha itt minden sorrend egyformán valószínű, akkor a kapott fát véletlen építésű bináris keresőfának nevezzük. Bizonyítható, hogy egy n kulcsból véletlen módon épített bináris keresőfa átlagos magassága O(log 2 n).

86 Bináris keresőfák Tegyük fel, hogy a véletlen sorrendű 1,2, n adatokból építjük fel a t keresőfát. Mennyi az átlagos csúcsmagasság? = Hány összehasonlítással lehet felépíteni a t keresőfát átlagosan? Építsünk keresőfát

87 Bináris keresőfák 5

88 0 5 Bináris keresőfák 2

89 Bináris keresőfák 9

90 0 Bináris keresőfák

91 0 Bináris keresőfák

92 0 Bináris keresőfák

93 0 Bináris keresőfák

94 0 Bináris keresőfák

95 0 Bináris keresőfák

96 0 Bináris keresőfák

97 0 Bináris keresőfák

98 0 5 Bináris keresőfák

99 0 Bináris keresőfák p= 5,2,9,3,11,1,6,10,8,7,4 esetén: Ö(p)= (1+1) + ( )+ (3+3+3)+4=

100 Bináris keresőfák Határozzuk meg ennek az átlagát! Jelölés: f(n): n adatból hány összehasonlítással lehet keresőfát építeni f(n k) : először a k érték jön (k az input sorozat első eleme) Tegyük fel, hogy minden sorozat egyforma valószínűségű.

101 Bináris keresőfák 1 n f ( n) f ( n k) n k 1

102 Bináris keresőfák k-1 k n-k összehasonlítás f(k-1) f(n-k) k-1 n-k

103 Bináris keresőfák

104 Bináris keresőfák Belátható, hogy f(n) < 2n * ln n 1,39 n log 2 n Tehát a fa átlagos csúcsmagassága 1,39 log 2 n

105 Bináris keresőfák A sorrend megőrzése fontos ez a transzformáció megőrzi a keresőfát:

106 Bináris keresőfák A sorrend megőrzése fontos ez a transzformáció megőrzi a keresőfát: Egy forgatást hajtottunk végre a T és O csúcsok körül.

107 Bináris keresőfák A forgatások lehetnek bal- vagy jobb-forgatások Mindkét fára az inorder bejárás: A x B y C jobbra-forgat balra-forgat

108 Bináris keresőfák A forgatások lehetnek bal- vagy jobb-forgatások Mindkét fára az inorder bejárás: A x B y C jobbra-forgat balra-forgat Ebben a forgatásban, a B-t az x jobb gyerekéből át kellett mozgatni az y bal gyerekének!

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 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Hierarchikus adatszerkezetek

Hierarchikus adatszerkezetek 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Adatszerkezetek Bevezetés Adatszerkezet Adatszerkezet típusok Műveletek Bonyolultság

Adatszerkezetek Bevezetés Adatszerkezet Adatszerkezet típusok Műveletek Bonyolultság datszerkezetek Bevezetés datszerkezet adatok rendszerének matematikai, logikai modellje elég jó ahhoz, hogy tükrözze a valós kapcsolatokat elég egyszerű a kezeléshez datszerkezet típusok Tömbök lineáris

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

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

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

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 5. Vágható-egyesíthető Halmaz adattípus megvalósítása önszervező

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

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

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

- 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

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

III. Gráfok. 1. Irányítatlan gráfok:

III. Gráfok. 1. Irányítatlan gráfok: III. Gráfok 1. Irányítatlan gráfok: Jelölés: G=(X,U), X a csomópontok halmaza, U az élek halmaza X={1,2,3,4,5,6}, U={[1,2], [1,4], [1,6], [2,3], [2,5], [3,4], [3,5], [4,5],[5,6]} Értelmezések: 1. Fokszám:

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

Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar Algoritmizálás Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar horvath@inf.u-szeged.hu 0.1. Az algoritmikus tudás szintjei Ismeri (a megoldó algoritmust) Érti Le tudja pontosan

Részletesebben

Önszervező bináris keresőfák

Önszervező bináris keresőfák Önszervező bináris keresőfák Vágható-egyesíthető halmaz adattípus H={2,5,7,11,23,45,75} Vag(H,23) Egyesit(H1,H2) H1= {2,5,7,11} H2= {23,45,75} Vágás A keresési útvonal mentén feldaraboljuk a fát, majd

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

Bináris keresőfák. Adat : M Elemtip és Elemtip-on értelmezett egy lineáris rendezési reláció,

Bináris keresőfák. Adat : M Elemtip és Elemtip-on értelmezett egy lineáris rendezési reláció, Bináris keresőfák Az F = (M,R,Adat) absztrakt adatszerkezetet bináris keresőfának nevezzük, ha F bináris fa, R = {bal, jobb, apa}, bal, jobb, apa : M M, Adat : M Elemtip és Elemtip-on értelmezett egy lineáris

Részletesebben

... fi. ... fk. 6. Fabejáró algoritmusok Rekurzív preorder bejárás (elsőfiú-testvér ábrázolásra)

... fi. ... fk. 6. Fabejáró algoritmusok Rekurzív preorder bejárás (elsőfiú-testvér ábrázolásra) 6. Fabejáró algoritmusok 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

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

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

Módosítható Prioritási sor Binomiális kupaccal. Wednesday, March 21, 12

Módosítható Prioritási sor Binomiális kupaccal. Wednesday, March 21, 12 Módosítható Prioritási sor Binomiális kupaccal modosit(x,k) {! if (k>x.kulcs) {!! x.kulcs=k ;!! y=x!! z=x.apa ;!! while(z!=nil and y.kulcs

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

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

Adatszerkezetek 1. Dr. Iványi Péter

Adatszerkezetek 1. Dr. Iványi Péter Adatszerkezetek 1. Dr. Iványi Péter 1 Adat Adat minden, amit a számítógépünkben tárolunk és a külvilágból jön Az adatnak két fontos tulajdonsága van: Értéke Típusa 2 Adat típusa Az adatot kódoltan tároljuk

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

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

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

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

Web-programozó Web-programozó

Web-programozó Web-programozó Az Országos Képzési Jegyzékről és az Országos Képzési Jegyzékbe történő felvétel és törlés eljárási rendjéről szóló 133/2010. (IV. 22.) Korm. rendelet alapján. Szakképesítés, szakképesítés-elágazás, rész-szakképesítés,

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

Összetett programozási tételek Rendezések Keresések PT egymásra építése. 10. előadás. Programozás-elmélet. Programozás-elmélet 10.

Összetett programozási tételek Rendezések Keresések PT egymásra építése. 10. előadás. Programozás-elmélet. Programozás-elmélet 10. Összetett programozási tételek Sorozathoz sorozatot relő feladatokkal foglalkozunk. A bemenő sorozatot le kell másolni, s közben az elemekre vonatkozó átalakításokat lehet végezni rajta: Input : n N 0,

Részletesebben

Diszkrét matematika 2.C szakirány

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

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

Á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

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

Gráfelméleti feladatok. c f

Gráfelméleti feladatok. c f Gráfelméleti feladatok d e c f a b gráf, csúcsok, élek séta: a, b, c, d, e, c, a, b, f vonal: c, d, e, c, b, a út: f, b, a, e, d (walk, lanţ) (trail, lanţ simplu) (path, lanţ elementar) 1 irányított gráf,

Részletesebben

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism) Programozás alapjai C nyelv 8. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.11.07. -1- Mutatók és címek (ism.) Minden változó és függvény

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

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. 7.

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. 7. Algorimuselméle Keresőfák, piros-fekee fák Kaona Gula Y. Sámíásudománi és Információelmélei Tansék Budapesi Műsaki és Gadaságudománi Egeem. előadás Kaona Gula Y. (BME SZIT) Algorimuselméle. előadás / Keresőfák

Részletesebben

Láncolt listák. Egyszerű, rendezett és speciális láncolt listák. Programozás II. előadás. Szénási Sándor

Láncolt listák. Egyszerű, rendezett és speciális láncolt listák. Programozás II. előadás.  Szénási Sándor Láncolt listák Egyszerű, rendezett és speciális láncolt listák 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 Láncolt

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 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

Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból

Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból ÜTEMTERV Programozás-elmélet c. tárgyhoz (GEMAK233B, GEMAK233-B) BSc gazdaságinformatikus, programtervező informatikus alapszakok számára Óraszám: heti 2+0, (aláírás+kollokvium, 3 kredit) 2019/20-es tanév

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

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

Láncolt listák Témakörök. Lista alapfogalmak

Láncolt listák Témakörök. Lista alapfogalmak Láncolt listák szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Lista alapfogalmai Egyirányú egyszerű láncolt lista Egyirányú rendezett láncolt lista Speciális láncolt listák Témakörök

Részletesebben

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában Programozás alapjai C nyelv 8. gyakorlat Szeberényi mre BME T Programozás alapjai. (C nyelv, gyakorlat) BME-T Sz.. 2005.11.07. -1- Mutatók és címek (ism.) Minden változó és függvény

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 9. 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

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