본문 바로가기
반응형

2017/0564

[알고리즘] 해싱(Hashing) - 3 해싱(Hashing) - 3 그렇다면 좋은 해시 함수란 무엇일까현실에서 키 들은 랜덤 하지 않다. 따라서, 만약 키 들의 통계적 분포에 대해서 알고있다면 이를 이용해서 해시 함수를 고안 하는것이 가능하겠지만 현실적으로 어렵다.그러므로, 키 들의 어떤 특정한(가시적인) 패턴을 가지더라도 해시 함수의 값이 불규칙 적이 되도록하는것이 바람직하다.즉, 해시 함수의 값이 키의 특정 부분에 의해서만 결정되지 않도록 해야한다.그래서 대부분의 해시함수를 구현할때 사용하는 연산들이 위와 같은 목적을 가지고 이루어 지게된다. 전형적인 해시함수는 여러가지 방법으로 만들어 질수 있는데, 첫번째로 Division기법이있다.이는 키를 테이블 사이즈로 나누어서 나머지를 구하는 연산이다.h(k) = k mod m위와 같은 식이 나오.. 2017. 5. 10.
[알고리즘] 해싱(Hashing) - 2 해싱(Hashing) - 2 충돌을 해결하는 기법중에 2번째인 open addressing에 대해 알아보자해시 테이블 슬롯에 키는 하나씩만 저장한다.이때 충돌이 일어나면 그 슬롯이아니라 다른 슬롯에 저장해야한다는것을 뜻한다. open addressing은 여러가지 종류가 있는데,1) Linear Probing2) Quardratic Probing3) Double Hashing위의 3 종류가 대표적이다. 먼저 Linear Probing에 대해서 알아보도록 하자 (a)에서는 순서대로 인덱스에 들어가며 충돌이 일어나지 않는다. (b) 에서는 B5가 들어가야하는데 이미 A5가 들어가 있으므로 충돌이 일어나게 된다.여기서 open addressing의 Linear Probing을 수행하는데, 해싱을 했을 때 이미.. 2017. 5. 9.
[알고리즘] 해싱(Hashing) - 1 해싱(Hashing) - 1 해쉬 테이블은 다이나믹 셋을 구현하는 또 다른 방법이다.일반적으로 해쉬 테이블은 탐색, 삽입, 제거 3가지 연산들의 시간 복잡도에 대해 애매한 부분이 있으나적절한 가정하에서 평균적으로 O(1)의 복잡도를 가진다. 보통 최악의 경우에서는 O(n)이 된다.(해싱을 사용하는 경우 정확한 복잡도를 계산하기 어려우므로 가정하게된다.) 해쉬 테이블은 해쉬 함수라는 특별한 함수를 통해 어떤곳에 저장할것인지 지정하는것을 말한다.해쉬테이블은 큰 배열이라고 생각하면된다.위의 그림은 0번지부터 m-1 번째까지, m개의 슬롯을 가지고 있는 해쉬 테이블이다. h : U -> {0,1,2,3,4,5,6... m-1} 라고 할 때 U는 모든 가능한 키들의 집합을 말하며, m은 테이블의 크기를 뜻한다.이.. 2017. 5. 9.
[일상] 이러고 있다. RESTful api 공부해볼겸 노드로 주소록을 만들어보았다.밖에 나가서 운동하고 싶은데 미세먼지 때문에 나가지도 못하고집에서 이러고 있다.빨리 날이 좋아졌으면 좋겠다. 2017. 5. 9.
반응형