Adatszerkezetek és algoritmusok



Hasonló dokumentumok
Hierarchikus adatszerkezetek

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

Algoritmusok és adatszerkezetek gyakorlat 07

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

Fák 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

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

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

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

Adatszerkezetek 7a. Dr. IványiPéter

Adatszerkezetek és algoritmusok

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

Adatszerkezetek és algoritmusok

Elemi adatszerkezetek

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

15. A VERSENYRENDEZÉS

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

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

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

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

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.

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

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

Kupac adatszerkezet. 1. ábra.

Algoritmuselmélet 2. előadás

Adatszerkezetek 2. Dr. Iványi Péter

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

Hierarchikus adatszerkezetek

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

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

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

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

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

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

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

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

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

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

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

Adatszerkezetek 1. előadás

Információs Technológia

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.

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek

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

Egyirányban láncolt lista

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

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

Diszkrét matematika 2.C szakirány

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

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

Algoritmusok és adatszerkezetek

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

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

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

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

Adatszerkezet - műveletek

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

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

Programozás I gyakorlat

Algoritmusok és adatszerkezetek gyakorlat 09 Rendezések

Struktúra nélküli adatszerkezetek

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

Diszkrét matematika 2.C szakirány

Diszkrét matematika 2.C szakirány

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

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

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

Gyakorló feladatok ZH-ra

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

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

30. ERŐSEN ÜSSZEFÜGGŐ KOMPONENSEK

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

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

Web-programozó Web-programozó

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

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

1. tétel - Gráfok alapfogalmai

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

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

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

Programozási segédlet

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

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

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:

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

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

2. Visszalépéses stratégia

Gyakori elemhalmazok kinyerése

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

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

Adatszerkezetek 1. Dr. Iványi Péter

Általános algoritmustervezési módszerek

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

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

Rendezettminta-fa [2] [2]

2. AZ ADATTÍPUS ABSZTRAKCIÓS SZINTJEI...2

Programozás I. C nyelv

Algoritmusok és adatszerkezetek II.

Adatszerkezetek I. 9. előadás

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

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

Átírás:

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ú rendez algoritmusok

El z órák anyagainak áttekintése Ismétlés Hierarchikus adatszerkezetek A hierarchikus adatszerkezet olyan A, R rendezett pár, amelynél van egy kitüntetett r elem, ez a gyökérelem, úgy, hogy: r nem lehet végpont a A \ {r} elem egyszer és csak egyszer végpont a A \ {r} elem r-b l elérhet Az adatelemek között egy-sok jelleg kapcsolat áll fenn. Minden adatelem csak egy helyr l érhet el, de egy adott elemb l akárhány adatelem látható (pl. fa, összetett lista, B-fa). A hierarchikus adatszerkezetek valamilyen értelemben a lista általánosításai.

Fa adatszerkezet

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

Fa adatszerkezet Fa adatszerkezet A fa rekurzív dení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.

Fa adatszerkezet Fa deníciók I 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. 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 az a gyökere, azaz közvetlen megel z eleme t-nek, vagy t részfája a valamely részfájának

Fa adatszerkezet Fa deníciók II 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. További dení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 vagy átmen csomópont): > 0 fokú csomópont Szül ( s) : kapcsolat kezd pontja (csak a levelek nem szül k)

Fa adatszerkezet Fa deníciók III 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. Ú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 adatszerkezet Fa deníciók IV 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.) 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.

Fa adatszerkezet Fa adatszerkezet 0. szint 2 Gyökér Részfa Levél 1. szint 6 4 2. szint 5 7 0

Bináris fa Bináris fa 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. (Ennek a bejárásoknál lesz szerepe.) 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.

Bináris fa Speciális bináris fa 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. A következ kifejezés fája: ((10/3) x) + (5 y 2 )

Bináris fa Speciális bináris fa + - * / x 5 ^ 10 3 y 2

Fa m veletek Fa m veletek I Lekérdez m veletek: Üres-e a fa struktúra Gyökérelem lekérdezése Meghatározott elem megkeresése, az arra vonatkozó referencia visszaadása Módosító m veletek: Üres fa létrehozása konstruktor Új elem beszúrása Meghatározott elem kitörlése Összes elem törlése Egy részfa törlése

Fa m veletek Fa m veletek II Részfák kicserélése egymással Gyökér megváltoztatása Fák bejárása. Megadott stratégia (algoritmus szerint végiglépkedni az elemeken.)

Fa m veletek Bejárások Rekurziós módszerek tetsz leges fa esetén: Pre-order bejárás (El ször a gyökér kiírása (érintése) majd a részfák ugyanilyen módszer bejárása) Post-oreder bejárás (El ször a részfák bejárása, majd legvégül a gyökér érintése) Bináris fák esetén még egy bejárási módszer: In-order bejárás (El ször a balgyerek bejárása, majd a gyökér érintése, azután a jobbgyerek bejárása) Például tekintsük a következ fát.

Fa m veletek Bejárások példák 6 4 9 2 0 7 5 1 3 8

Fa m veletek Bejárások példák Preorder 6, 4, 2, 1, 3, 0, 9, 7, 5, 8 Postorder 1, 3, 2, 0, 4, 7, 8, 5, 9, 6 Mivel bináris fa volt a példa ezért lehetséges az inorder bejárás is: Inorder 1, 2, 3, 4, 0, 6, 7, 9, 8, 5

Fa reprezentáció Fa reprezentáció Általános fa esetén: Balgyerek-jobbtestvér: Minden csomópont ismeri a szül jét, egyetlen (legbaloldalibb) gyermekét és a közvetlen jobbtestvért. Ezzel lehetséges, hogy bármely csomópontnak tetsz leges gyereke legyen, amik gyakorlatilag egy láncolt listát alkotnak. Multilistás ábrázolás: Minden csomópont egy láncolt lista. A lista els eleme tartalmazza az adatot, a többi csomópont már csak hivatkozásokat a leszármazottakra (gyermekcsomópontokra)

Fa reprezentáció Fa reprezentáció példa 2 6 4 5 7 0

Fa reprezentáció Fa reprezentáció Bal gyerek - Jobb testvér null 2 null 6 4 null null 5 7 0 null null null null

Fa reprezentáció Fa reprezentáció Multilista 2 6 null null 4 null 5 7 0 null null null

Fa reprezentáció Fa reprezentáció Bináris vagy korlátos fokszámú fa esetén: Aritmetikai ábrázolás: Tömbben is lehetséges, szintfolytonosan. (Balra tömörített, minimális magasságú fa esetén ideális lehet.) Láncolt ábrázolás: Minden csomópont ismeri a szül jét, valamint a jobb és balgyerekét. (Ez általánosítása a kétirányú láncolt listának.)

Fa reprezentáció Fa reprezentáció Példa 6 4 9 2 0 7 5 1 3 8

Fa reprezentáció Fa reprezentáció Példa Aritmetikai ábrázolása: 6 4 9 2 0 7 5 1 3 - - - - 8 -

Fa reprezentáció Fa reprezentáció Példa null 6 4 9 2 0 null null 7 5 null null null 1 3 null null null null null 8 null

Bináris keresési fák

Bináris keresési fák Bináris keresési fák A rendezési fa (vagy keres fa) olyan 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, (bináris esetben) 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

Bináris keresési fák Bináris keresési 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. Els sorrend 6,3,1,9,7,5,10 Második sorrend 9,7,6,5,10,3,1

Bináris keresési fák Fa reprezentáció Példa 6 9 3 9 7 10 1 5 7 10 6 5 3 1

Bináris keresési fák Bináris keresési fák tulajdonság Fontos tulajdonság: inorder bejárással a kulcsok rendezett sorozatát kapjuk. 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.

Bináris keresési fák m veletek Bináris keresési fák keresés m velet 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 NULL-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. Fában-keres(x, k) rekurzív HA x = NULL VAGY k = kulcs[x] akkol return x HA k < kulcs[x] AKKOR RETURN Fában-keres(bal[x], k) KÜLÖNBEN RETURN Fában-keres(jobb[x], k)

Bináris keresési fák m veletek Bináris keresési fák keresés m velet Fában-keres(x, k) iteratív CIKLUS AMÍG x NULL ÉS k kulcs[x] HA k < kulcs[x] AKKOR x bal[x] KÜLÖNBEN x jobb[x] RETURN x

Bináris keresési fák m veletek Bináris keresési fák Minimum keresés Minimum keresés: tegyük fel, hogy T NULL Addig követjük a baloldali mutatókat, amíg NULL referenciát nem találunk. Fában-minimum (T) iteratív x gyökér[t] CIKLUS AMÍG bal[x] NULL 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. Hasonlóan megkereshet a maximum érték is, ami a legjobboldalibb elem.

Kupac (Heap)

Bináris fák teljessége Bináris fák teljessége Egy bináris fa teljes, ha a magassága h, és 2 h 1 csomópontja van Egy h magasságú bináris fa majdnem teljes üres; vagy: a magassága h, és a bal részfája h 1 magas és majdnem teljes és jobb részfája h 2 magas és teljes; vagy: a magassága h, és a bal részfája h 1 magas és teljes és jobb részfája h 1 magas és majdnem teljes.

Bináris fák teljessége Bináris fák teljessége Heap tulajdonság Gyakorlatilag ez azt jelenti, hogy a majdnem teljes fákat balról töltjük fel. (Avagy szintenként haladunk a feltöltéssel és balról jobbra... ) Egy majdnem teljes bináris fa heap (kupac) tulajdonságú üres (vagy) a gyökérben lév kulcs nagyobb, mint mindkét gyerekében, és mindkét részfája is heap tulajdonságú Reprezentálásuknál kihasználjuk a tömörítettséget és majdnem teljességet aritmetikai reprezentációval tömbben tároljuk az értékeket és az egy indexfüggvény számítja a szül t és a gyerekeket.

Bináris fák teljessége Kupac Példa X K O A D L M

Kupac M veletek Kupac Gyökér törlése A gyökér a legnagyobb elem. Eltávolítása után a legalsó szint legjobboldalibb elemét tesszük fel a helyére, hogy a majdnem teljes tulajdonság megmaradjon. Ezzel elrontjuk kupac tulajdonságot, amit helyre kell állítani: Cseréljük fel a gyökeret a nagyobb gyerekével A felcserélt ágon ismételjuk a kupac tulajdonság helyreállítását, amíg szükséges.

Kupac M veletek Kupac Gyökér törlése X K O A D L M

Kupac M veletek Kupac Gyökér törlése M K O A D L

Kupac M veletek Kupac Beszúrás Amikor beszúrunk, tegyük a következ szabad pozícióra, a legalsó szint legjobboldalibb elemének tesszük fel a helyére, hogy a majdnem teljesség megmaradjon. Ezzel elrontjuk kupac tulajdonségot, amit helyre kell állítani: Cseréljük fel az újonnan beszúrtat a szül jével, amíg nagyobb az új a szül jénél. (Ismételjük... )

M veletigények Kupac M veletigény A kupacnál a beszúrás és maximum törlés m veletigénye, legfeljebb a fa magasságával arányos (O(h)), ami az O(log n)). A kupacot fejjel lefelé is fel lehet építeni, amikor is a gyökérben a legkisebb elem lesz. Indexfüggvények aritmetikai reprezentáció esetén: Balgyerek(k) RETURN 2k Jobbgyerek(k) RETURN 2k+1 Szülö(k) RETURN k/2

M veletigények Kupac M veletigény Ennek megfelel en a kupac adatszerkezet használható rendezésre is. Minden, rendezend elemet beszúrunk egy kupacba, majd a gyökeret eltávolítva megkapjuk a legnagyobb elemet. Az eltávolításokat folytatva egy rendezést kapunk eredményül. M veletigény n beszúrás: O(n log n) n törlés: O(n log n) Összesen: O(n log n) Ami jobb, mint a lassú rendezések.

Összefoglaló

Összefoglaló Összefoglaló Hiearchikus adatszerkezetek ismétlés Fák Bináris keresési fák Kupac Bejárások

Felhasznált el adások Felhasznált el adások 6-7. el adás Nyékyné Gaizler Judit (Illetve új anyagok)