CHAP 11 : 해싱.

Slides:



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

주 40 시간 근무제 조기 시행계획 ( 급여 체계 변경안 포함 ) XXXXXXX.
第1篇 자치입법 개론.
교직원 성희롱·성폭력·성매매 예방교육 벌교중앙초등학교 박명희
학교보건 운영의 실제 한천초등학교 이 채 금.
예배에 대하여.
말씀 듣는 시간입니다..
하나님은 영이시니 예배하는 자가 신령과 진정으로 예배할지니라.
영성기도회 렉시오 디비나와 묵상기도 2.
Home Network 유동관.
ESOCOM – IPIX 고정IP서비스 제안서 Proposer ㈜이소컴.
제 출 문 현대 리모델링 주식회사 귀중 본 보고서를 압구정동 Project의 성공적 분양을 위한 마케팅 전략에 관한 제안서로
Schroder House -입면.
Chapter 01. 해킹의 정의와 역사.
10 카운터 (Counter) IT CookBook, 디지털 논리회로.
리우올림픽 개최국 브라질에 대해서~~ 금은동 메달 브라질 국기 마스코트 비니시우스와 톰 리우올림픽 개막식 및 폐막식 구 분
쇼핑몰 운영전략 abc 쇼핑몰을 발전시키기 위한 운영지침서.
2015 가을학기 철근콘크리트 구조설계 김진근 교수 건설 및 환경공학과 KAIST.
섬유의 종류에 따른 공기저항 비교 지도교사: 김 은 정 선생님.
독성물질의 투여 방법 생체내 시험 시험관내 시험
컴퓨터 보안 메커니즘에 기반한 자기 가치감의 셀프힐링
방송매체(TV, 라디오..), 인쇄매체(신문, 잡지) 등
대표이사 – 김휘중 대표이사 소개 조선대학교 무역학과 수학 크린코리아 전남,광주 지점장 대신용역 대표이사 하나건설 대표이사
참석자: 정미자, 강지혜, 정이향, 윤지영 일시: 2012년 7월 4일 수요일 장소: 맛나다
의료광고 실태 조사 조윤미(녹색소비자연대 상임위원).
CONTENTS. KMO 한국 과학 영재 올림피아드 KMC 성대경시 MBC 경시 KME 교대경시 창의력 페스티발 IMT.
정보사회의 인간상과 디지털 리터러시 인터넷 행정 서 순 복.
1. 자료구조 개념 (1) 자료구조의 개요 1) 자료구조 ① 일련의 자료들을 조직하고 구조화하는 것 ② 자료의 표현과 그것과 관련된 연산 2) 자료구조에 따라 저장공간의 효율성과 프로그램의 실행시간이 달라짐 3) 어떠한 자료구조에서도 필요한 모든 연산들을 처리하는 것이.
8. 파일 인덱스: 탐색트리 (Search Tree)
Ⅲ. 5S • 3정.
8장 직접 파일.
쉽게 배우는 알고리즘 6장. 해시 테이블Hash Table.
쉽게 배우는 알고리즘 5장. 검색트리
자료구조: CHAP 7(3) 트리 순천향대학교 컴퓨터공학과 하 상 호.
자료구조: CHAP 7 이진 탐색 트리 순천향대학교 컴퓨터공학과 하 상 호.
<엘리제를 위하여>를 감상하며 론도 형식 이해하기
해싱(hashing) Ref. C로 쉽게 풀어쓴 자료구조, 생능출판사, 2005.
CHAP 11: 해싱 순천향대학교 하상호.
12 검색.
쉽게 배우는 알고리즘 6장. 해시 테이블Hash Table
다음 주 과제 기말고사 시험범위 : 7장 ~12장 필기시험 : 2016년 12월 12일(6교시) 필기장소 : E???
CHAP 11: 해싱 순천향대학교 하상호.
국가대표 생애주기교육 프로그램 참여방법 안내
정보처리기사 8조 신원철 양진원 유민호 이기목 김다연 윤현경 임수빈 조현진.
CHAP 11 : 해싱 C로 쉽게 풀어쓴 자료구조 생능출판사 2011.
게임인공지능 제 6 장 스크립트 2008년 5월 6일.
수업 첫 날 교육B 황유미 첫 수업 계획에 대해 알아보도록 하겠습니다..
CHAP 11 : 해싱.
연결링크 이미지를 마일리지샵 내에 기획전으로 제작하여 오픈/노출 사이즈 가로 1000/세로 상관x 배너사이즈 가로 400
해쉬함수 충돌해결법과 특징 강원대학교 컴퓨터과학과 이해원.
해시와 해시 함수.
7장. 해시 테이블Hash Table.
CHAP 11 : 해싱.
해싱 이 현 직
CHAPTER 04 파일 설계(FiLE Design).
Chapter 11 해쉬(Hash) SANGJI University Kwangman KO
C언어 응용 제 15 주 검색.
CHAP 12:탐색 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
CHAP 12 : 탐색.
CHAP 12 : 탐색 C로 쉽게 풀어쓴 자료구조 생능출판사 2011.
다음 주 과제 기말고사 시험범위 : 6장 ~12장 필기시험 : 2015년 12월 18일(5교시) 필기장소 : E327
제 8 장 계산복잡도 개론 검색 문제 알고리즘 강의 슬라이드 8 검색 문제
최대 공약수 구하기 (1) 프로그램 예제2 : 최대 공약수 구하기 문제 해결 방법 구상 (아는 지식 정리) GCD1 알고리즘
문서의 작성 정보과학부 이지연.
탐색 선형 탐색, 이진 탐색, 이진 탐색 트리.
Chapter 07 트리.
5. 인류의 건강과 과학 기술 2. 건강관리 1) 면역.
데이터 베이스의 내부 구조.
유예 X-FILE *조사자* 1301권희원 1315이예지 1317장아정 1322홍자현.
CHAP 11:해싱 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
Presentation transcript:

CHAP 11 : 해싱

해싱이란? 대부분의 탐색 방법들은 키 값 비교로써 탐색하고자 하는 항목에 접근 해싱(hashing) 키 값에 대한 산술적 연산에 의해 테이블의 주소를 계산하여 항목에 접근 해시 테이블(hash table) 키 값의 연산에 의해 직접 접근이 가능한 구조 해싱은 물건을 정리하는 것과 같다

추상자료형 사전구조 사전구조(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)의 인덱스

해시 테이블의 구조 해시테이블 ht 충돌(collision) 오버플로우(overflow) M개의 버켓(bucket)으로 구성된 테이블 ht[0], ht[1], ...,ht[M-1]의 원소를 가짐 하나의 버켓에 s개의 슬롯(slot) 가능 충돌(collision) 서로 다른 두 개의 탐색키 k1과 k2에 대하여 h(k1) = h(k2)인 경우 오버플로우(overflow) 충돌이 버켓에 할당된 슬롯 수보다 많이 발생하는 것 오버플로우 해결 방법 반드시 필요

이상적인 해싱 학생 정보를 해싱으로 저장, 탐색해보자 5자리 학번 중에 앞 2자리가 학과 번호, 뒤 3자리가 각 학과의 학생 번호 같은 학과 학생들만 가정하면 뒤의 3자리만 사용해서 탐색 가능 학번이 00023이라면 이 학생의 인적사항은 해시테이블 ht[23]에 저장 만약 해시테이블이 1000개의 공간을 가지고 있다면 탐색 시간이 O(1)이 되므로 이상적임

실제의 해싱 실제로는 해시테이블의 크기가 제한되므로, 존재 가능한 모든 키에 대해 저장 공간을 할당할 수 없음 h(k)= k mod M 의 예에서 보듯이 필연적으로 충돌과 오버플로우 발생함

실제의 해싱(cont.) 알파벳 문자열 키의 해시함수가 키의 첫 번째 문자의 순서라고 하자 h("array")=1 h("binary")=2 입력데이터: array, binary, bubble, file, digit, direct, zero, bucket

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

해시함수(cont.) 제산 함수 폴딩 함수 h(k)=k mod M 해시 테이블의 크기 M은 소수(prime number) 선택 이동 폴딩(shift folding)과 경계 폴딩(boundary folding)

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

충돌해결책 충돌(collision) 충돌해결책 서로 다른 탐색 키를 갖는 항목들이 같은 해시 주소를 가지는 현상 충돌이 발생하면 해시 테이블에 항목 저장 불가능 충돌을 효과적으로 해결하는 방법 반드시 필요 충돌해결책 선형조사법: 충돌이 일어난 항목을 해시 테이블의 다른 위치에 저장 체이닝: 각 버켓에 삽입과 삭제가 용이한 연결 리스트 할당

선형조사법(linear probing) 충돌이 ht[k]에서 발생했다면, ht[k+1]이 비어 있는지 조사 만약 비어있지 않다면 ht[k+2] 조사 비어있는 공간이 나올 때까지 계속 조사 테이블의 끝에 도달하게 되면 다시 테이블의 처음부터 조사 조사를 시작했던 곳으로 다시 되돌아오게 되면 테이블이 가득 찬것임 조사되는 위치: h(k), h(k)+1, h(k)+2,… 군집화(clustering)과 결합(Coalescing) 문제 발생

선형조사법(linear probing) (예) 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(충돌 발생) (h(13)+1) mod 7 = 0(저장)

선형조사법(linear probing) (예) “do”, “for”, “if”, “case”, “else”, “return”, “function’

선형조사법(linear probing)

이차 조사법(quadratic probing) 선형 조사법과 유사하지만, 다음 조사할 위치를 아래 식 사용 (h(k)+inc*inc) 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 7 오버플로우 발생시의 해시 함수는 step=5-(5 mod 5) 입력 (8, 1, 9, 6, 13 ) 적용

이중해싱법(double hashing) 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(저장)   1단계 2단계 3단계 4단계 5단계 [0] [1] 8 [2] 9 [3] 13 [4] [5] 1 [6] 6

체이닝(chaining) 오버플로우 문제를 연결 리스트로 해결 (예) 크기가 7인 해시테이블에서 각 버켓에 고정된 슬롯이 할당되어 있지 않음 각 버켓에, 삽입과 삭제가 용이한 연결 리스트 할당 버켓 내에서는 연결 리스트 순차 탐색 (예) 크기가 7인 해시테이블에서 h(k)=k mod 7의 해시 함수 사용 입력 (8, 1, 9, 6, 13) 적용

체이닝(chaining) 1단계 (8) : h(8) = 8 mod 7 = 1(저장)

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

해싱의 성능분석(cont.) 선형조사법에서의 비교 연산 횟수

해싱의 성능분석(cont.) 체인닝에서의 비교 연산 횟수

V.Lum, P.Yuen, M.Dodd, CACM, 1971, Vol.14, No.4 참조 해싱의 성능분석(cont.) 각 알고리즘에 따른 평균 버켓 접근 수 V.Lum, P.Yuen, M.Dodd, CACM, 1971, Vol.14, No.4 참조

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