전산 기하학을 배우고 있으며, convex hull을 계산하기위한 빠른 선체 알고리즘에 대한 주제를 배우기 시작했습니다. 나는 질문을 가지고 있는데, 만약 내가 알고리즘이 최악의 시간 복잡성을 가질 2D 점 (말하자면 10 점)의 집합을 그렸으면 어떻게 할 것인가? 포인트가 무엇인지 알아내는 쉬운 방법이 있습니까?빠른 선체 알고리즘에 의한 convex convex hull 컴퓨팅
빠른 선체 알고리즘의 의사 코드
전산 기하학을 배우고 있으며, convex hull을 계산하기위한 빠른 선체 알고리즘에 대한 주제를 배우기 시작했습니다. 나는 질문을 가지고 있는데, 만약 내가 알고리즘이 최악의 시간 복잡성을 가질 2D 점 (말하자면 10 점)의 집합을 그렸으면 어떻게 할 것인가? 포인트가 무엇인지 알아내는 쉬운 방법이 있습니까?빠른 선체 알고리즘에 의한 convex convex hull 컴퓨팅
빠른 선체 알고리즘의 의사 코드
here을 찾을 수 있습니다 나는 아무 거부 이제까지 주어진 점은 볼록 다각형을 형성 할 때, 즉 발생하지 때 QuickHull의 최악의 경우는 추측 파티션은을 때 가장 불균형 한
각도를 기하학적으로 줄이면서 원을 따라 점을 찍을 수 있습니다.
예를 들어 2D 점을 알려주시겠습니까? @ Yves Daoust – user5411115
최악의 경우 시간 복잡도 동작을 생성 할 수 있습니다 점 세트를 건설하는 것은 당신이 공부하는 재료에 주어진 특정 의사에 따라 달라집니다.
Quickhull의 최악 복잡도 O (N 2)이며, 평균의 경우 성능 O (NlogN)이다. 당신이 보았을 지 모르겠지만, 퀵홀은 분단 및 정복 전략을 따릅니다. 따라서, 후자 (즉,보다 양호한) 시간 복잡성을 달성하는 것은 문제를 2 개의 유사한 크기의 (이상적으로는 동일한) 하위 문제로 나눌 수 있는지에 달려있다. 분할 단계가 균형을 이루지 않고 2 개의 하위 문제 요소의 수가 크게 다를 경우 알고리즘은 N 번 반복해야합니다. 다시 말하면, 각각의 재귀 적 단계에서, 문제의 크기는 원래 문제의 크기의 일부분으로 줄이는 대신에 일정한 양만큼 줄어들 것이다.
사용자가 제공 한 의사 코드는 가장 낮은 X 좌표 (즉, 가장 왼쪽 및 오른쪽 끝점)가있는 점을 경계로 사용하여 공간을 2로 나눕니다. 이상적으로 이것은 점을 두 개의 똑같은 큰 세트로 나누어야합니다. 그러나이 방법이 입력으로 주어진 특정 점에 비효율적으로 렌더링되면 어떻게 될까요? 그런 다음 각 단계에서 일정한 양의 점 (예 : c
)을 제외하고 다른 절반에는 여전히 N-c
점이 포함됩니다. 따라서 문제는 O (N) 단계를 반복해야하며 2 차 복잡도로 끝납니다.
이러한 예제 중 하나는 포인트가있는 V 모양을 그리는 것이라고 생각합니다. 아래에 나와 있습니다.
(0, 5)
(10, 5)
(1, 4)
(9, 4)
(2, 3)
(8, 3)
(3, 2)
(7, 2)
(4, 1)
(6, 1)
(5, 0)
원의 모든 점이 최악의 경우에 떨어지겠습니까? @ilim – user5411115
@ user5411115 원 **의 모든 ** 점에 대해 이야기하고 있다면 그렇습니다. (원의 아래쪽 절반 또는 위쪽 절반도 충분합니다.) 그러나 원의 특정 점 집합을 참조하는 경우 최악의 경우 동작은 특정 점 집합에 따라 달라집니다. 당신도 역시 관찰 할 수 있듯이, 내가 대답 한 V 자형 예제는 반원에 점들의 이산 버전이었습니다. – ilim
연구 결과는 무엇입니까? 확실하게 알고리즘의 단계를 조사해 보면 * 단서를 얻을 수 있습니다. 공부하고있는 의사 코드와 예비 결론을 게시하지 않는 이유는 무엇입니까? – beaker
여기에 다음과 같은 의사 코드가 있습니다. @beaker http://www.cse.yorku.ca/~aaw/Hang/quick_hull/Algorithm.html – user5411115
의미가있는 경우 최악의 경우 10 포인트가 너무 낮습니다. 그런데 고정 된 수의 점에 대해서 모든 알고리즘은 정확히 같은 복잡성을 가지고 있습니다. O (1) –