Hierarchikus lista Kétféle értelemezése van:

Slides:



Advertisements
Hasonló előadás
A Floyd-Warshall algoritmus
Advertisements

Nevezetes algoritmusok
Készítette: Mester Tamás METRABI.ELTE.  Adott egy G irányított vagy irányítás nélküli, véges gráf. Az eljárás célja a G gráf összes csúcsának bejárása.
ADATBÁZISOK.
Adatbázis-kezelés.
Készítette: Major Máté
Készítette: Mester Tamás METRABI.ELTE.  Adott egy G irányított vagy irányítás nélküli, véges gráf. Az eljárás célja a G gráf összes csúcsának bejárása.
Minimális költségű feszítőfák
Erősen összefüggő komponensek meghatározása
Dijkstra algoritmus Irányított gráfban.
Gráfok szélességi bejárása
Gráf Szélességi bejárás
Gráfok szélességi bejárása Algoritmus bemutatása egy gráfon példa.
3. LOGIKAI ADATSZERKEZETEK
Készítette: Pető László
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ő:
Szélességi bejárás A szélességi bejárással egy irányított vagy irányítás nélküli véges gráfot járhatunk be a kezdőcsúcstól való távolságuk növekvő sorrendjében.
Gráfok Készítette: Dr. Ábrahám István.
Gráf szélességi bejárása
Készítette: Lakos Péter.  Adott egy irányított vagy irányítatlan, véges gráf.  Írjuk ki a csúcsokat egy kezdőcsúcstól való távolságuk növekvő sorrendjében.
Algoritmusok II. Gyakorlat 2. Feladat Pup Márton.
Listák, Vermek és Várakozási Sorok. Vermek Def: Egy sajátos lista amelyben minden beszúrási illetve törlési művelet csak a lista egyik végén történik.
Listák, Vermek és Várakozási Sorok. Listák Pl: Kirándulók listája Bevásárló lista Alma Kenyér Krumpli Szappan Mosópor Bevásárló lista.
Struktúra nélküli adatszerkezetek
Adatszerkezetek 1. előadás
Egyirányban láncolt lista
Speciális Listák: Sor A sor adatszerkezet olyan speciális lista, amelyet a műveletei definiálnak. 1. ACCESS HEAD 3. POP itt GET-nek nevezzük 5. INJECT.
Hierarchikus adatszerkezetek
Gráf Szélességi bejárás/keresés algoritmusa
11. tétel Adatbázis táblái közti kapcsolatok optimalizálása
Fák.
A Dijkstra algoritmus.
Gráf szélességi bejárása SzB(G,p). Tetszőleges gráf, melyben a p csúcsot választottam kiindulónak: A gráfnak megfelelő fa:
SZÉLESSÉGI BEJÁRÁS Gréczy Ákos – JKR7ZR. MESE Van egy középkori kisváros, ahol az utcai lámpákat egy korosodó lámpagyújtogató ember gyújtja fel. Egyik.
Gráfok 1. Szlávi Péter ELTE IK Média- és Oktatásinformatika Tanszék
Logikai programozás 5..
1 Szélességi Bejárás Györgyi Tamás – GYTNAAI.ELTE 2007 Március 22 Algoritmusok És Adatszerkezetek 2 Gráfalgoritmus S b a d e f h g c.
1 Dijkstra Algoritmusa Györgyi Tamás – GYTNAAI.ELTE 2007 Április 02 Algoritmusok És Adatszerkezetek 2 Gráfalgoritmus S a b c d e
Mélységi bejárás Az algoritmus elve: Egy kezdőpontból kiindulva addig megyünk egy él mentén, ameddig el nem jutunk egy olyan csúcsba, amelyből már nem.
Szélességi bejárás. Kezdőcsúcsból felvétele Innen haladunk egy szinttel mélyebbre, felvesszük az összes olyan csúcsot, amit így elérhetünk Ha elfogytak,
BINÁRIS FA Definició: A fa olyanösszefüggő gráf, amelyben nincs kör
Szélességi bejárás. Kezdőcsúcs felvétele Innen haladunk egy szinttel lejebb, itt felvesszük az összes olyan csúcsot, amit elérünk Ha elfogytak, akkor.
Algoritmus és adatszerkezet Tavaszi félév Tóth Norbert1 Floyd-Warshall-algoritmus Legrövidebb utak keresése.
Adatbáziskezelés. Adat és információ Információ –Új ismeret Adat –Az információ formai oldala –Jelsorozat.
Horváth Bettina VZSRA6.  Célja: Az eljárás célja egy véges gráf összes csúcsának bejárása a kezdőcsúcstól való távolságuk szerinti növekvő sorrendben.
Útkeresések.
SZÉLESSÉGI BEJÁRÁS Pap Imre DVX468. A bejárás Meglátogatjuk az első csúcsot, majd ennek a csúcsnak az összes szomszédját. Aztán ezen szomszédok összes.
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.
Gráf szélességi bejárása. Cél Az algoritmus célja az, hogy bejárjuk egy véges gráf összes csúcsát és kiírjuk őket a kezdőcsúcstól való távolságuk szerint.
Gráf szélességi bejárása. A szélességi bejárás elmélete Célja egy véges gráf összes csúcsának bejárása a kezdőcsúcstól való távolságuk szerinti növekvő.
Algoritmusok és adatszerkezetek
Szélességi bejárás Gráf-algoritmusok Algoritmusok és adatszerkezetek II. Gergály Gábor WZBNCH1.
INFOÉRA Gráfok, gráfalgoritmusok II. (Horváth Gyula és Szlávi Péter előadásai felhasználásával) Juhász István-Zsakó László: Informatikai.
Szélességi bejárás. Véges gráf összes csúcsának bejárása a kezdőcsúcstól való távolságuk szerinti növekvő sorrendben Egy csúcsot egyszer járunk be Egyenlő.
Gráf Szélességi bejárás Készítette: Giligor Dávid Neptun : HSYGGS.
3. Feladat Szélességi Bejárás FZGAF0 – Pintér László.
Szélességi bejárás Pátyerkó Dorina (VTYX9O). Szélességi bejárás algoritmusa Kijelölünk egy kezdőcsúcsot. A csúcs szomszédjait megkeressük, majd betesszük.
A Dijkstra algoritmus.
BFák Kiegyensúlyozott keresőfák
Algoritmusok és Adatszerkezetek I.
Depth First Search Backtracking
Algoritmusok és Adatszerkezetek I.
Gráfalgoritmusok G=(V,E) gráf ábrázolása
Dijkstra algoritmusa: legrövidebb utak
Dijkstra algoritmusa: legrövidebb utak
Dijkstra algoritmusa: legrövidebb utak
Gráfalgoritmusok G=(V,E) gráf ábrázolása
2-3-fák A 2-3-fa egy gyökeres fa az alábbi tulajdonságokkal:
Előadás másolata:

Hierarchikus lista Kétféle értelemezése van: d e f a b c i h g Kétféle értelemezése van: Tekinthető a rendezett fa egy karakteres reprezentációjának, amely a fa preorder bejárásával kapható meg: (a(b)(c(d)(e)(f(g)(h)))(i)) Ugyanazok a fa műveletek végezhetők el, mint korábban, illetve ugyanúgy rendezhető is. 23:07:05

Hierarchikus lista A lista adatszerkezet általánosításának is tekinthető (a lista elemei maguk is lehetnek listák).  Az összes listaművelet értelmezhető rajta. (Ez egy ötelemű lista (melynek utolsó eleme egy (ötelemű lista))) A hierarchikus lista ez utóbbi értelmezése fontos pld. A LISP programozási nyelv esetén. Ezt a nyelvet a hierarchikus listára találták ki. A lista elemei lehetnek: karakter, karaktersorozat, lista. 23:07:05

Hálós adatszerkezet (háló) Bármely elemnek akárhány megelőzője és akárhány rákövetkezője lehet (fa általánosítása). Szélsőséges esetek: egy adatelem önmaga megelőzője és rákövetkezője is lehet (f), két adatelem kölcsönösen egymás megelőzője és rákövetkezője lehet (b, c). irányítatlan gráf esetén ….. A matematikából ismert, összefüggő irányított gráffal reprezentálható rajzban. A gráfok fogalmai, algoritmusai alkalmazhatók. Tárolás: szétszórt vagy folytonos d e f a b c 23:07:05

Háló szétszórt ábrázolása Ezt multilistával szokás megvalósítani Mutató tömböket alakítunk ki az elemeknél (az elemeket önkényes módon sorbarendezzük). Ezek a mutatótömbök a megfelelő elemeket címzik. d 5 e 3 f 6 a 1 b 4 c 2 1 4 2 2 4 2 5 5 4 4 3 6 5 6 6 23:07:05

Háló folytonos ábrázolása Ezt szomszédsági mátrixszal szokás megoldani. Boole-mátrix (0,1: logikai értékek) Mérete a háló elemeinek számával négyzetesen arányos: nxn-es, ha n elemünk van. A mátrix sorait és oszlopait az önkényes sorrend szerint a csúcsok sorszámaival cimkézzük. 1 2 3 4 5 6 d 5 e 3 f 6 a 1 b 4 c 2 23:07:05

Hálós adatszerkezet műveletei A hálós adatszerkezet dinamikus és homogén, de az alapműveletek speciálisan értelmeződnek rá: Létrehozás: üres adatszerkezetet hozunk létre Bővítés: a szomszédsági mátrixnak eggyel nő a sor és oszlop száma: az új sor és oszlop értékeit a szomszédsági viszonynak megfelelően töltjük fel. Törlés: a mátrixnak törlődni fog egy azonos címkéjű sora és oszlopa. Az, amelyik a törlendő elemet reprezentálja. 23:07:05

Hálós adatszerkezet műveletei Csere: megoldható. Rendezés, keresés nem értelmezett. Feldolgozás alapja a bejárás. Bejárás: egy adott hálós adatszerkezetben kitüntetünk egy elemet, a kezdőpontot, majd ebből kiindulva térképezzük fel a háló összes elemét. A bejárás lehet Szélességi Mélységi 23:07:05

Háló szélességi bejárása Szélességi bejárás: a bejárás szisztematikusan vizsgálja az elemeket, az adott elem rákövetkezőit és összegyüjti az S-ből elérhető összes elemet. Létrehoz egy S gyökerű szélességi fát (erdőt), mely ezen elemeket tartalmazza, és benne az S-ből egy adott elemhez vezető út mindig a legrövidebb. Az algoritmus mindig az S-től azonos távolságra levő elemeket vizsgálja, és buborékszerűen terjeszti ki a vizsgálatot eggyel lejjebb lépve. 23:07:05

Háló szélességi bejárása A szélességi fa szintenként épül fel, ezért kezdetben minden elem fehér (ezek később szürkékre, majd feketére változnak). Egy elem a bejárás során elértté válik, és szürke színű lesz, ha először jutunk el hozzá. Ezután a színe már nem lehet fehér. A fekete elemek összes megelőzője fekete, rákövetkezőik vagy szürkék, vagy feketék lehetnek. A szürke elemek rákövetkezői fehérek is lehetnek, de a megelőzőjük fekete. A szürke elemek alkotját a buborék felszínét (csak szürke elemről tudunk tovább menni). 23:07:05

Háló szélességi bejárása Szürke: elértük a csúcsot. Kiegészítjük vele a fát, amit szintenként építünk. Fekete: elértük a csúcsot , plusz az összes rákövetkezőjét is. Ha az S-ből az összes elemet megtaláltuk, és még van fehér elem, akkor új kezdőpontot kell választanunk, és újra végre kell hajtanunk rá az algoritmust. Új kezdőpontnak választjuk azt az elemet, pl. amelynek a sorában a legtöbb egyes van. 23:07:05

Háló szélességi bejárása A gyakorlatban sok szürke elemet kell kezelnünk, így ezeket az elérésük és feldolgozásuk közötti időre egy sorba jó betenni. A sor első elemével dolgozunk mindig. A fába csak a fehérről szürkére változott elemeket vesszük fel. Egy szélességi fa vagy egy szélességi erdő lett az eredmény (A kezdőcsúcsoktól függően eltérő fák ill. erdők is kialakulhatnak.) 23:07:05

Háló szélességi bejárása d b c d 5 e 3 f 6 a 1 b 4 c 2 (a)  (c, b) [a] (c, b)  (b, d) [a, c] (b, d)  (d) [a, c, b] (d)  () [a, c, b, d] (e)  (f) [a, b, c, d, e] (f)  [a, b, c, d, e, f] f e 23:07:05

Háló szélességi bejárása d c b f e d 5 e 3 f 6 a 1 b 4 c 2 e b d f a c c a b d f e Valójában az az érdekes, hogyan lehet eljutni valahová S-ből. 23:07:05

Háló szélességi bejárása d c b f e d 5 e 3 f 6 a 1 b 4 c 2 e b d f a c c a b d f e Valójában az az érdekes, hogyan lehet eljutni valahová S-ből. 23:07:05

Szélességi keresés (egy) algoritmusa procedure SzK (G,s)‏ for i  1 to méret(G)‏ do SZÍN[i]fehér D[i]  [i]0 endfor SZÍN[s]szürke D[s]0 Qúj_üres_SOR PUT(Q,s) -- D[i]: Az i. csúcs ilyen -- messze van az s.-től. -- [i]: Az s.-ből i.-be vezető -- úton ez az utolsó csúcs while NEM_ÜRES(Q) do uGET(Q) for i1 to méret(G[u].KÖV) do vG[u].KÖV[i] if SZÍN[v] = fehér then SZÍN[v]szürke D[v]D[u]+1 [v]u PUT(Q,v) end if end for SZÍN[u]fekete end while end procedure 23:07:05

Háló mélységi bejárása Mélységi bejárás: mélységi fa (erdő) építésével S-ből induló utakat próbálunk nyilvántartani. Hasonlít a széleségi bejáráshoz, csak a szürke csúcsok feldolgozási idejét változtatjuk meg: amikor választanunk kell a szürke csúcsok közül, mindig az utoljára elért szürke csúcsokból haladunk tovább. Egy verembe rakjuk a szürke csúcsokat az elérésük sorrendjében. Mélységi erdő lesz az eredmény. Itt abban az értelemben is, hogy a részfák is mélységi fák. 23:07:05

Háló mélységi bejárása d c d 5 e 3 f 6 a 1 b 4 c 2 (a)  (a, c) [ ] (a, c)  (a, c, b) [ ] (a, c, b) (a, c) [b] (a, c)  (a, c, d) [b] (a, c, d) (a, c) [b, d] (a, c)  (a) [b, d, c] (a)  () [b, d, c, a] (e)  (e, f)[b, d, c, a] (e, f)  (e)[b, d, c, a, f] (e)  ()[b, d, c, a, f, e] f e 23:07:05

Háló mélységi bejárása (a)  (c)  [ ] (a, c)  (a, c, e) [ ] (a, c, e)(a, c, e, d) [ ] (a, c, e, d)(a, c, e, d, b) [ ] (a, c, e, d, b) (a, c, e, d) [b] (a, c, e, d) (a, c, e) [b, d] (a, c, e) (a, c, e, f) [b, d] (a, c, e, f) (a, c, e) [b, d, f] (a, c, e) (a, c) [b, d, f, e] (a, c)  (a) [b, d, f, e, c] (a)  () [b, d, f, e, c, a] a d c b f e a 1 b 4 c 2 d 5 e 3 f 6 23:07:05

Háló mélységi bejárása d c b f e e a d f b c f b c a e d a 1 b 4 c 2 d 5 e 3 f 6 23:07:05

Mélységi bejárás (egy) algoritmusa procedure MB (G,s)‏ for i  1 to méret(G)‏ do [i]0 SZÍN[i]fehér endfor idő0 MK_BEJÁR_1(G,s) if SZÍN[i]=fehér then MK_BEJÁR_1(G,i) end if end procedure procedure MB_BEJÁR_1(G,u) SZÍN[u]szürke D[u] időidő+1 for i1 to méret(G[u].KÖV) do vG[u].KÖV[i] if SZÍN[v] = fehér then [v]u MK_BEJÁR_1(G,v) end if end for SZÍN[u]fekete F[u]időidő+1 end procedure -- D[u], F[u], [u]: ?? 23:07:05

Néhány gráfelméleti fogalom Fogalmak: Út: egy hálóban azon elemek összességét, amelyek listát alkotnak a gráfon belül, útnak nevezzük. Körút: olyan út, amelynek az utolsó eleme után az első következik. Speciális gráfműveletek: Útkeresés két csomópont között, annak eldöntése, hogy van-e körút a hálóban Meghatározni, hogy egy adott csomópontból elérhető-e egy másik, Illetve, mely csomópontok érhetők el belőle 23:07:05

Rekord adatszerkezet A rekord statikus adatszerkezet, heterogén (ez az egyetlen). Mezőkből áll, ezek sorrendje kötött, mindegyiknek saját neve van. Tárolása: folytonos, de szétszórt is lehet. Létrehozás: mezők neve alapján, nem minden mező kap szükségszerűen értéket. Bővítés: nincs. Több mező nem lehet, de értéket kaphat olyan mező, aminek eddig még nem volt értéke. 23:07:05

Rekord adatszerkezet Csere: név alapján az értéket cseréljük Törlés: csak logikai (cserével valósul meg) Elérés: (a rekordon belül) közvetlen, mező név alapján Rendezés, keresés, bejárás nincs Feldolgozás: mezőnevek alapján Az érték lehet Atomi Rekord 23:07:05

Rekord adatszerkezet Megengedhető, hogy az adatelem maga is egy adatszerkezet legyen. Ez az ortogonalitás elve. (Bármely adatszerkezet adateleme lehet bármely adatszerkezetnek.) Ezzel a memóriában tárolható adatszerkezetek végére értünk. Igazából a B-fákat már a háttértárolón szokás tárolni. 23:07:05