토픽 29 / 66·해시 자료구조
Hash Collision Resolution (해시 충돌 해결)
Hash Collision Resolution (해시 충돌 해결)
서로 다른 키가 동일 해시 값을 갖는 충돌을 해결하는 기법
특징: Chaining vs Open Addressing, 부하율(Load Factor)=항목수/버킷수
Chaining: 버킷에 연결 리스트/트리, 삭제 용이, α>1 가능, 포인터 오버헤드, 캐시 비효율
Open Addressing: 빈 슬롯 탐색하여 저장, 캐시 효율, Tombstone 삭제, α<1 필수
- •Linear Probing: (h+i)%m, 캐시 최고, 1차 클러스터링 심각
- •Quadratic Probing: (h+c₁i+c₂i²)%m, 클러스터링 완화
- •Double Hashing: (h₁+i·h₂)%m, 클러스터링 거의 없음, 가장 안정적
기타: Cuckoo Hashing(O(1) 최악 조회), Robin Hood Hashing(프로브 거리 균형)
부하율: 0.75 권장(Java HashMap), 초과 시 재해싱(2배 확장+재삽입, O(n))
비교: Chaining(리스트/삭제용이/α>1/캐시낮음) vs Open Addressing(테이블내/캐시높음/삭제복잡/α<1)
적용사례: HashMap, HashSet, DB 인덱스, 캐시, 심볼 테이블
연관: 해시 테이블, 해시 함수, Load Factor, 재해싱