그 안에 누워있는 포인트의 수를 최대화하는 공을 찾는 복잡성


10

x1,,xnR2 및 반지름 r 의 집합이 주어 r집니다. r 보다 작은 거리에서 더 많은 수의 포인트를 가진 포인트를 찾는 것이 복잡 r합니다. 예를 들어 i=1n1xxir ?

무차별 대입 알고리즘은 모든 점을지나 r 보다 작은 거리에있는 점의 수를 세는 것 r입니다. \ mathcal {O} (n ^ 2) 의 복잡성을 줄 것 O(n2)입니다.

더 나은 접근 방법이 있습니까?


쿼드 트리와 이진 공간 분할 트리를 살펴 보셨습니까? 최악의 경우 점근 적 실행 시간이 무엇인지 알지 못하지만 실제로는보다 효율적인 알고리즘을 제공 할 것으로 기대합니다.
DW

( ball타이틀 의 중심은 세트에서 가져와야합니까?) 하나의 아이디어는 반경이 가장 가까운 이웃과의 평균 거리에 비해 작은 지 또는 지름의 순서에 비해 작은 지 추정하는 것입니다. (작은 r에 대한 평면 스윕 r)과 그 사이의 넓은 공간).
greybeard

공의 중심은 x_i 이어야 xi하지만 그 조건이없는 더 나은 알고리즘이 있다면 관심이 있습니다.
Manuel

Ball Range Counting Problem에 대한 알고리즘 보다 빠른 것 같습니다 . 그러나 정확하지 않은 대답을 받아 들일 수 있다면 방향이 다른 일련의 사각형으로 디스크를 근사화 할 수 있습니다. 각 방향에 대해 범위 트리 ( en.wikipedia.org/wiki/Range_tree )를 작성해야합니다. 그러면 시간 (k 안에 사각형 안의 모든 점을 계산할 수 있습니다 -많은 결과 포인트). O(n)O(log2(n)+k)
HEKTO

@HEKTO 점이 비용 로 사각형에 있는지 쿼리하기 위해 비용 의 구조를 만드는 것이 좋습니다 . 그런 다음 근사 공에 몇 개의 다른 점이 있는지 계산하기 위해 모든 점을 살펴보십시오. 이것은 작동 할 수 있지만 그러한 데이터 구조에 필요한 메모리는 무엇입니까? 보다 낮 습니까? O(nlog(n))O(log2(n)+k)O(n2))
Manuel Manuel

답변:


5

현재 까지 볼 범위 계산 문제에 대한 하위 선형 알고리즘 처럼 보입니다 .

그러나 정확하지 않은 대답을 받아 들일 수 있다면 방향이 다른 일련의 사각형으로 디스크를 근사화 할 수 있습니다. 각 방향에 대해 범위 트리 를 작성해야합니다.이 트리 를 사용하면 시간 (k-다수의 결과 점) 으로 사각형 안의 모든 점을 계산할 수 있습니다 .O(log2(n)+k)

각 범위 트리에는 메모리가 필요합니다. 더 많은 방향을 사용하려면 더 많은 방향을 사용해야합니다. 예를 들어, 두 방향을 사용하면 팔각형이 생겨 6 % 미만의 영역 오류가있는 디스크와 비슷합니다.O(nlog(n))


3

답은 그렇게 간단하지 않다. 복잡성 이론에서이 질문에 대한 고급 연구가있다. 빠른 "구형 범위 계산"쿼리에 중점을 둔 다음과 같은 문제로 연구되는 것 같습니다. 그렇습니다. 향상된 이론적 한계는 가능하지만, 아무도 구현하지 않은 추상적 알고리즘 인 것 같습니다. 실제 구현을 원한다면 다른 질문입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.