Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:

Slides:



Advertisements
Hasonló előadás
GRIN: Gráf alapú RDF index
Advertisements

Nevezetes algoritmusok
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Vállalat kínálati magatartása
2009 Bevezetés a programozásba Krankovits Melinda.
HIKGHB Németh Gábor LUF9NV Simon Attila. A programozás alapjai előadás Híradástechnikai Tanszék.
Rekurzió (Horváth Gyula és Szlávi Péter előadásai felhasználásával)
Copyright, 2009 © Szlávi Péter A kupac és a prioritási sor típuskonstrukciók Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék
Euklidészi gyűrűk Definíció.
Algebrai struktúrák 1.
AVL-fa építése.
Szélességi bejárás Párhuzamosítása.
Készítette Schlezák Márton
Programozás alapjai.
Programozás alapjai.
Függvények, mutatók Csernoch Mária.
Egydimenziós tömbök. Deklarálás: var valtozónév:array[kezdőérték..végsőérték]of típus; type típusnév = array [kezdőérték..végsőérték] of típus; var valtozónév:
Nat Pedellus Informatika 8. osztály óra.
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
1 Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat 1. Bevezetés Miskolc, 2004.
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Fordítóprogramok FORD01 Programozó matematikus III. évf. Miskolci Egyetem 1 Fordítóprogramok 1.5 Programozó matematikus szak 2003/2004-es tanév II. félév.
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
AVL fák.
Fák, bináris fák INFOÉRA Ez így 60 perc.
Reprezentációs függvény. Adva egy adattípus absztrakt és konkrét specifikációja: d a = ( A, F, E a ); d c = ( C, G, E c ); A = {A 0,..., A n };C = {C 0,...,
Számoljuk meg rekurzív függvénnyel egy bináris fa leveleit!
Dinamikus fák és utak Készítette: Kovács Péter
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Nevezetes algoritmusok Beszúrás Van egy n-1 elemű rendezett tömbünk. Be akarunk szúrni egy n-edik elemet. Egyik lehetőség, hogy végigszaladunk a tömbön,
Exponenciális egyenletek
Alapszint 2.  Készíts makrót, ami a kijelölt cellákat egybenyitja, a tartalmat vízszintesen és függőlegesen középre igazítja és 12 pontos betűméretűre.
Alprogramok deklarációja, definíciója és meghívása Páll Boglárka.
Alprogramok paraméterei. Procedure ( ); Function ( ): ; [var] p1,...,pn:típus1; q1,...,q2:típus2; cím szerinti parméterátadaás (értékváltozás hatással.
Gráfelmélet: Fák.
Hierarchikus adatszerkezetek
Rendezések és szövegkezelő függvények
1 AAO folytatás ++ Csink László. 2 Rekurzív bináris keresés (rendezett tömbben) public static int binker(int[] tomb, int value, int low, int high) public.
Fák.
Rekordok Dinamikus tárkezelés és pointerek Dinamikusan láncolt listák
A feladat : Építsünk AVL-fát a következő adatokból:100,170,74,81,136,185,150,122,52,190,144 (Az AVL-fa olyan bináris keresőfa, amelynek minden csúcsára.
Objektum orientált programozás
Fixpontos, lebegőpontos
Több képlettel adott függvények
Elektronikus tananyag
BINÁRIS FA Definició: A fa olyanösszefüggő gráf, amelyben nincs kör
Példa kettő-három fa felépítésére - törlés művelet Készítette : Krizsai Petra
Mikroökonómia gyakorlat
Gráfok ábrázolása teljesen láncoltan
Nat Pedellus Free Pascal Elágazások..
előadások, konzultációk
Algoritmizálás, adatmodellezés
Bináris kereső fák Itterátorok.
Diszjunkt halmazok adatszerkezete A diszjunkt halmaz adatszerkezet diszjunkt dinamikus halmazok S={S 1,…,S n } halmaza. Egy halmazt egy képviselője azonosít.
Algoritmusok és adatszerkezetek
(Bináris) Kupac (heap) adattípus
BFák Kiegyensúlyozott keresőfák
Dinamikus adatszerkezetek
Piros-fekete fák Beszúrás, ill. törléskor a fa elveszítheti az egyensúlyát. A piros-fekete fák: az egyensúly megtartását biztosítják. +1 bit információ.
Algoritmusok és Adatszerkezetek I.
AVL fák.
Bináris kereső fák Definíció: A bináris kereső fa egy bináris fa,
Algoritmusok és Adatszerkezetek I.
Gráfok - 1 Definíció: Irányított gráf (digráf) G=(V,E) rendezett pár.
2-3-fák A 2-3-fa egy gyökeres fa az alábbi tulajdonságokkal:
Előadás másolata:

Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő: Imre Mihály, műszaki informatikus hallgató

AVL fák AVL fák (Adelson - Velskii - Landis) Az AVL fa olyan bináris kereső fa, amelyben a fa minden csúcsára érvényes, hogy a bal és jobb alfa magassága legfeljebb 1-gyel térhet el AVL nem AVL

AVL fák A magasságot minden csúcsra a csúcs rekordjában tárolhatjuk. Az AVL fa magassága legfeljebb 1.44 log ( N+2 ) a gyakorlatban: log ( N+1 ) Egy AVL fában a csúcspontok minimális száma a h magasság függvényében: S(h) = S(h-1) + S(h-2) + 1 h = 0 : S(h) = 1; h = 1 : S(h) = 2. Az S(h) szorosan kapcsolódik a Fibonacci számokhoz. Ebből következik a fenti képlet. Beszúráskor a magasság információkat a gyökérig vissza fel kell frissíteni. Az AVL tulajdonság megsérülhet. Pl. beszúrjuk a 6-ost, a 8-as csúcsban nem teljesül. Helyreállítás: forgatással az első olyan csúcsban, ahol megsérült az AVL feltétel. 3

AVL fák 4 eset lehetséges, az (alfa) csúcs két gyerekének magassága kettővel tér el: 1.beszúrás az bal gyerekének bal részfájába, 2.beszúrás az jobb gyerekének jobb részfájába, 3.beszúrás az jobb gyerekének bal részfájába, 4.beszúrás az bal gyerekének jobb részfájába. Az 1., 2. és 3., 4. esetek tükörképek. 4

AVL fák Helyreállítás: A beszúrás „kívül” (bal-bal, jobb-jobb) történt, akkor egyetlen forgatással… A beszúrás „belül” (bal-jobb, jobb-bal) történt, akkor kettős forgatással… Ezek a kiegyensúlyozott fa algoritmusok alap műveletei. 5

AVL fák Egyetlen forgatás, 1. eset: 6 k2k2 k2k2 k1k1 k1k1 x x yy z z Ez az egyetlen lehetséges  eset, mivel az Y nem lehet az X-szel azonos szinten, mert akkor már a beszúrás előtt sem teljesült volna az AVL feltétel k 2 -re. És Y nem lehet a Z-vel azonos szinten, mert akkor a k 1 -ben nem teljesülne először az egyensúly.

AVL fák Pl

AVL fák 2. eset: 8 k1k1 k2k2 k2k2 z z y x k1k1 x y

Pl.: 3, 2, 1, 4, 5, 6, a 4 bal gyereke (3) a 4 bal gyerekének (2) jobb gyereke lesz (3)

AVL fák A 3., 4. esetben a szimpla forgatás nem segít: 10 k2k2 k2k2 k1k1 k1k1 y y x x z z

AVL fák Dupla forgatás (3): 11 k1k1 A D k3k3 k2k2 B C k3k3 k2k2 k1k1 A B C D k2k2 k1k1 k3k3 BC A D Először forgatás k 3 gyereke és unokája között, és utána k 3 és új gyereke között.

AVL fák Dupla forgatás (4): 12 k2k2 A D k1k1 k3k3 B C k2k2 k3k3 k1k1 BC A D

AVL fák Példa folytatása: 16, 15, 14, 13, 12, 11, 10, 8, >16,

AVL fák

AVL fák

AVL fák

AVL fák , 8

AVL fák type Avlmut= ^Avlcsucs; avlcsucs = record elem : elemtip; bal: Avlmut; jobb: Avlmut; mag: integer; End; Kerfa = Avlmut; Function Magas(P : Avlmut) : integer Begin If P = nil then Magas := -1 else Magas := P^.mag End; 18

AVL fák Procedure Insert (x: elemtip; var T : Kerfa); Begin If T = nil then Begin new(T); If T = nil then nincs memoria Else Begin T^.elem := x; T^.bal := nil; T^.jobb := nil; T^.mag := 0; End; Else 19

AVL fák Begin If x < T^.elem then Begin Insert (x, T^.bal); If Magas(T^.bal) – Magas(T^.jobb) = 2 then If x < T^.bal^.elem then Sforgatjobbra(T) Else Dforgatjobbra(T) Else T^.mag:= 1 + Max(Magas(T^.bal),Magas(T^.jobb)); End Else If x > T^.elem then Begin {szimmetrikus eset a jobb alfára} End Else {már benne van} End; 20

AVL fák {k2 –nek van bal gyereke, forgat a k2 és bal gyereke között, a magasságot aktualizálja, az új gyökér is k2 lesz} Procedure Sforgatjobbra( var k2: kerfa) Var x : kerfa; Begin x:= k2^.bal; k2^.bal:= x^.jobb; x^.jobb:= k2; k2^.Mag:= 1 + Max(Magas(k2^.bal),Magas(k2^.jobb)); x^.Mag:= Max(Magas(x^.bal), k2^.Mag) + 1; k2:= x; end; 21 k2k2 k2k2 k1k1 k1k1 y x xy z z

AVL fák {k3 –nak van bal gyereke és k3 bal gyerekének van jobb gyereke, a bal-jobb kettős forgatást csinálja meg, magasságot aktualizálja} Procedure Dforgatjobbra(var k3 : kerfa) Begin Sforgatbalra(k3^.bal); {k1 és k2 között forgat} Sforgatjobbra(k3);{k3 és k2 között forgat} End; 22 k1k1 A D k3k3 k2k2 B C k2k2 k1k1 k3k3 B C A D