: 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수. 해시 함수에 의해 얻어지는 값을 해시라고 한다. 해시는 테이블로 활용되어 매우 빠른 데이터 검색으로 사용된다.
Division, Multiplication 기법 등으로 해시가 가능하다. 단, 서로 다른 두 개의 입력값에 대해 해시 함수가 동일한 출력값을 발생한다면? 이를 해시 충돌이라고 한다.
해시 충돌이 일어나면 해시 함수로 얻은 주소가 아닌 다른 주소 공간에 데이터를 저장함. 종류는 3가지가 존재함.
: 순서대로 검사해서 처음으로 빈 슬롯에 저장하고 끝에 도달하면 다시 처음으로 순환하여 돌아감
데이터 탐색 시 : 순차적으로 검색하다가 못 참고 빈 슬록이 나오면 종료
단점 🧐
: 선형 프로빙에 비해 충돌이 적지만 secondary clustering(처음 충돌한 위치가 같다면 다음 충돌할 위치도 반복적으로 계속 충돌이 나게 됨.)이 발생함.
: 충돌이 없을 때는 h1으로 위치를 탐색하고, 충돌이 있으면 h2 mod m만큼 이동하면서 탐색.
충돌 시 연결 리스트에 추가하는 방식
: 중복된 해시 값이 있는 경우, 해당 슬롯을 연결 리스트로 저장함. 연결리스트이기 때문에 최악의 경우 수행 시간이 O(n)임. 이런 문제는 트리로 구성하면 완화시킬 수 있음. 장점은 삽입, 삭제가 간단함.