우리는 x, y 쌍의 목록을 가지고 있습니다. 모든 쌍은 2D 공간상의 점을 나타냅니다. 이 목록에서 가장 가까운 점을 특정 점 xq, yq로 찾고 싶습니다. 이 문제에 가장 적합한 성능에 중요한 알고리즘은 무엇입니까? 점의 혀짤배기는 변하지 않을 것이다; 즉, 삽입 및 삭제를 수행 할 필요가 없습니다. 이 집합에서 대상 xq, yq 점의 가장 가까운 이웃을 찾고 싶습니다.가장 가까운 이웃을 해결하기위한 성능에 중요한 알고리즘
편집 1 : 모두에게 감사드립니다! Stephan202가 올바르게 추측 했으므로이 작업을 반복하고 싶습니다. 함수처럼. 목록이 반드시 정렬되지는 않습니다. (실제로 정렬 할 수있는 방법을 모르겠습니까? a와 y의 2 개 열의 기본 키가있는 테이블처럼? 그렇다면 도움이된다면 정렬 할 것입니다.)
목록을 기반으로 데이터 구조를 한 번 생성 한 다음 함수에서이 생성 된 데이터 구조를 사용합니다 (이 프로세스 자체가 관련되어있는 경우).
감사합니다. Jacob; KD-Tree 데이터 구조가 답이 될 수있는 좋은 후보자 인 것 같습니다. (관련성이 높은 결과가 나면 업데이트 할 것입니다.)
편집 2 :이 문제는 "가장 가까운 이웃"이라는 것을 발견했습니다.
편집 3 : 첫 번째 제목은 "공간 검색 및 공간 인덱싱을위한 알고리즘 검색 중 (최근 인접 항목)"이었습니다. 새로운 제목을 선택했습니다 : "가장 가까운 이웃을 해결하기위한 성능 - 중요 알고리즘". 초기 데이터에 삽입 및 삭제 작업을 수행하고 싶지 않고 가장 가까운 것을 새로운 포인트 (삽입하지 않을 예정)에 넣기를 원하기 때문에 KD 트리 작업을 선택했습니다. 모두에게 감사드립니다!
목록에 구조가 있습니까 (예 : 정렬)? 이 작업을 반복 하시겠습니까? 아니면 한 번 수행 할 것입니까? 이것은 사람들이 귀하의 질문에 대답하는 데 필요한 관련 정보입니다. – Stephan202
공간 데이터베이스에 액세스 할 수 있습니까? –
목록이 정렬되지 않고 작업이 한 번만 수행되면 목록에 대해 선형 검색을 수행해야하므로 O (n)보다 더 잘 수행 할 수 없습니다. 작업을 반복하려면 요소의 x 및 y 값을 기반으로 목록의 적절한 (트리) 표현을 만들어야합니다. – Stephan202