Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

1 Hierarchikus lista 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:

Hasonló előadás


Az előadások a következő témára: "1 Hierarchikus lista 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:"— Előadás másolata:

1 1 Hierarchikus lista 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. def a bci hg 19:25:21

2 2 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. 19:25:21

3 3 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 ef a b c 19:25:21

4 4 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. 19:25:21 d5d5 e3e3 f6f6 a1a1 b4b4 c2c

5 5 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. 19:25: d5d5 e3e3 f6f6 a1a1 b4b4 c2c2

6 6 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. 19:25:21

7 7 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 19:25:21

8 8 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. 19:25:21

9 9 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). 19:25:21

10 10 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. 19:25:21

11 11 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.) 19:25:21

12 12 Háló szélességi bejárása 19:25:21 d5d5 e3e3 f6f6 a1a1 b4b4 c2c2 (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] a d b c f e

13 13 Háló szélességi bejárása 19:25:21 d5d5 e3e3 f6f6 a1a1 b4b4 c2c2 ca bd f e e b df a c a d cb f e Valójában az az érdekes, hogyan lehet eljutni valahová S-ből.

14 14 Háló szélességi bejárása 19:25:21 d5d5 e3e3 f6f6 a1a1 b4b4 c2c2 ca bd f e e b df a c a d cb f e Valójában az az érdekes, hogyan lehet eljutni valahová S-ből.

15 Szélességi keresés (egy) algoritmusa procedure SzK (G,s)‏ 1.for i  1 to méret(G)‏ do 2. SZÍN[i]  fehér 3. D[i]   4.  [i]  0 5. endfor 6. SZÍN[s]  szürke 7. D[s]  0 8. Q  új_üres_SOR 9. 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 10. while NEM_ÜRES(Q) do 11. u  GET(Q) 12. for i  1 to méret(G[u].KÖV) do 13. v  G[u].KÖV[i] 14. if SZÍN[v] = fehér then 15. SZÍN[v]  szürke 16. D[v]  D[u]  [v]  u 18. PUT(Q,v) 19. end if 20. end for 21. SZÍN[u]  fekete 22. end while end procedure 19:25:21 15

16 16 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. 19:25:21

17 17 Háló mélységi bejárása 19:25:21 d5d5 e3e3 f6f6 a1a1 b4b4 c2c2 (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] a b d c f e

18 18 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] 19:25:21 d5d5 e3e3 f6f6 a1a1 b4b4 c2c2 a d c b f e

19 19 Háló mélységi bejárása 19:25:21 d5d5 e3e3 f6f6 a1a1 b4b4 c2c2 e a d f b c f b c a e d a d c b f e

20 Mélységi bejárás (egy) algoritmusa procedure MB (G,s)‏ 1.for i  1 to méret(G)‏ do 2.  [i]  0 3. SZÍN[i]  fehér 4. endfor 5. idő  0 6. MK_BEJÁR_1(G,s) 7. for i  1 to méret(G)‏ do 8.if SZÍN[i]=fehér then 9. MK_BEJÁR_1(G,i) 10. end if 10. endfor end procedure procedure MB_BEJÁR_1(G,u) 1.SZÍN[u]  szürke 2. D[u]  idő  idő+1 3. for i  1 to méret(G[u].KÖV) do 4. v  G[u].KÖV[i] 5. if SZÍN[v] = fehér then 6.  [v]  u 7. MK_BEJÁR_1(G,v) 8. end if 9. end for 10. SZÍN[u]  fekete 11. F[u]  idő  idő+1 end procedure -- D[u], F[u],  [u]: ?? 19:25:21 20

21 21 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 19:25:21

22 22 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. 19:25:21

23 23 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  19:25:21

24 24 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. 19:25:21


Letölteni ppt "1 Hierarchikus lista 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:"

Hasonló előadás


Google Hirdetések