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



Hasonló dokumentumok
III. Adatszerkezetek és algoritmusok

Adatszerkezetek és algoritmusok

III. Adatszerkezetek és algoritmusok

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

Elemi adatszerkezetek

Adatszerkezetek és algoritmusok

Adatszerkezetek 2. Dr. Iványi Péter

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek

Adatszerkezetek 1. előadás

Adatszerkezetek 7a. Dr. IványiPéter

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

Adatszerkezetek 1. Dr. Iványi Péter

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

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

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ás alapjai II. (7. ea) C++

Más szavakkal formálisan:, ahol olyan egész szám, hogy. Más szavakkal formálisan:, ahol olyan egész szám, hogy.

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.

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

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

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

Struktúra nélküli adatszerkezetek

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

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

Hierarchikus adatszerkezetek

Algoritmuselmélet 2. előadás

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

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

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

A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai

Számítógép hálózatok, osztott rendszerek 2009

22. GRÁFOK ÁBRÁZOLÁSA

Egyirányban láncolt lista

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

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

1: Bevezetés: Internet, rétegmodell Alapok: aszimptótika, gráfok. HálózatokII, 2007

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

Gráfok, definíciók. Gráfok ábrázolása. Az adott probléma megoldásához ténylegesen mely műveletek szükségesek. Ábrázolások. Példa:

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

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

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

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

Algoritmusok és adatszerkezetek gyakorlat 07

Tamás Péter (D. 424) Mechatronika, Optika és Gépészeti Informatika Tanszék (D 407)

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

15. A VERSENYRENDEZÉS

Web-programozó Web-programozó

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

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

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

30. ERŐSEN ÜSSZEFÜGGŐ KOMPONENSEK

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

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

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

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

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

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

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

Adatszerkezetek II. 1. előadás

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

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

Edényrendezés. Futási idő: Tegyük fel, hogy m = n, ekkor: legjobb eset Θ(n), legrosszabb eset Θ(n 2 ), átlagos eset Θ(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

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

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

Mutatók és mutató-aritmetika C-ben március 19.

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

Programozás I gyakorlat. 10. Stringek, mutatók

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

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

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

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

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

Információs Technológia

Gráfelméleti feladatok. c f

Intelligens Rendszerek Elmélete IRE 4/32/1

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

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

Algoritmuselmélet. Legrövidebb utak, Bellmann-Ford, Dijkstra. Katona Gyula Y.

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

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

Algoritmuselmélet. Mélységi keresés és alkalmazásai. Katona Gyula Y.

Algoritmusok bonyolultsága

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

Gyakori elemhalmazok kinyerése

Bevezetés a Programozásba II 12. előadás. Adatszerkezetek alkalmazása (Standard Template Library)

Általános algoritmustervezési módszerek

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

Érdekes informatika feladatok

Programozási nyelvek Java

C programozási nyelv Pointerek, tömbök, pointer aritmetika

Információs Technológia

A gráffogalom fejlődése

Ionogram releváns területeinek meghatározása és elemzésének automatikus megvalósítása

Megjegyzés: A programnak tartalmaznia kell legalább egy felhasználói alprogramot. Példa:

Térinformatikai adatszerkezetek

HAMILTON KÖR: minden csúcson PONTOSAN egyszer áthaladó kör. Forrás: (

Kupac adatszerkezet. 1. ábra.

Gráfelmélet jegyzet 2. előadás

Átírás:

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 egy vagy többdimenziós Kapcsolt listák a kapcsolati információ is adat Gráf adatpárok kapcsolattal Fa hurok nélküli gráf. Verem LIFO (Last In First Out) Sor FIFO (First In First Out). Műveletek feldolgozási tevékenységek (algoritmusok) Bejárás - az elemek elérése Keresés - adott értéknek megfelelő elemek kiválasztása Beszúrás - új adat beillesztése Törlés - adatelem eltávolítása Rendezés - elemeket logikai sorrendbe Összeválogatás - különböző rendezett adathalmazokból új elemhalmaz kialakítása Bonyolultság futási idő vagy helyigény az adatok számának függvényében B(n) 1

1. Lineáris tömbök N db. azonos típusú adatelem az elemekre egymást követő számokból álló indexhalmazzal hivatkozunk az elemeket egymást követő memóriahelyek tárolják az elemekhez bejárás nélkül férünk hozzá LB LB+1 UB-1 UB Lower Bound Upper Bound Hosszúság (Length) L = UB-LB+1 Indexelt alak 1, 2 (1), (2) [1], [2] Példa DT(1)=154 ; DT(2)=52 ; DT(3)=-33 ; DT(4)=1 ; 154 52-33 1 1.1 Hozzáférés tömbelemhez - indexelés LOC(DT) 154 52-33 1 LOC(DT(4)) LOC(DT(k))=LOC(DT)+w * (k-loc(dt)) ; w az alapadat tárolási mérete 2

1.5 Rendezés Ha L n elemű lineáris tömb, akkor ez rendezett, ha L(1)< L(2)<L(3)... L(n-1)<L(n) 1.5.1 Buborék rendezés k,p számláló, s segéd k=1 k<n-1 k=k+1 p n-k L(p)>L(p+1) s=l(p) L(p)=L(p+1) L(p+1)=s p=p+1 p=1 n ( n 1 ) 2 Bonyolultság : = O( n ) 2 3

1.6 Keresés 1.6.1 Szekvenciális keresés KER-t keressük, az n elemű L elemei között, LOC a keresett pozíció L(n+1)=KER Bonyolultság : n + 1 = O( n ) K=1 L(K) KER k=k+1 1.6.2 Bináris keresés KER-t keressük, ha L sorbarendezett, Beg, End, Mid segédváltozók, LOC a keresett pozíció, INT az egészrész Beg=LB(L) End=UB(L) Mid=INT((Beg+End)/2) LOC=Mid LOC=k End=Mid-1 Beg<End és L(Mid) KER L(Mid)=KER Mid=INT(Beg+End)/2 KER<L(Mid) LOC=Null Beg=Mid+1 Bonyolultság : legalább szükséges összehasonlítások száma f(n), Minden összehasonlításkor feleződik a minta f ( n ) 2 > n f ( n ) = log2 ( n ) + 1 4

2. Többdimenziós tömbök N * M db. azonos típusú adatelem az elemekre egymást követő számokból álló indexhalmazokból alkotott számpárokkal hivatkozunk az elemeket egymást követő memóriahelyek tárolják az elemekhez bejárás nélkül férünk hozzá 1.1 Hozzáférés tömbelemhez - indexelés Kétdimenziós eset LB SOR1 LB SOR1 +1 UB SOR1-1 UB SOR1 LB SOR2 LB SOR2 +1 UB SOR2-1 UB SOR2 LB SORn-1 LB SORn-1 +1 UB SORn-1-1UB SORn-1 LB SORn LB SORn +1 UB SORn -1 UB SORn Indexelt alak 1,1, 12 (1,1), (1,2) [1 ] [1], [1 ] [2] Memória pozíció ( m * n-es mátrix) LOC((j,k))=LOC()+w * (n * (j-1)+(k-1)) ; w az alapadat tárolási mérete 5

3. Mutatók és mutatótömbök P változó mutató, ha egy egyszerű változó, vagy egy tömbelem memóriacímét tartalmazza. Általában dinamikus tárolásra használják mutatókból is lehet tömböt szervezni, ezek mindegyik eleme mutató például változó méretű adatsorok, szabálytalan tömbök tárolására használható LB SOR1 LB SOR1 +1 UB SOR1-1 UB SOR1 LB SOR2 LB SOR2 +1 UB SOR2-1 UB SOR2 LB SORn-1 LB SORn-1 +1 UB SORn-1-1 UB SORn-1 LB SORn LB SORn +1 UB SORn S LB SOR1 LB SOR1 +1 UB SOR1-1 UB SOR1 v LB SOR2 LB SOR2 +1 UB SOR2-1 UB SOR2 S v S LB SORn-1 LB SORn-1 +1 UB SORn-1-1 UB SORn-1 LB SORn LB SORn +1 UB v SORn S v Sor 1 Sor 2 Sor n-1 Sor 4 3.1 Példa Mutató aritmetika Ha P változó mutató, akkor a P+1 kifejezés a következő memóriacímet jelenti 6

3.2 Példa - Egy csoport elemeinek bejárása P sorelemre mutató segéd-pointer, az i. csoport címe C i mutató, az (i+1). csoport címe C i+1 P=C i P<C i+1 P=P+1 Bejárás 4. Rekordok, rekordszerkezetek, állományok rekord egymáshoz tartozó (a világ egy egyedére vonatkozó) adattételek (mezők, attribútumok) gyűjteménye. az adattételek lehetnek összetettek** és tovább nem bonthatók egyszerűek* például változó méretű adatsorok, szabálytalan tömbök tárolására használható z állomány rekordok összessége. Név LB Lakcím** SOR1 +1 Testmagasság Testsúly* LB SOR1 4.1 Szintszám, minősítés z adattételek lehetnek összetettek, altételekkel. Például: Gyermek Gyermek.nya.Név Név pa Név nya Név 7

5. Kapcsolt listák kapcsolt lista vagy egyirányú lista adatelemek, vagy csomópontok lineáris gyűjteménye, ahol az elemek sorrendjét mutatók rögzítik. a mutatókat tároló elemet kapcsolómezőnek hívjuk. Start x 5.1 Kapcsolt listák a memóriában Minden csomóponthoz egy tömbelemet (INFO(k) az indexelt csomópont), Minden követőhöz egy másik tömbelemet (LINK(k)) rendelünk. Start INFO (,) (1,1) (1,) (,1) (,) LINK 3 4 2 5 x 5.2 Kapcsolt listák bejárása PTR mutató az éppen feldolgozott csomópontra mutat. kezdetet a STRT mutató jelöli. vége NULL Hasonló mint a lineáris tömb. 8

PTR=STRT PTR NULL PTR=LINK(PTR) {PTR} INFO feldolgozás 5.3 Keresés kapcsolt listában Ugyanaz mint lineáris esetben, csak az összehasonlítás és a léptetés elválik PTR=STRT PTR NULL PTR=NULL LOC= {PTR} KER= {PTR} INFO PTR=LINK(PTR) 9

5.4 Keresés rendezett listában Nem ugyanaz, mint lineáris esetben, mert nem tudjuk a középsőt PTR=STRT PTR NULL PTR=LINK(PTR) PTR=NULL LOC=PRT KER= {PTR} INFO {PTR} INFO<KER PTR=LINK(PTR) 5.5 Beszúrás kapcsolt listába Start Start x x 1

5.6 Törlés kapcsolt listából Start x Start x 5.7 Kétirányú listák Minden irányban bejárható Első INFO x INFO INFO INFO x 5.8 Beszúrás kétirányú listába Első INFO x INFO INFO INFO x Utolsó Utolsó INFO 5.9 Törlés kétirányú listából Első INFO x INFO INFO INFO x Utolsó 11

6. Verem (Stack) Last In First Out Új elem behelyezése (PUSH) a tetejére (TOP) Elem leemelése (POP) 6.1 verem tárolása a b c d 6.1.1 PUSH TOP TOP=TOP+1 STCK(TOP)=Elem maxstk TOP<MXSTK túlcsordul 6.1.2 POP Elem=STCK(TOP) TOP=TOP-1 TOP= alulcsordul 12

6.2 Rekurzió 6.2.1. Faktoriális iteratív definíció n!=1 2 3 (n-2) (n-1) n Fakt=1 k=1 k<=n N= Fakt=Fakt*k Fakt=1 6.2.2. Faktoriális rekurzív definíció!=1 ; n!=n (n-1)! Fakt()=n * Fakt(n-1) N= Fakt()=1 verem és az alprogram kapcsolata 13

7. Sor (Queue) First In First Out 6.1 sor Első x Windows multitasking Eszközök Nyomtató Lemezek Billentyûzet Egér Üzenetek Várakozó sor Sor vége Rendszer lkalmazások Üzenetek 32 bites szál várakozó sor 32 bites szál várakozó sor 32 bites szál várakozó sor elsõdleges 16 bites alk. várakozó sor 14

8. Bináris fa Elemek véges halmaza, amely vagy üres vagy egyetlen T elemhez (gyökér) kapcsolt két diszjunkt T1 ésd T2 részfa alkotja gyökér (szülő, apa) R() - jobboldali részfa B C (C,F,G, I, J, K) L() baloldali részfa D E F G (B, D, E, H) C jobboldali szukcesszora (gyermek, leszármazott) H I J B baloldali szukcesszora Minden csomópontnak, 1, illetve 2 szukcesszora K lehet Zárócsomópont - szukcesszor z összekötő vonalak - élek, szukcesszor - levél utolsó él - ág Szintszám : gyökér - leszármazott - szülő+1 Generáció : azonos szintszámú elemek Mélység : az azonos ágon elhelyezkedő elemek maximális száma Teljes : az utolsó szintet kivéve a csp-k száma maximális Kiterjesztett bináris fa minden csomópontnak /2 gyermeke van 15

8.1 Bináris fák ábrázolása kapcsolt szerkezettel Root B C D x x E x x F x G x H x x I x J x x K x 8.2 Bináris fák ábrázolása tömbökkel Root 1 2 3 4 5 6 7 8 9 1 11 12 13 vail C G J K F I B D H E L(Root) R(Root) 1 7 8 5 11 12 2 3 4 13 16

8.3 Bináris fák szekvenciális ábrázolása a gyökér T(1) ha egy csomópont a T(k)-n van, akkor ha van L(T(k))=T(2*k) egyébként NULL akkor ha van R(T(k))=T(2*k+1) egyébként NULL B C D E F G 1 2 3 4 5 6 7 8 9 1 11 12 13 14 15 B C D E F G NULL NULL NULL NULL NULL NULL NULL NULL 8.4 Bináris fák bejárása Több lehetőség. Pl. a G gyökér z L(G) bejárása az irányítás szerint, z R(G) bejárása az irányítás szerint, D B C E F G H I J K 17

6.4.1. Pl. az irányítással megegyező bejárás NULL a STCK-en PTR a gyökéren meddig a PTR=NULL az összes L() feldolgozása az összes R() a STCK-re PTR=L(PTR) léptetés TOP=1 PTR=STCK legfelső elemével (ha nem NULL, R feldolgozás) STCK(TOP)=NULL PTR=Gyökér PTR NULL STCK(TOP)=R(PTR) TOP=TOP+1 R(PTR) NULL DT(PTR) feldolgozás PTR=L(PTR) DT(PTR) feldolgozás L(PTR) NULL H D B C E F G I J TOP=TOP-1 PTR=STCK(TOP) K 18

9. Általános fa Elemek véges halmaza (T), amely Tartalmaz egy kitüntetett R gyökérelemet többi elem nem nulla diszjunkt részfája T-nek B C D E F G H I J K L 9.1 Tárolás számítógépen INFO(k) - az elem adatai GYERMEK(k) - az első gyermek TESTVÉR(k) - az első testvér 1 2 3 4 5 6 7 8 9 1 11 12 13 INFO B C D E F G H I J K L TESTVÉR GYERMEK 3 5 7 8 1 12 13 2 6 9 11 19

1. Gráf Két halmazzal jellemezhető adatszerkezet Csomópontok sorszámozott halmaza (csúcsok) z elemeket összekötő e=[u,v] számpárral jellemzett élek halmaza az összekötött csomópontokat szomszédoknak hívjuk deg(u) a csomópont foka, a befutó élek száma deg(u)= izolált csomópont v -ból v n -be haladó élek halmazát P(v, v 1, v ) útnak nevezzük. P út zárt, ha v =v n P út egyszerű, ha minden pontja különböző Kör a 3-nál hosszabb egyszerű zárt út. Összefüggő egy gráf, ha bármely két pontja között létezik út. Egy G gráf akkor és csak akkor összefüggő, ha bármely két pontja között létezik egyszerű út. Egy gráf teljes, ha minden csomópontja minden csomópontjával össze van kötve. fa köröket nem tartalmazó összefüggő gráf G gráf címkézett, ha éleihez adatokat rendelünk. Ha G gráf éleihez rendelt adatok nem negatívak, akkor a gráfot súlyozottnak hívjuk. G gráf irányított, ha az éleknek irányítottságuk van 2

21 1.1 Szekvenciális tárolás számítógépen Szomszédsági mátrix a i,j =1 ha i-ből j felé halad él a i,j = egyébként C B D D 1 C B 1 1 D C B Útmátrix p i,j =1 ha i-ből j felé halad valamilyen út a i,j = - egyébként Ha a G gráf szomszédsági mátrixa, akkor k mátrix i,j. eleme az i-ből j-be vezető K hosszú utak számát adja. D C B 1 D C B 2 Egy m pontból álló irányított gráf útmátrixának p ij tagja akkor és csak akkor 1, ha a + 2 +.+ m mátrix i,j. eleme nem.

1.2 Kacsolt szerkezetes tárolás Pontlista (,) (4,) (4,2) (,2) (,2) (4,2) Éllista (,) (4,) 22