Struktúra nélküli adatszerkezetek

Hasonló dokumentumok
Adatszerkezetek 1. előadás

Egyirányban láncolt lista

1. tétel Halmazok és halmazok számossága. Halmazműveletek és logikai műveletek kapcsolata.

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

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé.

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé. (Albert Einstein) Halmazok 1

Halmazelmélet. 1. előadás. Farkas István. DE ATC Gazdaságelemzési és Statisztikai Tanszék. Halmazelmélet p. 1/1

4. Fuzzy relációk. Gépi intelligencia I. Fodor János NIMGI1MIEM BMF NIK IMRI

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

Algoritmizálás és adatmodellezés tanítása 6. előadás

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

HALMAZOK. A racionális számok halmazát olyan számok alkotják, amelyek felírhatók b. jele:. A racionális számok halmazának végtelen sok eleme van.

Dr. Vincze Szilvia;

Matematikai logika és halmazelmélet

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

Halmaz típus Értékhalmaz:

C programozási nyelv Pointerek, tömbök, pointer aritmetika

Bevezetés a programozásba. 5. Előadás: Tömbök

Itt és a továbbiakban a számhalmazokra az alábbi jelöléseket használjuk:

Adatszerkezetek 2. Dr. Iványi Péter

1. Mondjon legalább három példát predikátumra. 4. Mikor van egy változó egy kvantor hatáskörében?

Felvételi tematika INFORMATIKA

hatására hátra lép x egységgel a toll

Gyakori elemhalmazok kinyerése

2014. szeptember 24. és 26. Dr. Vincze Szilvia

KISLEXIKON : HALMAZOK, SZÁMHALMAZOK, PONTHALMAZOK. Tárgymutató: I.

Adatszerkezetek és algoritmusok

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

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

Diszkrét matematika I. gyakorlat

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

Adatbázis és szoftverfejlesztés elmélet. Programozási tételek

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

KOVÁCS BÉLA, MATEMATIKA I.

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

Funkcionálanalízis. n=1. n=1. x n y n. n=1

1. előadás: Halmazelmélet, számfogalom, teljes

A valós számok halmaza

Készítette: Ernyei Kitti. Halmazok

Érdekes informatika feladatok

Adatszerkezetek I. 1. előadás

Algoritmizálás, adatmodellezés 1. előadás

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

Rendezések. A rendezési probléma: Bemenet: Kimenet: n számot tartalmazó (a 1,a 2,,a n ) sorozat

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

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

Programozás alapjai II. (7. ea) C++

Shannon és Huffman kód konstrukció tetszőleges. véges test felett

(Solid modeling, Geometric modeling) Testmodell: egy létező vagy elképzelt objektum digitális reprezentációja.

Vektorok, mátrixok, lineáris egyenletrendszerek

Algoritmusok Tervezése. Fuzzy rendszerek Dr. Bécsi Tamás

I. VEKTOROK, MÁTRIXOK

Gráfok 1. Tárolási módok, bejárások. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor

Gyakorló feladatok ZH-ra

22. GRÁFOK ÁBRÁZOLÁSA

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

2011. szeptember 14. Dr. Vincze Szilvia;

MATEMATIK A 9. évfolyam. 1. modul: HALMAZOK KÉSZÍTETTE: LÖVEY ÉVA

Egy halmazt elemei megadásával tekintünk ismertnek. Az elemeket felsorolással,vagy ha lehet a rájuk jellemző közös tulajdonság megadásával adunk meg.

Pásztor Attila. Algoritmizálás és programozás tankönyv az emeltszintű érettségihez

Matematika alapjai; Feladatok

Adatszerkezetek 1. Dr. Iványi Péter

A matematika nyelvér l bevezetés

Diszkrét matematika II., 8. előadás. Vektorterek

Ellenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t

Modellezés Gregorics Tibor Mesterséges intelligencia

Nagy Gábor compalg.inf.elte.hu/ nagy

Adatszerkezetek II. 10. előadás

Egyszerű programozási tételek

2018, Diszkrét matematika

Információk. Ismétlés II. Ismétlés. Ismétlés III. A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin. Algoritmus. Algoritmus ábrázolása

BOOLE ALGEBRA Logika: A konjunkció és diszjunkció tulajdonságai

KOVÁCS BÉLA, MATEMATIKA I.

Sorozatok határértéke SOROZAT FOGALMA, MEGADÁSA, ÁBRÁZOLÁSA; KORLÁTOS ÉS MONOTON SOROZATOK

Programozás I. Metódusok C#-ban Egyszerű programozási tételek. Sergyán Szabolcs

A Matematika I. előadás részletes tematikája

Informatikai tehetséggondozás:

Multihalmaz, intervallumhalmaz

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

Relációk Függvények. A diákon megjelenő szövegek és képek csak a szerző (Kocsis Imre, DE MFK) engedélyével használhatók fel!

FEGYVERNEKI SÁNDOR, Valószínűség-sZÁMÍTÁs És MATEMATIKAI

Adatbázis rendszerek 2. előadás. Relációs algebra

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

Vektorterek. Wettl Ferenc február 17. Wettl Ferenc Vektorterek február / 27

Diszkrét matematika I.

1.előadás Tornai Kálmán

Algoritmizálás és adatmodellezés tanítása 4. előadás

6. gyakorlat. Gelle Kitti. Csendes Tibor Somogyi Viktor. London András. jegyzetei alapján

tétel: különböző típusú adatokat csoportosít, ezeket egyetlen adatként kezeli, de hozzáférhetünk az elemeihez is

Adatbáziskezelés. Indexek, normalizálás NZS 1

3. TÖMBÖK A tömb absztrakt adattípus Legyen T az E alaptípus feletti k ( 1) dimenziós tömb típus. Vezessük be az I I1

Halmaz: alapfogalom, bizonyos elemek (matematikai objektumok) Egy halmaz akkor adott, ha minden objektumról eldönthető, hogy

4.2. Tétel: Legyen gyenge rendezés az X halmazon. Legyen továbbá B X, amelyre

2. Alapfogalmak, műveletek

Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból

Egyszerű programozási tételek

SZÁMÍTÁSTUDOMÁNY ALAPJAI

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

Helyi tanterv Német nyelvű matematika érettségi előkészítő. 11. évfolyam

Átírás:

Struktúra nélküli adatszerkezetek Homogén adatszerkezetek (minden adatelem azonos típusú) osztályozása Struktúra nélküli (Nincs kapcsolat az adatelemek között.) Halmaz Multihalmaz Asszociatív 20:24 1

A halmaz adatszerkezet Dinamikus és homogén adatszerkezet. Az adatelemek között nincs kapcsolat, így nem beszélhetünk az elemek sorrendjéről sem. A halmaz, mint absztrakt adatszerkezet megfelel a matematikai halmaz fogalomnak. Így pl. nincs benne ismétlődő elem. Van üres halmaz. Szemben a matematikai halmaz fogalommal, a halmaz adatszerkezetben nem engedünk meg végtelen számosságú halmazt. 20:24 2

Halmazokra értelmezett műveletek ELEME (, in ): megmondja, hogy egy adott adatelem benne van-e a halmazban, vagy sem UNIÓ KÉPZÉS ( U, + ): eredménye egy olyan új halmaz, amelynek elemei a kiinduló halamazok valamelyikében szerepeltek (elemei voltak). METSZET KÉPZÉS (, * ): eredménye egy olyan új halmaz, melynek elemei a kiinduló halmazokmindegyikében szerepeltek. KÜLÖNBSÉGKÉPZÉS ( \, - ): eredménye egy olyan új halmaz, amelynek elemei a műveleti jel bal oldalán álló halmazban szerepeltek, a jobb oldalán halmazban pedig nem szerepeltek. KOMPLEMENTER KÉPZÉS: (alaphalmaz) 20:24 3

Halmazokra értelmezett műveletek Összehasonlítás: Egyenlőség Valódi és nem valódi részhalmaz 20:24 4

A halmaz adatszerkezet műveletei LÉTREHOZÁS: Felsorolás segítségével megadjuk a halmaz elemeit (szék, asztal, tábla, pad, ) Megadunk egy olyan predikátumot, amely alapján minden elemről eldönthető, eleme-e a halmaznak (A teremben is megtalálható bútorfajták.) BŐVÍTÉS: Minden esetben az unióképzés, mint halmazművelet segítségével történik. CSERE: Nem értelmezett, NINCS. (Tágabb értelemben esetleg: Törlés + bővítés.) LOGIKAI TÖRLÉS: 20:24 Nem értelmezett, NINCS. 5

A halmaz adatszerkezet műveletei FIZIKAI TÖRLÉS: A különbség képzés halmazművelettel valósítható meg. RENDEZÉS: Nem értelmezett. (Struktúra nélküliség miatt.) ELÉRÉS: Nem értelmezett. (Struktúra nélküliség miatt.) KERESÉS: Nem értelmezett. (Struktúra nélküliség miatt.) FELDOLGOZÁS: Az alap halmazműveletekkel történik. 20:24 6

Halmazok ábrázolása A halmaz ábrázolása karakterisztikus függvénnyel történik, amelyet általában folytonos módon ábrázolunk a következő módon: Adunk egy felső korlátot a lehetséges elemek számára. (Megadjuk az alaphalmaz számosságát.) (Itt használjuk ki, hogy nem engedtük meg a végtelen számosságú halmazok létét.) Lefoglalunk annyi bitet, ahány eleme lehet a halmaznak. A lehetséges elemeket sorba állítjuk. Az elemekhez a sorrend alapján kölcsönösen egyértelműen hozzárendelünk egy-egy bitet a lefoglaltak közül. A továbbiakban ezen bit 1-es értéke jelzi ha az adott elem eleme a halmaznak, és a bit 0-s értéke jelzi, ha nem eleme a halmaznak. 20:24 7

Halmazok ábrázolása A B C D E F 0 1 2 3 4 5 6 7 8 9 A_halmaz={2,C,3,7,A,F,9} A_halmaz reprezentációja== > 1 0 1 0 0 1 0 0 1 1 0 0 0 1 0 1 Mekkora tárhelyre van szükség annak a halmaznak a kezeléséhez, amely legfeljebb 256 elemből áll? 20:24 8

A halmazműveletek megvalósítása Két, karakterisztikus függvénnyel ábrázolt halmaz közötti összes elemi halmazművelet az előbb megadott bitvektorok közötti logikai műveletekre vezethető vissza. (A számítógépek nagyon erősek a logikai műveletek körében.) Az eleme művelet: létrehozunk egy olyan bitmintát, ahol az ellenőrizni kívánt elemhez tartozó bitet 1-re, a többit 0-ra állítjuk, majd e között és a karakterisztikus függvény bitvektora között végrehajtunk egy bitenkénti logikai ÉS műveletet. Ha eredményül nem a csupa 0 bitet tartalmazó bitvektort kapjuk, akkor a kérdéses elem eleme a halmaznak. 20:24 Egyébként nem. 9

A halmazműveletek megvalósítása Az unió képzés művelete: Visszavezethető a logikai VAGY műveletre. Tekintsük a két halmazt leíró karakterisztikus függvények bitvektorát. Hajtsuk végre a két bitvektor közötti (bitenkénti) logikai VAGY műveletet. Eredményként a két kiinduló halmaz uniójának karakterisztikus függvényéhez tartozó bitvektort kapjuk. 20:24 10

A halmazműveletek megvalósítása A metszet képzés művelete: Visszavezethető a logikai ÉS műveletre. Tekintsük a két halmazt leíró karakterisztikus függvények bitvektorát. Hajtsuk végre a két bitvektor közötti (bitenkénti) logikai ÉS műveletet. Eredményként a két kiinduló halmaz metszetének karakterisztikus függvényéhez tartozó bitvektort kapjuk. 20:26 11

A halmazműveletek megvalósítása A komplementer képzés művelete: Visszavezethető a logikai NEGÁLÁS műveletére. A különbség képzés művelete: Visszavezethető logikai műveletekre. 20:26 12

A multihalmaz adatszerkezet Dinamikus és homogén adatszerkezet. Az adatelemek között nincs kapcsolat, így nem beszélhetünk az elemek sorrendjéről sem. Van üres halmaz. Szemben a matematikai halmaz fogalommal, a halmaz adatszerkezetben nem engedünk meg végtelen számosságú halmazt. A multihalmaz abban különbözik a halmaztól, hogy megenged azonos elemeket is, azaz egy adott elem nem csak 0-szor vagy 1-szer fordulhat elő, hanem többször is. 20:26 13

Multialmazok műveletei (hasonlóak, mint a halmazé) ELEME ( ): nincs eltérés; (lehet picit másként is.) UNIÓ KÉPZÉS ( ): egy adott értékű elem annyiszor fog szerepelni az unióban, ahányszor a kiinduló multihalmazokban együttesen szerepel. (összeg, de elképzelhető maximum is) METSZET KÉPZÉS ( ): egy adott értékű elem annyiszor fog szerepelni az unióban, ahányszor a kiinduló multihalmazok mindegyikében szerepel. (minimum) KÜLÖNBSÉGKÉPZÉS ( ): adott elem a kiinduló multihalmazokban való előfordulásainak különbségeszer fog előfordulni, ha a baloldali multihalmazban fordul elő többször. Egyébként 0- szor. (kivonás) KOMPLEMENTER KÉPZÉS: nehezebb dió 20:26 14

Multihalmazok ábrázolása Általában itt is karakterisztikus függvényt használunk, Amit általában szintén folytonosan tároljuk, de Mivel adott elem többször is előfordulhat a multihalmazban, így egyetlen bit helyett, az elemek várható maximumától függő nagyságú egész számok ábrázolásához szükséges tárhelynek foglalunk helyet. Most is kölcsönösen egyértelmű kapcsolatot hozunk létre a multihalmaz elemei és a tárhelyek között. A lefoglalt tárhelyekre az adott elem multihalmazbeli előfordulási számát írjuk. 20:26 15

Struktúra nélküli adatszerkezetek A halaz és a multihalmaz olyan problémák kezelésénél játszanak szerepet, ahol olyan adatokat kell kezelni, ahol az adatelemek nincsenek megkülönböztetve és nincs közötük kapcsolat. Műveleteik implementációjának úgy kell létrejönnie, hogy az absztrakt viselkedésmódot valósítsák meg. Ez azt jelenti, hogy az implementációnak el kell rejtenie a reprezentációs szerkezeteket, és az algoritmust megvalósító részleteket is. 20:26 16

Asszociatív adatszerkezetek Homogén adatszerkezetek (minden adatelem azonos típusú) osztályozása Struktúra nélküli Asszociatív Tömb Vektor Mátrix Háromszögmátrix Ritka mátrix Dinamikus tömb Táblázat. 20:26 17

Asszociatív adatszerkezetek Az asszociatív adatszerkezet olyan halmaz, vagy multihalmaz, amelyből bizonyos adott feltételeknek eleget tevő részhalmazokat választhatunk ki. == > A legfontosabb művelet a részhalmaz kiválasztás művelete. 20:26 18

A tömb adatszerkezet Statikus és homogén, asszociatív adatszerkezet. Az egyik leggyakrabban használt adatszerkezet, amelyet A felépítése definiál, és amelyben Az adatelemek egymáshoz viszonyított helyzete a lényeges. A tömb bármely eleme egész számok egy sorozatán keresztül érhető el. Minden adatelemhez különböző egész szám sorozat tartozik: az asszociativitást biztosító részhalmazok diszjuktak és egy eleműek. A szám sorozat elemeit a tömb indexeinek nevezzük. 20:26 Az indexek számát dimenziónak hívjuk. 19

A tömb adatszerkezet Egydimenziós tömb (Vektor): Rögzítjük az első elem helyét, A többi elem helyét ehhez viszonyítjuk Ha mást nem mondunk, az indexek értéke 1-től indul. Vektor (jelzők nélkül) == > számunkra 1 dimenziós statikus tömb Kétdimenziós tömb (Mátrix) Itt is az első elemhez viszonyítjuk a többit Beszélünk sorokról és oszlopokról A dimenziók száma tetszőleges, de mindig véges 20:26 20

A tömb adatszerkezet műveletei LÉTREHOZÁS: Rögzítjük a dimenziók számát, Az egyes dimenziókhoz tartozó indexek tartományát, és ezáltal Az elemek számát A szerkezet kialakításával párhuzamosan esetleg elemeket is elhelyezhetünk a szerkezetben. BŐVÍTÉS: NINCS. (Statikus adatszerkezet.) CSERE: Elem elhelyezése oda, ahová nem tettünk a létrehozásakor Hagyományosan: létező elem értékét felülírjuk 20:28 21

A tömb adatszerkezet műveletei FIZIKAI TÖRLÉS: NINCS. (Statikus adatszerkezet.) LOGIKAI TÖRLÉS: Speciális CSERE műveletként értelmezhető ELÉRÉS: Az adatszerkezet elemeinek elérése közvetlen. RENDEZÉS: Általában nem értelmezett. Vektoroknál (1 dimenziós tömb) viszont igen. 20:29 22

A tömb adatszerkezet műveletei KERESÉS: A közvetlen elérés miatt általában nem beszélünk keresésről. Teljes keresés. (Amikor nem általában..) Rendezett vektor esetében viszont van értelme. Ilyenkor bármelyik kereső algoritmus alkalmazható. FELDOLGOZÁS: Alapja a közvetlen elérés BEJÁRÁS: Értelmezhető művelet, de Reprezentáció függő 20:30 23

A tömbök ábrázolása A folytonos ábrázolást szoktuk alkalmazni. Ez vektoroknál teljesen természetes is. Többdimenziós tömböknél beszélünk Sor folytonos és Oszlop folytonos ábrázolásról. A reprezentáció fontos eleme a CÍMFÜGGVÉNY. Ez a függvény meghatározza adott elem tárhelyének címét a hozzá tartozó index értékek és az első elem tárhelyének címe alapján. 20:30 24

Címfüggvény Vektor Neve (pl.) A Index tartománya: s-től, t-ig Egy tömb elem tárolásához szükséges tárhely mérete: l Az első elem tárhelyének címe: K == > Címe(A i )=K+l*(i-s) Az összes tömb elem tárolásához szükséges tárhely mérete: l*(t-s+1) 20:55 25

Mátrix: sor és oszlop folytonos ábrázolás Sor folytonos ábrázolás Oszlop folytonos ábrázolás A 11 1 A 12 2 A 13 3 A 14 4 A 15 5 A 11 1 A 12 7 A 13 13 A 14 19 A 15 25 A 21 6 A 22 7 A 23 8 A 24 9 A 25 10 A 21 2 A 22 8 A 23 14 A 24 20 A 25 26 A 31 11 A 32 12 A 33 13 A 34 14 A 35 15 A 31 3 A 32 9 A 33 15 A 34 21 A 35 27 A 41 16 A 42 17 A 43 18 A 44 19 A 45 20 A 41 4 A 42 10 A 43 16 A 44 22 A 45 27 A 51 21 A 52 22 A 53 23 A 54 24 A 55 25 A 51 5 A 52 11 A 53 17 A 54 23 A 55 29 A 61 26 A 62 27 A 63 28 A 64 29 A 65 30 A 61 6 A 62 12 A 63 18 A 64 24 A 65 30 A[i,j] SF[(i-1)*5+j] A[i,j] ] OF[(j-1)*6+i] 21:10 26

Címfüggvény Mátrix Neve (pl.) A Index tartománya: s-től, n-ig és t-től m-ig Egy tömb elem tárolásához szükséges tárhely mérete: l Az első elem tárhelyének címe: K == > Címe_sf(A i,j )=K+l*{(i-s)*(m-t+1)+(j-t)} Címe_of(A i,j )=K+l*{(n-s+1)*(j-t)+(i-s)} Az összes tömb elem tárolásához szükséges tárhely mérete: l*(n-s+1)*(m-t+1) 20:45 27