쉽게 배우는 알고리즘 6장. 해시 테이블Hash Table http://academy.hanb.co.kr.

Slides:



Advertisements
Similar presentations
10-7 부동소수점 (Floating-Point) 계산  컴퓨터에서 숫자를 표기하는 방법  가수 (Fraction) : 부호화된 고정소수점 숫자 지수 (Exponent) : 소수점의 위치를 표시 ( 예 )10 진수 를 표기하면 Fraction Exponent.
Advertisements

Ch.08-4 Hashing ( 해싱 ) [CPA340] Algorithms and Practice Youn-Hee Han
Hashing 함수의 종류 및 특징 컴퓨터 과학과 심형광. I N D E X 1. Hashing 함수 2. Hashing 함수의 종류 3. 참조 자료.
이진 나무 구조 강윤섭 2008년 5월 23일.
4장 배열과 함수 한빛미디어(주).
컴퓨터와 인터넷.
연결리스트(linked list).
쉽게 배우는 알고리즘 6장. 해시 테이블Hash Table.
보고서 #7 (기한: 6/2) 2개의 스택, stk1, stk2를 이용하여 큐를 구현하라.
Load Balancing L4와 L7은 어떻게 동작할까?.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 12. 포인터의 이해.
9.1 해싱의 정의 및 필요성 9.2 정적 해싱(Static Hashing) 9.3 동적 해싱
해싱(hashing) Ref. C로 쉽게 풀어쓴 자료구조, 생능출판사, 2005.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
8장 함수 함수의 필요성 라이브러리 함수와 사용자 정의 함수 함수의 정의, 원형, 호출 배열을 함수 인자로 전달 재귀호출.
CHAP 11: 해싱 순천향대학교 하상호.
Simulating Boolean Circuits on a DNA Computer
23장. 구조체와 사용자 정의 자료형 2.
17강. 데이터 베이스 - I 데이터 베이스의 개요 Oracle 설치 기본적인 SQL문 익히기
2.3 제한 조건을 가진 자료구조 1. 스택(STACK) 1) 스택의 개념 - 삽입과 제거 작업이 리스트의 한쪽 끝에서만 수행
일차방정식의 풀이 일차방정식의 풀이 순서 ① 괄호가 있으면 괄호를 먼저 푼다.
CHAP 11: 해싱 순천향대학교 하상호.
자바 5.0 프로그래밍.
프로그래밍 개요
군집 분석.
자료구조: CHAP 7 트리 –review 순천향대학교 컴퓨터공학과 하 상 호.
메모리 관리 & 동적 할당.
CHAP 11 : 해싱 C로 쉽게 풀어쓴 자료구조 생능출판사 2011.
2장. 데이터베이스 관리 시스템 데이터베이스 관리 시스템의 등장 배경 데이터베이스 관리 시스템의 정의
Quiz #7 다음 수들을 합병 정렬과 퀵 정렬 알고리즘을 이용하여 오름 차순으로 정렬하였을 때, 데이터 이동 회수를 각각 구하라. 여러분은 정렬 과정을 단계별로 보이면서 이동 회수를 추적해야 한다. 단, 퀵 정렬시에 피봇으로 배열의 왼쪽 첫 번째 원소를 선택한다. 5.
쉽게 배우는 알고리즘 7장. 상호 배타적 집합의 처리.
8장. 상호 배타적 집합의 처리.
쉽게 배우는 알고리즘 1장. 알고리즘 설계와 분석의 기초.
CHAP 11 : 해싱.
충돌 해결의 종류 및 특징 최현경.
3D 프린팅 프로그래밍 01 – 기본 명령어 강사: 김영준 목원대학교 겸임교수.
2장. 변수와 타입.
해쉬함수 충돌해결법과 특징 강원대학교 컴퓨터과학과 이해원.
정다면체, 다면체와 정다각형, 다각형의 관계 한림초등 학교 영제 6학년 5반 송명훈.
해시와 해시 함수.
7장. 해시 테이블Hash Table.
CHAP 11 : 해싱.
CHAP 11 : 해싱.
해싱 이 현 직
보고서 #7 (기한: 6/2) 2개의 스택, stk1, stk2를 이용하여 큐를 구현하라.
Chapter 11 해쉬(Hash) SANGJI University Kwangman KO
C언어 응용 제 15 주 검색.
객체기반 SW설계 팀활동지 4.
균형이진탐색트리 이진 탐색(binary search)과 이진 탐색 트리(binary search tree)와의 차이점
데이터 동적 할당 Collection class.
자료구조론 12장 검색(search).
5장. 선택 알고리즘.
제 8 장 계산복잡도 개론 검색 문제 알고리즘 강의 슬라이드 8 검색 문제
7주차: Functions and Arrays
쉽게 배우는 알고리즘 2장. 점화식과 점근적 복잡도 분석
논리회로 설계 및 실험 4주차.
학습 주제 p 질량과 부피 측정 방법 알기.
Numerical Analysis Programming using NRs
제 3장. Regular Languages 와 Regular Grammars
트리 (Logical) Data Structures Linear list Tree Graph Linear structures
제 4 장 Record.
제 29 강 스트링(string) 다루기 s a i s . s T i h t g r i n.
29장. 템플릿과 STL 01_ 템플릿 02_ STL.
어서와 C언어는 처음이지 제21장.
수학10-나 1학년 2학기 Ⅱ.부등식의 영역 3. 부등식의 영역에서 최대, 최소(5/5) 부등식 영역 수업계획 수업활동.
 6장. SQL 쿼리.
개정판 누구나 즐기는 C언어 콘서트 제13장 동적 메모리 출처: pixabay.
아날로그 신호를 디지털 신호로 변환하는 A/D 변환기 A/D 변환 시 고려하여 할 샘플링 주파수 D/A 변환기
Ch12. Deep Learning (Backpropagation)
C++ Espresso 제15장 STL 알고리즘.
Presentation transcript:

쉽게 배우는 알고리즘 6장. 해시 테이블Hash Table http://academy.hanb.co.kr

6장.해시 테이블Hash Table 사실을 많이 아는 것 보다는 이론적 틀이 중요하고, 기억력보다는 생각하는 법이 더 중요하다. - 제임스 왓슨

학습목표 해시 테이블의 발생 동기를 이해한다. 해시 테이블의 원리를 이해한다. 해시 함수 설계 원리를 이해한다. 충돌 해결 방법들과 이들의 장단점을 이해한다. 해시 테이블의 검색 성능을 분석할 수 있도록 한다.

저장/검색의 복잡도 Array Binary search tree O(n) Binary search tree 최악의 경우 Θ(n) 평균 Θ(log n) Balanced binary search tree(e.g. red-black tree) 최악의 경우 Θ(log n) B-tree Balanced binary search tree보다 상수 인자가 작다 Hash table 평균 Θ(1)

Hash Table 원소가 저장될 자리가 원소의 값에 의해 결정되는 자료구조 평균 상수 시간에 삽입, 삭제, 검색 매우 빠른 응답을 요하는 응용에 유용 예: 119 긴급구조 호출과 호출번호 관련 정보 검색 주민등록 시스템 Hash table은 최소 원소를 찾는 것과 같은 작업은 지원하지 않는다

주소 계산 검색키 주소계산 배열 모양의 테이블

크기 13인 Hash Table에 5 개의 원소가 저장된 예 입력: 25, 13, 16, 15, 7 13 1 2 15 3 16 4 5 6 7 8 9 10 11 12 25 Hash function h(x) = x mod 13

Hash Function 입력 원소가 hash table에 고루 저장되어야 한다 계산이 간단해야 한다 여러가지 방법이 있으나 가장 대표적인 것은 division method와 multiplication method이다

Multiplication Method Division Method h(x) = x mod m m: table 사이즈. 대개 prime number임. Multiplication Method h(x) = (xA mod 1) * m A: 0 < A < 1 인 상수 m은 굳이 소수일 필요 없다. 따라서 보통 2p 으로 잡는다(p 는 정수)

Multiplication method의 작동 원리 x xA mod 1 1 1 m (xA mod 1) Multiplication method의 작동 원리 m-1

Collision Hash table의 한 주소를 놓고 두 개 이상의 원소가 자리를 다투는 것 Hashing을 해서 삽입하려 하니 이미 다른 원소가 자리를 차지하고 있는 상황 Collision resolution 방법은 크게 두 가지가 있다 Chaining Open Addressing

Collision의 예 h(29) = 29 mod 13 = 3 29를 삽입하려 하자 이미 다른 원소가 차지하고 있다! 입력: 25, 13, 16, 15, 7 13 1 2 15 3 16 4 5 6 7 8 9 10 11 12 25 h(29) = 29 mod 13 = 3 29를 삽입하려 하자 이미 다른 원소가 차지하고 있다! Hash function h(x) = x mod 13

Collision Resolution Chaining Open addressing 같은 주소로 hashing되는 원소를 모두 하나의 linked list로 관리한다 추가적인 linked list 필요 Open addressing Collision이 일어나더라도 어떻게든 주어진 테이블 공간에서 해결한다 추가적인 공간이 필요하지 않다

Chaining을 이용한 Collision Resolution의 예 39 13 1 40 2 3 94 3 42 55 4 43 5 44 70 6 7 8 86 47 9 74 10 11 76 12

Open Addressing 빈자리가 생길 때까지 해시값을 계속 만들어낸다 중요한 세가지 방법 h0(x), h1(x), h2(x), h3(x), … 중요한 세가지 방법 Linear probing Quadratic probing Double hashing

Linear Probing hi(x) = (h(x) + i) mod m 예: 입력 순서 25, 13, 16, 15, 7, 28, 31, 20, 1, 38 13 1 2 15 3 16 4 28 5 6 7 8 9 10 11 12 25 13 1 2 15 3 16 4 28 5 31 6 7 8 20 9 10 11 12 25 13 1 2 15 3 16 4 28 5 31 6 38 7 8 20 9 10 11 12 25 hi(x) = (h(x) + i) mod 13

Linear Probing은 Primary Clustering에 취약하다 1 2 15 3 16 4 28 5 31 6 44 7 8 9 10 11 37 12 Primary clustering의 예

Quadratic Probing hi(x) = (h(x) + c1i2 + c2i) mod m 예: 입력 순서 15, 18, 43, 37, 45, 30 1 2 15 3 4 43 5 18 6 45 7 8 30 9 10 11 37 12 hi(x) = (h(x) + i2 ) mod 13

Quadratic Probing은 Secondary Clustering에 취약하다 초기 해시 함수값을 갖는 현상 1 2 15 3 28 4 5 54 6 41 7 8 21 9 10 11 67 12 Secondary clustering의 예

Double Hashing hi(x) = (h(x) + i f (x)) mod m h(x) = x mod 13 예: 입력 순서 15, 19, 28, 41, 67 1 2 15 3 4 67 5 6 19 7 8 9 28 10 11 41 12 h0(15) = h0(28) = h0(41) = h0(67) = 2 h1(67) = 3 h1(28) = 8 h(x) = x mod 13 f(x) = (x mod 11) + 1 h1(41) = 10 hi(x) = (h(x)+i f(x)) mod 13

삭제시 조심할 것 (a) 원소 1 삭제 (b) 38 검색, 문제발생 (c) 표식을 해두면 문제없다 13 1 2 15 3 16 13 1 2 15 3 16 4 28 5 31 6 38 7 8 20 9 10 11 12 25 13 1 2 15 3 16 4 28 5 31 6 38 7 8 20 9 10 11 12 25 13 1 DELETED 2 15 3 16 4 28 5 31 6 38 7 8 20 9 10 11 12 25 (a) 원소 1 삭제 (b) 38 검색, 문제발생 (c) 표식을 해두면 문제없다

Hash Table에서의 검색 시간 Load factor α Hash table에 n 개의 원소가 저장되어 있다면 α = n/m 이다 Hash table에서의 검색 효율은 load factor와 밀접한 관련이 있다

Chaning에서의 검색 시간 정리 1 Chaining을 이용하는 hashing에서 load factor가 α일 때, 실패하는 검색에서 probe 횟수의 기대치는 α이다 정리 2 Chaining을 이용하는 hashing에서 load factor가 α일 때, 성공하는 검색에서 probe 횟수의 기대치는 1 + α/2 + α/2n 이다

Open Addressing에서의 검색 시간 Assumption (uniform hashing) Probe 순서 h0(x), h1(x), …, hm-1(x)가 0부터 m-1 사이의 수로 이루어진 permutation을 이루고, 모든 permutation은 같은 확률로 일어난다 정리 3 Load factor α=n/m 인 open addressing hashing에서 실패하는 검색에서 probe 횟수의 기대치는 최대 1/(1- α )이다 정리 4 Load factor α=n/m 인 open addressing hashing에서 성공하는 검색에서 probe 횟수의 기대치는 최대 (1/ α) log(1/(1- α)) 이다

Load Factor가 우려스럽게 높아지면 Load factor가 높아지면 일반적으로 hash table의 효율이 떨어진다 일반적으로, threshold을 미리 설정해 놓고 load factor가 이에 이르면 Hash table의 크기를 두 배로 늘인 다음 hash table에 저장되어 있는 모든 원소를 다시 hashing하여 저장한다

생각해 볼 것 Load factor가 아주 낮으면 각 조사 방법들이 차이가 많이 나는가? 성공적인 검색과 삽입의 관계는? [정리 4]의 증명과도 관계 있음 ~10/17/2007

Thank you