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

Hasonló dokumentumok
Tuesday, March 6, 12. Hasító táblázatok

Algoritmusok és Adatszerkezetek II. előadás

Algoritmusok és adatszerkezetek II.

Algoritmusok és adatszerkezetek gyakorlat 07

Adatszerkezet - műveletek

Önszervező bináris keresőfák

Rendezettminta-fa [2] [2]

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

Algoritmusok és Adatszerkezetek II.

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

ÖNSZERVEZŐ BINÁRIS KERESŐFÁK HATÉKONYSÁGA

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

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

Elemi adatszerkezetek

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

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

Algoritmusok és adatszerkezetek II.

5/1. tétel: Optimalis feszítőfák, Prim és Kruskal algorithmusa. Legrövidebb utak graphokban, negatív súlyú élek, Dijkstra és Bellman Ford algorithmus.

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

Adatszerkezetek 7a. Dr. IványiPéter

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

Táblázatok fontosabb műveletei 1

2. Milyen értéket határoz meg az alábbi algoritmus, ha A egy vektor?. (2 pont)

Hierarchikus adatszerkezetek

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

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

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

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

Gráfalgoritmusok és hatékony adatszerkezetek szemléltetése

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

Egyesíthető prioritási sor

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

bármely másikra el lehessen jutni. A vállalat tudja, hogy tetszőlegesen adott

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

Algoritmusok és adatszerkezetek II.

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

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 I. 7. előadás. (Horváth Gyula anyagai felhasználásával)

Algoritmusok és adatszerkezetek II.

Adatszerkezetek 1. előadás

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

Egyesíthető prioritási sor

end function Az A vektorban elõforduló legnagyobb és legkisebb értékek indexeinek különbségét.. (1.5 pont) Ha üres a vektor, akkor 0-t..

Bináris keresőfák. Adat : M Elemtip és Elemtip-on értelmezett egy lineáris rendezési reláció,

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

Adatszerkezetek és algoritmusok

Minimális feszítőfák Legyen G = (V,E,c), c : E R + egy súlyozott irányítatlan gráf. Terjesszük ki a súlyfüggvényt a T E élhalmazokra:

Minimális feszítőfák Legyen G = (V,E,c), c : E R + egy súlyozott irányítatlan gráf. Terjesszük ki a súlyfüggvényt a T E élhalmazokra:

Algoritmusok és adatszerkezetek II.

Gráfok 2. Legrövidebb utak, feszítőfák. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor

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

Algoritmuselmélet 2. előadás

Információs Technológia

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

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

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 2. Dr. Iványi Péter

Példa Hajtsuk végre az 1 pontból a Dijkstra algoritmust az alábbi gráfra. (A mátrixban a c i j érték az (i, j) él hossza, ha nincs él.

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

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

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

Elmaradó óra. Az F = (V,T) gráf minimális feszitőfája G-nek, ha. F feszitőfája G-nek, és. C(T) minimális

Algoritmusok vektorokkal keresések 1

Adatszerkezetek Hasító táblák. Dr. Iványi Péter

22. GRÁFOK ÁBRÁZOLÁSA

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. 1. ábra.

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

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

HÁZI FELADAT PROGRAMOZÁS I. évf. Fizikus BSc. 2009/2010. I. félév

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

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

Megoldás meghatározása Ez a szakasz kitölti a c és S táblázatokat, a kiíratás S alapján egy rekurzív algoritmussal megtehető.

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

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

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

Példa 30 14, 22 55,

4. Előfeltételek (ha vannak) 4.1 Tantervi Nincs 4.2 Kompetenciabeli Elemi algoritmusok ismerete

Adatszerkezetek II. 1. előadás

Gráfelméleti feladatok. c f

Adatbázis, adatbázis-kezelő

Melykeres(G) for(u in V) {szin(u):=feher Apa(u):=0} for(u in V) {if szin(u)=feher then MBejar(u)}

Hátizsák feladat. Példa: A tárgyak (súly, fontosság) párokban (4,6) (3,5) (2,3) (2,3) a hátizsák kapacitása 8.

Gyakorló feladatok ZH-ra

2. Visszalépéses keresés

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

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

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

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

Adatszerkezetek II. 2. előadás

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

9. előadás. A táblázat. A táblázatról általában, soros, önátrendező, rendezett és kulcstranszformációs táblázat

A gráffogalom fejlődése

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

Példa Hajtsuk végre az 1 pontból a Dijkstra algoritmust az alábbi gráfra. (A mátrixban a c i j érték az (i, j) él hossza, ha nincs él.

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

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:

Nagy HF u tmutato 2011/2012 II. fe le v

Átírás:

Ugrólisták

Ugrólisták

Ugrólisták

Ugrólisták RSL Insert Example insert(22) with 3 flips 13 8 29 20 10 23 19 11 2 13 22 8 29 20 10 23 19 11 2 Runtime?

Ugrólisták

Empirical analysis

http://www.inf.u-szeged.hu/~tnemeth/alga2/eloadasok/skiplists.pdf

Adatszerkezetek tervezése

Halmazok egyesítése motiváció Kruskal algoritmus felelevenítés kezdetben a gráf minden pontja külön halmazban van ;! vegyük a gráfból az éleket növekvő sorrendben {!! ha az él 2 végpontja külön halmazban van {!!! az él legyen része a minimális feszítőfának ;!!! a 2 végpontot tartalmazó halmazt egyesítsük ;!! }! }

Halmazok egyesítése Kruskal algoritmus felelevenítés

Honnan lehet tudni, hogy a következő él beválasztásával a feszítőerdő erdő (azaz körmentes) marad?

Példa

Kruskal algoritmus felelevenítés

Kruskal algoritmus felelevenítés

Kruskal algoritmus felelevenítés

Kruskal algoritmus felelevenítés

Kruskal algoritmus felelevenítés

Kruskal algoritmus felelevenítés

Kruskal algoritmus felelevenítés

Kruskal algoritmus felelevenítés

Kruskal algoritmus felelevenítés

Kruskal algoritmus felelevenítés

Kruskal algoritmus felelevenítés

Kruskal algoritmus felelevenítés

Kruskal algoritmus felelevenítés

Kruskal algoritmus felelevenítés

Kruskal algoritmus felelevenítés

Kruskal algoritmus felelevenítés

Kruskal algoritmus felelevenítés

Kruskal algoritmus felelevenítés foreach (el from G) {!! rep1=rep(el.p) ;!! rep2=rep(el.q) ;!! if (rep1!=rep2) {!!! hozzaad(el) ;!!! unio(rep1,rep2) ;!! }! }

Honnan lehet tudni, hogy az adott él 2 végén lévő pont egy halmazban van-e? Hogyan tudom a kezdetben n halmazt hatékonyan egyesítgetni? Halmazok listájában az összes halmazt végigkeresni O(n) lenne :( Halmaz (piros-fekete fa) adatszerkezettel 2 halmaz egyesítése O(n) lenne :(

?

Halmazerdő adattípus nil

Kruskal algoritmus halmazerdővel foreach (el from G) {!! rep1=rep(el.p) ;!! rep2=rep(el.q) ;!! if (rep1!=rep2) {!!! hozzaad(el) ;!!! unio(rep1,rep2) ;!! }! } gpont rep(gpont p) {!! gpont q;!! while (p.kovetkezo!=nil) {!!! q=p ;!!! p=p.kovetkezo ;!! }!! return q ;! }

Kruskal algoritmus halmazerdővel gpont rep(gpont p) {!! gpont q;!! while (p.kovetkezo!=nil) {!!! q=p ;!!! p=p.kovetkezo ;!! }!! return q ;! } nil foreach (el from G) {!! rep1=rep(el.p) ;!! rep2=rep(el.q) ;!! if (rep1!=rep2) {!!! hozzaad(el) ;!!! unio(rep1,rep2) ;!! }! } rep1 unio(rep1,rep2) {!! rep2.kovetkezo=rep1 ;! } rep2

Halmazerdő tömörítése gpont rep(gpont p) {!! gpont q;!! while (p.kovetkezo!=nil) {!!! q=p ;!!! p=p.kovetkezo ;!!! q.kovetkezo=p.kovetkezo ;!! }!! return p ;! } p q

Halmazerdő hatékonyabb tömörítése gpont rep(gpont p) {!! gpont q;!! while (p.kovetkezo!=nil) {!!! if (p.kovetkezo.kovetkezo!=nil) sorba(p) ;!!! p=p.kovetkezo ;!! }!! while (!sor_ures()) {!!! q=sorbol() ;!!! q.kovetkezo=p ;!! }!! return p ;! } 5 3 4 6 1 q 2 p 4 7 5 3

Halmazok egyesítése Kruskal algoritmus.

Halmazok egyesítése halmazerdő felépítése Kruskal algoritmus.

Halmazok egyesítése halmazerdő felépítése Kruskal algoritmus.

Halmazok egyesítése halmazerdő felépítése Kruskal algoritmus.

Halmazok egyesítése halmazerdő felépítése Kruskal algoritmus.

Halmazok egyesítése halmazerdő felépítése Kruskal algoritmus.

Halmazok egyesítése halmazerdő felépítése Kruskal algoritmus.

Halmazok egyesítése halmazerdő felépítése Kruskal algoritmus.

Halmazok egyesítése halmazerdő felépítése Kruskal algoritmus.

Halmazok egyesítése halmazerdő felépítése Kruskal algoritmus

Halmazok egyesítése halmazerdő felépítése Kruskal algoritmus.

Halmazok egyesítése halmazerdő felépítése Kruskal algoritmus.

Halmazok egyesítése halmazerdő felépítése Kruskal algoritmus.

Halmazok egyesítése halmazerdő felépítése Kruskal algoritmus.

Halmazok egyesítése halmazerdő felépítése Kruskal algoritmus.

Halmazok egyesítése halmazerdő felépítése Kruskal algoritmus

Halmazok egyesítése halmazerdő felépítése Kruskal algoritmus.

Halmazok egyesítése halmazerdő felépítése Kruskal algoritmus

Halmazok egyesítése halmazerdő felépítése Kruskal algoritmus.

Halmazok egyesítése halmazerdő felépítése Kruskal algoritmus

Halmazerdő átlagos magassága foreach (el from G) {!! rep1=rep(el.p) ;!! rep2=rep(el.q) ;!! if (rep1!=rep2) {!!! hozzaad(el) ;!!! unio(rep1,rep2) ;!! }! } unio 1-el hosszabítja az utakat rep 1-hosszúra rövidíti az érintett pontokon az utakat rep legalább 2-szer többször fut le mint unio HF: halmazerdő átlagos magassága Futási idő elemzése: [2] 444-455

eleje p1 p2 eleje p1 p2 HF: algoritmus megadása

ÖSSZEFOGLALÁS absztrakt adatszerkezetek és műveleteik verem és sor megvalósítása láncolt listával halmaz, függvény absztrakt adatszerkezet bináris keresőfák, véletlen építésű bináris keresőfa, optimális bináris keresőfa rendezett-minta fák, intervallumfák AVL fák általános keresőfák, B-fák 2-3 fák, piros-fekete fák amortizációs költségelemzés önszervező bináris keresőfák hasítótáblázatok ugrólisták prioritási sor megvalósítása binomiális kupac, Fibonacci kupac speciális (problémaspecifikus) adatszerkezetek halmazerdő - összesítéses módszer - potenciálmódszer

O(f(x))* elem (kulcs) beszúrása adott elem törlése** adott kulcsú elem keresése maximum keresés rákövetkező elem k. elem keresése egyesítés vágás** rendezetlen tömb 1 1 n n n? n+m n kulcs-indexelt tömb 1 1 1 n n? min(n,m) n rendezett tömb n n log n 1 1 n n+m n rendezetlen láncolt lista 1 1 n n n? 1 n rendezett láncolt lista n 1 n 1 1 n n+m 1 ugrólista log n log n log n 1 1 n n+m 1 ön-kiegyensúlyozó keresőfa log n log n log n log n 1, log n log n (n+m) log n n log n binomiális kupac log n log n n 1 n? log n log n hasító tábla 1 1 1 n n? n+m n * amortizációs költség ** keresés nélkül