
113
3
장
해싱
코드
3-12
영어 사전에 대한 완벽 해시 함수의 리스트 일부
S1 = [394429, 442829, 389061, 136566, 537577, 558931, 481136,
337378, 395026, 636436, 558331, 393947, 181052, 350962, 657918,
442256, 656403, 479021, 184627, 409466, 359189, 548390, 241079, 140332]
S2 = [14818, 548808, 42870, 468503, 590735, 445137, 97305,
627438, 8414, 453622, 218266, 510448, 76449, 521137, 259248, 371823,
577752, 34220, 325274, 162792, 528708, 545719, 333385, 14216]
def hash_f(key, T):
return sum(T[i % 24] * ord(c) for i, c in enumerate(key)) % 667596
def perfect_hash(key):
return (G[hash_f(key, S1)] + G[hash_f(key, S2)]) % 667596
[코드
3
-
12
]에서
perfect
_
hash
(
key
)
의 계산은 큰
G
리스트에서 유일한 위치를 식별하기 ...