Hierarchikus adatszerkezetek

Save this PDF as:
 WORD  PNG  TXT  JPG

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

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

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

Részletesebben

Adatszerkezetek 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

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

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

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

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

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

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

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

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

Részletesebben

Adatszerkezetek 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

- 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

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

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

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

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

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

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

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

Részletesebben

Programozás 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

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

Á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

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

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

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

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

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

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

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

Adatszerkezetek I. 9. előadás

Adatszerkezetek I. 9. előadás Adatszerkezetek I. 9. előadás Nem bináris fák A fa rekurzív adatszerkezet jellemzői: sokaság: azonos típusú elemekből áll; akár 0 db elemet tartalmazhat; Üres: rekurzív nullelem, kitüntetett konstans;

Részletesebben

Például számokból álló, egyszeresen láncolt lista felépítéséhez az alábbi struktúra definíciót használhatjuk:

Például számokból álló, egyszeresen láncolt lista felépítéséhez az alábbi struktúra definíciót használhatjuk: 8. előadás Ismétlés Dinamikus adatszerkezetek: listák (egyszeresen vagy többszörösen láncolt), fák. Kétfelé ágazó fa: bináris fa Dinamikus adatszerkezetek - önhivatkozó adatstruktúrák: adatok és reájuk

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

2. Visszalépéses stratégia

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

Részletesebben

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

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

Láncolt Listák. Adat1 Adat2 Adat3 ø. Adat1 Adat2 ø Adat3

Láncolt Listák. Adat1 Adat2 Adat3 ø. Adat1 Adat2 ø Adat3 Láncolt Listák Adatszerkezetek Adatszerkezet: Az adatelemek egy olyan véges halmaza, amelyben az adatelemek között szerkezeti összefüggések vannak Megvalósítások: - Tömb, Láncolt lista, Fa, Kupac, Gráf,

Részletesebben

Algoritmusok bonyolultsága

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

Részletesebben

Minimális feszítőfák Legyen G = (V,E,c), c : E R + egy súlyozott irányítatlan gráf. Terjesszük ki a súlyfüggvényt a T E élhalmazokra:

Minimális feszítőfák Legyen G = (V,E,c), c : E R + egy súlyozott irányítatlan gráf. Terjesszük ki a súlyfüggvényt a T E élhalmazokra: Minimális feszítőfák Legyen G = (V,E,c), c : E R + egy súlyozott irányítatlan gráf. Terjesszük ki a súlyfüggvényt a T E élhalmazokra: C(T ) = (u,v) T c(u,v) Az F = (V,T) gráf minimális feszitőfája G-nek,

Részletesebben

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

Bánsághi Anna 2014 Bánsághi Anna 1 of 68 IMPERATÍV PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 3. ELŐADÁS - PROGRAMOZÁSI TÉTELEK 2014 Bánsághi Anna 1 of 68 TEMATIKA I. ALAPFOGALMAK, TUDOMÁNYTÖRTÉNET II. IMPERATÍV PROGRAMOZÁS Imperatív

Részletesebben

19. AZ ÖSSZEHASONLÍTÁSOS RENDEZÉSEK MŰVELETIGÉNYÉNEK ALSÓ KORLÁTJAI

19. AZ ÖSSZEHASONLÍTÁSOS RENDEZÉSEK MŰVELETIGÉNYÉNEK ALSÓ KORLÁTJAI 19. AZ ÖSSZEHASONLÍTÁSOS RENDEZÉSEK MŰVELETIGÉNYÉNEK ALSÓ KORLÁTJAI Ebben a fejezetben aszimptotikus (nagyságrendi) alsó korlátot adunk az összehasonlításokat használó rendező eljárások lépésszámára. Pontosabban,

Részletesebben

A valós számok halmaza

A valós számok halmaza VA 1 A valós számok halmaza VA 2 A valós számok halmazának axiómarendszere és alapvető tulajdonságai Definíció Az R halmazt a valós számok halmazának nevezzük, ha teljesíti a következő axiómarendszerben

Részletesebben

9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum.

9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum. Programozási tételek Programozási feladatok megoldásakor a top-down (strukturált) programtervezés esetén három vezérlési szerkezetet használunk: - szekvencia - elágazás - ciklus Eddig megismertük az alábbi

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

Házi feladatok megoldása. Nyelvek használata adatszerkezetek, képek leírására

Házi feladatok megoldása. Nyelvek használata adatszerkezetek, képek leírására Nyelvek használata adatszerkezetek, képek leírására Formális nyelvek, 2. gyakorlat 1. feladat Módosított : belsejében lehet _ jel is. Kezdődhet, de nem végződhet vele, két aláhúzás nem lehet egymás mellett.

Részletesebben

Adatszerkezetek 2. Dr. Iványi Péter

Adatszerkezetek 2. Dr. Iványi Péter Adatszerkezetek 2. Dr. Iványi Péter 1 Hash tábla A bináris fáknál O(log n) a legjobb eset a keresésre. Ha valamilyen közvetlen címzést használunk, akkor akár O(1) is elérhető. A hash tábla a tömb általánosításaként

Részletesebben

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

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

Részletesebben

Programozás I. C nyelv

Programozás I. C nyelv Programozás I. C nyelv 12. előadás Bináris fa, bináris kereső fa, kupac, időkezelő függvények Veszprémi Egyetem Heckl István, heckl@dcs.vein.hu 1 Fogalmak Fa: összefüggő, körmentes gráf, azaz bármely két

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

Programozási módszertan. Mohó algoritmusok

Programozási módszertan. Mohó algoritmusok PM-08 p. 1/17 Programozási módszertan Mohó algoritmusok Werner Ágnes Villamosmérnöki és Információs Rendszerek Tanszék e-mail: werner.agnes@virt.uni-pannon.hu PM-08 p. 2/17 Bevezetés Dinamikus programozás

Részletesebben

KOVÁCS BÉLA, MATEMATIKA I.

KOVÁCS BÉLA, MATEMATIKA I. KOVÁCS BÉLA, MATEmATIkA I. 3 III. MEGFELELTETÉSEk, RELÁCIÓk 1. BEVEZETÉS Emlékeztetünk arra, hogy az rendezett párok halmazát az és halmazok Descartes-féle szorzatának nevezzük. Más szóval az és halmazok

Részletesebben

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

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

Részletesebben

félstatikus adatszerkezetek: verem, várakozási sor, hasítótábla dinamikus adatszerkezetek: lineáris lista, fa, hálózat

félstatikus adatszerkezetek: verem, várakozási sor, hasítótábla dinamikus adatszerkezetek: lineáris lista, fa, hálózat Listák félstatikus adatszerkezetek: verem, várakozási sor, hasítótábla dinamikus adatszerkezetek: lineáris lista, fa, hálózat A verem LIFO lista (Last In First Out) angolul stack, románul stivă bevitel

Részletesebben

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter Adatszerkezetek Tömb, sor, verem 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

Részletesebben

Rendezések. A rendezési probléma: Bemenet: Kimenet: n számot tartalmazó (a 1,a 2,,a n ) sorozat

Rendezések. A rendezési probléma: Bemenet: Kimenet: n számot tartalmazó (a 1,a 2,,a n ) sorozat 9. Előadás Rendezések A rendezési probléma: Bemenet: n számot tartalmazó (a 1,a 2,,a n ) sorozat Kimenet: a bemenő sorozat olyan (a 1, a 2,,a n ) permutációja, hogy a 1 a 2 a n 2 Rendezések Általánosabban:

Részletesebben

A sorozat fogalma. függvényeket sorozatoknak nevezzük. Amennyiben az értékkészlet. az értékkészlet a komplex számok halmaza, akkor komplex

A sorozat fogalma. függvényeket sorozatoknak nevezzük. Amennyiben az értékkészlet. az értékkészlet a komplex számok halmaza, akkor komplex A sorozat fogalma Definíció. A természetes számok N halmazán értelmezett függvényeket sorozatoknak nevezzük. Amennyiben az értékkészlet a valós számok halmaza, valós számsorozatról beszélünk, mígha az

Részletesebben

Kupacrendezés. Az s sorban lévő elemeket rendezzük a k kupac segítségével! k.empty. not s.isempty. e:=s.out k.insert(e) not k.

Kupacrendezés. Az s sorban lévő elemeket rendezzük a k kupac segítségével! k.empty. not s.isempty. e:=s.out k.insert(e) not k. 10. Előadás Beszúró rendezés Használjuk a kupacokat rendezésre! Szúrd be az elemeket egy kupacba! Amíg a sor ki nem ürül, vedd ki a kupacból a maximális elemet, és tedd az eredmény (rendezett) sorba! 2

Részletesebben

Algoritmusok és adatszerkezetek 2.

Algoritmusok és adatszerkezetek 2. Algoritmusok és adatszerkezetek 2. Varga Balázs gyakorlata alapján Készítette: Nagy Krisztián 1. gyakorlat Nyílt címzéses hash-elés A nyílt címzésű hash táblákban a láncolással ellentétben egy indexen

Részletesebben

ADATBÁZIS-KEZELÉS. Relációalgebra, 5NF

ADATBÁZIS-KEZELÉS. Relációalgebra, 5NF ADATBÁZIS-KEZELÉS Relációalgebra, 5NF ABSZTRAKT LEKÉRDEZŐ NYELVEK relációalgebra relációkalkulus rekord alapú tartomány alapú Relációalgebra a matematikai halmazelméleten alapuló lekérdező nyelv a lekérdezés

Részletesebben

Minimális feszítőfák Legyen G = (V,E,c), c : E R + egy súlyozott irányítatlan gráf. Terjesszük ki a súlyfüggvényt a T E élhalmazokra:

Minimális feszítőfák Legyen G = (V,E,c), c : E R + egy súlyozott irányítatlan gráf. Terjesszük ki a súlyfüggvényt a T E élhalmazokra: Minimális feszítőfák Legyen G = (V,E,c), c : E R + egy súlyozott irányítatlan gráf. Terjesszük ki a súlyfüggvényt a T E élhalmazokra: C(T ) = (u,v) T c(u,v) Az F = (V,T) gráf minimális feszitőfája G-nek,

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

Láncolt listák. PPT 2007/2008 tavasz.

Láncolt listák. PPT 2007/2008 tavasz. Láncolt listák szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Témakörök Láncolt listák elvi felépítése Egyirányú egyszerű láncolt lista Egyirányú rendezett láncolt lista Láncolt

Részletesebben

Feladatok, amelyek gráfokkal oldhatók meg 1) A königsbergi hidak problémája (Euler-féle probléma) a

Feladatok, amelyek gráfokkal oldhatók meg 1) A königsbergi hidak problémája (Euler-féle probléma) a Feladatok, amelyek gráfokkal oldhatók meg ) A königsbergi hidak problémája (Euler-féle probléma) a b d c A megfelelő gráf: d a b c ) Egy szórakoztató feladat (Hamilton-féle probléma) Helyezzük el az,,,...,

Részletesebben

Algoritmusok és adatszerkezetek I. kidolgozott vizsgakérdések

Algoritmusok és adatszerkezetek I. kidolgozott vizsgakérdések Algoritmusok és adatszerkezetek I. kidolgozott vizsgakérdések 013/014-es tanév 1. félév 1.) Bizonyítsa be, hogy a buborékrendezés átlagos csere-száma n(n -1)/4, ha minden input permutáció egyformán valószínű.

Részletesebben

Adatszerkezetek és algoritmusok

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

Részletesebben

6. LISTÁK ábra. A lista absztrakt adatszerkezet (ADS)

6. LISTÁK ábra. A lista absztrakt adatszerkezet (ADS) 6. LISTÁK Az előző fejezetekben megismerkedtünk a láncolt ábrázolással. Láttuk a verem és a sor, valamint előre tekintve a keresőfa pointeres megvalósításának a lehetőségét és előnyeit. A láncolt ábrázolással

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

Shannon és Huffman kód konstrukció tetszőleges. véges test felett

Shannon és Huffman kód konstrukció tetszőleges. véges test felett 1 Shannon és Huffman kód konstrukció tetszőleges véges test felett Mire is jók ezek a kódolások? A szabványos karakterkódolások (pl. UTF-8, ISO-8859 ) általában 8 biten tárolnak egy-egy karaktert. Ha tudjuk,

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

ÖNSZERVEZŐ BINÁRIS KERESŐFÁK HATÉKONYSÁGA

ÖNSZERVEZŐ BINÁRIS KERESŐFÁK HATÉKONYSÁGA ÖNSZERVEZŐ BINÁRIS KERESŐFÁK HATÉKONYSÁGA Tétel: Ha a halmazok ábrázolására önszervező bináris keresőfát használunk, akkor minden α 1,...,α m műveletsor, ahol i {1..m}: α i {keres;bovit;torol;vag;egyesit}

Részletesebben

Elengedhetetlen a játékokban, mozi produkciós eszközökben Nélküle kvantum hatás lép fel. Az objektumok áthaladnak a többi objektumon

Elengedhetetlen a játékokban, mozi produkciós eszközökben Nélküle kvantum hatás lép fel. Az objektumok áthaladnak a többi objektumon Bevezetés Ütközés detektálás Elengedhetetlen a játékokban, mozi produkciós eszközökben Nélküle kvantum hatás lép fel Az objektumok áthaladnak a többi objektumon A valósághű megjelenítés része Nem tisztán

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

1.előadás Tornai Kálmán

1.előadás Tornai Kálmán 1.előadás Tornai Kálmán tornai.kalman@itk.ppke.hu Általános tudnivalók Előadás: 2 óra (Labor)gyakorlat: 3 óra Előismeretek: Kötelező: Bevezetés a programozásba I-II. Algebra és diszkrét matematika I. II.

Részletesebben

Felvételi tematika INFORMATIKA

Felvételi tematika INFORMATIKA Felvételi tematika INFORMATIKA 2016 FEJEZETEK 1. Természetes számok feldolgozása számjegyenként. 2. Számsorozatok feldolgozása elemenként. Egydimenziós tömbök. 3. Mátrixok feldolgozása elemenként/soronként/oszloponként.

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

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

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

Részletesebben

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

15. tétel. Adatszerkezetek és algoritmusok vizsga Frissült: 2013. január 30. 15. tétel Adatszerkezetek és algoritmusok vizsga Frissült: 2013. január 30. Edényrendezés Tegyük fel, hogy tudjuk, hogy a bemenő elemek (A[1..n] elemei) egy m elemű U halmazból kerülnek ki, pl. " A[i]-re

Részletesebben