2012-01-06 4 views
1

우리는 당신이 hash_table을 구현할 때 해시 예를 들면 그러나 this해시 함수 - 두 가지 의미가 있습니까?

를 참조 기능, 나는 그것이 대부분의 기사에서 32 비트 또는 64 비트 부호없는 정수로 키의 순서 바이트 변환 의미 발견, 그것은처럼 보이는 말할 때 그 해시 함수는 매우 큰 정수를보다 작은 내부 배열 인덱스로 변환하는 것을 의미하며,이 도메인에서 위에서 언급 한 "해시 함수"의 의미는의 해시 값으로 변경됩니다.

  1. 내 이해가 맞습니까?
  2. 작은 내부 배열 인덱스로 변환하는 큰 정수에 대한 통찰력이나 링크 또는 논문을 제공 할 수 있습니까?

감사

답변

0

hash function는 단순히 작은 데이터 세트로 설정 대형 데이터의 매핑입니다. hash table의 경우 더 작은 데이터 집합 (종종 정수)이 버킷의 조회 키로 사용됩니다.

예제 기사에서는 모든 해시 함수 출력이 해시 테이블의 조회 색인으로 사용되는 모든 정수를 사용합니다.

+0

그래, 그게 본질적으로 내가 생각한거야. – Patrick87

1

"해시 함수"에 대한 나의 이해는 집합 A에서 집합 {0, 1, 2, ..., n}까지의 모든 함수입니다. 여기서 n은 음수가 아닌 자연수입니다. 본질적으로 "해시 함수"가된다는 것을 의미하는 것은 아닙니다. 당신의 예제와 많은 다른 예제들은 비 해가되는 정수의 부분 집합에 일들을 매핑하기 때문에 "해시 함수"로 구성됩니다. "해시 함수"가 문제에 적용되는 방식도 정의의 일부가 아닙니다.

도메인이 codomain보다 커야한다고 생각조차하지 않지만 잘못된 것일 수 있습니다. 나는 codomain이 무한하다고 생각하지 않지만 틀릴 수도 있습니다.

1

"해시"라는 용어는 일반적으로 위의 두 가지 의미를 모두 포함합니다. 다른 대답이 지적한 것처럼, 작업은 비슷합니다. 또한 두 프로세스는 일반적으로 탠덤 방식으로 사용됩니다. 하나는 다른 프로세스 없이는 유용하지 않습니다.

해싱 시스템을 찾거나 설계 할 때, 피 더미 파트는 잘 분산 된 32/64 비트 정수 (실제 "해시 함수")를 생성합니다. 좋은 초기 해시 값을 얻은 후에는 결과가 최종 인덱스에 균등하게 분배되는 한 출력을 사용하는 정확한 방법은 중요하지 않습니다. (이런 종류의 함수 부분은 해시 함수와 독립적으로 알고리즘/데이터 구조를 업데이트 할 수 있습니다.) 고정 인덱스 해시 테이블에 적합한 최종 인덱스를 생성하는 명백한 방법은 모듈로 해시 값을 취하는 것입니다 지수의 수 그러나 해시 값이 사용되는 방식은 애플리케이션에 따라 다릅니다 (예 : 동적 크기 해시 테이블은 고정 크기 테이블과 다른 것을 수행합니다).