문제 11 · 뻐꾸기 해싱
문제 11 [4점]
뻐꾸기 해싱cuckoo hashing의 장점(1점), 약점(1점), 개선 방법(1점)과 개선 방법의 한계(1점)를 서술하시오.
풀이 및 해설
뻐꾸기 해싱이란
두 개(이상)의 해시 함수
장점
- 조회(lookup)가 최악에도
: 키는 , 두 자리만 확인하면 되므로, 있든 없든 상수 시간에 판정된다. 삭제도 .
약점
- 삽입이 불안정: 밀어내기가 사이클을 이루면 무한 반복(재해싱 필요)이 될 수 있고, 적재율이 일정 임계치(두 함수·두 테이블일 때 약 50%)를 넘으면 삽입 실패·재구성 비용이 급증한다. 즉 삽입의 최악 성능이 보장되지 않는다.
개선 방법
- 자리마다 여러 키를 담는 버킷(bucket,
-way) 을 두거나, 해시 함수를 3개 이상으로 늘린다. 이렇게 하면 각 키의 후보 자리가 많아져 밀어내기 사이클 확률이 낮아지고, 적재율을 90% 이상까지 끌어올릴 수 있다.
개선 방법의 한계
- 버킷·해시 함수를 늘리면 조회 시 확인해야 할 자리(캐시 접근) 수가 늘어 상수 인자가 커진다. 또한 어떤 방식이든 적재율이 충분히 높아지면 삽입 실패는 여전히 발생하며, 그때는 테이블을 키워 전체 재해싱을 해야 하는 최악의 비용을 완전히 없앨 수는 없다.