높이 맵 (부동 소수점 값의 2D 배열)이 있는데이 점을 찾으면지도에서 가장 높은 점을 찾고 그 값과 값을 변경하려고합니다 가까운 모든 지점 중. 가장 높은 지점을 효율적으로 검색하는 데 사용할 최적의 데이터 구조는 무엇입니까?높이 맵용 최적의 데이터 구조
요구 사항 :
- 이
- 변경합니다 점의 임의의 집합의 값 세트가 가장 높은 현재 위치, 인근 지점의 부하를 항상 포함됩니다 효율적으로 , 델타 것 가장 높은 지점 찾기 각 점마다 달라야한다.
내 생각은 우선 순위 대기열이므로 O (1)에서 가장 높은 지점을 찾을 수 있으며 O (n log n)에서 값의로드를 변경하고 heapify 할 수 있습니다.
Nb. 저는 이것을 언어에 의존하지 않는 언어와 Lua로 표시했습니다. 왜냐하면 언어 적으로 불가지론적인 질문 이었기 때문에 루아에서 최종 해결책을 구현할 것입니다.
흠, 그 일을하는 흥미로운 방법처럼 들립니다. 루아에서 우선 순위 큐를 작성하는 것은 재미 있어야합니다 : D – Martin
그것은;) 우선 목록 기반 버전으로 시작한 다음 바이너리 힙 기반으로 이동하는 것이 좋습니다. 그 이유는 목록 기반의 구현이 훨씬 빨라서 올바른 경로인지를 알기 때문입니다. 개체의 비교 메타 메서드를 재정 의하여 우선 순위 큐에서 비교 연산자와 비교할 수 있도록 우선 순위 큐를 쉽게 일반화 할 수 있도록하는 것이 좋습니다. – ponzao
나는 C#으로 구현 된 최소 - 최대 힙을 이미 가지고있어서, 그걸 포팅 했으므로, 그것은 매우 놀랍습니다. D – Martin