답변:
시간 에이 문제를 해결하는 방법을 모르지만 O ( n 2 log n ) 알고리즘이 존재합니다.
하자 는 중심 인 원 수 s의 I를 상기 전 반경을 가진 번째 포인트, R . 이 지점 세트 찾기 어렵지 않다 P = { P 0 , P 1 , ... , P는 m이 } 반경을 가진 원에 의해 둘러싸인 수 R 교차 IFF I ( P ) 의 C ( P 0 ) , C ( P 1 ) , … 는 비어 있지 않습니다. 경우 또한, I ( P는 ) 비어 있지 않은, 몇 가지 포인트가 있어야 I ( P ) 일부에 누워 BD의 C ( P I ) (의 경계 C ( P I ) ). 그래서 각각 C ( s의 I를 ) 각각의 점 P 의 bondary에, 우리는 원 포함 얼마나 많은 찾으려고 쪽 . 모든 p 중 최대 개수는이 문제에 대한 답입니다.
의 점을 살펴 보자 . bd C ( s i )의 점 과 [ 0 , 2 π ) 의 실수 사이에는 일대일 매핑이 있습니다. 각 원 들어 C ( S J ) 사이의 교점 C ( S J ) 및 BD C ( s의 I를 ) 의 간격에 의해 표현 될 수있다 [ B의 전자 g I N J . 그래서 제외한 모든 원에 대한 C ( s의 난을 ) 대부분에있다 N - 1 개 간격 (일부 서클 수 없습니다 교차와 C ( s의 I ) ). 최대 카운트는간격의 2 ( n - 1 ) 끝점을모두 정렬하고순서대로 스캔하고 현재 겹치는 숫자를 계산하여쉽게 찾을 수 있습니다. 각 C ( s의 난 ) 이 단계는 수행 될 수 O ( N 로그 N 시간, 거기 N 이 알고리즘의 시간 복잡도가 있으므로 이러한 원은 O ( N 2 로그 N ) .
어려운 질문은 선택한 원이 실제로 세트 내에서 "최대"인지 아는 것입니다. 내가 이것을 결정할 수있는 유일한 방법은 가능한 모든 점 조합을 시도하고 점을 둘러싸는 원의 크기를 테스트하는 것입니다.
먼저 점 공간을 너비가 2r 인 정사각형 셀 격자로 나눠서 검색 공간을 줄일 수 있습니다. 그런 다음 밀도가 가장 높은 셀을 찾으십시오. X 점의 원 하나를 이미 찾았으므로 더 많은 점이있는 원이 있으면 그 안에 X 점 이상이 있어야한다는 결론을 내릴 수 있습니다. 그리고 이것을 여러 가지 조합의 포인트를 테스트하기위한 시작점으로 사용하십시오.
최대 일 가능성이있는 일련의 점만 찾으려면 이웃의 밀도가있는 셀의 주변에 해당하는 지점을 선택하여 테스트해야하는 조합 수를 추가로 줄일 수 있습니다 X보다 큽니다.
이것을 말하면, "감소"는 모두 실패 할 수 있으며, 최악의 경우 가능한 모든 포인트 조합에 대한 원을 계산하게됩니다.