728x90

해시테이블(Hash Table)과 체이닝(Chaining)에 대한 간략한 정리

해싱과, 해시테이블 그리고 충돌을 처리하는 체이닝 기법에 대해서 한 번 정리해보자.이 글을 시작하기에 앞서, 스택오버플로우의 많은 자료들 그리고 위키피디아, 각종 유튜브 강의를 참고했다는 사실을 먼저 알립니다. 해시와 해시함수 해시 함수(Hash Function)는 데이터의 효율적인 관리를 위해 길이가 각기 다른 데이터를 고정 길이로 매핑하는 함수다. 이 때 매핑하는 과정을 해싱(Hashing)이라고 하며, 매핑하기 전의 데이터를 키(Key), 매핑 후의 데이터를 해시 값(Hash Value; 때로는 Value)이라 한다. 해시의 목적 해시 테이블(Hash Table)해시 테이블은 데이터의 해시 값을 테이블 내 주소로 이용해먹는 탐색 알고리즘으로, 잘 구현하면 이진 탐색보다 빠르게 처리할 수 있다. 암호..

Algorithm] Closest Pair(최근접 점의 쌍 찾기)

Algorithm] Closest Pair(최근접 점의 쌍 찾기) Closest Pair(말 그대로 최근접 점의 쌍 찾기)XY 좌표 평면 상에 존재하는 점들 중, 가장 근접한 쌍을 골라내는 알고리즘이다.가장 간단한 건, 한 점과 연결되는 모든 점들과의 거리를 계산하고이를 바탕으로 최근접 거리를 탐색하는 것이다. 이 경우 N개의 점이 있다고 했을 때 N(N-1)/2의 비교,Big O로는 N^2에 해당하는 시간복잡도가 소요된다.점의 수가 100개 내외여도 꽤나 느려지는 것이 어마어마한 단점이다. 이 때 우리가 생각해볼 수 있는 것이 분할정복 방식(Divide and Conquer)인데,부분 문제를 만들어서 계산과 비교 회수를 비약적으로 줄일 수 있다.x축을 기준으로 정렬을 수행하고(이 때 정렬은 퀵정렬로 가..

공학도들을 위한 게임, Factorio(팩토리오)

공학도들을 위한 게임, Factorio(팩토리오) 외계 생물들이 있는 행성에 내던져진 채로,거기에 있는 자원으로 우주선을 만들어 쏘아올리는 게임팩토리오에 대해서 소개하고자 한다. 스팀에서 24000원에 판매되고 있는 얼리 억세스(Early Access) 게임이다.이전에 리뷰했던 프로젝트 좀보이드처럼 얼리 억세스지만 지속적인 패치가 이루어지고 있으며,순정 모드에 지루해지더라도 고 퀄리티의 모드들이 존재해 지루함을 만회할 수가 있다.그리고 하나 더, 이 게임은 한글을 공식적으로 지원하는 게임이다! 게임 트레일러만 보면 우리도 인텔, 삼성전자가 될 수 있을 것처럼 보이지만,막상 게임을 직접 플레이해보면 그게 쉬운 일이 아니라는 걸 깨닫게 된다.아무것도 모르는 유저들의 손에 곡괭이 하나랑 철판 10개를 던져주고..

게임 리뷰 2017.02.27 0

Algorithm] 비교 정렬의 하한

항상 고민하던 게 있다.비교 정렬의 하한이 nlogn이며 이보다 더 좋은 정렬 알고리즘은 없다는 이야기를 들었다.도대체 왜 그런 것인지, 어째서 그런 것인지에 대해서 잘 모르고 넘어갔다.주어진 문제에 대해서 시간 복잡도의 하한이라는 것은어떤 문제도 이 하한보다 빠르게 구할 수 없다는 것을 의미하는데,이 하한이 알고리즘에 대한 시간 복잡도가 아니라이 문제의 고유 특성으로 인해서 과거부터 지금까지, 혹은 미래에 만들어진어떤 효율적인 알고리즘이더라도 적어도 하한의 시간복잡도 만큼 걸린다는 것을 의미한다. n개의 숫자가 저장된 배열이 있다고 하자.여기서 최솟값을 찾는 문제의 하한은 최소한 n-1회의 비교가 필요하므로 n-1이다.이런 식으로 n개의 수를 비교 정렬할 때 필요한 최소 비교 횟수가 어떻게 되는지 생각..

Algorithm] 동적계획법 - 연속 행렬 곱셈

연속된 행렬들의 곱셈에 필요한 원소 간 최소 곱셈 횟수를 찾는 문제로,일단 연속된 행렬 간의 곱셈이 모두 가능하다는 전제 조건 하에 이루어진다. A=10X20, B=20X5, C=5X15 다음 세 행렬에 대한 계산을 예로 들면, AxBxC는 두 가지 방법으로 계산할 수 있다. 1. (AxB)xC2. Ax(BxC) 두 가지 계산은 결과는 아무 차이가 없지만, 순서에 따라서 두 행렬 곱셈의 횟수가 차이가 나기 때문에이를 최소화하고자 하는 방법을 구성할 필요가 있다. 일단, 1번의 계산을 예로 들면, 1번의 계산에서는 AxB는 10x20x5로, 1000회의 원소 곱셈을 시행하고,AxB 행렬은 10x5로, (AxB)xC는 750회 곱셈을 진행해 전체적으로 1750회의 원소 곱셈을 시행해야 한다. 2번의 계산은 ..

728x90