이중 해싱

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]

참고 항목

참조

  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.
  2. ^ 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.
  3. ^ Dillinger, Peter C. (December 2010). Adaptive Approximate State Storage (PDF) (PhD thesis). Northeastern University. pp. 93–112.
  4. ^ 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.
  5. ^ 딜린저 2004에서와 같이 삼각형 숫자로 대안으로 정의된다.

외부 링크