해시 함수로 인덱스 계산하기
- 길이 11인 표에서 h(k) = k mod 11일 때 키 93, 17, 44, 60의 인덱스를 구하고 충돌하는 키를 찾는다.
- 문자 번호의 단순 합으로
dog과god의 인덱스를 구한다. ord('d') = 100, ord('o') = 111, ord('g') = 103이다. - 문자 위치 가중치(첫 글자 ×1, 둘째 ×2, 셋째 ×3)를 곱해 더하면 두 문자열의 인덱스가 어떻게 되는지 구한다.
- 해시 함수가 빠르면서도 키를 고르게 나누어야 하는 이유를 적는다.
해설 펼치기
- 93 mod 11 = 5, 17 mod 11 = 6, 44 mod 11 = 0, 60 mod 11 = 5다. 93과 60이 충돌한다.
- 두 문자열 모두 합이 100 + 111 + 103 = 314이고 314 mod 11 = 6이라 같은 인덱스다.
dog은 100×1 + 111×2 + 103×3 = 631, 631 mod 11 = 4다.god은 103×1 + 111×2 + 100×3 = 625, 625 mod 11 = 9다. 순서가 구분된다.- 해시 계산도 탐색 비용에 포함되고, 키가 한 버킷에 몰리면 그 버킷을 비교하는 비용이 커지기 때문이다.