일련의 점에서 가장 흩어진 점 선택


15

부분 집합을 선택하는 (효율적인) 알고리즘이 있습니까?M 세트로부터 포인트 점 ( M < N (크기의 모든 가능한 부분 집합을 통해) 예들은 "표지"대부분의 영역 M은 )?NM<NM

점이 2D 평면에 있다고 가정합니다.

순진한 알고리즘은 단순하지만 시간 복잡성 측면에서 금지 적입니다.

for each subset of N points
    sum distance between each pair of points in the subset
    remember subset with the maximum sum

더 효율적이거나 근사한 방법을 찾고 있습니다.

예를 들어, 여기에 임의의 점이있는 평면이 있습니다.

여기에 이미지 설명을 입력하십시오

들어 , 나는이 같은 선택 사항을 기대합니다 :M=5

여기에 이미지 설명을 입력하십시오

선택한 점 (빨간색)이 평면 전체에 흩어져 있습니다.

이 문제와 관련된 기사 " 시각적 추적을위한 적절한 분산 키포인트를 효율적으로 선택 "기사를 찾았습니다 . 그러나 이것은 포인트에 가중치가 부여되었다고 가정합니다.


2
경우 StackOverflow : Algorithm에서 O (n ^ 2)보다 더 멀리 떨어져있는 점을 찾는 방법을 참조하십시오 . . M=2
hardmath

불행하게도, 은 보통 1500-5000이고 M 은 10-50입니다. NM
Libor 2016 년

있습니까 N은 고정 둘, 또는 당신은 변화하는 M을 (당신이 최대화하기 원하기 때문에, 예를 들어,뿐만 아니라 평균 거리를하는 경우가 증가하고, M은 더욱 감소를 얻을 수 있습니다)? MNMM
Wolfgang Bangerth 2016 년

1
나는 이것이 NP 하드라고 의심합니다. 두 정점 사이의 모서리 가중치가 유클리드 거리 사이 인 최대 가중치 문제와 매우 유사합니다. (나는 max-clique로 알려진 실질적으로 효과적인 휴리스틱이 있다고 생각한다. 그들이 어느 것인지 확실하지 않다.)
tmyklebu

1
@hardmath 죄송합니다. 오타였습니다. 나는 달성해야 할 것을 설명하려고 노력했다. 문제는 이미지 특징 추출에서 비롯됩니다. 여기서 소수의 포인트 특징 만 가져와야하지만 변환 추정에 사용되기 때문에 모든 이미지에 흩어져 있어야하며 공간적으로 흩어져 있으면 추정이 더 안정적입니다. 아마도 "엔트로피"가 더 나은 척도 일 것입니다. 최대 엔트로피 상태의 가스처럼 지점 을 선택 하여 모든 곳에서 사용하고 싶습니다. 반면에, 선택한 지점이 군집화되는 것을 피하려고합니다. M
Libor

답변:


11

대략적인 해결책은 다음과 같습니다. 이후 N이 너무 크고, M은 너무 작아서, 어떻게 다음에 대해 :

  1. N 의 볼록 껍질을 계산
  2. 선체에서 최대 거리 기준을 충족하는 최대 M 개의 점을 선택하십시오 .
  3. 2 단계에서 M 보다 적은 수의 점을 남겨두면 내부에서 1 점을 선택하여 이전에 선택한 점과의 거리를 최대화합니다.
  4. 선택한 점의 수가 M 이 될 때까지 3 단계를 반복하십시오.

그 직관은 N >> M 이기 때문에 가능한 한 서로 멀리 떨어진 지점을 원하기 때문에 데이터의 가장자리에 가까울 수 있으므로 선체로 시작한 다음 반복적으로 시작할 수 있습니다 거기에서 당신의 방법을 작동합니다.

또한 선체부터 시작하여 초기 검색을 N에서 N 1/2로 줄 입니다.


최신 정보

위의 3 단계와 4 단계가 너무 오래 걸리는 경우 (데이터 세트 내부를 반복적으로 테스트하기 때문에) 문제를 가속화하기 위해 두 가지 아이디어가 더 발생했습니다.

  1. 무작위 검색 : 2 단계에서 선체에서 P 포인트 를 찾았다 고 가정합니다 . 그런 다음 내부에서 M - P 포인트를 임의로 그립니다 . X 시행 후 최상의 세트를 선택하십시오.
  2. 시뮬레이션 어닐링 : 데이터 세트를 덮는 가장 작은 경계 상자를 계산합니다 (축과 정렬 할 필요가없고 기울어 질 수 있음). 그런 다음 해당 경계 상자에 균일하게 분포 된 M 그리드 점 세트를 정의하십시오 . 이 점들이 반드시 데이터 셋 점과 일치하지는 않습니다. 그런 다음 각 그리드 점에 대해 데이터 세트에서 k- 가장 가까운 이웃을 찾으십시오 . 모든 M x k 조합을 실행하고 최대 거리 기준을 만족하는 조합을 선택하십시오. 다시 말해, 초기 그리드를 부트 스트랩으로 사용하여 올바른 초기 솔루션 을 찾습니다 .

감사. 어쩌면 공식이 질문을 잘못 공식화했을 수도 있습니다. 나는 그들이 대부분의 영역을 "덮을"수 있도록 일련의 포인트를 목표로하고있다. 거리 기준만으로 충분하다고 생각했지만 더 추가해야 할 것처럼 보입니다.
Libor

M

1
아마도 문제를 더 공식적으로 설명하는 방법 은 N 을 커버 하고 평균 테셀레이션 패싯 영역을 최소화하는 M 크기의 테셀레이션을 원 하십니까? 패싯 영역을 최소화하는 것이 포인트를 퍼 뜨리고 서로 뭉치지 않도록하는 방법 인 것 같습니다.
dpmcmlxxvi 2016 년

예. 점이 그리드 선 주위에 우연히 군집화되어 선택 영역에서 군집화되기 때문에 그리드 사용을 피하고 싶었습니다.
Libor 2016 년

욕심 많은 알고리즘의 한 가지 문제는 초기 시드 포인트에 매우 민감하다는 것입니다. 시드 성장 알고리즘 (내부에서 시작하는 위치)에 문제가 있습니다. 내가 언급 한 선체 접근 방식은 외부에서 작동하기 때문에 아마도 더 안정적 일 것입니다.
dpmcmlxxvi 2016 년

6

NM

MM

M1M=3,4,5

M=31M=4M=51

주변에서 점의 선택을 지배하지 않으려면 다른 목표가 유용하다는 것이 입증됩니다. 점 사이의 최소 거리를 최대화하는 것이 그러한 기준입니다. 관련 문제는에서 끄집어 된 에 StackOverflow 에서 컴퓨터 과학 SE 에서, Math.SE , 그리고에 MathOverflow .

MDMD


1

자, 유클리드 평면의 주어진 N 점 세트에서 M 점을 선택하여 선택한 점의 쌍 거리 거리의 합이 최대가됩니까?

표준 지역 검색 알고리즘은 매우 빠르며 근사치가 매우 좋습니다. 런타임은 N에서 선형이고 M에서 2 차입니다. 근사 비율은 1-4 / M입니다. 이것은 M이 증가함에 따라 비율이 더 좋아진다는 것을 의미합니다. 예를 들어 M = 10의 경우 60 %의 최적 값을 얻 고 M = 50의 경우 92 %의 최적 값을 얻습니다.

이 알고리즘은 일반적인 차원의 유클리드 공간에서도 작동합니다. 이 경우 문제는 NP-hard입니다. 그러나 비행기에서 NP-hard인지는 알 수 없습니다.

출처는 이 논문 입니다. 도움이 되었기를 바랍니다! 알폰소 최고



1
나는 이미 "영상 추적을위한 공간적으로 분산 된 키포인트를 효율적으로 선택"논문에서 "디스크 커버링을 통한 억제"알고리즘을 사용하여이 문제를 이미 해결했습니다. IEEE, 2011
Libor

1
Alfonso, 제안 된 논문에 대한 귀하의 소속을 명시하십시오.
nicoguaro

0

한 가지 해결책은 다음과 같습니다.

  • 에 경계 사각형 만들기O(n)

  • 이 경계 사각형 내부에 M 을 분산 점으로 만들면 일부 M 은 다른 것보다 더 어렵습니다. 귀하의 경우 직사각형 모서리에 4 개, 중앙에 1 개

  • O(n(log(n)))

  • O(m(log(n)))

O(n(log(n)))MN

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