해시 가능 란 무엇입니까?
컴퓨터 과학에서 Hashtable은 키라고하는 값 목록으로 구성된 데이터를 저장하기위한 데이터 구조입니다. 예를 들어, 비즈니스 이름은 주소와 짝을 이룰 수 있습니다. 일반적으로 배열의 각 값은 해시라고하는 위치 번호를 갖습니다. 해시 함수는 일반적으로 각 키 값을 해시에 매핑하는 일련의 지침 또는 알고리즘입니다. 예를 들어 비즈니스 이름을 주소, 전화 번호 및 비즈니스 범주에 연결합니다. 해시 함수의 목적은 각 키를 배열에서 고유 한 해당 값에 할당하는 것입니다. 이것은 일반적으로 해싱이라고합니다. 해시 가능이 올바르게 작동하려면 해시 함수가 올바르게 형식화되어야합니다.
데이터 세트에서 해시 가능의 성능은 해시 함수의 효율에 따라 다릅니다. 좋은 해시 기능 유형Ally는 균일 한 키 조회와 해당 배열에서 매핑을 균일하게 배포 할 수 있습니다. 해시 충돌은 두 키가 동일한 해당 값에 할당 될 때 발생합니다. 해시 충돌이 발생하면 해시 함수는 일반적으로 고유 한 해당 값이 발견 될 때까지 다시 실행됩니다. 이것은 일반적으로 해시 시간이 길어집니다. 해시 테이블의 키 수는 일반적으로 고정되어 있지만 때로는 중복 키가있을 수 있습니다. 그럼에도 불구하고 잘 설계된 해시 테이블에는 각 키를 배열의 고유 한 해당 값에 매핑하는 효과적인 해시 함수가 있습니다.
때때로, 해시 테이블의 비효율적 인 해시 함수는 또한 매핑 클러스터를 생성 할 수 있습니다. 해시 함수가 기존 키에 대한 매핑 클러스터를 생성하면 해당 값을 조회하는 데 걸리는 시간이 증가 할 수 있습니다. 대부분의 해시 함수는 일반적으로 배열에서 다음으로 사용 가능한 위치를 찾기 때문에 향후 키에 대한 해싱 속도를 늦출 수 있습니다. 큰 클러스터 인 경우값의 값은 이미 할당되었으며, 일반적으로 새 키에 대한 할당되지 않은 값을 찾는 데 훨씬 더 오래 걸릴 것입니다.
하중 계수는 해시 함수의 효율과 관련된 또 다른 개념입니다. 하중 계수는 해시 테이블에서 해당 배열의 전체 크기와 관련하여 이미 존재하는 해시의 양입니다. 일반적으로 이미 할당 된 키의 수를 해당 배열의 크기로 나누어 정의됩니다. 하중 계수가 증가함에 따라, 좋은 해시 함수는 일반적으로 일정한 수의 충돌 및 클러스터를 특정 지점까지 유지합니다. 종종이 임계 값은 주어진 수의 키와 함께 해시 함수가 얼마나 효율적이고 새로운 해시 함수가 필요한시기를 결정하는 데 사용될 수 있습니다.
많은 컴퓨터 과학 연구자들은 완벽한 해시 기능을 만들기 위해 노력해 왔습니다.이 기능은 부하 계수가 증가하는 충돌이나 클러스터를 생성하지 않습니다. 이론적으로 완벽한 해시 테이블을 생산하는 열쇠는완벽한 해시 함수를 뿌리십시오. 일반적으로 연구자들은 완벽한 해시 기능이 부하 계수가 증가함에 따라 일정한 성능 (충돌 및 클러스터의 수)을 가져야한다고 생각합니다. 최악의 시나리오에서는 완벽한 해시 기능을 통해 임계 값에 도달하지 않고도 일정한 해싱을 허용합니다.