• 검색 결과가 없습니다.

해시 테이블 (Hash Table)

N/A
N/A
Protected

Academic year: 2022

Share "해시 테이블 (Hash Table)"

Copied!
21
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

해시 테이블 (Hash Table)

알고리즘

교재: 쉽게 배우는 알고리즘: 관계 중심의 사고법 저자: 문병로

출판사: 한빛미디어, 2013년 발행

(2)

수업 목표

 해시 테이블의 발생 동기를 이해한다.

 해시 테이블의 원리를 이해한다.

 해시 함수 설계 원리를 이해한다.

 충돌 해결 방법들과 이들의 장단점을 이해한다.

(3)

저장/검색의 복잡도

 Array

O(n)

 Binary search tree

최악의 경우 Θ(n)

평균 Θ(logn)

 Balanced binary search tree (RB Tree)

최악의 경우 Θ(logn)

 B‐tree

최악의 경우 Θ(logn)

 Balanced binary search tree보다 상수 인자가 작다

 Hash table

평균 Θ(1)

(4)

해시 테이블 (Hash Table)

 원소가 저장될 자리가 원소의 값에 의해 결정되는 자 료구조

 평균 상수 시간에 삽입, 삭제, 검색

 매우 빠른 응답을 요하는 응용에 유용

 예:

119 긴급구조 호출과 호출번호 관련 정보 검색

주민등록 시스템

 Hash table은 최소 원소를 찾는 것과 같은 작업은 지원

하지 않는다.

(5)

주소 계산

검색키 주소계산

배열 모양의 테이블

(6)

크기 13인 Hash Table에 5 개의 원소가 저장된 예

입력: 25, 13, 16, 15, 7

0 13

1

2 15

3 16

4 5 6

7 7

8 9 10 11

12 25

Hash function h(x) = x mod 13

(7)

해시 함수 (Hash Function)

 입력 원소가 hash table에 고루 저장되어야 한다.

 계산이 간단해야 한다.

 여러가지 방법이 있으나 가장 대표적인 것은

division method와 multiplication method이다.

(8)

 Division Method

h(x) = x mod m

m: table 사이즈. 대개 prime number임.

 Multiplication Method

h(x) = (xA mod 1) * m

A: 0 < A < 1 인 상수

m은 굳이 소수일 필요 없다. 따라서 보통 2 p 으로 잡는다. 

(p 는 정수)

(9)

Multiplication method의 작동 원리

xA mod 1 0

1 0

1 x

m (xA mod 1)

m=65536

A=0.6180339887 x=1025390

xA=1025390 x 0.6180339887

=633725.871673093

65536 x 0.871673093 =57125.967 … h(x) = 57125

2

/

)

1

5

( 

(10)

충돌 (Collision)

 Hash table의 한 주소를 놓고 두 개 이상의 원소가 자리를 다투는 것

 Hashing을 해서 삽입하려 하니 이미 다른 원소가 자리를 차지하고 있는 상황

 Collision resolution 방법은 크게 두 가지가 있다.

 Chaining

 Open Addressing

(11)

Collision의 예

입력: 25, 13, 16, 15, 7

0 13

1

2 15

3 16

4 5 6

7 7

8 9 10 11

12 25

Hash function h(x) = x mod 13 29를 삽입하려 하자 이미 다른 원소가 차지하고 있다!

h(29) = 29 mod 13 = 3

(12)

충돌 해결 (Collision Resolution)

 Chaining

 같은 주소로 hashing되는 원소를 모두 하나의 linked list 로 관리한다.

 추가적인 linked list 필요

 Open addressing

 Collision이 일어나더라도 어떻게든 주어진 테이블 공간 에서 해결한다.

 추가적인 공간이 필요하지 않다.

(13)

Chaining을 이용한 Collision Resolution의 예

1 2 3 4 5 6 7 8 9

0 39 13

40

94 3 42

43

44 70

86 47

55

74

76

10 11

원소의 저장 순서

(14)

개방 주소 방법 (Open Addressing)

 빈자리가 생길 때까지 해시값을 계속 만들어낸다.

h

0

(x), h

1

(x), h

2

(x), h

3

(x), …

 중요한 세가지 방법

 Linear probing

 Quadratic probing 

 Double hashing 

(15)

선형 조사 (Linear Probing)

: 입력 순서 25, 13, 16, 15, 7, 28, 31, 20, 1, 38

0 13

1

2 15

3 16

4 28

5 6

7 7

8 9 10 11

0 13

1 1

2 15

3 16

4 28

5 31

6 38

7 7

8 20

9 10 11

0 13

1

2 15

3 16

4 28

5 31

6

7 7

8 20

9 10 11

h

i

(x) = (h(x) + i) mod m

h(x) = (h(x) + i) mod 13

(16)

0 1

2 15

3 16

4 28

5 31

6 44

7 8 9 10

11 37

Primary clustering의 예

Linear Probing은 Primary Clustering에 취약하다

Primary clustering: 특정 영역에 원소가 몰리는 현상

(17)

이차원 조사 (Quadratic  Probing)

0 1

2 15

3

4 43

5 18

6 45

7

8 30

9 10

11 37

h

i

(x) = (h(x) + c

1

i

2

+ c

2

i) mod m

: 입력 순서 15, 18, 43, 37, 45, 30

hi(x) = (h(x) + i2 ) mod 13

30%13 = 4

[(30%13)+12]%13 = 5 [(30%13)+22]%13 = 8

(18)

Secondary clustering의 예

Quadratic Probing은 Secondary Clustering에 취약하다

0 1

2 15

3 28

4

5 54

6 41

7

8 21

9 10

11 67

12

Secondary clustering: 여러 개의 원소가 동일한 초기 해시 함수값을 갖는 현상

28%13 = 2

[(28%13)+12]%13 = 3

41%13 = 2

[(41%13)+12]%13 = 3 [(41%13)+22]%13 = 6

67%13 = 2

[(67%13)+12]%13 = 3

(19)

더블 해싱 (Double Hashing)

0 1

2 15

3

4 67

5

6 19

7 8

9 28

10

11 41

h(x) = x mod 13

f(x) = (x mod 11) + 1

hi(x) = (h(x)+if(x)) mod 13

h0(15) = h0(28) = h0(41) = h0(67) = 2

h1(67) = 4

h1(28) = 9

h (41) = 11

h

i

(x) = (h(x) + i f (x)) mod m

: 입력 순서 15, 19, 28, 41, 67

h0(19) = 6

(20)

삭제시 유의 (예: 선형 조사의 경우)

0 13

1 1

2 15

3 16

4 28

5 31

6 38

7 7

8 20

9 10 11

12 25

0 13

1

2 15

3 16

4 28

5 31

6 38

7 7

8 20

9 10 11

12 25

0 13

1 DELETED

2 15

3 16

4 28

5 31

6 38

7 7

8 20

9 10 11

12 25

(21)

Question & 

Answer

참조

관련 문서

따라서 공간이 사회적으로 형성될 수 있도록, 도시 공간이 정부에 의한 단일 한 공간적 체계로 완성시키지 않고 상호 작용하면서 변화될 수 있는 다각적인 공간을 형성하는

나는 어떻게든 할아버지를 도와드리고 싶었습니다.. 아버지께서 고가의 선박을 결정하시는데 조금이나마 힘이 되어드리고 싶었습니다.. 2) 위의

그는 현재 유가 인문주의 연구의 취약점이 있음을 지적하면서 그 이유를 “유가 인문주의에 대한 탐구는 대체로 서구 (특히 르네상스로부터의 근대)인문주의와 유사한

Hash(record of all sent and 21 received

™ The first nested query, which is correlated, retrieves the project numbers on which the employee works, which is different for each employee tuple because of the

„ Sender는 메시지의 해시를 구하고 메시지와 해시 모두를 암 호화하여 상대방 Receiver에게 보낸다.. 메시지의 해시를 구하 는

보행신호 자동연장 시스템은 보행자를 검지하는 기술을 적용하여 주어진 보행 신호시간 동안 횡단을 완료하지 못하는 보행자에 대하여 허용된 시간 범위 내 에서 교통신호제어기와의

If there are no results in each case, then your query result is identical to the answer query result, and therefore your query is correct (or at least, it is good enough that