[LUGOS-PROG] bijektivna preslikava iz stringa v int

Ivo List Ivo.List at guest.arnes.si
Wed Jan 9 22:29:49 CET 2002


Bijetivna preslikava bi pomenila, da hoces preslikati string v tocno
dolocen
integer in pa tudi obratno katerikoli integer v dolocen string. To lahko
naredis, ce imaz zelo dobro dolocene stringe, kar dvomim.

Ce hoces zgol enosmerno preslikavo lahko napises svojo hash funkcijo kot
genKey, katere kvaliteta bo odvisna od tvojih prog. sposobnosti.
Priporocljivo
je notri uporabiti prastevila, mnozenje. Relativno dobre rezultate
daje funkcija, ce keyc v for zanki pomnozis s prastevilom (in se ne
menis za
overflow). 

Ce pa imas nekaj vzorcnih podatkov, lahko izdelas perfektno hash
funkcijo.
To ti naredi programcek gperf, ki ga lahko uporabljas v shellu. Uporaba
je
zelo preprosta, output je C koda. Edini problem je, da so uporabljeni
algoritmi
ze malce zastareli in na splosno ne garantirajo, da perfektna hash
funkcija 
za tvoje podatke obstaja. (Gperf ima kar nekaj problemov z hashanjem
permutiranih
nizov.)

Ivo



More information about the lugos-prog mailing list