나는 지리적 관계를 표현하고 검색하는 효율적인 방법을 찾고있다. 지구 -> 주 -> 미국. 이것은 예를 들어 모든 계층 구조를 수용해야합니다. 지역 -> 지역 -> 주 -> 큰 지역 (동/서/남/북) -> 미국. 너무 빨리 최우선해야 그들 모두를 얻기 -지구를 대표하는 효율적인 데이터 구조 -> 국가 -> 국가 관계
내 요구 사항은 내가 주로 가장 낮은 수준에서 작동
- 있습니다. 일정한 시간이 선호됩니다.
- 그런 다음 국가 수준에서 집계 eg.combine 지구 데이터를 손쉽게 수행하여 노드의 모든 하위 항목을 쉽게 가져 오려고합니다. 이것이 두 번째 기준입니다.
- 수준의 주문은 중요하지 않습니다. 노스 캐롤라이나의 경우, 처음 Raleigh 나 Fayetville을 얻는 것은 괜찮습니다. 당신은 거의 짐작했듯이
- 한 트리 자료 구조는 논리적으로 문제에 빌려 준다. 그러나 모든 잎을 효율적으로 얻을 수있는 방법을 찾지 못했습니다. O (log n) 시간에 노드가 잎인지 확인할 수 있지만 각 노드에 대해 확인합니다.
나는 B, B + 나무를 보았지만, 내가 이해하지 못했던 것은 오름차순이나 내림차순 같은 순서를 사용하여 순서를 유지한다는 것입니다.
윈도우 나 파일 시스템이이 작업을 수행하기 때문에 필자에게는 실용적인 해결책이 있어야한다. 파일 -> 폴더 -> 큰 폴더 -> C -> 내 컴퓨터. 또한 이러한 종류의 계산은 데이터 마이닝에서 클러스터링 (클러스터링)을 수행 할 때 수행해야합니다. (이 종류의 것을 읽은 적이 있습니다.)
이 방향의 모든 리드는 인정 될 것입니다.
감사
구조와 관련하여 정확히 설명하는 것이 더 구체적 일 수 있습니까? 귀하의 # 1은 완전히 명확하지 않습니다. Welbog가 말했듯이, 일정 시간 안에 n 개의 항목을 검색 할 수는 없습니다. 그리고 당신의 "노드 체크는 O (log n)에서 리프입니다"는 것은 리프에서 루트까지 직접적인 집계가 아닌 다른 일을한다는 것을 의미합니다. –
n 개의 항목이 이미 캐시 된 모음에 저장되어 있으면 n 개의 항목을 일정 시간에 검색 할 수 있습니다. 이는 노드의 모든 하위 항목에 대한 일반적인 경우에 적합 할 수 있습니다 (예 : 아래 내 대답을 참조하십시오. – mikera