[CLRS] [11-2,11-3] Hash Tables / Hash Function

2024. 11. 20. 16:18· CS Study/CLRS (자료구조 | 알고리즘)
목차
  1. 1. Hash Table?
  2. 2. Hash Function(해시 함수)
  3. 2.1. Division Method
  4. 2.2. Multiplication method
  5. 2.3. Universal Hashing(Random Hashing)
  6. 3. 해시 충돌(Hash Collision)
  7. 3.1. Chaining
  8. 3.2. Open Addressing(개방 주소법)

1. Hash Table?

- 해시테이블은 해싱을 통해서 데이터를 저장하는 자료구조이다.

- 즉, 해시 함수(Hash Function)을 사용해서 변환한 값을 index로 사용해 key와 data를 저장하는 자료구조이다.

- 이러한 Hash table은 삽입, 삭제, 탐색이 대부분 O(1)으로 빠르다. 

- 대부분 이라는 건 아닌 경우도 있다는 걸까? / 이에대한 의문은 찬찬히 알아가보자.

 

2. Hash Function(해시 함수)

- Hash Function은 임의의 길이를 갖는 데이터를 고정된 길이의 데이터로 mapping해주는 함수이다.

- mapping되기전 입력되는 것을 key라고 한다면,

- 이 key를 hash function을 통해 반환되는 것을 Hash value(해시 값)이라고 한다.

- 대표적인 Hash Function에 대해서 간단하게 알아보자.

 

2.1. Division Method

 

- key를 해시 테이블의 크기(m) 으로 나눈 나머지를 hash value(해시값)으로 사용하는 방식이다.

 

2.2. Multiplication method

- kA mod 1 (0<A<1) 은 소수부분을 나타낸다.

- 즉, N* (kA mod 1)은 0~N사이의 값으로 만들어주고 이를 내림해줌으로써 정수로 return하게 해준다.

 

2.3. Universal Hashing(Random Hashing)

- key를 랜덤하데 Hashing value로 변환해주는 함수를 의미한다.

 

3. 해시 충돌(Hash Collision)

- 우리는 앞서 Hash Table은 삽입,제거,탐색을 대부분 O(1)만에 해결한다는 것을 알게되었다.

- 대부분인 이유는 해시 충돌(Hash Collision) 챕터에서 알 수 있다.'

 

- 해시 충돌은 다른 키가 같은 해시값을 가질 때 이를 해시 충돌이라고 한다.

- 이를 해결하는 방법에 대해서 알아보자.

3.1. Chaining

- 다음 처럼 중복되는 Hash Value에 대해 연결리스트로 각 key를 연결해주면 해결이 가능하다.

- 만일 정말 우연히 모든 key들이 하나의 Hash-Value를 가지게 된다면 탐색이나 제거에서 O(N)만큼 걸리게 된다

 

3.2. Open Addressing(개방 주소법)

- Chaining 기법에선 저장해야하는 인덱스에 값이 있으면 그 칸에 연결리스트를 통해 중복으로 저장했다면,

- Open Addressing에서는 그 자리를 피하는 방법이라고 생각하면 된다.

- 빈자리를 찾는 방법은 여러가지가 있는데 2가지만 알아보자.

3.2.1. Linear Probing(선형탐사)

- 해시충돌이 일어나면 바로 다음 인덱스로 이동하여 해시값을 저장하는 방식이다.

 

3.2.2. Double Hashing

- 충돌이 생기면 또 다시 해시함수로 다시 해싱하여 새로운 주소를 할당하는 방식이다. 

'CS Study > CLRS (자료구조 | 알고리즘)' 카테고리의 다른 글

[CLRS] [13-1] AVL Tree  (0) 2024.11.26
[CLRS] [12] Binary Search Tree(BST)  (0) 2024.11.22
[CLRS] [11-1] Direct-address tables  (0) 2024.11.20
[CLRS] [10-3] Queue(큐)  (0) 2024.11.04
[CLRS] [10-2] Stack(스택)  (1) 2024.11.04
  1. 1. Hash Table?
  2. 2. Hash Function(해시 함수)
  3. 2.1. Division Method
  4. 2.2. Multiplication method
  5. 2.3. Universal Hashing(Random Hashing)
  6. 3. 해시 충돌(Hash Collision)
  7. 3.1. Chaining
  8. 3.2. Open Addressing(개방 주소법)
'CS Study/CLRS (자료구조 | 알고리즘)' 카테고리의 다른 글
  • [CLRS] [13-1] AVL Tree
  • [CLRS] [12] Binary Search Tree(BST)
  • [CLRS] [11-1] Direct-address tables
  • [CLRS] [10-3] Queue(큐)
23학번이수현
23학번이수현
23학번이수현
밑바닥부터 시작하는 AI보안전문가
23학번이수현
전체
오늘
어제
  • 분류 전체보기 (242)
    • Statistic Study (47)
      • Mathematical Statistics(수리통.. (47)
    • Mathematics Study (15)
      • Linear Algebra (선형대수학) (15)
    • CS Study (73)
      • CLRS (자료구조 | 알고리즘) (49)
      • Database(DB) (11)
      • C++ (11)
      • 컴퓨터 구조 (2)
    • DS Study (56)
      • CS 229(Machine Learning) (19)
      • CS 224n(NLP) (5)
      • Web Scraping (7)
      • R4DS(R언어) (20)
      • 밑바닥부터 시작하는 딥러닝 1 (5)
    • Hacking Study (0)
      • Web Hacking (0)
    • 코딩테스트 (5)
      • 백준-Python (5)
    • Paper Review(논문 리뷰) (43)
      • Deep Learning (16)
      • TCGA 관련 논문 (4)
      • Computer Vision (18)
      • NLP (5)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Data Structure
  • C++
  • 백준
  • 수리통계학
  • 선형대수학
  • LSTM
  • R언어
  • deep learning
  • Algorithms
  • 알고리즘
  • 정렬
  • 자료구조
  • Linear Algebra
  • Introduction to Algorithms
  • Machine Learning
  • 파이썬
  • cs229
  • introduction to algoritmhs
  • AI
  • db
  • NLP
  • R4DS
  • graph
  • web scraping
  • 논문 리뷰
  • clrs
  • cs 224n
  • 데이터분석
  • 딥러닝
  • 시간복잡도

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
23학번이수현
[CLRS] [11-2,11-3] Hash Tables / Hash Function
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.