이 답변은 TAoCP Vol 3, Ch 6.4의 일부를 요약 합니다.
값 집합 있고, 그 중 n 값 은 m 크기 의 배열 A 에 저장 한다고 가정합니다 . 우리는 해시 함수의 사용 시간 : V의 →의 [ 0 .. M을 ) ; 일반적으로 M ≪ | V | . 우리는 α = n 이라고 부릅니다.VnAmh:V→[0..M)M≪|V| 부하율의를. 여기에서 자연m=M이라고 가정합니다. 실제 시나리오에서 우리는m≪M을가지고 있으며m자신에게 매핑해야합니다.α=nmAm=Mm≪Mm
첫 번째 관찰은 가 균일 한 특성을 가지 더라도 ¹ 동일한 해시 값을 갖는 두 값의 확률이 높다는 것입니다. 이것은 본질적으로 악명 높은 생일 역설 의 사례입니다 . 따라서 우리는 대개 충돌을 처리해야하며 최악의 경우 액세스 시간 O ( 1 )에 대한 희망을 버릴 수 있습니다 .hO(1)
그래도 평균 사례는 어떻습니까? 모든 키 가 동일한 확률로 발생 한다고 가정 해 봅시다 . 확인 된 항목의 평균 수 C S n (성공한 검색) resp. C U n (실패한 검색)은 사용 된 충돌 해결 방법에 따라 다릅니다.[0..M)CSnCUn
체인
nm
CSn≈1+α2 and CUn≈1+α22.
이것은 테이블 내부에리스트를 부분적으로 또는 완전히 저장함으로써 약간 향상 될 수 있습니다.
선형 프로빙
v
h(v),h(v)−1,…,0,m−1,…,h(v)+1
vα→1CSn≈12(1+11−α) and CUn≈12(1+(11−α)2).
α<0.75 단, chaining² 성능에 필적한다.
더블 해싱
M
CSn≈1αln(11−α) and CUn≈11−α.
이 방법은 브렌트에 의해 조정되었습니다. 그의 변형은 더 저렴한 검색으로 증가 된 삽입 비용을 상각합니다.
테이블에서 요소를 제거하고 테이블을 확장하면 각 방법마다 다양한 난이도가 있습니다.
O(1)αh
h
Hashtable