알고리즘 해시

임유빈·2023년 12월 18일

개발자

목록 보기
25/26

해시

임의의 크기를 가진 데이터를 고정된 데이터의 크기로 변환시키는 것

Direct Addressing Table

key-value쌍의 데이터를 배열에 저장할, key값을 직접적으로 배열의 인덱스로 사용하는 방법이다.

Hash Table

key-value 쌍에서 key값을 테이블에 저장할 때, Direct Addressing Table과 달리 key값을 함수를 이용해 계산을 수행한 후, 그 결과값을 배열의 인덱스로 저장하는 방식이다.

충돌

해시 테이블은 다른 k값이 동일한 h(k)값을 가져 동일한 slot에 저장되는 충돌이 일어날 수 있다는 문제점이 있는데,
충돌을 완전히 방지는 힘들기 때문에 최소화 하는 방법을 사용한다.

Chaining방법

충돌을 허용하지만 최소화하는 방법 중 하나이다. 해시 테이블에서 동일한 해시값이 출력되어 충돌이 일어나면,키의 해시 값을 계산하고, 해시 값을 이용해 배열의 인덱스를 구하고, 같은 인덱스가 있다면 연결 리스트로 연결한다.

Open Addressing

충돌 발생 시 테이블 공간을 탐사해 빈 공간을 찾아나서는 방식이다.

Liner probing

Open Addressing 방식으로, key값으로 인덱스를 계산할 때, 만약 충돌이 발생한다면 바로 다음 인덱스에 데이터를 저장하는 방식이다.

Quadratic probing

Open Addressing 방식으로, primary clustering을 방지하기 위해 hash함수를 다음과 같은 2차식의 형태로 만드는 것이다.
h(k,i)=(h'(k)+c1i+c2i^2)mod m

Double hashing

Open Addressing 방식으로, Quadratic probing의 secondary clustering을 해결하기 위해서 사용하는 방법이다. 해시 함수를 다음과 같은 2개로 구성하여 처리한다.
h1(k)=k mod m
h2(k)=k mod m2
h(k,i)=(h'(k)+c1i+c2i^2)mod m

profile
주변 사람들과의 소통을 적극적으로 하는 친근한 개발자가 되기를 희망합니다.

0개의 댓글