본문 바로가기
Knowledge/CS

해시(Hash)란 무엇인가?

by YoonJong 2022. 8. 16.
728x90

HashMap을 사용하면서 Hash란 것을 사용하고 있었는데, 조금 더 자세히 알아볼 수 있는 시간이 된 것 같다.


해시(Hash) 

 - 데이터를 다루는 기법 중 하나로 검색과 저장이 아주 빠르게 진행

 - Key Value 값이 한쌍으로 존재하고, key의 값이 인덱스로 변환된다.

 - 키에 대한 해싱값을 구하는 과정을 hashing(해싱) 이라고 한다.

 - 시간복잡도는 O(1) 에 수렴

https://www.youtube.com/watch?v=xls6jEZNA7Y&t=5s


 

충돌(Collusion)

키에 대한 해시값이 같은 경우( 이미 해시 버킷이 사용중인 경우) 를 뜻한다.

같은 인덱스 끼리 덮어씌어지어 먼저 저장된 데이터는 지워진다

https://medium.com/shell-tharsis/hash-collision-5891d7dde54f

 

충돌을 해결하는 방법

충돌이 일어나는 이유는 해시알고리즘이 잘 짜여져 있지 않기 때문이다.

해시의 장점은 빠른 데이터 접근인데, 충돌이 많으면 최대 검색시간이 O(n) 이 되어버린다.

얼마나 잘 분배한 것에 따라 좋은 알고리즘으로 구분할 수 있다.

 

문자열은 무한한 값이지만, 해시코드는 정수값만 가질 수 있어, 결국은 충돌이 일어날 수 밖에 없다.

 

 

체이닝 : 연결리스트로 노드를 계속 추가해 나가는 방식

 

선형 탐사 : 정해진 고정 폭으로 옮겨 해시값의 중복을 피한다.

 

 

 

 

 

 

참고

https://power-overwhelming.tistory.com/42

 

[자료구조/알고리즘] 해시(Hash) 란?

Hash 개념 임의의 크기를 가진 데이터(Key)를 고정된 크기의 데이터(Value)로 변화시켜 저장하는 것 키에 대한 해시값을 사용하여 값을 저장하고 키-값 쌍의 갯수에 따라 동적으로 크기가 증가하는 a

power-overwhelming.tistory.com

https://runa-nam.tistory.com/84

 

해시(Hash) 란?

1. 개념 해시 임의의 크기를 가진 데이터(Key)를 고정된 크기의 데이터(Value)로 변화시켜 저장하는 것 키에 대한 해시값을 사용하여 값을 저장하고 키-값 쌍의 갯수에 따라 동적으로 크기가 증가하

runa-nam.tistory.com

https://www.youtube.com/watch?v=Vi0hauJemxA 

 

https://www.youtube.com/watch?v=xls6jEZNA7Y&t=5s

 

728x90

'Knowledge > CS' 카테고리의 다른 글

String, StringBuffer, StringBuilder  (0) 2022.08.17
컴파일과 인터프린터  (0) 2022.08.17
시간복잡도란 무엇인가? 다른방법은?  (0) 2022.08.13
block I/O VS non-block I/O 개념  (0) 2022.08.11
상속과 구현의 차이  (0) 2022.08.09

댓글