Gyakorlati alapok III.
Az adatszerkezetek I.
Ebben a fejezetben nagyon izgalmas témáról lesz szó: az adatszerkezetekről.
A szabványos meghatározás szerint adatszerkezet alatt egymással kapcsolatban álló adatok, objektumok összességét értjük. (Továbbiakban csakis az adatok szót használom.) Az adatok közti kapcsolat szerint szó szerint „millióféle” lehet attól függően, hogy éppen melyiket (melyeket) minősítjük kulcsfontosságúnak. Adott például 100 személy, akik között egyébként is rengeteg kapcsolati pontot találhatunk...
-
éppen 1 helyen lévők,
-
mindegyikük egészséges,
-
mindegyikük cipőt visel,
-
sőt ezen feltételek egyszerre is fennállhatnak,
-
stb.,
...ám ha a kapcsolati pont az, hogy a repülőjáraton mindegyikük éppen most élt túl egy kényszerleszállást, akkor beláthatjuk, hogy ez a kulcs minden további kételyt lezár.
Ám vegyük észre, hogy ez az adatszerkezet valójában már előbb is létezett utaslista formájában, amelyet aztán a szerencsétlen körülmények túlélők listájává minősítettek át.
Vegyünk egy másik példát! Adott…
-
1 szőnyeg,
-
1 papírfecni,
-
1 cigarettacsikk,
-
1 koszos pohár,
…amelyeknek nyilvánvalóan semmi közük egymáshoz egészen addig, amíg csokimikulás-lopás...
...mint lehetséges bűnügyi helyszín tárgyi bizonyítékaiként nem lépnek elő. Persze talán addig is volt egy közös kapcsolati pont: adott pillanatban egy helyen voltak, ám ez a bűnügy bekövetkezte előtt senkit nem érdekelt, legfeljebb a takarítónőt (őt sem mindig alacsony fizetése miatt). Utána azonban a rendőrség minden lehetséges eszközzel mindent el fog követni, hogy a kialakult adatszerkezetet megőrizze, konzerválja: fényképezi, lajstromba veszi, leltározza, raktározza. Ha ezt számítógép segítségével teszi, akkor informatikusok bevonásával egyúttal meg kell találni az adatok optimális számítógépes tárolási módját is. Lehet ez mondjuk egy adatbázis-táblában egy egyszerű név + raktári polcszám.
A fenti 2 példa birtokában erősítsük meg az adatszerkezetekkel kapcsolatos megállapításainkat:
-
bármely rendszertelen adathalmaz, sőt adatok véletlenszerű katyvasza összefüggő adatszerkezetet alkothat, ha úgy tekintünk rá, mert éppen arra van szükségünk,
-
azt a logikai kapcsolatot, amelyik az adatok véletlenszerű tömegét számunkra fontos adatszerkezetté emeli, kapcsolatnak, sokszor kulcsnak nevezik (lehet belőlük több is),
-
a fentiekből következően és a hivatalos meghatározás szerint az adatszerkezeteknek 2 eleme van: adatok és kapcsolataik,
-
az adatszerkezetek önmagában való „felfedezésének” nincs sok értelme (legfeljebb csak az absztrakt matematikában), ha nincs megoldva annak optimális tárolási módja, akár többféle változat is,
-
adatszerkezeteket azért tárolunk, hogy a megőrzésükön felül később bennük kereshessünk, illetve tetszőleges szempontú válogatásokat tudjunk rajtuk végrehajtani, fontos szempont tehát a minél gyorsabb keresési és szelekciós lehetőség.
Ha az adatszerkezetek logikai felvázolásához okosan kezdünk hozzá, akkor a matematika eszköztárával róla további, nagyon fontos tulajdonságai is megállapíthatók, például:
-
adott mennyiségű adat (elemszám) esetén melyik keresési algoritmus fog a leggyorsabban lefutni,
-
mennyi helyet foglal az adatbázis,
-
stb.
Az adatszerkezetek belső struktúrája jól szemléltethető gráfokkal…
…ahol az adatok a színes bogyók (hivatalos meghatározás szerint a gráf csúcsai), míg a kapcsolatok a vonalak (hivatalos meghatározás szerint a gráf élei).
Amint már említésre került, az adatszerkezetek önmagában való „felfedezésének” az absztrakt matematikán felül nincs sok értelme, ha nincs megoldva annak optimális tárolási leképezése. Ennek megoldására vezette be a számítógép-tudomány az absztrakt tároló fogalmát, bár a probléma már évezredekkel ezelőtt jelentkezett például egy könyvtár megalkotásánál és üzemeltetésénél.
Egy adatszerkezet létrejötténél:
-
az adatokat olyan helyen kell tárolni, ahonnan könnyen elővehetők, előkereshetők,
-
az adatok a tárolás során nem sérülhetnek, véletlenül nem módosulhatnak,
-
további fontos szempont, hogy az adatokat reprezentáló címeknek (például könyvtár esetében a raktári polcszámnak vagy egyéb katalógusszámnak) egyértelműnek és jól átláthatónak kell lennie.
Absztrakt tároló minden olyan számítógépes hardverelem, amely a fenti követelményeknek eleget tesz, azaz megcímezhető és képes adattárolásra. Ezek: műveleti memória, HDD, SSD, floppy, pendrive, stb.
Az adatszerkezetek leképezhetők absztrakt tárolókra!