일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 딥러닝 공부
- 파이토치 김성훈 교수님 강의 정리
- object detection
- 파이토치
- 컴퓨터 비전
- 해리스 코너 검출
- MFC 프로그래밍
- TensorFlow
- 팀프로젝트
- c++
- Pytorch Lecture
- matlab 영상처리
- 골빈해커
- 가우시안 필터링
- 파이토치 강의 정리
- 딥러닝 스터디
- 김성훈 교수님 PyTorch
- 미디언 필터링
- 모두의 딥러닝 예제
- 케라스 정리
- c언어
- tensorflow 예제
- 영상처리
- pytorch
- c++공부
- c언어 정리
- 딥러닝
- pytorch zero to all
- 모두의 딥러닝
- C언어 공부
Archives
- Today
- Total
ComputerVision Jack
자료구조 - Chapter 13 본문
반응형
테이블(Table)과 해쉬(Hash)
테이블(Table)
우리가 흔히 사용하는 표가 테이블이다.
하지만 자료구조의 관점에서 테이블에 저장되는 데이터는 키(key)와 값(value)가 하나의 쌍을 이룬다.
따라서 키(key)가 존재하지 않는 값은 저장할 수 없고 모든 키는 중복되지 않는다.
이러한 테이블은 서전 구조 또는 맵(map)이라고 불린다.
예제 : 배열 기반의 테이블 구현하기
키를 인덱스 값으로 하여 그 위치에 데이터를 저장한다.
하지만 키의 값의 범위가 크다면 문제가 발생한다.
배열 기반 테이블 문제점
- 키의 범위(고유 인덱스)가 배열의 인데그 값으로 사용하기에 적당하지 않다.
- 키의 범위를 수용할 수 있는 매우 큰 배열이 필요하다.
예제 : 해쉬 함수를 이용한 테이블 구현하기
해쉬 함수(Hash Function)
넓은 범위의 키를 좁은 범위의 키로 변경하는 역할 수행.
예제 : 좋은 해쉬 함수를 사용하여 테이블 구현하기
좋은 해쉬 함수 조건
데이터가 전체 영역에 고루 분포되게 만드는 함수. 이렇게 데이터가 고르게 분포하면 충돌 발생 확률이 낮아진다.
따라서 좋은 해쉬함수는 키의 일부분을 참조하여 해쉬 값을 만들지 않고, 키 전체를 참조하여 해쉬 값을 만든다.
- 자릿수 선택(Digit Selection) 방법
- 자릿수 폴딩(Digit Folding) 방법
예제 : 충돌을 방지하는 해쉬함수를 이용하여 테이블 구현하기(이중 해쉬)
- 선형 조사법(Linear Probing) : 충돌이 발생했을 때, 옆자리 비어있는지 살펴보고 그 자리 사용하는 방법
- 이차 조사법(Quadratic Probing) : 충돌 발생 시, 멀리서 빈 공간을 찾아서 그 자리를 사용하는 방법
이중해쉬 (Double Hash)
- 1차 해쉬 함수 : 키를 근거로 저장위치를 결정하기 위한 것
- 2차 해쉬 함수 : 충돌 발생시 몇 칸 뒤를 살필지 결정하기 위한 것
반응형
'Programming Language > Data Structure' 카테고리의 다른 글
자료구조 - Chapter 14 (0) | 2020.03.14 |
---|---|
자료 구조 - Chapter 12 (0) | 2020.03.08 |
자료구조 - Chapter 11 (0) | 2020.03.07 |
자료구조 - Chapter 10 (0) | 2020.03.06 |
자료구조 - Chapter 09 (0) | 2020.03.05 |
Comments