27
1 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:15

Struktúra nélküli adatszerkezetek

Embed Size (px)

DESCRIPTION

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 …. A halmaz adatszerkezet. Dinamikus és homogén adatszerkezet. - PowerPoint PPT Presentation

Citation preview

1

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 …

16:50

2

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.

16:50

3

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)16:50

4

Halmazokra értelmezett műveletek Összehasonlítás:

Egyenlőség Valódi és „nem valódi” részhalmaz

16:50

5

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: Nem értelmezett, NINCS.

16:50

6

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.

16:50

7

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.

16:50

8

Halmazok ábrázolása

A_halmaz={2,C,3,7,A,F,9}

A_halmaz reprezentációja== >

A B C D E F 0 1 2 3 4 5 6 7 8 9

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?

16:50

9

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.

Egyébként nem.16:50

10

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.

16:50

11

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.

16:50

12

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.

16:50

13

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.

16:50

14

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ó…16:50

15

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.

16:50

16

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.

16:50

17

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

16:50

18

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.

16:50

19

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.

Az indexek számát dimenziónak hívjuk.16:50

20

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

16:50

21

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írjuk16:50

22

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.

16:50

23

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ő

16:50

24

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.

16:50

25

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(Ai)=K+l*(i-s) Az összes tömb elem tárolásához szükséges

tárhely mérete: l*(t-s+1)

16:50

Mátrix: sor és oszlop folytonos ábrázolás

Sor folytonos ábrázolás Oszlop folytonos ábrázolás

16:50 26

A11

1

A12

2

A13

3

A14

4

A15

5

A21

6

A22

7

A23

8

A24

9

A25

10

A31

11

A32

12

A33

13

A34

14

A35

15

A41

16

A42

17

A43

18

A44

19

A45

20

A51

21

A52

22

A53

23

A54

24

A55

25

A61

26

A62

27

A63

28

A64

29

A65

30

A[i,j] ↔ SF[(i-1)*5+j]

A11

1

A12

7

A13

13

A14

19

A15

25

A21

2

A22

8

A23

14

A24

20

A25

26

A31

3

A32

9

A33

15

A34

21

A35

27

A41

4

A42

10

A43

16

A44

22

A45

27

A51

5

A52

11

A53

17

A54

23

A55

29

A61

6

A62

12

A63

18

A64

24

A65

30

A[i,j] ] ↔ OF[(j-1)*6+i]

27

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(Ai,j)=K+l*{(i-s)*(m-t+1)+(j-t)} Címe_of(Ai,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)

16:50