2010-03-03 3 views
7

2 차원 점 (x, y)을 플로트 좌표로 나타냅니다. 그리면 점이 서로 가까워지면 그룹화해야하며 그룹화해야합니다 고정 된 크기의 사각형 도움. 그리고 문제는이 직사각형들이 교차하지 않아야하고, 모든 점 - 이웃들이 그룹화되어야한다는 것입니다.
근처에 종이가있는 경우 큰 사각형을 그릴 수 있습니다 (예 : 4 * 5cm - 모든 지점이있는 영역). 이제 무작위로 포인트를 넣고, 거리가 1cm 인 포인트가 있다면, 사각형 2 * 3으로 그룹화해야합니다.서로 가까이있을 때 그룹화 점

알고리즘을 만드는 방법 및 성능 문제도 찾을 수 없습니다 ... 중첩, 클러스터링을 찾았지만 필요한 것은 조금 다릅니다. 그런데 어떤 그룹화 사각형이 조건에 맞는 공통 영역을 벗어나야하는 경우 문제가되지 않습니다. 예 : 당신은 지역 4 * 5, 그리고 다른 모든 지점이 분류 되었기 때문에

(1,0), (2,1), (4,1), (4,3), (2,4) 

다음 rectangles (0,0 - 3,2) & (3,1 - 6,3) and one point left (2,4)을 좋아해야 될 점과이 점은 지금 어떤 이웃이 없습니다.
내 포인트의 좌표는 정수가 아니고 부동입니다. 포인트 수는 몇 백 (최대 500) 일 수 있습니다. 그리고 나는 같은 직사각형의 영역을 깨뜨리고 단지 얼마나 많은 점이 있는지를 계산하고 싶지 않습니다. 예를 들어 위의 예를 들어 내가 반응 영역 (0,0 - 3,2)을 만들 수 있다는 것을 의미합니다 (3,0 - 6,2) , (0,3 - 3,6), (3,3 - 6,6) 그리고 단지 첫 번째 rect에 대해 2 점을 요약하고, 두 번째에 대해서는 1 (!), 세 번째에 대해서는 1, 4 번째에 대해서는 1 작업에 따라 하나의 rect가 그려지고 다른 모든 점은 => 틀린 결과가됩니다. 아이디어가 있으십니까? 적어도 어떤 알고리즘이 도움이 될 수 있습니까? 어디서 찾을 수 있습니까?

P.S. 현재 결과의 그룹 수/포인트 수는 중요하지 않습니다. e.i. 위의 예와 같이 허용되는 또 다른 결과는 (1,0-4,2) 및 (2,2-5,4) 직사각형 일 수 있으며 점이 남아 있지 않습니다.

+0

그래서 사용이 허용 된 사각형의 치수는 고정되어 있으며 축 정렬되어 있습니까? 그리고 남은 점수를 최소화하고 싶다고 생각합니다. 맞습니까? – Jacob

+0

예, 치수가 고정되어 있습니다 (x * y), 회전 할 수 없습니다 (x * y는 x * y를 의미하고 y는 * x로 바꿀 수 없습니다). 최소화에 대해서, 지금은 아니오. 결과는 주어진 거리보다 가까운 다른 점을 갖는 점을 포함해서는 안되며, 그 점은 모두 – Maxym

+0

입니다. 직사각형이어야하며 정확해야합니까? k와 같은 것을 사용할 수 있습니다 : http://jsfiddle.net/8NpNp/2/ – david

답변

1

일반적인 문제는 "nearest neighbor"검색입니다. 솔루션은 계산이 어렵습니다 (시간 복잡성). 인간을위한 매우 쉬운 작업은 계산하기가 쉽지 않습니다.

+0

지금은 사각형으로 점을 다루는 데 더 많은 문제가 있습니다. 그룹으로 묶어야하는 모든 점 집합, 모든 직사각형이 서로 교차하지 않는 방식으로 사각형을 "두는"방법을 알고 있다고 가정 해 봅시다. .. – Maxym

+1

공간 분할 알고리즘에 대한 지식의 한계를 넘어서고 있지만 kd 트리는 겹치는 부분을 찾는 O (n^2)의 고통을 덜어주기 위해 설계되었습니다. 실제로 kd 트리를 사용하여 원래 점 집합을 분할하면 겹치지 않는 사각형이 결과의 불변 속성이됩니다. http://en.wikipedia.org/wiki/Kd_tree – msw

+0

어쩌면, 어쩌면 ...하지만 위키의 예제보다 더 많은 데이터를 가지고 있고 커버 할 사각형의 크기를 고려하면 걱정됩니다. 그것들은 작동하지 않을 것입니다. 나는 그것에 대해 더 생각해야한다. 예, 분해는 겹치는 것에 신경을 쓰지 만, 일반적으로 분해는 사각형의 크기를 신경 쓰지 않습니다. 그래서 나는 확실하지 않습니다. 그러나 그것에 대해 생각할 가치가 있습니다. 가리켜 주셔서 감사합니다. – Maxym