주어진 반지름의 최대 둘러싸는 원


19

다음 문제에 대한 접근 방식을 찾으려고합니다.

점 와 반지름 r 의 세트로 , 원이 세트의 최대 점 수를 포함하도록 원의 중심점을 찾으십시오. 실행 시간은 O ( n 2 ) 여야합니다 .SrO(n2)

처음에는 에서 쉽게 해결할 수있는 가장 작은 엔 클로징 서클 문제와 비슷한 것으로 보였습니다 . 아이디어는 임의의 중심을 설정하고 S의 모든 지점을 둘러싼 것입니다 . 다음으로, 단계별로 원을 교체하여 가장 왼쪽 / 가장 오른쪽 점을 터치하고 원을 주어진 반지름으로 줄이십시오. 분명히 작동하지 않습니다.O(n2)S

답변:


7

시간 에이 문제를 해결하는 방법을 모르지만 O ( n 2 log n ) 알고리즘이 존재합니다.O(n2)O(n2log⁡n)

하자 는 중심 인 원 수 s의 I를 상기 전 반경을 가진 번째 포인트, R . 이 지점 세트 찾기 어렵지 않다 P = { P 0 , P 1 , ... , P는 m이 } 반경을 가진 원에 의해 둘러싸인 수 R 교차 IFF I ( P ) 의 C ( P 0 ) , C ( P 1 ) , …C(si)siirP={p0,p1,…,pm}rI(P) 는 비어 있지 않습니다. 경우 또한, I ( P는 ) 비어 있지 않은, 몇 가지 포인트가 있어야 I ( P ) 일부에 누워 BD의 C ( P I ) (의 경계 C ( P I ) ). 그래서 각각 C ( s의 I를 ) 각각의 점 P 의 bondary에, 우리는 원 포함 얼마나 많은 찾으려고 쪽 . 모든 p 중 최대 개수는이 문제에 대한 답입니다.C(p0),C(p1),…,C(pm)I(P)I(P)bdC(pi)C(pi)C(si)ppp

의 점을 살펴 보자 . bd C ( s i )의 점 과 [ 0 , 2 π ) 의 실수 사이에는 일대일 매핑이 있습니다. 각 원 들어 C ( S J ) 사이의 교점 C ( S J ) 및 BD C ( s의 I를 ) 의 간격에 의해 표현 될 수있다 [ B의 전자 g I N JbdC(si)bdC(si)[0,2π)C(sj)C(sj)bdC(si) . 그래서 제외한 모든 원에 대한 C ( s의 난을 ) 대부분에있다 N - 1 개 간격 (일부 서클 수 없습니다 교차와 C ( s의 I ) ). 최대 카운트는간격의 2 ( n - 1 ) 끝점을모두 정렬하고순서대로 스캔하고 현재 겹치는 숫자를 계산하여쉽게 찾을 수 있습니다. 각 C ( s의 난 ) 이 단계는 수행 될 수 O ( N 로그 N[beginj,endj]C(si)n−1C(si)2(n−1)C(si) 시간, 거기 N 이 알고리즘의 시간 복잡도가 있으므로 이러한 원은 O ( N 2 로그 N ) .O(nlog⁡n)nO(n2log⁡n)


2
원의 배열은 표준 무작위 증분 알고리즘을 사용하여 시간 (높은 확률로) 으로 구성 될 수 있습니다 . 실제로, 실행 시간은 O ( n log n + k ) 이며, 여기서 k 는 교차하는 원 쌍의 수입니다. 좋아하는 전산 기하학 교과서를 참조하십시오. O(n2)O(nlog⁡n+k)k
— JeffE

2

어려운 질문은 선택한 원이 실제로 세트 내에서 "최대"인지 아는 것입니다. 내가 이것을 결정할 수있는 유일한 방법은 가능한 모든 점 조합을 시도하고 점을 둘러싸는 원의 크기를 테스트하는 것입니다.

먼저 점 공간을 너비가 2r 인 정사각형 셀 격자로 나눠서 검색 공간을 줄일 수 있습니다. 그런 다음 밀도가 가장 높은 셀을 찾으십시오. X 점의 원 하나를 이미 찾았으므로 더 많은 점이있는 원이 있으면 그 안에 X 점 이상이 있어야한다는 결론을 내릴 수 있습니다. 그리고 이것을 여러 가지 조합의 포인트를 테스트하기위한 시작점으로 사용하십시오.

최대 일 가능성이있는 일련의 점만 찾으려면 이웃의 밀도가있는 셀의 주변에 해당하는 지점을 선택하여 테스트해야하는 조합 수를 추가로 줄일 수 있습니다 X보다 큽니다.

이것을 말하면, "감소"는 모두 실패 할 수 있으며, 최악의 경우 가능한 모든 포인트 조합에 대한 원을 계산하게됩니다.


1

O(n2)

O(n2)

2n2O(n2log(n))

O(n2)O(n2)

V+E−F=2O(n2)


이것이 받아 들여진 답변의 보완 물로 읽히고 독자적으로 읽히지 않아야한다면 (이 주제에 대해 무지하기 때문에 알지 못합니다), 그것에 대해 명시해야합니다.
— babou
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.