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 TÖMBÖK Asszociatív adatszerkezetek  Legfontosabb tulajdonságuk a részhalmaz kiválaszthatósága Tömbök  A részhalmazok kiválasztását egész számok egy.

Hasonló előadás


Az előadások a következő témára: "1 TÖMBÖK Asszociatív adatszerkezetek  Legfontosabb tulajdonságuk a részhalmaz kiválaszthatósága Tömbök  A részhalmazok kiválasztását egész számok egy."— Előadás másolata:

1 1 TÖMBÖK Asszociatív adatszerkezetek  Legfontosabb tulajdonságuk a részhalmaz kiválaszthatósága Tömbök  A részhalmazok kiválasztását egész számok egy sorozata biztosítja (ezek az indexek).  Az indexek számát dimenziónak nevezzük  Az egy dimenziós tömböt gyakran VEKTORnak nevezzük.  A két dimenziós tömböt pedig MÁTRIXnak. 19:04

2 2 Háromszögmátrix Ha négyzetes (vagy kvadratikus) mátrix főátlója alatt vagy felett csupa 0 elem található, azt háromszögmátrixnak nevezzük. Megkülönböztetünk alsó és felső háromszögmátrixot, méghozzá aszerint, hogy hol helyezkednek el a nem-nulla értékű elemei Egy felső háromszögmátrix: A 1,1 A 1,2 A 1,3 ….. A 1,n 0A 2,2 A 2,3 ….. A 2,n 00A 3,3 ….. A 3,n ….. A n,n 19:04

3 3 Háromszögmátrix Felső háromszögmátrix: főátlójában és felette tetszőleges elemek lehetnek (ezek a lényeges (fő) elemek). Ezek darabszáma: n(n+1)/2. Ez csak kicsit több mint a mátrixban összesen elhelyezhető elem fele (n 2 /2). Éppen ezért, ha speciálisan tudjuk tárolni (csak az értékes elemeket), azzal tárhelyet tudunk spórolni. Az általános megoldás egy kölcsönösen egyértelmű leképezése a mátrix elemeinek egy vektorra: V: A 11 A 12 A 22 A 13 A 23 A 33 A 14 A 24 A 34 A 44 … A nn 19:04

4 4 A háromszögmátrix ábrázolása A felső háromszögmátrix elemeit oszlopfolytonosan bejárva egyesével, egymást követően helyezzük el egy V tömbbe. Ennek elemei száma: n(n+1)/2. Ebből a tömbből hogyan tudjuk ezt az információt visszanyerni? Hányadik eleme lesz a vektornak az eredeti háromszögmátrixban az r. sorban és j. oszlopban elhelyezkedő elem? Ha j>=r, akkor:j(j-1)/2+r 1. j(j-1)/2: a j. oszlop előtt a mátrixban ennyi értékes elemet képeztünk már le a vektorba. 2. r: a j. oszlopban ennyi elemet képezünk le. Ha j

5 5 A háromszögmátrix ábrázolása Az alsó háromszögmátrix elemeit sorfolytonosan bejárva egyesével, egymást követően helyezzük el egy V tömbbe. Ennek elemei száma: n(n+1)/2. Ebből a tömbből hogyan tudjuk ezt az információt visszanyerni? Hányadik eleme lesz a vektornak az eredeti háromszögmátrixban az r. sorban és j. oszlopban elhelyezkedő elem? Ha j<=r, akkor:r(r-1)/2+j 1. r(r-1)/2: az r. sor előtt a mátrixban ennyi értékes elemet képeztünk már le a vektorba. 2. j: az r. sorban ennyi elemet képezünk le. Ha j>r, akkor: ? 19:04 V: A 11 A 21 A 22 A 31 A 32 A 33 A 41 A 42 A 43 A 44 … A nn

6 6 Szimmetrikus mátrix Az olyan négyzetes (vagy kvadratikus) mátrixot, melynek „szimmetrikus elemei„ megegyezőek, szimmetrikus mátrixnak nevezzük: A i,j =A j,i Ezek helytakarékos ábrázolása hasonlóan oldható meg, mint a háromszögmátrixoké. 19:04 V: A 11 A 12 A 22 A 13 A 23 A 33 A 14 A 24 A 34 A 44 … A nn A 1,1 A 1,2 A 1,3 ….. A 1,n A 2,1 A 2,2 A 2,3 ….. A 2,n A 3,1 A 3,2 A 3,3 ….. A 3,n A n,1 A n,2 A n,3 ….. A n,n

7 7 Ritka mátrixok Ritka mátrixnak nevezzük az olyan 2 dimenziós (tetszőleges méretű) tömböt, amelyben sok azonos értékű elem (leggyakrabban 0) szerepel, és a sok azonos értékű elem között a tőlük különböző értékű elemek véletlenszerűen helyezkednek el. A ritka mátrixokat akkor érdemes külön (egyedi módszerekkel) kezelni, ha nagy az elemszáma és ezen belül arányában is nagy az azonos értékű elemek száma. A megoldandó probléma u.a. mint az előbb. Cél: a tárhelyek megtakarítása 19:04

8 8 Ritka mátrixok A=A= :04

9 9 Ritka mátrixok ábrázolása A megoldandó probléma u.a. mint az előbb. Cél: a tárhelyek megtakarítása Megoldások:  Háromsoros reprezentáció: folytonos tárolású, a következő elven működik: Letároljuk 3 db vektorban a ritka elemekre vonatkozó információt. Mindegyik tömb annyi elemű, ahány ritka elem van a mátrixban. A 3 tömb azonos indexű elemei írnak le egy-egy ritka mátrix-elemet, mégpedig az eredeti mátrix sorfolytonos bejárásának sorrendjében. SOR=(1,1,2,2, 3,3,3,5,5,5, 5) OSZLOP=(6,9,1,7, 2,5,7,4,6,7, 8) ÉRTÉK=(2,3,2,1,-1,4,1,3,7,1,-1) 19:04

10 10 Ritka mátrixok háromsoros reprezentációja A=A= SOR=(1,1,2,2, 3,3,3,5,5,5, 5) OSZLOP=(6,9,1,7, 2,5,7,4,6,7, 8) ÉRTÉK=(2,3,2,1,-1,4,1,3,7,1,-1) 19:04

11 11 Ritka mátrixok háromsoros reprezentációja SOR=(1,1,2,2, 3,3,3,5,5,5, 5) OSZLOP=(6,9,1,7, 2,5,7,4,6,7, 8) ÉRTÉK=(2,3,2,1,-1,4,1,3,7,1,-1) 11 elemű vektorok, mert 11 értékes elem volt a ritka mátrixban. A 3 soros ábrázolásnak alapvetően 2 problémája van: 1. Nem tudjuk közvetlenül elérni az eredeti mátrix i. sorában és j. oszlopában található elemeit. 2. Nem tudjuk előre a ritka elemek számát, ezért a vektorok elemszámát sem tudjuk előre rögzíteni. (Ez a vektorok statikussága miatt lenne fontos). 19:04

12 12 Ritka mátrixok háromsoros reprezentációja Lehetséges megoldások: 1. A 1. problémát nem tudjuk megoldani, ebben a reprezentációban mindig egy lineáris keresést kell végrehajtani. 2. a, Túl foglaljuk a helyet, de ezzel ellentmondunk az eredeti célunknak. 2. b, Szétszórt ábrázolást alkalmazunk, melyet egy irányban láncolt listával valósíthatjuk meg: SOROSZLOPÉRTÉKKÖVETKEZŐ NIL Fej 19:04

13 13 Ritka mátrixok ábrázolása A 3 soros reprezentáció  jól alkalmazható konstanssal ill. oszlopvektorral történő szorzásnál vagy összeadásnál ill. sorok tartalmának kiértékelésénél.  Rosszul alkalmazható viszont olyan problémáknál, ahol oszlopokat kell kezelni. A négy soros reprezentáció: Ez a 3 soros reprezentációnak a továbbfejlesztése.  A négy soros reprezentáció a sor és oszlop szerinti feldolgozást egyaránt segíti.  A reprezentációban 4 db egy dimenziós tömböt fogunk használni. Az előbb említett 3 tömbhöz hozzáveszünk még egy vektort, ami az oszlopok szerinti összefűzést valósítja meg. 19:04

14 14 Ritka mátrixok négysoros reprezentációja A 4. vektor egy adott eleme megadja a négy soros reprezentációban  azt az indexet, amely a ritka mátrix ugyanazon oszlopának következő ritka elemeit írja le.  Ha ilyen elem nincs, akkor az értéke nulla (0). 4+2 soros reprezentáció  Ahhoz, hogy a sorokat és az oszlopokat közvetlenül is elérhessük, további 2 egydimenziós tömböt is létrehozhatunk. Ezen tömbök elemei megadják a ritka mátrix i. sorában ill. oszlopában lévő első ritka elem indexét a négy soros reprezentációban.  Erről a plusz két vektorról annyit kell tudni, hogy S-nek (sor) annyi eleme van, amennyi sora van az eredeti mátrixnak, és az O-nak (oszlop) annyi eleme van, ahány oszlopa van az eredeti mátrixnak. Azokban az oszlopokban, ill. sorokban, ahol nincsen ritka elem, ott 0 kerül ezekbe a vektorokba. (Mintapéldánkban 4x11+5+9=58 elemet tárolunk, az eredeti mátrixnak 9x5=45 eleme van összesen, a nullákkal együtt. És mennyivel egyszerűbb lenne azt kezelni…) 19:04

15 15 Ritka mátrixok 4+2 soros reprezentációja A=A= SOR=(1,1,2,2, 3,3, 3,5,5,5, 5) OSZLOP=(6,9,1,7, 2,5, 7,4,6,7, 8) ÉRTÉK=(2,3,2,1,-1,4, 1,3,7,1,-1) KÖVETKEZÖ=(9,0,0,7, 0,0,10,0,0,0, 0) S=(1,3,5,0,8) O=(3,5,0,8,6,1,4,11,2) 19:04

16 16 Ritka mátrixok szétszórt ábrázolása A ritka mátrix szerkezeti felépítése első sorban nem is a folytonos, hanem a szétszórt ábrázolást kínálja. A szétszórt ábrázoláshoz multilistát alkalmazhatunk Egy-egy tárhelyen a ”jobbra” mutató megadja az ugyanezen sorban lévő következő ritka elem címét, mégpedig balról jobbra haladva. A „le” mutató ugyanezt oszlopokra adja meg fentről lefelé haladva. Az ábrázoláshoz hozzátartozik még két olyan tárterület, ami kizárólag fej mutatókat tartalmaz (ugyanannyi fej, mint ahány sora ill. oszlopa van a ritka mátrixnak). A fej mutató az adott sorban található első ritka elemet tartalmazó tárhelyet címezi meg. Ha az adott sorban nincsen ritka elem, akkor NIL a tartalma. 19:04

17 17 SOROSZLOPÉRTÉKJOBBRALE 271 NIL NIL NIL :04

18 18 Ritka mátrixok A=A= :04

19 19 Dinamikus tömb Dinamikus tömb -bármilyen meglepő is ez- egy dinamikus alapszerkezet. Általában egydimenziós tömböket értünk alatta, más szóval: dinamikus vektorok. Ennél az adatszerkezetnél létezik a bővítés és a fizikai törlés művelete. Egyébiránt minden olyan információ igaz rá, amiket a tömbnél elmondtunk. Szűkebb értelemben a dinamikus tömb elemeinek száma mindig egy aktuális elemszám, amely nem a létrehozással, hanem a használat során alakul ki. 19:04

20 20 Dinamikus tömb Bővítéskor ebbe a tömbbe új elemet viszünk föl. Ez azt jelenti, hogy mindig az aktuális elemszámnak megfelelő tárhelyet foglalunk le. Tágabb értelemben az aktuális méretet explicit módon adhatjuk meg, átméretezhetjük a tömböt, amelyben így léteznek olyan helyek ahol van elem, és maradhatnak olyanok, amelyek üresek. Ebben az értelemben fizikai törlést követően a dinamikus tömbben lyukak lehetnek (maradhatnak). Egydimenziós tömbök segítségével az összes homogén adatszerkezet (a tömb önmaga is) szimulálható. 19:04

21 21 Táblázat dinamikus adatszerkezet (homogén, viszont az elemei mindig összetettek) A táblázat elemei összetettek: két részből állnak  kulcsrészből és  adatrészből (érték). A kulcsrészbe csak egyedi értékek kerülhetnek (egy táblázatban nem megengedhető két azonos kulcsérték). A kulcs és az elem típusa egymástól különbözhet, viszont minden kulcs, és minden elem azonos típusú, és így a táblázat: homogén adatszerkezet. KULCSÉRTÉK 5Alma 67Körte 3Szilva 15Szőlő 19:04

22 22 Táblázat A kulcsok szolgálnak arra, hogy az értékeket megkülönböztethessük egymástól. A kulcsok segítségével elvégezzük az osztályozásukat, ezért a táblázat olyan asszociatív adatszerkezet, ahol minden elem a kulcsán keresztül érhető el. (Az egydimenziós tömb általánosításának tekinthető.) Reprezentációja egyaránt lehet folytonos és szétszórt, nagyon gyakran két vektor segítségével implementáljuk. Különböző szervezésű táblázatokról beszélhetünk. 19:04

23 23 Soros táblázat Létrehozásakor az elemek táblázatbeli sorrendjét egy időbeli sorrend adja.  Meg kell mondanunk a kulcs és az adatrész típusát, majd ezt követően  az elemek érkezési sorrendjében töltjük fel a táblázatot. A soros táblázat bővítése az egyik végén történik.  Fontos: Az új kulcs valóban új kell legyen! Törléskor tetszőleges elemet törölhetünk úgy, hogy  megkeressük a törlendő elemet, és  azt az utolsó elemmel felülírjuk.  Egyúttal 1-gyel csökkentjük a táblázat elemszámát.  Ez a technika folytonos ábrázolás esetén is alkalmazható.  Szétszórt ábrázolás esetén más megoldások is használhatóak. 19:04

24 24 Soros táblázat A csere művelete megengedett: az adatrészt bármikor cserélhetjük, a kulcsot viszont csak akkor, ha az új kulcs még nincs a táblázatban. A rendezés nem értelmezett. Keresés: Teljes keresés, a kulcs alapján történik. Az elemek elérése szekvenciális, a bejárás soros, és a feldolgozás alapja a kulcs és a teljes keresés. Ábrázolása lehet folytonos és szétszórt egyaránt. Hol használatos? Ahol az adathalmaz minden elemét meg kell tudni különböztetni egymástól. Hátránya: Ha nem azonos az elemek feldolgozási gyakorisága, akkor a használat nem gazdaságos. 19:04

25 25 Önátrendező táblázat A soros táblázat ezen hátrányos tulajdonságát próbálja meg kiküszöbölni az önátrendező tábláza. Az önátrendező táblázatban az elemek keresési gyakoriságuk fordított sorrendjében helyezkednek el. Ez lenne a jó. Csakhogy az ilyenfajta sorba állításhoz ismerni kellene az elemek feldolgozási gyakoriságát. De nem ismerjük. Viszont a önátrendező táblázat segítségével ez a sorrend nagyon jól közelíthető:  a táblázatot az elemek feldolgozásakor folyamatosan átrendezzük:  ha egy elemre hivatkozás történik (fel akarjuk dolgozni), akkor azt a feldolgozást követően a táblázat elejére csúsztatjuk. 19:04

26 26 Önátrendező táblázat  A többi elem egymáshoz viszonyított sorrendje változatlan marad.  Az utoljára feldolgozott elem a táblázat elejére kerül.  Sok feldolgozási lépés után nagy átlagban a nagyobb visszakeresési gyakorisággal rendelkező elemek a táblázat elején lesznek megtalálhatóak.  Ábrázolása egyértelműen a szétszórt ábrázolással praktikus. 19:04

27 27 Rendezett táblázat A rendezett táblázat elemei a kulcs alapján rendezettek. A feldolgozás gyorsítása érdekében alkalmazzuk ezt az adatszerkezetet. Az adatelemek sorrendjét a kulcsok szerinti növekedési sorrend definiálja. Létrehozása és bővítése beszúró rendezéssel történik. Csere: Ugyanúgy mint a korábbi táblázatoknál. Megfelelő ábrázolás mellett többféle keresési algoritmus használható.  Többnyire a lineáris és bináris a praktikus választás. Folytonos ábrázolásnál gyorsabb a keresés, viszont problematikus a bővítés és a fizikai törlés. Szétszórt ábrázolásnál pedig pont fordított a helyzet. Általában a megoldandó probléma jellege dönti el, hogy a két ábrázolási mód közül melyiket használjuk. 19:04


Letölteni ppt "1 TÖMBÖK Asszociatív adatszerkezetek  Legfontosabb tulajdonságuk a részhalmaz kiválaszthatósága Tömbök  A részhalmazok kiválasztását egész számok egy."

Hasonló előadás


Google Hirdetések