읽고 나면 진짜 쉬워지는 자료 구조 - 8. 격자
다차원적인 값이나 대상을 고려할 때 어떤 일이 일어날까?
🔖 8.1 최근접 이웃 탐색 소개
최근접 이웃 탐색 이란?
주어진 탐색 목표와 가장 가까운 데이터 점을 찾는 것
이진 탐색에서 목표값 탐색과 밀접한 관련이 있으나, 차이는 '탐색에 성공하는 기준'
최근접 이웃 탐색은 단지 가장 가까운 항목을 찾기만 하면 된다
선형 스캔을 이용한 최근접 이웃 탐색
대부분의 프로그래밍 언어에서 간단한 루프로 구현 가능
다른 거리 함수나 다차원 점도 쉽게 지원
🔖 8.2 격자
격자란?
2차원 데이터를 저장하기 위한 자료 구조로, 배열과 마찬가지로 고정된 일련의 셀로 구성
배열과 달리 각 상자에 값을 하나만 답게 제한할 수 없음
데이터 점의 좌표를 이용해 각 저장소 결정
데이터의 공간 구조를 활용해 탐색 제한 가능
격자 구조
격자를 표현하는 최상위 자료 구조에는 관리를 위한 추가 정보 포함됨
격자를 만들 때는 데이터 점에 대해 for 루프 수행하면 됨
점 제거하기
상자에서 어떤 점을 제거해야 하는지 결정하는 것이 어려움
올바른 상자를 찾고 연결 리스트를 순회하며 같은 점을 찾고, 리스트에서 제거
🔖 8.3 격자에 대한 탐색
상자 가지치기
어떤 상자에 목표점과 주어진 거리 안에 있는 점이 하나라도 존재하는지 여부 확인
각 차원을 독립적으로 고려하면 어떤 점과 격자 상자의 경계 사이 거리 계산 가능
확장 탐색
목표점을 포함하는 상자에서 탐색 범위를 확장하며 최근접 이웃을 찾을 때까지 탐색 진행
상자에 대해 이상적인 확장 탐색 방법
Last updated