Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

1 Kulcstranszformációs táblázat Ennek a táblázatnak az ábrázolása folytonos. Soros táblázat esetén egy elem helyét a beszúrás időpontja, önátrendező táblázatnál.

Hasonló előadás


Az előadások a következő témára: "1 Kulcstranszformációs táblázat Ennek a táblázatnak az ábrázolása folytonos. Soros táblázat esetén egy elem helyét a beszúrás időpontja, önátrendező táblázatnál."— Előadás másolata:

1 1 Kulcstranszformációs táblázat Ennek a táblázatnak az ábrázolása folytonos. Soros táblázat esetén egy elem helyét a beszúrás időpontja, önátrendező táblázatnál a feldolgozás gyakorisága, rendezett táblázatnál a kulcs értéke szabja meg. Kulcstranszformációs táblázat esetén egy elem helyét a k kulcs valamilyen f(k)-val jelölt függvénye alapján határozhatjuk meg. Ezt a függvényt hívjuk hasító vagy hash függvénynek. Az eljárást magát (elem kulcsához meghatározzuk az f(k) értéket) hashingnak vagy randomizálásnak vagy kulcstranszformációnak vagy hasításnak nevezzük. 19:10

2 2 Kulcs transzformációs táblázat A hash-függvény a kulcsokat képezi le tárbeli címekre. Kulcstranszformáció esetén beszélünk a kulcsok elvi előfordulási lehetőségeiről, és a gyakorlatban ténylegesen megvalósuló kulcsértékekről. A hash-függvény lehet kölcsönösen egyértelmű (ideális eset). Ez akkor valósítható meg, ha az elvi és a gyakorlati lehetőségek száma közel megegyezik, vagy a gyakorlatban előforduló kulcsok egyenletesen oszlanak el az elvi lehetőségen belül. (Ideális eset, csak ritkán fordul elő) Ha az elvi és a gyakorlati lehetőségek között nagy a különbség és nem egyenletes az eloszlás, akkor csak egyértelmű hash függvények léteznek. 19:10

3 3 Kulcs transzformációs táblázat Egy-egy hash-függvénytől a következő dolgokat várjuk el:  helyezze le a kulcsokat a rendelkezésre álló címtartományra;  ezen a címtartományon próbálja meg egyenletessé tenni az eloszlást Általában elmondhatjuk, hogy univerzális hash-függvény, ami ezeket garantája, nincs. A legtöbb esetben előfordul, hogy különböző kulcsokhoz ugyanazt a címet rendeli. Ekkor szinonimákról beszélünk. A szinonimák felbukkanását valahogy kezelni kell, mert egy helyen a tartományban csak egy elemet tudok elhelyezni. 19:10

4 4 Kulcstranszformációs módszerek A kulcstranszformációs módszerek azt mondják meg, hogy a hash-függvény milyen algoritmussal helyezi le a kulcsot a tartománybeli címre. Különböző módszerek a kulcsok egyes típusaira: Szöveges kulcsok:  a hash-függvények veszik a kulcsot alkotó karakterlánc belső kódját,  az így kapott numerikus értékeken pedig valamilyen transzformációt hajtanak végre. Numerikus kulcsok 19:10

5 5 Numerikus kulcsok Feltételezzük, hogy a kulcstranszformációs táblázat kulcsainak száma legnagyobb várható száma „n”. (Ennyi elemnek foglalunk helyet.)  Ennél általában nagyságrendekkel (100x, 1000x, …) nagyobb az elméletben előfordulható kulcsok száma. Prímszámmal való osztás módszere:  A HASH függvény minden új KULCS értéket eloszt azon p prímszámmal, amely a legnagyobb, az n-nél kisebb prímek között.  Az elem helyét (sorszámot) a maradék fogja adni. Ebben az esetben 0 és p-1 közötti egész szám lesz. (Ha a tárhelyeket 1-től sorszámozzuk, ezt az értéket még 1-el megnöveljük)  Ez a módszer elég jól véletlenszerűsít (egyenletesít) és egyszerű. 19:10

6 6 Numerikus kulcsok Szorzás módszere: Többféleképpen is megvalósítható. Az eredeti kulcsot minden esetben szoroznunk kell. Elképzelhető, hogy  egy prímszámmal,  vagy önmagával,  vagy a kulcsot valamely két számjegye között félbevágjuk, és a két felét összeszorozzuk. A megkapott szorzatnak vesszük annyi számjegyét (k), ahány jegyű n (a tárhelyek száma), és az ebből képzett számot tekintjük az elem táblázatbeli sorszámának. Általában a szorzat középső k db számjegye szokott lenni a Hash-függvény értéke. Ez a módszer is elég jól véletlenszerűsít. (Viszont nem annyira egyszerű.) 19:10

7 7 Numerikus kulcsok Helyiérték kiválasztásos módszer:  A kapott numerikus kulcs számjegyei közül véletlenszerűen kiválasztunk k db helyiértéket, és minden kulcsból az ezen a helyiértékeken szereplő mennyiségeket kiválasztva kapjuk az elem sorszámát. Bázistranszformáció módszere:  Ebben az esetben a kapott kulcsot úgy tekintjük, mint egy tizesnél magasabb alapú számrendszerben felírt számot. Ezt a számot áttranszformáljuk (visszatranszformáljuk) tizes számrendszerbeli számmá, és az így kapott számnak k db számjegyéből képzett számot tekintjük az elem sorszámaként. 19:10

8 8 Kulcstranszformációs módszerek Ha sikerült Hash-függvényt választanunk, akkor a táblázat létrehozásakor, ill. bővítése idején felmerülhet a következő probléma:  A Hash-függvény időnként több érkező elemhez, ugyanazt a tárcímet (sorszámot) rendeli hozzá.  Ekkor szinonimák előfordulásáról, ill. túlcsordulásról beszélünk.  Mit tegyünk ilyenkor? Három módszer van a szinonima kezelésre: 1. A nyílt címzés módszere 2. Láncolással történő nyílt címzés módszere 3. Független túlcsordulási lista alkalmazása 19:10

9 9 A nyílt címzés módszere A nem túlcsordult és a túlcsordult elemeket ugyanazon tárhely sorozatban kell elhelyezni. (Folytonos tárolás) Ha valahol túlcsordulást tapasztalunk, akkor  az adott helyről elindulunk a tárhelyek vége felé,  és keressük az első üres tárhelyet,  ahová bepakoljuk a túlcsordult elemet.  Amennyiben elérjük a tár végét akkor az üres hely keresését az 1. tárhelytől kezdve folytatjuk tovább. 19:10

10 10 A nyílt címzés módszere Egy adatelemet kulcs alapján visszakeresni ezután a Hash-függvény segítségével úgy lehet, hogy ha az adott kulcsú elem nincs a Hash-függvény által adott címen (tárhelyen), akkor  egy teljes keresést kell végrehajtani az 1. üres helyig,  vagy amíg meg nem találjuk a keresett elemet.  Ha a keresés közben elérjük a tartomány végét (utolsó tárhelyét), akkor a keresést a tárhely elején folytatjuk tovább.  A keresést megállíthatja még az is, hogy anélkül érünk vissza a kiinduló helyzethez, hogy a keresett elemet megtaláltuk volna. 19:10

11 11 A nyílt címzés módszere A kulcstranszformációs táblázatnál nyílt címzés módszerével problémát jelenthet, hogy egy túlcsorduló rekord túlcsordulttá tehet egyébként nem túlcsorduló elemeket is. A probléma megoldása az lehet, ha az elemeket két lépesben helyezzük el a táblázatban.  Első körben azokat, amelyek szabályosan a helyükre pakolhatók,  majd ezek után a kimaradókat (ezek mindegyike túlcsordult lesz majd). 19:10

12 12 A nyílt címzés módszere Nyílt címzés esetén egy elem a tárhelyről fizikailag semmiképpen sem törölhető, ugyanis a helyén maradó üres tárhely megállítaná a keresést. Emiatt az ilyen kulcstranszformációs táblázatban egy tárhelynek három állapota lehet attól függően, hogy  érvényes elemet,  vagy (logikailag) törölt elemet tartalmaz,  vagy egyszerűen üres. Új elem beszúrásakor az új elemet üres vagy legalább törölt helyre szúrjuk be. 19:10

13 13 Láncolással történő nyílt címzés módszere A nyílt címzéssel történő szinonima kezelés hátránya: túlcsordult elemek esetén az elem elsődleges helyén (ahová a Hash- függvény leképezné) nincs semmi információ az elem tényleges helyére vonatkozóan. Ezt javítja egy másik szinonimakezelési technika, a láncolással történő nyílt címzés módszere. A tárhely eddigi két oszlopa (kulcs és adat) mellé fel kell venni egy harmadikat. A mutató oszlopban található értékek megadják az adott helyről, vele azonos hash-értékű kulccsal először túlcsorduló elem címét (sorszámát). Ezen értékek segítségével a szinonim elemeket egy-egy láncban fűzzük fel. Amennyiben a mutató mezőben található érték NIL vagy nulla értékű, akkor az adott tárhelyről (ugyanazon hash-értékű kulccsal) nem történt túlcsordulás – vagy már törölve lett a túlcsorduló elem. 19:10

14 14 Láncolással történő nyílt címzés módszere A szinonimák a láncon keresztül gyorsan elérhetők, viszont nő a tárfoglalási és a karbantartási idő. Nyílt címzés, illetve láncolással történő nyílt címzés módszere esetén az „várható”, hogy a túlcsordult elemek a túlcsordulás helyéhez viszonylag közel legyenek, az elemek tárolásához a ténylegesen szükséges tárhelynél kb. 10%-kal több tárhelyet szokás lefoglalni. Ez tovább növeli a módszerek tárhely igényét. 19:10

15 15 Független túlcsordulási lista alkalmazása Ennél a módszernél az azonos helyről túlcsordult rekordokat külön listákban, és nem a „folytonos tárban” helyezzük el. Ezúttal a mutató oszlopban található értékek egyirányban láncolt listák fejmutatóiként funkcionálnak. (Amúgy hasonlít az előzőre.) Az így elkészített táblázatba a nem túlcsorduló elemek kerülnek, a szinonim elemek pedig a Hash-függvény által jelzett helyről kiinduló egy irányban láncolt listába kerülnek. 19:10

16 16 Kulcstranszformációs táblázatokon végzehető műveletek Asszociatív adatszerkezet, mert ilyen táblázatnál az asszociatív csoportosítást a szinonimák adják. Szinonimák létezése esetén ezek a csoportok nem 1 elemű részhalmazokat fognak alkotni. Létrehozás:  Szinonima kezelési technika választása,  Hash-függvény választás (szempontjai már voltak).  A gyakorlatban előforduló kulcsok számára adni kell valamilyen becslést,  majd tárhelyet kell foglalni a leendő elemek számára (1., 2.: +10% ; 3: annyi, amennyi),  és végül az elemek elhelyezése a tárban. 19:10

17 17 Kulcstranszformációs táblázatokon végzehető műveletek Bővítés:  Kulcsok alapján a Hash-függvény segétségével, és az előzőekben említettek figyelembe vételével történik. Törlés:  Logikai törlés: Minden módszer esetén működik.  Fizikai törlés: A harmadik módszernél a független túlcsrdulási listákban elhelyezett elemek esetében lehetséges. Csere:  Kulcs alapján megoldható. Értékeit lehet cserélni bármikor. A kulcs cseréje törléssel és bővítéssel megoldható. 19:10

18 18 Kulcstranszformációs táblázatokon végzehető műveletek Rendezés: Nincs (nem értelmezett) Elérés:  Kvázi közvetlen, hiszen a Hash-függvény a közvetlen elérést szolgálja. A szinonimákat viszont keresni kell. Keresés:  A szinonimakezelési módszertől függ. Feldolgozás:  Alapja a Hash-függvény, illetve rajta keresztül a „kvázi közvetlen” elérés. A táblázat, mint adatszerkezet nagyon sok különböző jellegű problémánál előkerül. Sok operációs rendszer adatbázis kezelő rendszere használ különböző célokra táblázatokat. Igazi jelentőségük az állományok kezelésénél van. 19:10

19 19 Lista adatszerkezet Szekvenciális adatszerkezetek  Minden elem két másik elemmel van kapcsolatban, kivéve az első és az utolsó elemet. Lista, mint absztrakt adatszerkezet.  Dinamikus adatszerkezet  Van első és utolsó eleme - kivéve az üres listát.  Minden elemnek van rákövetkezője - kivéve az utolsó elemet.  És minden elemnek van megelőzője - kivéve az első elemet.  Lista jelölése: Q=[x 1,x 2, …,x n ] ahol az x-szel jelölt dolgok a lista elemei. 19:10

20 20 Lista adatszerkezet Az üres listának egy eleme sincs: [ ]. A lista első elemét szokás a lista fejének is nevezni. Azt a listát amelyik úgy keletkezik, hogy az eredeti listából elhagyjuk a fejet (első elemet), a lista farkának hívjuk. Fej: [x 1 ] Farok: [x 2, …,x n ] Vége: [x n ] A lista mérete alatt az elemeinek a számát értjük. Méret jelölése: |Q| (=n). Ezek speciális lista fogalmak voltak. 19:10

21 21 Lista műveletei Műveletei: (alap lista műveletek). 1. Hozzáférés (elérés): Minden elem a többitől függetlenül, közvetlenül elérhető. Q[i]=x i. Az elemek elérése sorszámhivatkozással történik. Ha nem létező sorszámra hivatkozunk, akkor a hozzáférés az üres listát adja. 2. Allista képzés: Q[i..j]=[x i,x i+1, …,x j-1,x j ] Az eredeti listának két megadott sorszámú eleme közötti részlistát adja eredményül. Ha az i sorszám értéke n, akkor az n-edik elmig tart. 3. Összefűzés (konkatenáció, egyesítés): R=[y 1,y 2, …,y m ]  Q&R=[x 1,x 2, …,x n, y 1,y 2, …,y m ] 19:10

22 22 Lista, mint absztrakt adatszerkezet műveletei Ezek a speciális lista műveletek fontosak, mert az összes többi műveletetet ennek a háromnak a segítségével lehet definiálni: Létrehozás:  Létrehozákor explicit módon megadjuk a lista elemeit, amelyek a felsorolás sorrendje alapján kapják sorszámaikat. Bővítés:  A listát bárhol bővíthetjük.  A bővítést részlista képzéssel és konkatenációval realizálhatjuk.  Ha a listát a k-adik elem után akarom bővíteni egy új elemmel, azt úgy tehetem meg: Q[1..k]&[elem] &Q[k+1..n]. 19:10

23 23 Lista, mint absztrakt adatszerkezet műveletei Törlés:  Fizikai törlést jelent. K-adik elem törlése: Két allista képzéssel és az eredményük konkatenálásával tehetjük meg: Q[1..k-1]&Q[k+1..n] Csere: Értelmezett:  Allista képzésekkel és konkatenációval realizálható k-adik elem cseréje: Q[1..k-1]&[x] &Q[k+1..n]  A két részlista közé beillesztjük az új elemet, majd a részeket összefüzzük. 19:10

24 24 Lista, mint absztrakt adatszerkezet műveletei Rendezés:  Minden értelmezett, akármelyik használható. Keresés:  Teljes keresés, ill.  rendezett listánál lineáris vagy bináris (ez ábrázolás függő is). Feldolgozás:  Lista elemeit dolgozza fel.  A speciális lista műveletekkel. 19:10

25 25 Lista ábrázolása Ábrázolás: Mindkét módszerrel (folytonos, szétszórt) szokásos. Szétszórt ábrázolási módok közül a két irányban láncolt lista a legpraktikusabb. A lista alapvető szerepe olyan problémáknál, ahol az elemek között valamilyen nem értékeken, hanem például időbeliségen alapuló sorrend van, illetve ahol az elemek elérését mindig közvetlenül szeretnénk megoldani. 19:10

26 26 Speciális Listák Ezeknél többnyire csak az alábbi hat speciális művelet némelyike használatos. Ezek a lista első és utolsó elemének kezelésére szolgálnak. 1. ACCES HEAD: Q[1] 2. PUSH: Q  [x] &Q 3. POP: Q[1] és Q  Q[2..n] 4. ACCESS END: Q[n] 5. INJECT: Q  Q &[x] 6. EJECT: Q[n] és Q  Q[1..n-1] 19:10

27 27 Speciális Listák Verem:  Egy speciális lista adatszerkezet. Az előbbi műveletek közül az 1. ACCES HEAD 2. PUSH 3. POP műveleteket lehet értelmezni rajta. A verem alján van a legkisebb sorszámú elem, feljebb egyre nagyobb sorszámúak. A vermet LIFO (last in first out) adatszerkezetnek is szokás nevezni. Az utolsónak érkezett fog először távozni. 19:10

28 28 Speciális Listák: Verem Létrehozáskor mindig az üres vermet hozzuk létre. Bővítés: A Push művelet alkalmazásával. Az elemeket érkezésük sorrendjében egymás felé pakoljuk a veremben. Feldolgozáskor csak a legfelső elem hozzáférhető  ACCESSHEAD  POP (Egyben fizikai törlés is) Törlés: csak fizikai, csak a legutolsó elemet lehet. Rendezés: nem értelmezett; Keresés: nem értelmezett; Elérés: Csak a legutoljára elhelyezett elemet lehet. 19:10

29 29 Speciális Listák: Verem Ábrázolás: Mindkét módon Folytonos reprezentáció esetén van egy verem mutató, amely jelzi, hogy aktuálisan hány elem van a veremben. Egyúttal ez a verem mutató a verem tetejét is címzi. A verem üres, ha nincs egy eleme sem, a verem mutató értéke ilyenkor nulla. A verem tele van, ha nincs több hely a veremben, veremmutató értéke, vm=n. PUSH: Ha a veremben még van hely, az új elemet az vm+1- edik helyre tesszük, majd a veremmutató értéke egyel növeljük. POP: Ha a verem nem üres, a veremmutató által mutatott helyről vesszük ki az elemet, majd a verem mutató értékét eggyel csökkentjük. 19:10

30 30 Speciális Listák: Verem Szétszórt reprezentáció Egy irányban láncolt listát használhatunk. PUSH: Egy irányban láncolt lista első eleme előtti bővítéssel Ha a verem üres, a fejmutató értéke NIL. A verem implementációjakor ezeket el kell rejteni, de azért tudnunk kell, hogy üres-e a verem, vagy esetleg tele van-e. A verem alapvető fontosságú az olyan problémák kezelésénél, ahol az elemeket felbukkanási sorrendjük fordítottjában kell feldolgozni. A tömb mellett a másik legalapvetőbb adatszerkezet. Programozási nyelveknél az alprogram hívási láncok kezelésénél van alapvető szerepe. 19:10

31 31

32 19:1032

33 33 Speciális Listák: Sor A sor adatszerkezet olyan speciális lista, amelyet a műveletei definiálnak.  1. ACCESS HEAD  3. POP itt GET-nek nevezzük  5. INJECT itt PUT-nak nevezzük Kiegészítésként kiemeljük az első és az utolsó elemet FIFO adatszerkezetnek is nevezik (First In First Out) Ennek megfelelően a sorba az elemek az érkezésnek megfelelő sorrendben kerülnek, az újak mindig a sor végére kerülnek Feldolgozni a sor első elemét szokás, ami egyben fizikai törlést is jelent 19:10

34 34 Speciális Listák: Sor Sorba történő írás művelete, PUT művelet, az olvasás (fizikai törlés) művelete a GET művelet. Logikai törlés nincs Rendezés nincs értelmezve Keresés nincs értelmezve Elérés: Csak az első elemet tudjuk elérni Feldolgozás a fejmutató által hivatkozott elemet Bővítés: az utolsó mutató után a mutatók átállításával 19:10

35 35 Speciális Listák: Sor Ábrázolás Szétszórt:  egyirányban láncolt listával,  két segédmutatóval (fej és vége mutató) Folytonos:  Folytonos reprezentációk mindegyike egy vektorban tárolja a sor elemeit  Fontos a sor elejének és végének jelzése 19:10

36 36 Speciális Listák: Sor Folytonos ábrázolás tipikus formái: 1. Fix kezdetű sor 2. Vándorló sor 3. Ciklikus sor Speciális sorok: 1. Két végű sor 2. Prioritásos sor 19:10

37 37 Speciális Listák: Sor Fix kezdetű sor  A sor első eleme a vektor első tárhelyén helyezkedik el, az utolsó elem mutatója v.  Üres a sor: v=0  Tele van a sor: v=n  Új elem beírása: v+1-edik helyre kerül, majd v eggyel megnő.  Elem törlése: Nehézkes, több adatmozgatás, a sor első elemét dolgozzuk fel. A sor eleje pedig mindig ugyanott kell, hogy legyen, ezért törlés után a többi elemet rámozgatjuk az előző pozícióra. V értéke eggyel csökken. 19:10

38 38 Speciális Listák: Sor Vándorló sor  A sokszori adatmozgatást küszöböli ki  Elvetjük azt a megszorítást, hogy az első elem az első helyen álljon. Megengedjük, hogy az első elem helye vándoroljon.  Ehhez segédmutatók, e és a szokásos v szükséges  Üres a sor: e=v=0  Tele a sor: e=1, v=n  Új elem bekerülése: A v mutatót követő pozícióra kerül be, ha a sor nincsen tele.  Bővítéskorkor előfordulhat, hogy a v az utolsón áll, de az e vándorlása miatt a sor nincs tele: ilyenkor (csak ilyenkor), adatmozgatást hajtunk végre: A legelső pozícióig toljuk a sort előre. 19:10

39 39 Speciális Listák: Sor Ciklikus sor: Az adatmozgatást eddig még nem küszöböltük ki teljesen. A ciklikus sorban az elejét és végét jelző mutató vándorlását a határokon keresztül is megengedjük:  Üres a sor: e=v=0  Tele a sor: e=1 és v=n, vagy v+1=e.  Új elem: szabályokat figyelembe véve, ha a sor nincs tele, akkor a v+1-edik helyre kerül, (esetleg v visszaugrik az elejére).  Törlés: e mutató által mutatott elem, majd e=e+1. (Esetleg e visszaugrik az elejére.) 19:10


Letölteni ppt "1 Kulcstranszformációs táblázat Ennek a táblázatnak az ábrázolása folytonos. Soros táblázat esetén egy elem helyét a beszúrás időpontja, önátrendező táblázatnál."

Hasonló előadás


Google Hirdetések