110
Adatszerkezetek és algoritmusok A valós világban rendszerekről beszélünk. A dolgok összetevői egymással kölcsönhatásban vannak, viselkednek, tulajdonságaik vannak. Jellemzőjük a viselkedés, ezzel foglalkozik a rendszerelmélet. A rendszer Rendszer: Közös ismérv alapján az összetartozó, egymással meghatározott kapcsolatban lévő elemek jól körülhatárolt együttese. Elem: A rendszer azon része, amelyet azért választunk ki, hogy vizsgálódást végezzünk rajta. Egy elem is lehet rendszer. Segítségével jellemezhető a rendszer. Kölcsönhatás: Elemek közötti olyan kapcsolat, reláció, amely az adott elemeket a rendszer részévé teszi. A rendszer több mint az elemek együttese. A rendszerek jellemzői: Komplexitás: Sok elem és bonyolult kölcsönhatások jellemzik. Nyíltság: A rendszer nem önmagában létezik, hanem más rendszerekkel együtt. Környezetével állandó kapcsolatban van. Dinamikusság: A rendszer elemeinek különböző állapotai vannak, és a rendszer elemei és azok viselkedései időben állandóan változnak. A valós rendszerek túlságosan komplexek, a teljes valóságban általában nem tudjuk kezelni, így egyszerűsítési módszerekre van szükség. A cél a komplex rendszerek leegyszerűsítése. Modellezés: Lényege az absztrakció, azaz az elemek lényegét, karakterisztikus közös tulajdonságait kiemeljük, a különbözőségeket elhanyagoljuk és a modellbe ezeket a közös tulajdonságokat vonjuk be. A modellben vizsgálunk, kérdéseket teszünk fel, következtetéseket vonunk le, amit a valós rendszerre visszavezetünk. Célja, hogy a valós világról olyan ismereteket szerezzünk, melyek helyesen tükrözik a valós világot. Az ismeretekre azért van szükség, hogy átadhassuk őket. Az ismeret mindig rögzitett formában van, és hozzáférhető.

Adatszerkezetek És Algoritmusok

Embed Size (px)

DESCRIPTION

Adatszterkezetek és algoritmusok című könyv, azt hiszem, a cím magáért beszél!

Citation preview

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