일반적으로 피트니스는 '해시 모듈러스 테이블 크기'모델에서 충돌 횟수를 최소화합니다. 명백한 부분은 적절하게 크고 중요한 (매우 중요한) 키 분배를 가져 와서 '후보'기능을 통해 척하는 것입니다.
그런 다음 하나 이상의 테이블 크기 값에 대해 'hash modulo table-size'를 통해 전달하고 발생 분포의 'niceness'에 대한 측정을 평가할 수 있습니다.
그래서 무엇을 시도 할 테이블 크기와 적용 할 niceness 측정 값입니다. Niceness는 상황에 따라 다릅니다. '최악의 경우'삽입/찾기 시간의 척도로 'full bucket'을 측정 할 수 있습니다. 키 찾아보기 사이에 균일 한 분포를 기반으로 '평균'삽입/찾기 시간의 척도로 버킷 크기의 제곱합을 측정 할 수 있습니다.
마지막으로 테스트 할 테이블 크기 (또는 크기)를 결정해야합니다. 해시 모듈로 프라임은 해시의 모든 비트에 적절하게 변동하는 경향이 있으므로 해시 모듈로 2^n과 같은 것은 하위 n-1 비트 만 포함하므로 일반적으로 소수를 사용합니다. 계산량을 줄이려면 다음 소수의 시리즈를 각 2의 거듭 제곱보다 더 크게 고려할 수 있습니다. 17 (> 2^2) 11 (> 2^3), 17 (> 2^4) 등이 '샘플'크기보다 큰 2의 제곱을 포함합니다.
피트니스를 고려하는 다른 방법이 있지만 실용적인 응용 프로그램없이 질문은 (물론) 잘못 정의되어 있습니다.
잠재적 인 해시 함수의 '공간'이 모두 동일한 실행 시간을 갖는 것이 아니라면 '비용'도 고려해야합니다. 아주 좋은 해시 함수를 정의하는 것은 상당히 쉽지만 실행 시간은 중요한 요소가 될 수 있습니다.