SMALL

해싱(Hashing)

  • 해싱은 데이터를 해싱 함수에 의해 주소로 변환해 해당 주소 위치에 데이터를 저장하는 방식입니다.(key-value 방식)
  • 데이터 검색시 빠르게 찾을 수 있는 장점이 있는 반면, 해시 테이블 용량 부족으로 오버플로우가 발생 가능합니다.

용어 정리

  • 해시 함수 : 데이터를 키로 변환하는 함수
  • 홈 주소 : 해시 함수로 변환된 키 값의 주소
  • 해시 테이블 : 해시 함수가 키 값 변환시 참조하는 테이블
  • 버킷 : 하나의 주소를 갖는 구역, 버킷의 크기는 레코드 몇개 들어갈 수 있는가를 의미
  • 슬롯 : 하나의 데이터를 저장할 수 있는 공간, 하나의 버킷안에 여러개의 슬롯을 가짐
  • 충돌 : 다른 데이터가 같은 키를 가지는 충돌 현상
  • 동의어 : 동일한 홈 주소로 인하여 충돌이 일어난 레코드들의 집합
  • 오버플로우 : 하나의 홈 주소의 버킷이 가득 차서 레코드를 저장할 슬롯이 없는 상태

해시 함수 종류

  • 제산함수
 - 레코드 값을 소수로 나누어 나머지 값을 주소로 지정
 - ex) h(k) = k%7

  • 중간제곱함수
 - 레코드 값을 제곱한 후에 중간 몇자리를 선택하여 주소로 지정
 - ex) k = 1024일 때, 1024*1024 = 1048576인데, 중간의 485가 주소로 지정

  • 접지함수
 - 숫자로 된 키를 같은 크기로 분리 후, 각 부분들 서로 더해서 주소로 지정
 - 이동 접지 : k = 12320324111220일 때, 123+203+241+112+20= 699가 주소로 지정
 - 경계접지 : k = 12320324111220일 때, 123+302+241+211+20= 897이 주소로 지정

  • 숫자분석함수
 - 각 숫자의 분포를 이용해 편향되지 않은 균등된 숫자를 선택해 주소로 지정

오버플로우 처리 방법

  • 선형조사법 : 오버플로우가 발생 시 다음 버킷에 빈 슬롯이 있으면 저장하는 방법
  • 이차조사법 : 선형조사법의 편향을 방지하기 위해 오버플로우 발생시 n^2의 +-씩으로 검사하여 저장하는 방법
  • 재해싱 : 여러 개의 해시함수를 사용하는 방법
  • 임의 조사법











LIST

'전공 > 자료구조' 카테고리의 다른 글

정렬 시간복잡도  (0) 2021.06.05
선택정렬(SelectionSort), 거품정렬(BubbleSort)  (0) 2020.09.17
Kruskal, Prim, Sollin 알고리즘  (0) 2020.09.13
DFS와 BFS  (0) 2020.09.13
트리 순회  (0) 2020.09.13

+ Recent posts