Adatszerkezetek I. 9. előadás

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

Bináris fa. A fa (bináris fa) rekurzív adatszerkezet: ÜresFa. BinFa:= Rekord(Elem,BinFa,BinFa) ÜresFa. Fa := Rekord(Elem,Fák)

Bináris fa. A fa (bináris fa) rekurzív adatszerkezet: ÜresFa. BinFa:= Rekord(Elem,BinFa,BinFa) ÜresFa. Fa := Rekord(Elem,Fák) Fák

Adatszerkezetek I. 7. 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)

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

Algoritmusok és adatszerkezetek gyakorlat 07

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

Adatszerkezetek és algoritmusok

Hierarchikus adatszerkezetek

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

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

Algoritmizálás, adatmodellezés 1. előadás

Adatszerkezetek I. 4. előadás

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

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

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

Multihalmaz, intervallumhalmaz

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

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

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

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

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

Adatszerkezetek 1. előadás

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

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.

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

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

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

Adatszerkezetek I. 6. előadás

Adatszerkezetek 7a. Dr. IványiPéter

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

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

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ási alapismeretek 3. előadás

Halmaz típus Értékhalmaz:

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

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

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

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

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

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

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

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek

Algoritmizálás és adatmodellezés tanítása 6. előadás

Algoritmuselmélet 2. előadás

Adatszerkezetek 2. Dr. Iványi Péter

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

Adatszerkezetek I. 1. előadás

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

Adatszerkezetek 1. Dr. Iványi Péter

Struktúra nélküli adatszerkezetek

Egyirányban láncolt lista

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

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

Hatékonyság 1. előadás

Algoritmizálás és adatmodellezés 2. előadás

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

Kupac adatszerkezet. 1. ábra.

Adatszerkezetek II. 1. előadás

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.

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

Algoritmizálás és adatmodellezés tanítása 4. előadás

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

PROGRAMOZÁSI TÉTELEK

Rekurzív algoritmusok

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

Generikus osztályok, gyűjtemények és algoritmusok

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

Programozási technológia

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

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

Bevezetés a programozásba I.

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

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

Térinformatikai adatszerkezetek

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

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

Algoritmizálás, adatmodellezés 1. előadás

Információs Technológia

Algoritmizálás, adatmodellezés tanítása 1. előadás

Összetett programozási tételek

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

Adatbázis és szoftverfejlesztés elmélet. Programozási tételek

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

A C# programozási nyelv alapjai

Programozási tételek. Dr. Iványi Péter

Visszalépéses kiválogatás

Adaptív dinamikus szegmentálás idősorok indexeléséhez

Alkalmazott modul: Programozás. Programozási tételek, rendezések. Programozási tételek Algoritmusok és programozási tételek

Informatikai tehetséggondozás:

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

A 2008/2009 tanévi Országos Középiskolai Tanulmányi Verseny első forduló feladatainak megoldása. INFORMATIKÁBÓL II. (programozás) kategóriában

22. GRÁFOK ÁBRÁZOLÁSA

Bevezetés a programozásba. 5. Előadás: Tömbök

ELEMI PROGRAMOZÁSI TÉTELEK

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

Adatszerkezetek 2. Dr. Iványi Péter

Gráfok 1. Tárolási módok, bejárások. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor

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

Átírá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; Fraktál (=önhasonlóság) tulajdonság: a részei ugyanolyan szerkezetűek, mint az egész; nem lineárisan rendezett (azaz nem sorozatféle): bármely elemének 0, 1, 2 (közvetlen) rákövetkezője lehet; minden elemnek legfeljebb egy (közvetlen) előzője van. 2013.11.13. 2

Nem bináris fák A fa rekurzív adatszerkezet ábrázolása: Típus TFa=Rekord (elem: TElem ágak: Sorozat(TFa)) Egy speciális változat (ágszám felső korláttal): Típus TFa=Rekord (elem: TElem db: Egész ág: Tömb(1..Max,TFa)) 2013.11.13. 3

Nem bináris fák A fa rekurzív adatszerkezet műveletei: Üres:Fa üres?(fa):logikai Egyeleműfa(Elem):Fa gyerekszám(fa):egész Beilleszt(Fa,Fa):Fa {NemDef} Gyökérelem(Fa):Elem {NemDef} Gyökérmódosít(Fa,Elem):Fa {NemDef} Gyerek(Fa,Egész):Fa {NemDef} 2013.11.13. 4

Nem bináris fák A fa műveletei megvalósítása dinamikus láncolással: Üres(f): f:=sehova Eljárás vége. üres?(f): üres?:=(f=sehova) Egyeleműfa(e): Lefoglal(f,(e,Üressorozat)); Egyeleműfa:=f 2013.11.13. 5

Nem bináris fák A fa műveletei megvalósítása dinamikus láncolással: gyerekszám(f): gyerekszám:=elemszám(tartalom(f).ágak) Gyökérelem(f): Gyökérelem:=Tartalom(f).elem Gyökérmódosít(f,e): Tartalom(f).elem:=e Eljárás vége. gyerekszám(f): gyerekszám:=tartalom(f).db 2013.11.13. 6

Nem bináris fák Sorozattal ábrázolva: Beilleszt(mire,mit): Tartalom(mire).ágak:= Végére(Tartalom(mire).ágak,mit) Eljárás vége. Gyerek(f,i): Ha i Elemszám(Tartalom(f).ágak) akkor Gyerek:=Tartalom(f).ágak(i) különben Gyerek:=Üres 2013.11.13. 7

Nem bináris fák Tömbbel ábrázolva: Beilleszt(mire,mit): Tartalom(mire).db:=Tartalom(mire).db+1 Tartalom(mire).ág(Tartalom(mire).db):=mit Eljárás vége. Gyerek(f,i): Ha i Tartalom(f).db akkor Gyerek:=Tartalom(f).ág(i) különben Gyerek:=Üres 2013.11.13. 8

Nem bináris fák alkalmazás A fa elemszáma elemszám(f): Ha üres?(f) akkor elemszám:=0 különben s:=1 Ciklus i=1-től Tartalom(f).db-ig s:=s+elemszám(tartalom(f).ág(i)) Ciklus vége elemszám:=s 2013.11.13. 9

A fa magassága Nem bináris fák alkalmazás magasság(f): Ha üres?(f) akkor magasság:=0 különben max:=0 Ciklus i=1-től Tartalom(f).db-ig m:=magasság(tartalom(f).ág(i)) Ha m>max akkor max:=m Ciklus vége magasság:=max+1 2013.11.13. 10

Bináris ábrázolás: Nem bináris fák binárisan 1 11 12 13 14 131 132 133 141 1311 1312 balra az 1. gyerek jobbra a következő testvér 1 11 12 13 14 131 132 133 141 1311 1312 2013.11.13. 11

Nem bináris fák binárisan Gyerek(f,i): Ha i=1 akkor Gyerek:=Tartalom(f).bal különben Gyerek:=Testvér(Tartalom(f).bal,i) Testvér(f,i): Ha i=2 akkor Testvér:=Tartalom(f).jobb különben Testvér:=Testvér(Tartalom(f).jobb,i-1) 2013.11.13. 12

Nem bináris fák binárisan Elsőgyerek(f): Elsőgyerek:=Tartalom(f).bal Következőgyerek(gy): Következőgyerek:=Tartalom(gy).jobb Vanméggyerek(gy): Vanméggyerek:=(Tartalom(gy).jobb sehova) 2013.11.13. 13

Nem bináris fák binárisan Gyerek(f,i): gy:=elsőgyerek(f) Ha i=1 akkor Gyerek:=gy különben Ciklus j=2-től i-ig gy:=következőgyerek(gy) Ciklus vége Gyerek:=gy 2013.11.13. 14

Nem bináris fák binárisan Fa "fordított" ábrázolása, a levelektől vissza: Ha a fa elemei címezhetőek is (pl. sorszámuk van), akkor elképzelhető egy olyan statikusan láncolt ábrázolás, amikor azt adjuk meg minden elemről, hogy ki van a fában fölötte. Típus Fa=Tömb(1..Max,Faelem) Faelem=Rekord(érték: Elemtípus, szülő: 0..Max) Egy ilyen fára persze másféle műveleteket definiálhatunk. 2013.11.13. 15

Nem bináris fák binárisan Ősszülő(f,e): Ha f(e).szülő=0 akkor Őszülő:=e különben Őszülő:=Őszülő(f,f(e).szülő) Őse?(f,utód,ős): Ha utód=ős akkor Őse?:=igaz különben ha f(utód).szülő=0 akkor Őse?:=hamis különben Őse?:=Őse?(f,f(utód).szülő,ős) Megjegyzés: egyetlen fa esetén az f tömb lehet globális változó is. 2013.11.13. 16

Szófák A szófa: nem bináris fa a gyökere üres a szavak felülről lefelé olvashatók hol a szó vége? hány gyerek lehet? 2013.11.13. 17

A szófa: jelöljük a szóvégeket! Szófák 2013.11.13. 18

Szófák A szófa ábrázolása: indexeljük a következő betűvel a szófa további részét; jelezzük, hogy szó végén vagyunk-e! Típus SzóFa=Rekord (betű:tömb('a'..'z':szófa, vége:logikai) 2013.11.13. 19

Szófák Szó keresése: Bennevan?(szf,s): Ha Tartalom(szf).vége és üres?(s) akkor Bennevan?:=igaz különben ha üres?(s) akkor Bennevan?:=hamis különben ha üres?(tartalom(szf).betű(első(s))) akkor Bennevan?:=hamis különben Bennevan?:=Bennevan?(Tartalom(szf). betű(első(s)),elsőnélküli(s)) 2013.11.13. 20

Szófák Szó beillesztése: Beilleszt(szf,s): Ha üres?(s) akkor Tartalom(szf).vége:=igaz különben Ha üres?(tartalom(szf).betű(első(s))) akkor Lefoglal(Tartalom(szf).betű(első(s)) Beilleszt(Tartalom(szf).betű(első(s)), elsőnélküli(s)) 2013.11.13. 21

Szófák Problémák: minden elemhez annyi mutató kell, ahány betű van az ábécében; kérdéses a magyar ábécével való indexelés; sok faelemnél nincs is elágazás, azaz egyetlen ág meg tovább. Ötlet: Indexelés helyett logaritmikus keresés rendezett tömbben. Kérdés: Lineáris is elég rendezetlen tömbben? 2013.11.13. 22

Szófák A szófa tömörítése: vonjuk össze az elágazás nélküli csomópontokat! 2013.11.13. 23

Adatszerkezetek I. 9. előadás vége