해시 함수 분류


9

인터넷에서 나는이 질문을 겪었습니다.

키 값을 찾는 다양한 방법에 따라 해싱 함수를 분류하십시오.

같은 답변으로

  • 직접 방법
  • 빼기 방법
  • 모듈로 나누기 방법
  • 자릿수 추출 방법
  • 미드 스퀘어 방법
  • 접는 방법
  • 의사 난 수법

내가 이상하게 생각합니다. 나는 해싱에 대해 많이 알고 있다고 생각하지만 이것은 나에게 명백한 횡설수설입니다.

답변:


4

그것들은 해시 코드를 값을 포함하는 배열의 인덱스로 바꾸는 방법입니다. 해시 코드가 0x12345678이라고 가정 해 봅시다. 매우 큰 숫자이며이 크기의 배열이 없을 것입니다. 당신이 할 수 있다면 그냥 할 수 있습니다

Value = array[0x12345678];

그리고 완료하십시오 (직접 방법).

그렇지 않으면 너무 많은 충돌을 피 하면서이 값을 배열 크기에 맞는 값으로 변환하는 방법을 알아낼 수 있습니다. 사용 된 용어는 아마도 다른 이름으로도 알려져 있지만 예를 들어 해시 코드의 상위 비트를 가리킬 수 있습니다

Value = array[hashcode & 0xffff];

또는 배열 크기에 따라 해시 코드를 수정하십시오.

Value = array[hashcode % array.size()]; // modulo division

기타

편집 :이 링크 가 도움 이 될 수 있습니다


고마워, 그게 다야-링크 가이 ***의 근원 인 것 같습니다. 여러 가지를 함께 혼합 할 때는 여전히 이해가되지 않습니다. 색인에 대한 해시 (예 : 계수, "&")
maaartinus
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.