이중 해싱
Double hashing더블 해싱은 해시 테이블에서 오픈 어드레싱과 연동해 해시 충돌을 해결하는 컴퓨터 프로그래밍 기법으로, 충돌이 발생했을 때 키의 2차해시를 오프셋으로충돌을 해결한다 해시 사용해.주소가 열린 이중 해싱은 테이블 displaystyle T에 있는 인 데이터 구조 입니다
이중 해싱 기법은 하나의 해시 값을 테이블로 인덱스로 사용하고 나서 원하는 값이 위치하거나 빈 위치에 도달하거나 테이블 전체가 검색될 때까지 간격을 반복적으로 앞으로 내딛지만, 이 간격은 두 번째 독립 해시 함수에 의해 설정된다.선형 프로빙 및 2차 프로빙의 대체 충돌 분해능 방법과 달리, 간격은 데이터에 따라 달라지므로 동일한 위치에 매핑되는 값들이 서로 다른 버킷 시퀀스를 가지며, 이는 반복적인 충돌과 클러스터링의 영향을 최소화한다.
2개의 랜덤, 균일한 독립 해시함수 h 및 의 해시 테이블에서 k 에 버킷 시퀀스에서 i i 위치는 ( i, k )= ()이다 Generally, and are selected from a set of universal hash functions; is selected to have a range of and to have a range of . Double hashing approximates a random distribution; more precisely, pair-wise independent hash functions yield a probability of that any pairkeys는 동일한 버킷 순서를 따를 것이다.
h2(k) 선택
해시함수 ( k) 는 다음과 같은 몇 가지 특성을 가져야 한다.
- 결코 0의 지수를 산출해서는 안 된다.
- 그것은 전체 테이블을 순환해야 한다.
- 계산하는 것은 매우 빠를 것이다.
- 1 () 과(와) 쌍으로 독립적이어야 함
- }의 분포 특성은 무관하다.그것은 무작위 숫자 생성기와 유사하다.
- 모든 ( ) 은(는) T 에 상대적으로 프라임이다 .
실제:
- 두 기능 모두에 분할 해싱을 사용할 경우 분할 해시를 소수점으로 선택한다.
- T가 2의 검정력인 경우 일반적으로 첫 번째 및 마지막 요건은 h () 가 항상 홀수를 반환하도록 하여 충족된다.이는 한 비트 낭비 때문에 충돌 확률이 두 배로 높아지는 부작용이 있다.[1]
분석
을(를) 에 저장된 원소의 수로 하고 의 부하 계수는 / {\에(으)로 한다 즉, 두 가지 보편적인 해시함수 h h h h h 1 함수 h_과 h1}과 를 무작위, 독립적으로 무작위로 무작위로 선택하고, h를 독립적으로 선택한다. to build a double hashing table . All elements are put in by double hashing using and . Given a key , the -st hash location은 다음을 통해 계산된다.
T{T\displaystyle}고정 부하 인자 α:1>α하다;0{\displaystyle \alpha:1>, \alpha>0}. 브래드 포드와 Katehakis[2], 여전히 이 처음에 살육 해시 함수를 사용하여 조사 T{T\displaystyle}에서 실패하며 검색의 예상 번호가 떠ㅅ다,는 11− α{\displaystyle{\tfrac{1}자.{1-\alpha}}}투입물의 분포에 관계없이해시 함수의 쌍별 독립성 충분.
다른 모든 형태의 오픈 어드레싱과 마찬가지로, 이중 해싱은 해시 테이블이 최대 용량에 근접함에 따라 선형화된다.통상적인 휴리스틱은 테이블 하중을 용량의 75%로 제한하는 것이다.결국, 다른 모든 공개 주소 지정 체계와 마찬가지로 더 큰 크기로 다시 배치해야 할 것이다.
변형
Peter Dillinger의 박사 논문은[3] Bloom 필터에서와 같이 해시함수를 세트로 취급할 때 이중 해시가 원하지 않는 등가 해시함수를 발생시킨다고 지적한다.If and , then and the sets of hashes ), .. . . . . . . h ( , y ) ( ( (은(으)와 같다.이렇게 하면 / 2{\ 1^{
There are additionally a significant number of mostly-overlapping hash sets; if and , then , and comparing additional hash 값( 의 범위에 해당은 도움이 되지 않는다.
트리플 해싱
Adding a quadratic term [4] (a triangular number) or even (triple hashing)[5] to the hash function improves the hash function somewhat[4] but does not fix this problem; if:
- ( )=- (x)- 2 ( ),
그때
향상된 이중 해싱
3 또는[4] - )/6 사면수)를 추가하면 강화된 이중 해싱이라고 알려진 기술인 문제가 해결된다.[1]이는 전진 차등화를 통해 효율적으로 계산할 수 있다.
구조상의 핵심을; /// 불투명 /// 필요한 경우 다른 데이터 유형을 사용하십시오.(보증된 포장에는 서명하지 않은 상태여야 함) 바깥의 서명이 없는 인트로 h1(구조상의 핵심을 경시하다 *), h2(구조상의 핵심을 경시하다 *); /// 두 개의 기본 해시함수에서 k 해시값 계산 /// h1() 및 h2()은 강화된 이중 해싱을 사용한다.답례로 /// 해시[i] = h1(x) + i*h2(x) + (i*i*i - i)/6 /// 자동 포장(모듈라 감소) 활용 /// C에 서명되지 않은 유형. 공허하게 하다 ext_dbl_message(구조상의 핵심을 경시하다 *x, 서명이 없는 인트로 해시[], 서명이 없는 인트로 n) { 서명이 없는 인트로 a = h1(x), b = h2(x), i; 을 위해 (i = 0; i < n; i++) { 해시[i] = a; a += b; // 2차 차이를 추가하여 입방체를 구하십시오. b += i; // 선형 차이를 추가하여 2차 값을 구함 // i+++는 일정한 차이를 추가하여 선형을 구함 } }
강화된 이중 해싱은 충돌 문제를 시정하는 것 외에도 2 () 의속성에 대한 이중 해싱의 수치 제한도 제거하여 h }와 유사한 (\displaysty h_{1}와 유사한 해시 함수를 사용할 수 있다.[1]
참고 항목
참조
- ^ a b c Dillinger, Peter C.; Manolios, Panagiotis (November 15–17, 2004). Bloom Filters in Probabilistic Verification (PDF). 5h International Conference on Formal Methods in Computer Aided Design (FMCAD 2004). Austin, Texas. CiteSeerX 10.1.1.119.628. doi:10.1007/978-3-540-30494-4_26.
- ^ Bradford, Phillip G.; Katehakis, Michael N. (April 2007), "A Probabilistic Study on Combinatorial Expanders and Hashing" (PDF), SIAM Journal on Computing, 37 (1): 83–111, doi:10.1137/S009753970444630X, MR 2306284, archived from the original (PDF) on 2016-01-25.
- ^ Dillinger, Peter C. (December 2010). Adaptive Approximate State Storage (PDF) (PhD thesis). Northeastern University. pp. 93–112.
- ^ a b c Kirsch, Adam; Mitzenmacher, Michael (September 2008). "Less Hashing, Same Performance: Building a Better Bloom Filter" (PDF). Random Structures and Algorithms. 33 (2): 187–218. CiteSeerX 10.1.1.152.579. doi:10.1002/rsa.20208.
- ^ 딜린저 2004에서와 같이 삼각형 숫자로 대안으로 정의된다.
외부 링크
- 그레고리 L의 캐싱이 해싱에 미치는 영향힐레만과 원빈 루오 2005.
- 해시 테이블 애니메이션
- 이중 해싱 기능을 포함하는 C 라이브러리를 klib.