Informatika II
Adatszerkezetek s algoritmusok
A vals vilgban rendszerekrl beszlnk. A dolgok sszetevi egymssal
klcsnhatsban vannak, viselkednek, tulajdonsgaik vannak. Jellemzjk a
viselkeds, ezzel foglalkozik a rendszerelmlet.
A rendszer
Rendszer: Kzs ismrv alapjn az sszetartoz, egymssal meghatrozott
kapcsolatban lv elemek jl krlhatrolt egyttese.
Elem: A rendszer azon rsze, amelyet azrt vlasztunk ki, hogy
vizsgldst vgezznk rajta. Egy elem is lehet rendszer. Segtsgvel
jellemezhet a rendszer.
Klcsnhats: Elemek kztti olyan kapcsolat, relci, amely az adott
elemeket a rendszer rszv teszi. A rendszer tbb mint az elemek
egyttese.
A rendszerek jellemzi:
Komplexits: Sok elem s bonyolult klcsnhatsok jellemzik.
Nyltsg: A rendszer nem nmagban ltezik, hanem ms rendszerekkel
egytt. Krnyezetvel lland kapcsolatban van.
Dinamikussg: A rendszer elemeinek klnbz llapotai vannak, s a
rendszer elemei s azok viselkedsei idben llandan vltoznak.
A vals rendszerek tlsgosan komplexek, a teljes valsgban ltalban
nem tudjuk kezelni, gy egyszerstsi mdszerekre van szksg. A cl a
komplex rendszerek leegyszerstse.
Modellezs: Lnyege az absztrakci, azaz az elemek lnyegt,
karakterisztikus kzs tulajdonsgait kiemeljk, a klnbzsgeket
elhanyagoljuk s a modellbe ezeket a kzs tulajdonsgokat vonjuk be. A
modellben vizsglunk, krdseket tesznk fel, kvetkeztetseket vonunk
le, amit a vals rendszerre visszavezetnk. Clja, hogy a vals vilgrl
olyan ismereteket szerezznk, melyek helyesen tkrzik a vals vilgot.
Az ismeretekre azrt van szksg, hogy tadhassuk ket. Az ismeret
mindig rgzitett formban van, s hozzfrhet.
Az informci
Adat: A tnyek elkpzelsnek nem rtelmezett, de rtelmezhet formban
rgzitett alakja. (pl:1995)
Informci: Az adatokon vgzett gondolati mvelet eredmnyeknt ll el.
(1995-vszm) Az informci viszonylagos ltalban. Ugyanaz az adat az
egyes ember szmra ms-mst jelent. A modellezs, az informci s a
rendszer is viszonylagos. A rendszerben az elemek klcsnhatsait,
tulajdonsgait adatokkal rjuk le. Ez az adatmodell. Ez igen
bonyolult szerkezet lehet. Az informatika II. az adatmodellel
foglalkozik.
Az elemek viselkedst, a rendszer mdosulsait eljrsmodellnek
nevezzk. Ezzel a programozs I. foglalkozik.
Tbbfajta irnyelv ltezik: Van aki szerint a viselkedsbl kvetkezik
az adatmodell, a msik felfogs szerint az adat tulajdonsga
meghatrozza az eljrst. Adatcsoportokkal tudok jellemezni egy-egy
elemet, s ezek kztt kemny logikai sszefggs van. A modellben
(logikai) adatszerkezetekrl beszlnk.
Adatszerkezetek: Adatttelekbl vagy adatelemekbl llnak s kzttk
valamilyen kapcsolat van.
Fizikai (adat) trszerkezetek: Meg kell klnbztetni az operatv
trat, vagy memrit, amelynek brmelyik bjtja kzvetlenl elrhet. Vannak
mg a httrtrak, vagy perifrik. Ezeknl van mechanikai mozgs. A
mgneslemeznl nem pontos az a kifejezs, hogy kzvetlen elrs, mert br
mindegyik elem elrhet, de ez nem ugyanannyi id alatt trtnik. Az
adatszerkezetek egyik fajtja az llomnyok (file). llomny csak
perifrin ltezik. Adatszerkezet, amelyik perifrin ltezik, az az
llomny. (data structure - adatszerkezet)
Adatszerkezetek szemlltetse:
Egy-egy elem ltalban adatcsoporttal jellemezhet. Az adatcsoport
adatai mindig sszefggenek. Az adatszerkezetek adatttelekbl,
adatelemekbl llnak. Ezek kztt valamilyen kapcsolat ll fenn.
Adatelemek: o, kapcsolat: .
Adatszerkezetek osztlyozsa:
Brmely adatszerkezet mindig vges szm adatelemet tartalmaz.
Mveletek az adatszerkezetekkel:
Ltrehozs: Nem volt adatszerkezet, lesz.
Mdosts:
bvts vagy beszrs (csak dinamikus adatszerkezeteknl): j
adatelemek kerlnek be. Az adatelemek szma n.
trls: Cskken az adatszerkezet elemeinek a szma, az addig ottlv
eleme(ke)t tvoltom el.
csere: Az elemek szma nem vltozik, csak valamely elem vagy
elemek rtke, kicserlem egy msik rtkre.
Rendezs
Keress
Bejrs (elrs): Az adatszerkezet minden elemt rinteni akarom,
krds, hogy ezt milyen sorrendben tehetem. Lehet soros (az
adatszerkezet elemeit valamilyen fizikai sorrend alapjn tudjuk
megfogni, ahogy le vannak kpezve (ld. mgnesszalag)), szekvencilis
(valamilyen logikai sorrend az alapja (ld. sztszrtan trolt
elemek)), vagy kzvetlen (fggetlen a tbbi adatelemektl (ld.
folytonos trols)).
Feldolgozs: Az adott adatszerkezet hogyan s mire hasznlhat.
Adatszerkezetek trolsa
A logikai adatszerkezeteket le kell kpezni a trba. A memriban
ktfle mdon trolhatunk adatszerkezeteket.
1. Folytonos (szekvencilis, vektorszer) trols. Ha a memriban
trolt elemek egy folytonos trterleten egyms utn helyezkednek el,
sorba rendezzk ket valamilyen szempont szerint. Az adatttelek
trolsi jellemzi azonosak (tpus, brzolsi md, hossz).
Ismerni kell a kezdcmet, a trolsi jellemzket, s az elemek szmt.
Itt minden elemet kzvetlenl meg tudok fogni, minden adatszerkezet
trolhat ilyen mdon.
Mveletek:
Ltrehozs: Az adatelemeket, adattteleket egy-egy trrszbe helyezem
el. A kezdcmtl minden ttelt folytonosan pakolunk a trba.
Bvts: A vgre jabb elemeket lehet rakni. Beszrsnl az adott elem
behelyezsnek helye utn lv elemeket jobbra kell tolni, t kell
mozgatni.
Trls: Megklnbztetnk fizikai s logiakai trlst:
Fizikai trls: A trrsz mgtt lv elemeket rcssztatom a trlend
elemre, mindegyiket eggyel balra.
Logikai trls: Az elemek szma nem cskken. A trlni kvnt elemet
megjellm, hogy trlve van ( trlt jellel). Ekkor az adatelem rtke
vltozik meg, gy ez valjban egy csere.
Csere: brmely elem kzvetlenl megfoghat.
Rendezs: Ha van rtelme, akkor mindegyik rendezsi algoritmus
alkalmazhat.
Keress: Ha van rtelme, akkor minden keressi algolitmus
alkalmazhat.
2. Sztszrt trols (vletlenszer). Az adatelemek trolsi jellemzik
lehetnek klnbzek. Minden adatszerkezet trolhat sztszrtan.
A tnyleges adatelem mellett ltezik a trrsznek egy gynevezet
mutat rsze is, amely olyan informcit tartalmaz, hogy az adott
trelem utn melyik msik trelem kvetkezik az adott
adatszerkezetben.
a) Egyirnyban lncolt lista (linked list) Trszerkezet vagy trolsi
md.
Minden elem mutatrsze tartalmazza a kvetkez elem trolsi cmt, az
adatrsz az adatelem rtkt tartalmazza. Tudni kell, hogy melyik a
lista els eleme. Ennek a cmt a fej tartalmazza, a listn kvli elem,
nem tartozik az adatszerkezethez. Az utols elem mutatrsze nem mutat
sehova sem, a lista vgt jelzi.
reslista:
Mveletek:
Ltrehozs: Els lpsknt ltrehozom az reslistt, utna bvtek.
Bvts: A lista brmelyik helyre beilleszthetek egy j trolsi
elemet:
a) A lista elejre: Lefoglalok egy helyet a trban. Brhol, de
tudom a cmt. A fej az j elemre, az jelem az eddigi els elemre
mutat.
b) A lista vgn: Lefoglalom a trhelyet. Az j elem mutatja a lista
vgt jelz informci: NULL. Az utols elem mutatrszbe berom az j elem
cmt, az eddigi utols elem mutatja az j elemre fog mutatni. Az utols
elemet meg kell keresni, vgig kell menni a listn, teht szksg van
egy bejrsra. Minden elem megmondja, hogy hol a rkvetkezje.
c) Bvts a listban: Az elrs szekvencilis. (beszrs) A listnl a
keress teljes keress, ahol adatrtket keresek. Minden elemre csak gy
tudok eljutni, ha eltte vgig mentem az eltte lv elemeken. Az az
elem, amin llok az aktulis elem. Az aktulis elem el, vagy mg is
beszrhatok.
Mg bvtek: A megelz elemekrl nincs informcim. Az aktulis elem
mutatrszbe az j elem cmt rom, az j elem mutatrszbe az aktulis elem
mutatrszben lv cmet rom.
El bvtek: Az elz mdszerrel nem lehet bvteni, mert nem tudom
megmondani, hogy mi az elz elem cme. Meg kell jegyezni az aktulis
elem eltti elem cmt.
Trls: Fordtott bvts.
a) Els elem trlse: A lista fejbe az els elem mutatrtkt
viszem.
b) Utols elem trlse: Az utols eltti elemet megkeresem s a
mutatrszbe NIL-t rok.
c) Ha az aktulis elemet akarom trlni, akkor az aktulis elem
mutatrszt tviszem a megelz elem mutatrszbe.
Csere: Simn vgrehajthat.
Keress: Csak teljes keresssel, amennyiben nem rendezett. Ha
rendezett, lineris keresssel.
Rendezs: Tegyk fel, hogy van egy listm, s azt sajt helyn akarom
rendezni. Ez nem clszer. Gyakoribb, hogy egy j listt rendezetten
hozok ltre. Ezt gy tehetem, hogy ltrehozom az res listt s beszrsos
rendezst alkalmazok. A beszrand elem helyt lineris keresssel
keresem meg.
Bejrs: Minden problma nlkl megtehet.
Feldolgozs: Adatszerkezet-fgg.
b) Krkrs (cirkulris) lista
Az utols elem mutatja az els elem cmre mutat. Brmelyik elembl
krbe tudok menni, a bejrst egyszersti.
c) Ktirnyba lncolt lista
Minden elemnek kt mutatja van, amelyek informcit tartalmaznak a
kvetkez s a megelz elemrl. ltalban kt fej van, a lista elejre s a
vgre mutatnak, gy kt irnyba tudok haladni.
d) Multilista Tbb rtelmezse is van.
1) Az adatelemek sszetettek, pl:
Kialaktok az egyik s a msik rszre egy listt. A listaszerkezet
pl. tartalmazza a neveket ABC sorrendben, az tlagokat cskken
sorrendben. Tbb mutatrsz van, mindegyik egy-egy adatelemrsz szerint
lncol. Annyi mutatrsz s annyi fej van, ahny lnc.
Ez is lehet ktirnyba lncolt, illetve krkrs lista.
2) Legyenek az adatelemek sszetettek, gy van egy adatelem
sorozatom. Egytt akarom kezelni az azonos rtkeket, pl: a
Debrecenben lakkat. gy olyan rszlistk jnnek ltre, amelyben azonos
rtk elemek vannak. Annyi rszlista s fej van, amennyi fle rtk
tallhat.
3) Az adatrsz is tartalmazhat mutatrszt, amely egy msik listra
mutat. Ekkor listkat fzk fel.
Azt jelzi a jelzrsz, hogy tnyleges adatra, vagy egy msik listra
mutat. Jelz: 0,1 (bitek).
Ezek trolsi szerkezetek!!!
Vannak olyan adatszerkezetek, amelyekhez jobban illik a
folytonos trols, msokhoz praktikusabb a sztszrt.
Reprezentci: A trolsi md s a lekpezs egyttese.
Implementci: A reprezentci s a mveletek egyttese.Trls
Amikor adatszerkezetben trlst vgznk, akkor egy trhely
felszabadul. Krds az, hogy hogyan tudunk ezzel a szabad trhelyekkel
gazdlkodni.
I. folytonos trols esetn:
a) Az egyik megolds, hogy ha felszabadul a trhely, tszervezzk az
adatszerkezetet, azaz a mgtte lv elemeket rcssztatjuk a trlend
elemre. Szabad helyek ilyenkor mindig az adatszerkezet vgn lesznek.
Ez igen idignyes, viszont a problmnkat biztosan megoldja.
b) Hulladkgyjts: (garbage collection) A lyukakat otthagyom, csak
logikai trls van, folyamatosan rok tovbb. Amikor elfogy a
rendelkezsre ll trhely, akkor rendszeres idkznknt szervezi,
rendszerezi t a vgre a szabad helyeket, hogy sszefgg trterletet
kapjunk. Sok opercis rendszer van, amely gy kezeli le a trlst.
c) A trhelyeket nyilvntartjuk egy bitmtrix segtsgvel. A mtrix
elemei: 1 (foglalt), 0 (szabad), ez alapjn tudok elemeket elrakni.
Nem kell mozgatni az adatelemeket, viszont kln kell
nyilvntartani.
II. sztszrt brzols esetn:
a) A szabadhelyek ssze vannak lncolva. A szabadhelyek listjrl
leveszem az els elemet, ha j elemet akarok lncolni, s azt fzm az
llomnyhoz. Ha trlst vgzek, akkor az adott elem helyt a szabad
elemek lnchoz lncolom. Idben gazdasgos.
Problma: Klnbz mret trhelyeket lncolok, gy olyan algoritmusokat
kell alkalmazni, amelyek ellenrzik, hogy az j elem befr-e a trrszbe
(first fit: az els megfelel trhelyet lefoglalom; best fit: a
megfelelek kzl a legkisebbet foglalom le). Meg kell keresni azt a
trhelyet, ahova befr. Ha tl kicsi elemet pakolok bele, akkor az nem
gazdasgos.
b) Szabadhelyek nyilvntartsa: Lsd folyt. Bitmtrix segtsgvel
trtnik.
c) Hulladkgyjtsi technika, amelyben lncolom a szabadhelyeket. Ha
elfogy a szabad hely, akkor lncolok.
Absztrakt adatszerkezetek:
Ha az implementcitl eltekintnk, akkor beszlnk absztrakt
adatszerkezetekrl. Az implementci, a reprezentci mindig
rendszerfgg, az absztrakt adatszerkezet fggetlen tle, csak a
tulajdonsgai definiljk.
Struktra nlkli adatszerkezetek
Az egyes adatelemek fggetlenek, nincs kzttk kapcsolat. Az elemek
kztt nincs sorrend, mindegy, hogy hol helyezkednek el egymshoz
kpest. Meg tudom mondani, hogy az adatszerkezetnek elemei-e, mg ha
megkeverem, akkor is.
HALMAZ (set)
Matematikai halmazfogalom megfeleltetse adatszerkezet
szinten.
MULTIHALMAZ (multiset, bag)
Olyan specilis halmaz, amely a halmaztl eltren ismtldst enged
meg, teht lehetnek azonos elemek.
Mindkt adatszerkezet dinamikus s vges. Beszlhetnk reshalmazrl
is, viszont vgtelen halmaz, mint adatszerkezet nem ltezik.
Specilis adatszerkezeti mveletek vannak: ((,(,(,\ | in,+,*,)
(,in: Meg lehet llaptani, hogy egy adott elem benne van-e a
halmazban, vagy sem. Eredmnye mindig logikai rtk.
(, +: A multihalmazban az uni az sszes elem unijt jelenti, teht
ha pl: az egyik halmazban "a" 5x szerepel, a msik halmazban 3x,
akkor unijukban 8x fog. Pl. ha A(B=C , akkor |A|+|B|=|C|.
(, *: Ugyanez igaz a metszetkpzsre is, teht az elbb emltett kt
halmaz metszetben "a" 3x fog szerepelni.
A kvetkezkben definilt mveletek multihalmazra is igazak.
Mveletek
Ltrehozs:
Megadhatok egy prediktumot (felttelt). A halmaz elemei azok
lesznek, amelyek igazz teszik a felttelt. pl: X={200-nl nem nagyobb
pozitv egsz szmok}
Felsorolhatom a halmaz elemeit, azaz konkrtan megadom ket. pl
:
Y={fekete, piros, kk, fehr, srga}
Ltezik reshalmaz, s ehhez unival hozzpakolom az elemeket, s gy
jn ltre a halmaz.
Bvts: Unikpzssel.
Trls: Klnbsgkpzssel.
Csere: Nem ltezik, mert nem tudom megfogni az elemeket. Ha
kitrlk egy elemet s jat viszek be, akkor egy szimullt csert
csinltam.
Keress: Nincs, a fenti indok miatt.
Rendezs: Nem rtelmezhet. Rendezett halmaz nem halmaz, hanem egy
msik adatszerkezet. Gyakran nincs is rtelme a rendezsnek.
Bejrs: Nincs, mert nem tudom megfogni az elemeket.
Feldolgozs: A definilt mveletek alkalmazsa.
A halmazok kztt rtelmezhet az sszehasonltsi mvelet. Kt halmaz
egyenl, ha ugyanazokat az elemeket tartalmazza, egybknt nem. Ha az
egyik halmaz rszhalmaza a msiknak, akkor az a kisebb. H(K ( H=min
&& k!=KULCS[i])
{
if (k