[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