이 문서는 Google Cloud Translation API를 사용해 자동 번역되었습니다.
어떤 문서는 원문을 읽는게 나을 수도 있습니다.
이 게시물에서는 해시 테이블의 충돌 해결 기술에 대해 설명합니다. 두 개의 키가 동일한 해시 값에 매핑되면 충돌이 발생합니다. 충돌을 해결하는 몇 가지 방법이 있으며 이 게시물에서 살펴보겠습니다.
연결은 해시 테이블의 각 슬롯이 연결된 목록인 충돌 해결 기술입니다. 충돌이 발생하면 해당 슬롯의 연결 목록에 키가 추가됩니다.
키를 검색하려면 키를 해시하고 해당 슬롯으로 이동합니다. 그런 다음 해당 슬롯에서 연결 목록을 통해 키를 검색합니다. 삽입과 검색 모두에 대한 시간 복잡도는 O(n)입니다. 여기서 n은 해시 테이블의 키 수입니다.
체이닝의 한 가지 장점은 구현하기 쉽다는 것입니다. 또 다른 장점은 해시 테이블의 크기를 쉽게 조정할 수 있다는 것입니다. 해시 테이블의 크기를 조정하려면 새 해시 테이블을 만들고 이전 해시 테이블의 모든 키를 새 해시 테이블에 삽입하기만 하면 됩니다.
개방 주소 지정은 키가 해시 테이블 자체에 저장되는 충돌 해결 기술입니다. 공개 주소 지정에는 몇 가지 다른 방법이 있으며 이에 대해 살펴보겠습니다.
선형 탐색은 빈 슬롯을 찾을 때까지 해시 테이블에서 다음 빈 슬롯을 찾는 개방형 주소 지정 방법입니다. 해시 테이블의 끝에 도달하면 해시 테이블의 처음부터 둘러싸서 계속합니다.
키를 검색하려면 키를 해시하고 해당 슬롯으로 이동합니다. 해당 슬롯이 비어 있으면 키가 해시 테이블에 없다는 것을 알 수 있습니다. 슬롯이 비어 있지 않으면 해당 슬롯의 키를 찾고 있는 키와 비교합니다. 동일하지 않으면 다음 슬롯을 계속 검색합니다. 삽입 시간 복잡도는 O(1)이지만 검색 시간 복잡도는 O(n)입니다. 여기서 n은 해시 테이블의 키 수입니다.
선형 프로빙의 한 가지 장점은 구현하기 쉽다는 것입니다. 또 다른 장점은 키가 해시 테이블에 고르게 분포되어 빈 슬롯이 없다는 것입니다.
2차 탐색은 해시 값에 1, 4, 9, 16, 25 등을 추가하여 다음 빈 슬롯을 찾는 개방 주소 지정 방법입니다.
키를 검색하려면 키를 해시하고 해당 슬롯으로 이동합니다. 해당 슬롯이 비어 있으면 키가 해시 테이블에 없다는 것을 알 수 있습니다. 슬롯이 비어 있지 않으면 해당 슬롯의 키를 찾고 있는 키와 비교합니다. 동일하지 않으면 다음 슬롯을 계속 검색합니다. 삽입 시간 복잡도는 O(1)이지만 검색 시간 복잡도는 O(n)입니다. 여기서 n은 해시 테이블의 키 수입니다.
2차 조사의 장점 중 하나는 구현하기 쉽다는 것입니다. 또 다른 장점은 키가 해시 테이블에 고르게 분포되어 빈 슬롯이 없다는 것입니다.
이중 해싱은 두 개의 해시 함수를 사용하여 다음 슬롯을 계산하는 개방 주소 지정 방법입니다.
키를 검색하려면 키를 해시하고 해당 슬롯으로 이동합니다. 해당 슬롯이 비어 있으면 키가 해시 테이블에 없다는 것을 알 수 있습니다. 슬롯이 비어 있지 않으면 해당 슬롯의 키를 찾고 있는 키와 비교합니다. 동일하지 않으면 다음 슬롯을 계속 검색합니다. 삽입 시간 복잡도는 O(1)이지만 검색 시간 복잡도는 O(n)입니다. 여기서 n은 해시 테이블의 키 수입니다.
이중 해싱의 한 가지 장점은 구현하기 쉽다는 것입니다. 또 다른 장점은 키가 해시 테이블에 고르게 분포되어 빈 슬롯이 없다는 것입니다.
이 게시물에서는 해시 테이블의 충돌 해결 기술에 대해 논의했습니다. 연결, 선형 조사, 2차 조사 및 이중 해싱을 살펴보았습니다. 체이닝은 해시 테이블의 각 슬롯이 연결된 목록인 기술입니다. 개방형 주소 지정은 키가 해시 테이블 자체에 저장되는 기술입니다. 선형 조사, 2차 조사 및 이중 해싱은 모두 개방 주소 지정 방법입니다.