Az erény a szorzás a módszer lényege, hogy a minőség a hash függvény függ kevés a választott m. De általában az m választani a kettő hatványa, mint a legtöbb számítógépen szorzás ereje két gyorsan végrehajtják, mint a váltás a szót. szorzás módszer működik bármely választott konstans A. de néhány értékeit lehet jobb, mint mások. A legjobb ár-érték egy Fibonacci-szám. A = 0,6180339887
Mi azt az eljárást illusztrálja egy konkrét példát. Tegyük fel, a hash mérete - táblázat m = 10000. Amikor behelyezzük a kulcsot fog hash 123456 - azaz:
függvény hash (kulcs string [4].): integer;
f: = ORD (kulcs [1]) - ORD (gomb [2]) + ORD ([3] gomb) - ORD (kulcs [4]);
F: = (F * 10000) div (255 * 4);
Módszerek konfliktusmegoldás
Az eljárást eltávolítására az asztalról csökken megtalálása az elem és annak eltávolítását a túlfolyó lánc.
3.2 ábra. Változatos módszerek konfliktusok megoldásában
3.3 ábra. Ütközés Felbontás hozzátéve elemeket láncok
Lineáris vizsgálat csökken szekvenciális scan a táblázat elemei fix pitch
ahol i - a próbálkozások száma a konfliktus megoldására. Lépésben egyenlő egy szekvenciális keresést az összes elem után a jelenlegi.
Négyzetes tesztje különbözik a lineáris a lépést iterációjával nem lineárisan függ a próbálkozások számát, hogy megtalálja egy szabad elemet
Engedélyezése és keresés
Bemutatjuk algoritmusok behelyezése és visszakeresés módszer lineáris tesztelés.
· A = h (kulcs) + i * C
· Ha t (a) = szabadon, t (a) = gombot. levelet elem, az elzáró elem adunk
· I = i + 1, ugorjon a 2. lépésre
· A = h (kulcs) + i * C
· Ha t (a) = gombot. A stop elem megtalálható
· Ha t (a) = szabadon, az ütközőelem nem található
· I = i + 1, ugorjon a 2. lépésre
Kiválasztása lépésben q. Amikor megpróbálja felvenni egy elemet egy elfoglalt sejt elkezd szekvenciális leolvasó sejt, és így tovább, amíg nem találunk egy szabad cella. Ebben, és írjon elem. Lényegében szekvenciális keresés - egy speciális esete a lineáris, ahol q = 1.
Lépés q nem fix, hanem változó négyzetesen: q = 1,4,9,16. Ennek megfelelően, amikor megpróbál hozzáadni egy elemet egy elfoglalt sejt elkezd szekvenciális leolvasó sejt, és így tovább, amíg nem találunk egy szabad cella. dupla hash
Ez azt mutatja, a hash tábla mérete 13 sejtek, amely felhasználja a kiegészítő funkciók:
Azt akarjuk, hogy helyezze be a kulcsot 14. Kezdetben i = 0. Aztán. De index 1 sejt elfoglalt, ezért egyre i 1 és újraszámolja a hash értéket. Mi is teszik, amíg el nem érünk egy üres cellába. Amikor i = 2, megkapjuk. A sejt a 9-es szám ingyenes, akkor írj a legfontosabb.
(2. lépés). Az eltávolítási eljárás számít ez nem olyan egyszerű, mivel ebben az esetben nem lesz fordított behelyezés eljárást.
Az a tény, hogy az elemek a táblázatban két államban: a szabad és foglalt. Ha töröl egy elemet azáltal, hogy a szabad eltávolítása után a keresési algoritmus nem fog megfelelően működni. Tegyük fel, hogy a legfontosabb eleme eltávolítjuk a táblázatban kulcsok szinonimái. Abban az esetben, cserélhető elem eredményeként ütközés felbontású elemek kerültek más billentyűkkel, a lista ezen elemek eltávolítása után mindig ad egy negatív eredmény, hiszen a keresési algoritmus megáll az első elem található abban a helyzetben szabadon.
Ahhoz, hogy javítson ezen a helyzeten a különböző módokon.
· A legegyszerűbb ezek közül keresni az elem nem felel meg az első helyet, és a végén az asztalra. Azonban egy ilyen módosítás az algoritmus semmissé tenné az egész nyereség gyorsulás az adatokhoz való hozzáférést, ami úgy érhető el tördeljük.
· Van olyan megközelítés, amely mentes ezeket a hátrányokat. Ennek lényege abban a tényben rejlik, hogy a hozzáadott feltétele eltávolított elemek a hash tábla. Ez az állapot a keresési folyamat értelmezni a foglalkoztatás, valamint ingyenes belépést a tanfolyamot.
Fogalmazza keresés behelyezése és eltávolítása algoritmusok hash tábla, amelynek három állam elemekkel.
2. a = h (kulcs) + i * C
3. Ha t (a) = szabad vagy t (A) = hagyni, t (a) = gombot. levelet elem, az elzáró elem adunk
4. i = i + 1, ugorjon a 2. lépésre
· A = h (kulcs) + i * C
· Ha t (a) = gombot. akkor T (A) = hagyni. az ütközőelem eltávolítjuk
· Ha t (a) = szabadon, az ütközőelem nem található
· I = i + 1, ugorjon a 2. lépésre
· A = h (kulcs) + i * C
· Ha t (a) = gombot. A stop elem megtalálható
· Ha t (a) = szabadon, az ütközőelem nem található
· I = i + 1, ugorjon a 2. lépésre
A keresési algoritmust a hash tábla, amelynek három állam, nem különbözik a keresési algoritmus kivételével törléseket. A különbség az, hogy meg kell ünnepelni a szabad és a törölt elemeket a szervezet maga a táblázat. Ez úgy valósítható meg, amely fenntartja a két érték a kulcs mezőbe. Egy másik kiviteli alak tartalmazhat a bevezetése egy további mezőt, ahol a rögzített elem állapotban. A hossza ezen a területen lehet, hogy csak két bit, ami elegendő ahhoz, hogy rögzítse a három államban.