5st – 1 / 2 = 0,618033. Paiskfn on järgmine h(k) = [M(k*T – [k*T])]. Kandilised sulud tähistavad seda, et täisosa jääb järgi. Kollisioon – vastuolu. Ahelad väljaspool tabelit – elemendid, millel tekib vastuolu, seotakse ahelasse. Paisktabeli lahtris indeksiga h on aadress selle ahela esimesele elemendile, kuhu paigutataxe kõik paiskväärtust h omavad kirjed. Elemente võib olla rohkem kui tabelis lahtreid. 1. Otsimine – arvuta paiskaadress; kontroll kas võti K on tabelis kohal t[h(k)]; kui lahter tühi, siis ebaedukas; kui võti selles lahtris ei ole K, siis läbi kollisiooniahel; kui K-d ei leitud, siis ebaedukas; kui võti K oli lahtris, siis edukas. 2. Lisamine – arvuta paiskaadress h(k); kui tabelis vastava indeksiga lahter tühi, siis pane andmed sinna, vastasel juhul liigu kollisiooniahela lõppu, tee uus element ning lisa. 3
Idee: fikseerime veel teise paiskfunktsiooni h’(k), mida samale võtmele rakendades saame uue aadressi. Näiteks: h'(k) = 1+k mod (m-2) h(k), (h(k)-h'(k)) mod m, (h(k)-2⋅h'(k)) mod m, (h(k)-3⋅h'(k)) mod m, ... Järelekatsumisfunktsioon: s(j,k) = j ⋅h'(k) Algoritmid ja andmestruktuurid 2015 39 14.5 Andmete lisamine, otsimine ja kustutamine 14.5.1 Võtme K järgi otsimine • Arvutada välja paiskaadress h(K). • Kontrollida, kas võti K on tabelis kohal t[h(k)]. • Kui lahter oli tühi, siis otsimine oli ebaedukas. • Kui lahtris on K-st erinev võti, siis läbi vastav kollisiooniahel. • Kui K-d ei leitud ka ahelast, siis otsimine oli ebaedukas. • Kui võti K oli lahtris t[h(k)] või ahelas, siis otsimine oli edukas. 14.5.2 Võtme K lisamine (eeldusel, et kirjet võtmega K tabelis ei ole) • Arvutada välja paiskaadress h(K).