TÖMBÖK Asszociatív adatszerkezetek Tömbök

Slides:



Advertisements
Hasonló előadás
Lineáris egyenletrendszerek
Advertisements

„Esélyteremtés és értékalakulás” Konferencia Megyeháza Kaposvár, 2009
Készítette: Boros Erzsi
Kiválasztás (N,A,sorszam) i := 1 Ciklus amíg (A(i) nem T) i := i+1 Ciklus vége sorszam := i Eljárás vége Kiválasztás.
Programozási tételek, és „négyzetes” rendezések
Készítette: Szinai Adrienn
Tömbök C#-ban.
Gazdaságelemzési és Statisztikai Tanszék
Műveletek mátrixokkal
Koordináta transzformációk
Illés Tibor – Hálózati folyamok
Euklidészi gyűrűk Definíció.
4. VÉGES HALMAZOK 4.1 Alaptulajdonságok
Programozási alapismeretek 8. előadás. ELTE 2/  További programozási tételek További programozási tételek 
Gazdaságmatematika 5. szeminárium.
MI 2003/ Alakfelismerés - még egy megközelítés: még kevesebbet tudunk. Csak a mintánk adott, de címkék nélkül. Csoportosítás (klaszterezés, clustering).
Mátrix függvények Keresőfüggvények
3. LOGIKAI ADATSZERKEZETEK
A számítógépi grafika matematikai háttere
Papp Róbert, Blaskovics Viktor, Hantos Norbert
OPERÁCIÓKUTATÁS Kalmár János, 2012 Tartalom A nulla-egy LP megoldása Hátizsák feladat.
Lineáris algebra Mátrixok, determinánsok, lineáris egyenletrendszerek
Valós számok Def. Egy algebrai struktúra rendezett test, ha test és rendezett integritási tartomány. Def. Egy (T; +,  ;  ) rendezett test felső határ.
5. VÉGTELEN HALMAZOK 5.1 Kiválasztási axióma
1.3 Relációk Def. (rendezett pár) (a1 , a2 ) := {{a1} , {a1 , a2 }} .
Edényrendezés - RADIX „vissza” - bináris számokra
2. Koordináta-rendszerek és transzformációk 2.1. Koordináta-rendszerek 2.2. Az egyenes és a sík egyenlete 2.3. Affin transzformációk 2.4. Projektív transzformációk.
A számfogalom bővítése
Matematika III. előadások Építőmérnök BSc szak PMMINB313
Darupályák tervezésének alapjai
Lineáris transzformáció sajátértékei és sajátvektorai
MATEMATIKA ÉS INFORMATIKA I.
További vektor, mátrix algoritmusok
Microsoft Excel Függvények VII..
IgenNem Kattints egyenként sorban a számokra 1-től 24-ig.
Lineáris egyenletrendszerek (Az evolúciótól a megoldáshalmaz szerkezetéig) dr. Szalkai István Pannon Egyetem, Veszprém /' /
dr. Szalkai István Pannon Egyetem, Veszprém
Lineáris egyenletrendszerek (Az evolúciótól a megoldáshalmaz szerkezetéig) dr. Szalkai István Pannon Egyetem, Veszprém 2007.
Lineáris algebra.
szakmérnök hallgatók számára
Összetett adattípusok
Számítógépes Grafika 2. gyakorlat Programtervező informatikus (esti) 2011/2012 őszi félév.
3. Vetületi ábrázolások számítási eljárásai
A négyzetes mátrixok (nxn-es kétdimenziós tömbök)
Egydimenziós tömbökön végezhető műveletek
1.Feladat Olvassunk be egy n x m–es egész számokat tartalmazó mátrixot. Számítsuk és írjuk ki a mátrix két szélső során és oszlopán lévő elemek összegét.
Struktúra nélküli adatszerkezetek
Adatszerkezetek 1. előadás
Lineáris programozás Elemi példa Alapfogalmak Általános vizsg.
Összefoglalás 2.. Összefoglalás - 1. feladat (a ; b) = 23·33·7 a szám = 2x·33·72·115 b szám = 24·3y·5·7z x = ? y = ? z = ? Mennyi az x, y és z értéke?
20).7-es szint Rákóczi 2. sz. barlang előtt
2. Koordináta-rendszerek és transzformációk
Lineáris algebra.
Műveletek, függvények és tulajdonságaik Mátrix struktúrák:
Mikroökonómia gyakorlat
Feladatok (értékadás)
előadások, konzultációk
Hibajavító kódok.
Programozási alapismeretek 8. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 8.2/  További programozási.
BIOLÓGUS INFORMATIKA 2008 – 2009 (1. évfolyam/1.félév) 3. Előadás.
előadások, konzultációk
Memóriakezelés feladatok Feladat: 12 bites címtartomány. 0 ~ 2047 legyen mindig.
Informatikai gyakorlatok 11. évfolyam
V 1.0 OE-NIK, Programozás I. Gyakorlás egydimenziós tömbökkel Többdimenziós tömbök Gyakorló feladatok.
Lineáris programozás Elemi példa Alapfogalmak Általános vizsg.
Nevezetes algoritmusok
II. konzultáció Analízis Sorozatok Egyváltozós valós függvények I.
Lineáris keresés Keresés (N,A,sorszam) i := 1
Programozási tételek.
Cache példák 2019 (IMSC).
Előadás másolata:

TÖMBÖK Asszociatív adatszerkezetek Tömbök 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. 23:05

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: A1,1 A1,2 A1,3 ….. A1,n A2,2 A2,3 A2,n A3,3 A3,n . An,n 23:05

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 (n2/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: A11 A12 A22 A13 A23 A33 A14 A24 A34 A44 … Ann 23:05

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 j(j-1)/2: a j. oszlop előtt a mátrixban ennyi értékes elemet képeztünk már le a vektorba. r: a j. oszlopban ennyi elemet képezünk le. Ha j<r, akkor: ? V: A11 A12 A22 A13 A23 A33 A14 A24 A34 A44 … Ann 23:05

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 r(r-1)/2: az r. sor előtt a mátrixban ennyi értékes elemet képeztünk már le a vektorba. j: az r. sorban ennyi elemet képezünk le. Ha j>r, akkor: ? V: A11 A21 A22 A31 A32 A33 A41 A42 A43 A44 … Ann 23:05

Szimmetrikus mátrix V: ….. A1,1 A1,2 A1,3 ….. A1,n A2,1 A2,2 A2,3 A2,n A3,1 A3,2 A3,3 A3,n . An,1 An,2 An,3 An,n Az olyan négyzetes (vagy kvadratikus) mátrixot, melynek „szimmetrikus elemei„ megegyezőek, szimmetrikus mátrixnak nevezzük: Ai,j =Aj,i Ezek helytakarékos ábrázolása hasonlóan oldható meg, mint a háromszögmátrixoké. V: A11 A12 A22 A13 A23 A33 A14 A24 A34 A44 … Ann 23:05

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 23:05

Ritka mátrixok 2 3 1 A= -1 4 7 23:05

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) 23:05

Ritka mátrixok háromsoros reprezentációja 2 3 1 A= -1 4 7 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) 23:05

Ritka mátrixok háromsoros reprezentációja 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: Nem tudjuk közvetlenül elérni az eredeti mátrix i. sorában és j. oszlopában található elemeit. 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). 23:05

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

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. 23:05

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…) 23:05

Ritka mátrixok 4+2 soros reprezentációja 2 3 1 A= -1 4 7 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) 23:05

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. 23:05

SOR OSZLOP ÉRTÉK JOBBRA LE NIL 3 5 4 NIL NIL 2 7 1 NIL 1 6 2 3 7 1 NIL 1 9 3 NIL 2 1 NIL 5 8 -1 NIL 3 2 -1 NIL 5 7 1 NIL 5 4 3 NIL 5 6 7 NIL 23:05

Ritka mátrixok 2 3 1 A= -1 4 7 23:05

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. 23:05

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ó. 23:05

Táblázat 5 Alma 67 Körte 3 Szilva 15 Szőlő 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 5 Alma 67 Körte 3 Szilva 15 Szőlő 23:05

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. 23:05

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. 23:05

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. 23:05

Ö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. 23:05

Ö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. 23:05

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. 23:05