2009-08-31 3 views
3

다음과 같은 개념을 사용하여 점의 '모양'을 요약 한 다각형 (또는 다각형 집합)을 생성 할 2D 점 집합이 있습니다. :'로컬 볼록 헐 (convex convex hulls)'의 합집합을위한 빠른 알고리즘

집합의 각 점에 대해 그 점의 반경 R 내의 모든 점의 볼록 선체를 계산합니다. 각 점에 대해 이렇게 한 후에는 최종 모양을 생성하기 위해 이러한 볼록한 껍질의 결합을 가져옵니다.

실제로 이러한 모든 볼록 선체를 구성하는 무차별 대입 접근법은 O (N^2 + R^2 log R)와 같습니다. 동일한 결과를 산출하는 알려진 알고리즘이 있습니까? 아니면 문제를 표현하는 다른 방법일까요?

참고 : 알파 모양을 알고 있습니다. 위에서 설명한 내용을 수행하는 알고리즘을 찾고 있습니다.


다음 해결책은 MATLAB에서 실험적으로 반증됩니다.

업데이트 : 제안 된 해결책이 있습니다.

命 令 : 점 집합의 Delaunay 삼각 측량을 취하고 R보다 큰 circumradius를 갖는 모든 삼각형을 제거한 다음 나머지 삼각형의 합집합을 취합니다.

+0

나는 무엇을 성취하려고하는지 잘 모르겠습니다. 볼록한 것보다 포인트 클라우드의 모양을 더 잘 표현하는 볼록하지 않은 선체입니까? –

+0

예, 맞습니다. 알파 모양과 비슷합니다 : http://www.cgal.org/Manual/3.4/doc_html/cgal_manual/Alpha_shapes_2/Chapter_main.html. 나는 내 방법으로 내가 작업하고있는 데이터에 대해 더 시각적으로 더 나은 결과 (IMO)를 생성한다는 것을 제외하고는. – James

답변

0

예, 회전식 캘리퍼스를 사용합니다. 내 교수님이 여기에 some stuff을 작성 하셨으며, 19 페이지에서 시작됩니다.

+0

재미있는 정보 주셔서 감사합니다,하지만 어떻게 문제를 해결하는 데 사용할 수 있는지 모르겠습니다.회전 캘리퍼스가 부분 볼록 선체를 단일 볼록 선체로 병합하는 접선을 찾는 데 어떻게 사용되는지는 볼 수 있지만 볼록 선체 조합과 다른 점은 결과가 오목하거나 구멍이있을 수 있다는 것입니다. 내가 놓친 게 있니? – James

+0

아 ... "노조"가 의미하는 바를 오해 한 것 같습니다. 나는 당신이 그들을 단일 볼록 선체로 합치기를 원한다고 생각했습니다. 이 경우 선체와 볼록하지 않은 폴리곤을 사용할 때 어떤 이점이 있는지 확실하지 않습니다. 기존 알고리즘을 살펴보고 볼록 다각형의 속성을 활용할 수있는 조정이 있는지 확인하는 것이 좋습니다. – mpen

+0

알았어, 네, 나는 '올바른'용어를 사용하지 않았을 수도있다. 어쨌든, 위 질문에 제안 된 해결책을 추가했습니다. 생각이 있다면 알려주십시오. 건배. – James

0

문제를 오해 한 경우 알려주십시오.

최악의 경우 모든 볼록한 선체를 무차별 대입하는 방법에 대해 N^2 시간을 얻는 방법을 알지 못합니다(). 거의 모든 2 점이 R보다 가깝다면 -이 경우에는 볼록 선체를 구성하기 위해 최소한 N^2 * logN이 필요합니다.

또한 추정치의 R^2 * logR은 어디서 오는가?

거대한 N에 대한 최악의 경우 - 반경 R/2의 원을 가져 와서 그 경계선과 그 바로 바깥에 점을 무작위로 배치합니다.

+0

예, 그 점에 대해서는 분명하지 않았습니다. 실제로는 최악의 경우는 아니지만 균일 분포 점과 충분히 작은 R에 대한 평균값이다. N^2는 반경 R 내의 점 집합을 찾는 데 사용된다. 각 지점. (N 점 각각에 대해 남은 N-1 점까지의 거리를 확인해야합니다.) R^2는 균일 한 점 분포를 가정하므로 각 볼록 선체의 점 수는 R^2에 비례합니다. R^2 점의 볼록 선의 계산은 O (R^2 log R)입니다. 마지막으로, N 개의 볼록 선체 조합을 사용하여 나는 확신 할 수 없으며 빠져 나갔다. – James

1

sweep line algorithm은 R- 네이버 검색을 향상시킬 수 있습니다. 또는 너비가 R 인 정사각형 격자의 이웃 사각형에있는 점 쌍만 고려하면됩니다. 두 아이디어 모두 N^2를 없앨 수 있습니다 - 물론 점이 상대적으로 희박한 경우에만 가능합니다.

나는 Olexiy의 예에서와 같이 포인트가 희소하지 않더라도 N^2를 없애 버리는 선회 및 볼록 선체의 영리한 조합이 있다고 믿지만 구체적인 알고리즘은 제시 할 수 없습니다.

+0

아이디어를 주셔서 감사합니다. 이제 스윕 라인 방식을 사용하는 솔루션을 시도하고 있습니다. 내가 좋은 해결책을 생각해 내면 다시 게시하게 될 것이다. – James

관련 문제