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 a fákat, amelyekben egy elemből csak két másik elembe mutat nyíl bináris fáknak nevezzük. A bináris fa Vagy üres fa Vagy egy olyan fa amelynek a bal és jobb oldali mutatója egy-egy bináris fára mutat
Bináris fák, példa root alma korte szőlő barack szilva dió 4
Bináris kereső fa építése Helyezzük el az első elemet. Ha a következő elem kisebb, mint az előző akkor a gyökérelemtől balra helyezzük el, ha nagyobb akkor jobbra. A bevitt elemeket bejárva, ha a csomópontnál kisebb akkor balra menjünk, egyébként jobbra. 5
Példa root 5 Input: 5 6
Példa root 5 Input: 5 7
Példa root 5 Input: 5 9 9 8
Példa root 5 Input: 5 9 4 9 4 9
Példa root 5 Input: 5 9 4 1 9 1 4 10
Példa root 5 Input: 5 9 4 1 6 1 4 6 9 szint Legnagyobb elem 2 lépésben található meg Ha más sorrendben visszük be az elemeket más fát kapunk! 11
Példa root 1 Input: 1 4 5 6 9 4 5 6 6szint Legnagyobb elem 6 lépésben található meg 9 12
Bejárási példa root 5 9 1 4 6 Eredmény: 1 1
Bejárási példa root 5 9 1 4 6 Eredmény: 1 14
Bejárási példa root 5 9 1 4 6 Eredmény: 1 4 15
Bejárási példa root 5 9 1 4 6 Eredmény: 1 4 5 16
Bejárási példa root 5 9 1 4 6 Eredmény: 1 4 5 6 17
Bejárási példa root 5 9 1 4 6 Eredmény: 1 4 5 6 9 (ZH kérdés) 18
Bináris kereső fa A bináris kereső fákba gyorsan lehet adatot beilleszteni és adatot keresni Általában egy adat keresését egy N csomópontú fában log(n) idő alatt lehet végrehajtani Mivel különböző sorrendű adatok esetén különböző fát kapunk, rosszabb esetben lassabb az algoritmus (rosszul egyensúlyozott bináris fák) Egyensúlyozott fát kell létrehozni 19
Egyensúlyozás Alapművelet a forgatás balra jobbra 20
Forgatás Max szintek száma: 5 Max szintek száma: 4 (ZH kérdés) 21
Mélységi keresés fákban 1. A gyökér csúcsból indulunk 2. Addig megyünk lefelé amíg lehetséges. Ekkor visszalépünk egyet 4. Ha most nem a gyökérben állunk akkor visszaugrunk a 2. Lépésre BACKTRACK: lásd előző bejárási példa Másik módszer: Szélességi keresés 22
Fákban vagy gráfokban Szélességi keresés Egy tetszőleges csomópontból indulunk Minden lépésben a feldolgozandó csúcsokhoz hozzáadjuk a legutóbbi lépésben elért csúcsokat 2
Példa szélességi keresésre root 5 Lista: 5 9 1 4 6 Eredmény: 24
Példa szélességi keresésre root 5 Lista: 9 9 1 4 6 Eredmény: 5 25
Példa szélességi keresésre root 5 Lista: 9 9 1 4 1 4 6 Eredmény: 5 26
Példa szélességi keresésre root 5 Lista: 9 1 4 6 1 4 6 Eredmény: 5 9 27
Példa szélességi keresésre root 5 Lista: 9 4 6 1 4 6 Eredmény: 5 9 1 28
Példa szélességi keresésre root 5 Lista: 6 9 1 4 6 Eredmény: 5 9 1 4 29
Példa szélességi keresésre root 5 Lista: - 9 1 4 6 Eredmény: 5 9 1 4 6 0
Bináris fa Művelet Átlagos eset Legrosszabb eset Keresés O(log N) O(N) Beillesztés O(log N) O(N) Törlés O(log N) O(N) Kiválasztás O(N) O(N) Rendezés O(N) O(N) 1
Gráfok A legelvontabb adattípus, de fontos több szempontból is Példa: Vegyük az európai országokat, minden ország egy csomópont Húzzunk vonalat két ország (csomópont) közé, ha van közös határuk 2
Példa 18 17 19 16 8 14 15 5 2 5 7 1 20 4 6 6 11 10 12 7 24 2 25 22 21 1 2 9 26 1 28 29 0 27 4
Eredmény 9 4
Eredmény 5
Csomópontok (V) Élek (E) Gráf csomópontok + élek = gráf (G) G=(V,E) Gráfok: Objektumok, helyek, emberek,... közötti valamilyen kapcsolatot írnak le 6
Élek Irányítottság nélküli él Irányított élek A B Egyirányú él A B Kéirányú él A B 7
Súlyozott élek Számot rendelünk az élekhez Például Ellenállás Hossz Egyéb jellemző Legrövidebb út A-ból D-be? 2 A B 5 2 Csomópontok is lehetnek súlyozottak C D 8
Gráfok ábrázolása 1 2 Szomszédsági lista A ponttal szomszédos pontokat tároljuk egy listában 5 4 Pontok listája 1 2 2 5 1 4 5 2 4 4 5 2 5 1 2 4 9
Gráfok ábrázolása 1 2 5 4 Irányítatlan gráf esetén: A T = A Szomszédsági mátrix (csúcsmátrix) 1 2 4 5 a ij 1, ha (i, j) E = 0, külkönben 1 2 4 5 0 1 0 0 1 1 0 1 1 1 0 1 0 1 0 0 1 1 0 1 1 1 0 1 0 40
Teljes gráf Minden csomópont minden csomóponttal össze van kötve 41
Izomorf G 1 és G 2 gráf izomorf, ha van közöttük egy-egy értelmű megfeleltetés. B A H B E H C G G C D F D F E A 42
Utak és körök A G=(V,E) gráfban az u csúcsot az u csúccsal összekötő út, amely a csomópontok véges sorozata, [u 0, u 1,..., u n ], ahol u 0 = u és u n = u és (u i-1,u i ) eleme E-nek. Az út hossza az élek száma Az út egy kör, ha az [u 0, u 1,..., u n ] utban u 0 = u n 4
Euler féle gráf Minden élen úgy végig lehet menni, hogy minden élen csak egyszer megyünk át 44
N csomópontú gráf Gráf éleinek összege Egy csúcsba befutó élek száma: fokszám ( ) P 1 P 2 P 1, P 2, P n (P 1 ), (P 2 ), (P n ) P P n E = 1 2 n i= 1 ρ ( P i ) 45
Königsbergi hidak problémája Be lehet-e járni a várost úgy, hogy minden hídon csak egyszer megyünk át? 46
Königsbergi hidak problémája A C D A csúcsok nem páros fokúak. Tétel : ha páros fokúak a csúcsok, akkor körül lehet járni és Euler gráf B 47
Hamilton kör Egy irányítatlan gráfban olyan kör mely a gráf minden pontján pontosan egyszer megy végig. Dodekaéder gráf reprezentációja 48
Utazó ügynök probléma Travelling salesman problem (TSP) Egy ügynöknek n várost kell meglátogatnia tetszőleges sorrendben, de minnél kisebb utazási költség mellett. Adott egy n csúcsú teljes gráf, melynek éle súlyozottak A feladat olyan Hamilton-kör megtalálása, melynke összköltsége minimális (az élekhez rendelt számok összege) 49
Fák A fa olyan gráf, amiben nincs kör Tétel : ha n csúcsa van egy fának akkor n-1 éle 50
Laplace mátrix a ij = -1ha i ρ j és ( v ) v i i és ha i v = j 0 egyébként j szomszédosak 1 2 4 5 1 5 2 4 1 2 4 5 2-1 0 0-1 -1 4-1 1-1 0-1 2-1 0 0-1 -1-1 -1-1 0-1 51
Fiedler vektor A Laplace mátrix második legkisebb saját vektora Megadja hogyan kell a gráfot elvágni úgy, hogy A lehető legkevesebb élet vágjuk el A csomópontok száma a két al-gráfban egyenlő legyen 52
Gráfok, duális gráfok 5
Voronoi diagram Egy pont halmaz közelségi diagramja Felosztja a teret úgy, hogy a tartomány minden pontja közelebb van a tartomány pontjához mint bármelyik másik ponthoz 54
Delaunay háromszögelés A Voronoi diagram duálisa egy háromszögelés Matematikailag definiálható A háromszögelés egyedi A háromszögek köré írt kör üres!!!! Maximalizálja a háromszögek minimális szögét Kiterjeszthető n dimenzióba Felhasználása széleskörű 55
Felszín modellezés 11,000,000 magassági mérés kombinálásából 10,000 pont és 260,000 háromszögből készített model 56
Véges elemes analízis 57
Delaunay háromszögelés 58
Eredmény 59