해싱(hashing) Ref. C로 쉽게 풀어쓴 자료구조, 생능출판사, 2005.

Slides:



Advertisements
Similar presentations
시스템 프로그래밍 박진희 컴퓨터 시스템 연구실. 2 Project 3 Key-value store 유일한 Key 에 하나의 Value 를 가지고 있는 방식 - Key 와 Value 를 쌍으로 관리 - Hash table, B-Tree, B+ Tree 등 분산형 데이터베이스에서.
Advertisements

주 40 시간 근무제 조기 시행계획 ( 급여 체계 변경안 포함 ) XXXXXXX.
SPARCS Wheel Seminar Mango X Sugoi
2015학년도 1학기 버디 프로그램 오리엔테이션 (목) 16:00.
다문화가정의 가정폭력의 문제점 연세대학교 행정대학원 정치행정리더십 2학기 학번 이름 홍 진옥.
사회복지현장의 이해 Generalist Social Worker 사회복지입문자기초과정 반포종합사회복지관 김한욱 관장
Chapter 4 – 프로그래밍 언어의 구문과 구현 기법
Step Motor Step Motor의 개요 Step Motor의 원리 3. Step Motor의 특징
열왕기하 1장을 읽고 묵상으로 예배를 준비합시다..
분광광도법에 의한 크롬과 망간 혼합물의 정량 4조 박진영 서지현 송영호 심영경.
1. 자료구조 개념 (1) 자료구조의 개요 1) 자료구조 ① 일련의 자료들을 조직하고 구조화하는 것 ② 자료의 표현과 그것과 관련된 연산 2) 자료구조에 따라 저장공간의 효율성과 프로그램의 실행시간이 달라짐 3) 어떠한 자료구조에서도 필요한 모든 연산들을 처리하는 것이.
성탄절 칸타타 시온/벧엘 찬양대.
Ⅲ. 5S • 3정.
2014 학부모 학교 참여 활성화를 위한 학부모 리더십 연수
소비자행동론 (수).
도전! 골든벨!!.. 민수기편 ^_^/ 멋진 주일학교 어린이들 파이팅!!.
6장 독점기업과 가격차별 - 단일 가격(uniform 또는 single price), 또는 선형가격(linear price)
8장 직접 파일.
쉽게 배우는 알고리즘 6장. 해시 테이블Hash Table.
Layer-Based Indexing Method for Top-k Queries
<엘리제를 위하여>를 감상하며 론도 형식 이해하기
언어, 문법, 기계, 파서, 고쳐쓰기, 현대수학의 한계, 그리고 미래의 전산학
객체지향 재사용 매트릭스 Object-Oriented Reusability Metrics
CHAP 11: 해싱 순천향대학교 하상호.
쉽게 배우는 알고리즘 6장. 해시 테이블Hash Table
다음 주 과제 기말고사 시험범위 : 7장 ~12장 필기시험 : 2016년 12월 12일(6교시) 필기장소 : E???
CHAP 11: 해싱 순천향대학교 하상호.
국가대표 생애주기교육 프로그램 참여방법 안내
25강 포트폴리오 애니메이션 만들기 한겨레문화센터 전임강사 임 규 근.
목차 INDEX 1. 회원가입 및 로그인 2. 업체정보 3. 제조검사 신청 4. 인보이스 5. 검사진행현황(현장검사 신청)
태양계 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
CHAP 11 : 해싱 C로 쉽게 풀어쓴 자료구조 생능출판사 2011.
29장 핵물리학과 방사능 © 2014 Pearson Education, Inc..
얕은 기초 1. 기초의 구비조건에 대한 설명 중 옳지 않은 것은? 기초깊이는 동결깊이 이하라야 한다.
기체 5.1 기체로 존재하는 물질 5.2 기체의 압력 5.3 기체 법칙 5.4 이상 기체 방정식 5.5 기체의 화학량론
게임인공지능 제 6 장 스크립트 2008년 5월 6일.
수업 첫 날 교육B 황유미 첫 수업 계획에 대해 알아보도록 하겠습니다..
CHAP 11 : 해싱.
연결링크 이미지를 마일리지샵 내에 기획전으로 제작하여 오픈/노출 사이즈 가로 1000/세로 상관x 배너사이즈 가로 400
해쉬함수 충돌해결법과 특징 강원대학교 컴퓨터과학과 이해원.
곰팡이와 버섯 사범대학 생물교육과 유정협.
해시와 해시 함수.
7장. 해시 테이블Hash Table.
CHAP 11 : 해싱.
CHAP 11 : 해싱.
해싱 이 현 직
CHAPTER 04 파일 설계(FiLE Design).
Chapter 11 해쉬(Hash) SANGJI University Kwangman KO
C언어 응용 제 15 주 검색.
CHAP 12:탐색 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
감사해요 감 사 해 요 - 주님의 사랑 - 감 사 해 요 - 주님의 은 혜
진리의 빛 말씀의 빛 이사야서 55: 1-13 요한복음18:
1-3.
다음 주 과제 기말고사 시험범위 : 6장 ~12장 필기시험 : 2015년 12월 18일(5교시) 필기장소 : E327
문서의 작성 정보과학부 이지연.
제1장 2인 공조 게임 (2-person cooperative Game)
5. 인류의 건강과 과학 기술 2. 건강관리 1) 면역.
온 세상이 찬양해 온땅위에가득한 그분의숨결- 그의 사랑과- - 그의축복이
데이터 베이스의 내부 구조.
아침안개 눈앞 가리듯 나의 약한믿음 의심쌓일때 부드럽게 다가온 주의 음성 아무것도 염려하지마라
1장. 대한민국약전 11 개요 ♦ 대한약전  약에 대한 법전
SQL Server™ 2000: 사용자 정의 함수 하 성희.
제 2장 영양과 사료 바이오동물보호과 황보람.
주요 내용 기본 용어 그래프의 표현 오일러(Euler) 그래프와 해밀턴(Hamilton) 그래프
유예 X-FILE *조사자* 1301권희원 1315이예지 1317장아정 1322홍자현.
Heavy-ion collision simulation with QMD
책을 읽읍시다  탈향 진지하게 설명해드림 1303 김소희 1309박지호 1315이지수.
2016년 제1차 운영위원회 평택시건강가정 ∙다문화가족지원센터
일제강점기 보험 等 피해 현황 및 해결 방향 보험소비자연맹 사무국장 조연행.
CHAP 11:해싱 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
Presentation transcript:

해싱(hashing) Ref. C로 쉽게 풀어쓴 자료구조, 생능출판사, 2005

해싱이란? 지금까지 배운 모든 탐색 방법들은 키값을 비교함으로써 탐색하고자 하는 항목에 접근 해싱은 키 값에 직접 산술적인 연산을 적용하여 항목이 저장되어 있는 테이블의 주소를 계산하여 항목에 접근 값의 연산에 의해 직접 접근이 가능한 구조를 해시 테이블(hash table)이라 부르며, 해시테이블을 이용한 탐색을 해싱(hashing) 해싱의 예: 심볼 테이블

사전구조 추상자료형 사전구조(dictionary): 맵(map)이나 테이블(table)로 불리우기도 한다. 사전 구조는 다음과 같이 탐색키와 탐색키와 관련된 값의 2가지 종류의 필드를 가진다. 영어 단어나 사람의 이름같은 탐색키(search key) 단어의 정의나 주소 또는 전화 번호같은 탐색키와 관련된 값(value) ∙객체: 일련의 (key,value) 쌍의 집합 ∙연산: ▪ add(key, value) ::= (key,value)를 사전에 추가한다. ▪ delete(key) ::= key에 해당되는 (key,value)를 찾아서 삭제한다. 관련된 value를 반환한다. 만약 탐색이 실패하면 NULL를 반환한다. ▪ search(key) ::= key에 해당되는 value를 찾아서 반환한다.만약 탐색이 실패하면 NULL를 반환한다.

해싱의 구조 해시 함수(hash function)란 탐색키를 입력으로 받아 해시 주소(hash address)를 생성하고 이 해시 주소가 배열로 구현된 해시 테이블(hash table)의 인덱스가 된다. 예를 들어 영어사전에서는 단어가 탐색키가 되고 이 단어를 해싱 함수를 이용하여 적절한 정수 i로 변환한 다음, 배열 요소 ht[i]에 단어의 정의를 저장하는 것이다. 

해시 테이블의 구조 해시테이블 ht는 M개의 버켓(bucket)으로 이루어지는 테이블로서 ht[0], ht[1], ...,ht[M-1]의 원소를 가진다. 하나의 버켓은 s개의 슬롯(slot)을 가질 수 있다. 충돌(collision) : 서로 다른 두 개의 탐색키 k1과 k2에 대하여 h(k1) = h(k2)인 경우 이러한 충돌이 버켓에 할당된 슬롯 수보다 많이 발생하게 되면 버켓에 더 이상 항목을 저장할 수 없게 되는 오버플로우(overflow)가 발생 오버플로우를 해결하기 위한 방법이 반드시 필요

이상적인 해싱 (예) 학생들에 대한 정보를 해싱으로 저장, 탐색 학번을 탐색키로 생각하자. 학번은 5자리로 되어 있고 앞의 2개의 숫자가 학과를 나타내고 뒤의 3자리 숫자가 각 학과의 학생들의 번호 같은 학과 학생들만 저장된다고 가정하면 뒤의 3자리만 사용할 수 있다. 이 경우에는 어떤 학생의 학번이 01023이라면 이 학생의 인적사항은 해시테이블의 이름을 ht이라고 하면 ht[23]에 저장 add(key, value) index ← hash_function(key) ht[index] = value search(key) index ←hash_function(key) return ht[index]

실제의 해싱 실제로는 해시 테이블의 크기가 제한되어 있으므로 하나의 탐색키당 해시테이블에서 하나의 공간을 할당할 수가 없다 해싱함수가 필요 h(k)= k mod M 충돌과 오버플로우 발생

실제의 해싱(cont.) 두 번째 예제: 탐색키는 알파벳으로 되어 있다고 가정 해시함수는 각 키의 첫 번째 문자를 숫자로 바꾼다. h("array")=1 h("binary")=2 … (입력데이터) (array, binary, bubble, file, digit, direct, zero, bucket)

해시함수 좋은 해시 함수의 조건 충돌이 적어야 한다. 해시함수 값이 해시테이블의 주소 영역 내에서 고르게 분포되어야 한다. 계산이 빨라야 한다.

해시함수 제산 함수 폴딩함수 h(k)=k mod M 해시 테이블의 크기 M는 소수(prime number) hash_index=(short)(key ^ (key>>16)) 이동 폴딩(shift folding)과 경계 폴딩(boundary folding)

해시함수(cont.) 중간제곱함수 비트추출함수 숫자 분석 방법 중간 제곱 함수는 탐색키를 제곱한 다음, 중간의 몇 비트를 취해서 해시 주소를 생성한다. 비트추출함수 탐색키를 이진수로 간주하여 임의의 위치의 k개의 비트를 해시 주소로 사용하는 것이다. 숫자 분석 방법 키의 각각의 위치에 있는 숫자 중에서 편중되지 않는 수들을 해시 테이블의 크기에 적합한 만큼 조합하여 해시 주소로 사용

충돌해결책 충돌해결책 선형조사법: 충돌이 일어난 항목을 해시 테이블의 다른 위치에 저장한다. 체이닝: 해시테이블의 하나의 위치가 여러 개의 항목을 저장할 수 있도록 해시테이블의 구조를 변경한다.

선형조사법 충돌이 ht[k]에서 충돌이 발생했다면 ht[k+1]이 비어 있는지를 조사 이런 식으로 비어있는 공간이 나올 때까지 계속하는 조사하는 방법이다. 만약 테이블의 끝에 도달하게 되면 다시 테이블의 처음으로 간다. 만약 조사를 시작했던 곳으로 다시 되돌아오게 되면 테이블이 가득찬 것이 된다. 조사되는 위치 h(k), h(k)+1, h(k)+2,… (예) h(k)=k mod 7   1단계 2단계 3단계 4단계 5단계 [0] 13 [1] 8 [2] 1 [3] 9 [4] [5] [6] 6 1단계 (8) : ∙h(8) = 8 mod 7 = 1(저장) 2단계 (1) : ∙h(1) = 1 mod 7 = 1(충돌발생)            ∙(h(1)+1) mod 7 = 2(저장) 3단계 (9) : ∙h(9) = 9 mod 7 = 2(충돌발생)            ∙(h(9)+1) mod 7 = 3(저장) 4단계 (6) : ∙h(6) = 6 mod 7 = 6(저장) 5단계 (13) :∙h(13) = 13 mod 7 = 6(충돌 발생)

이차조사법 이차 조사법(quadratic probing)은 선형 조사법과 유사하지만, 다음 조사할 위치를 다음 식에 의하여 결정한다. (h(k)+i*i) mod M 따라서 조사되는 위치는 다음과 같이 된다. h(k), h(k)+1, h(k)+4,… 선형 조사법에서의 문제점인 집중과 결합을 크게 완화

이중해싱법 이중 해싱법(double hashing) 또는 재해싱(rehashing)은 오버플로우가 발생함에 따라 항목을 저장할 다음 위치를 결정할 때, 원래 해시 함수와 다른 별개의 해시 함수를 이용하는 방법이다. step=C-(k mod C) h(k), h(k)+step, h(k)+2*step, … (예) 크기가 7인 해시테이블에서 첫 번째 해시 함수가 k mod M이고 오버플로우 발생시의 해시 함수step=5-(5 mod 5) 입력 파일 (8, 1, 9, 6, 13 )   1단계 2단계 3단계 4단계 5단계 [0] [1] 8 [2] 9 [3] 13 [4] [5] 1 [6] 6 1단계 (8) : ∙h(8) = 8 mod 7 = 1(저장) 2단계 (1) : ∙h(1) = 1 mod 7 = 1(충돌발생) ∙(h(1)+h‘(1)) mod 7 = (1+5-(1 mod 5)) mod 7 = 5(저장) 3단계 (9) : ∙h(9) = 9 mod 7 = 2(저장) 4단계 (6) : ∙h(6) = 6 mod 7 = 6(저장) 5단계 (13) :∙h(13) = 13 mod 7 = 6(충돌 발생) ∙(h(13)+h‘(13)) mod 7 = (6+5-(13 mod 5)) mod 7= 1(충돌발생) ∙(h(13)+2*h‘(13)) mod 7 = (6+2*2) mod 7= 3(저장)

체이닝 체이닝(chaining)은 오버플로우 문제를 연결 리스트로 해결한다. 각 버켓에 고정된 슬롯을 할당하는 것이 아니라 각 버켓에, 삽입과 삭제가 용이한 연결 리스트를 할당한다. 버켓 내에서는 원하는 항목을 찾을 때는 연결 리스트를 순차 탐색한다. (예) 크기가 7인 해시테이블에 h(k)=k mod 7의 해시 함수를 이용하여 8, 1, 9, 6, 13 을 삽입할 때에의 체이닝에 의한 충돌 처리 1단계 (8) : ∙h(8) = 8 mod 7 = 1(저장) 2단계 (1) : ∙h(1) = 1 mod 7 = 1(충돌발생->새로운 노드 생성 저장) 3단계 (9) : ∙h(9) = 9 mod 7 = 2(저장) 4단계 (6) : ∙h(6) = 6 mod 7 = 6(저장) 5단계 (13) :∙h(13) = 13 mod 7 = 6(충돌 발생->새로운 노드 생성 저장)

해싱의 성능분석 적재 밀도(loading density) 또는 적재 비율(loading factor) 은 저장되는 항목의 개수 n과 해시 테이블의 크기 M의 비율이다. 선형 조사법 체이닝

그림 11.20 각 알고리즘에 따른 평균 버켓 접근수그림 11.20 각 알고리즘에 따른 평균 버켓 접근수 해싱의 성능분석(cont.)          .50 .70 .90 .95 해싱 함수 체인 선형조사 중간 제곱 1.26  1.73 1.40  9.75 1.45 37.14 1.47  37.53 제산 1.19  4.52 1.31  7.20 1.38 22.42 1.41  25.79 이동 폴딩 1.33 21.75 1.48 65.10 77.01 1.51 118.57 경제 폴딩 1.39 22.97 1.57 48.70 1.55 69.63  97.56 숫자 분석 1.35  4.55 1.49 30.62 1.52 89.20 125.59 이론적 1.25  1.50 1.37  2.50  5.50  10.50 (V.Lum, P.Yuen, M.Dodd, CACM, 1971, Vol.14, No.4 참조)(V.Lum, P.Yuen, M.Dodd, CACM, 1971, Vol.14, No.4 참조) 그림 11.20 각 알고리즘에 따른 평균 버켓 접근수그림 11.20 각 알고리즘에 따른 평균 버켓 접근수

해싱과 다른 탐색 방법의 비교