이차 프로빙
Quadratic probing2차 프로빙은 해시 테이블의 해시 충돌을 해결하기 위한 컴퓨터 프로그래밍의 오픈 어드레싱 방식이다.2차 프로빙은 원래 해시 인덱스를 취하여 열린 슬롯이 발견될 때까지 임의 2차 다항식의 연속 값을 추가하는 방식으로 작동한다.
2차 프로브를 사용한 예시 순서는 다음과 같다.
2차 탐침은 면역성은 없지만 선형 탐침으로 발생할 수 있는 클러스터링 문제를 피하는 것이 좋기 때문에 오픈 어드레싱 테이블에서 보다 효율적인 알고리즘이 될 수 있다.그것은 또한 참조의 지역성을 보존하기 때문에 좋은 메모리 캐슁을 제공하지만, 선형 프로빙은 더 큰 지역성을 가지고 있고, 따라서 캐시 성능이 더 좋다.[dubious ][citation needed]
이차 함수
h(k)를 [0, m-1]의 정수에 요소 k를 매핑하는 해시함수로 하고 여기서 m은 테이블의 크기다.함수에 의해 값 k에 대한 ith 프로브 위치가 제공되도록 함
여기서2 c ≠ 0(c2 = 0이면 h(k,i)는 선형 프로브로 분해된다.주어진 해시 테이블의 경우 c와1 c의2 값은 일정하게 유지된다.
예:
- If , then the probe sequence will be
- m = 2의n 경우, [0, m-1]의 i에 대한 h(k,i) 값이 모두 구별되므로 상수에1 대한 좋은 선택은 c = c = 12/2이다. 하면 프로브 시퀀스가( ), ( )+ 1, ()+ , ()+ 6,.. . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .값이 1, 2, 3, ...씩 증가하는}(삼각형 숫자).
- 프라임 m > 2의 경우, c와1 c의2 대부분의 선택은 [0, (m-1)/2]의 i에 대해 h(k,i)를 구별하게 할 것이다.이러한1 선택에는2 c = c = 1/2, c1 = 12 및 c = 012, c = 1이 포함된다.그러나 주어진 요소에 대한 m/2 구별되는 프로브만 있을 뿐, 부하계수가 1/2을 초과할 때 삽입이 성공한다는 것을 보장하기 위한 다른 기법이 필요하다.
- For , where m, n, and p are integer greater or equal 2 (degrades to linear probe when p = 1), then gives cycle of all distinct probes.로 계산할 수 있다: h( k, )= (k) ,0)=h(k,0k,+ = ( i 1) =( k )+ +1 m)2in+n+n+n++1)
- 임의의 m에 대해 2차 프로빙을 사용한 전체 사이클은 계산 프로브 인 h ( k ,)= ()+(i + )/ 2( r 2( m) 2)를 반올림하여 달성할 수 있다 , 일 때 반복을 건너뛰십시오최대 ( )- m< / 반복이 있으며, 이러한 반복은 메모리를 지칭하지 않기 때문에 대부분의 현대 프로세서에서 빠르게 작동한다.반올림 m은 다음을 통해 계산할 수 있다.
uint64_t 반올림2(uint64_t v){ v--; v = v >> 1; v = v >> 2; v = v >> 4; v = v >> 8; v = v >> 16; v = v >> 32; v++; 돌아오다 v; }
제한 사항
교대 부호
If the sign of the offset is alternated (e.g. +1, −4, +9, −16, etc.), and if the number of buckets is a prime number congruent to 3 modulo 4 (e.g. 3, 7, 11, 19, 23, 31, etc.), then the first offsets will be unique (modulo ).[further explanation needed], 0 ~ - 의순열이 얻어지고 따라서 하나 이상의 자유 버킷이 존재하는 한 항상 무료 버킷을 발견하게 된다.