거의 간단한 두 종류의 다각형 감지


22

나는 주어진 비 단순 다각형인지 여부 결정의 복잡성에 관심이 거의 두 개의 서로 다른 형식적인 감각 중 하나에, 간단한 : 약하게 단순 또는 비 자기 횡단 . 이러한 용어는 널리 알려지지 않았으므로 몇 가지 정의부터 시작하겠습니다.

  • 다각형 어떤 한정된 서열 연결 선분의 폐쇄 사이클 평면의 포인트. 점 다각형 의 꼭짓점 이라고 하고, 세그먼트 을 모서리 라고 합니다 . 꼭짓점을 순서대로 나열하여 다각형을 지정할 수 있습니다.Pp0,p1,p2,,pn1pipipi+1modn

  • 모든 n 개의 정점이 구별되고 가장자리가 끝점에서만 교차하는 경우 다각형은 간단 합니다. 마찬가지로 다각형은 원에 동종 이형이고 모든 모서리의 길이가 양이면 간단합니다. 그러나 일반적으로 다각형의 정점과 모서리는 임의로 교차하거나 심지어 일치 할 수도 있습니다. 1n

  • 교차점이 둘 다의 공통 하위 경로 인 단일 다각형 경로 AB 두 개를 고려하십시오 B. 우리는 말을 그 와 B의 교차 경우 끝점 A (0), B (0), A (1), B (1) 일반적인 서브 패스의 이웃의 경계에 대체 \ 캡 B . 다각형은 자기 교차 는 두 개의 교차 서브 패스를 가지고있는 경우 비 자기 - 교차 그렇지. 2AB A(0),B(0),A(1),B(1)AB

  • 다각형은 단순한 다각형 시퀀스의 한계 인 경우 또는 약하게 정점에 교란이있어 다각형을 단순하게 만드는 경우에 약합니다. 약한 단순한 다각형은 모두 자체 교차하지 않습니다. 그러나 일부 자체 교차 다각형은 약하게 단순 하지 않습니다 .

예를 들어 아래에 표시된 6 개의 점 a, b, p, q, x, y를 고려하십시오 a,b,p,q,x,y.

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

  • 다각형 abpqyz 는 간단합니다. 왼쪽 그림을 참조하십시오.

  • 다각형 papbpqyqzq 는 약하게 단순합니다. 가운데 그림은 근처의 간단한 다각형을 보여줍니다. 그러나이 다각형은 p 세 번 방문하기 때문에 단순하지 않습니다 .

  • 와 교차 하기 때문에 다각형 는 자체 교차입니다. 직관에 대한 올바른 그림을 참조하십시오.b p q zpapbpqzqyqbpqzyqpa

  • 마지막으로, 다각형 (중간 다각형 주위를 두 번 감는) 다각형은 자체 교차 하지 않지만 약하게 단순 하지는 않습니다 . 직관적 으로이 다각형 의 회전 수 는 이고 간단한 다각형의 회전 수는 이어야합니다 . (정확한 증거는 부분적으로 angles의 다각형에 대해 터닝 번호가 잘 정의되어 있지 않기 때문에 일부 사례 분석이 필요합니다 !)± 2 ± 1 0 papbpqyqzqpapbpqyqzq±2±10

업데이트 (9 월 13 일) : 아래 그림에서 다각형 는 자체 교차 하지 않으며 회전 수가 1 이지만 약한 것은 아닙니다. 다각형은 틀림없이 여러 교차가 아닌 단순 subwalks을 하지만, 더 크로싱이없는 간단한의 서브 패스를 . (단순하지 않은 두 보행이 언제 교차하는지 정의하는 방법이 확실하지 않기 때문에 "논쟁 적으로"라고 말합니다!)abcabcxyzxpqrxzyx

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

마지막으로 실제 질문은 다음과 같습니다.

  • 주어진 다각형이 자체 교차하지 않는지를 얼마나 빨리 확인할 수 있습니까?

  • 주어진 다각형이 약한 지 여부를 얼마나 빨리 확인할 수 있습니까?

첫 번째 문제는 다음과 같이 시간 안에 해결 될 수 있습니다 . 정점 이 개 이므로 정점 대 정점 하위 경로가 있습니다. 시간 에 특정 하위 경로가 단순한 지 (무차별 테스트 할 수 있습니다 . 간단한 정점에서 정점으로가는 서브 패스 쌍마다 시간에 교차하는지 테스트 할 수 있습니다 . 그러나 이것이 최선의 알고리즘 이 될 수는 없습니다 .N O ( N 2 ) O ( N 2 ) O ( N )O(n5)nO(n2)O(n2)O(n)

나는 두 번째 문제가 다항식 시간에 해결할 수 있는지 모르겠습니다. 단순하지 않은 다각형에 대해 잘 정의 된 회전 수를 빠르게 계산할 수 있다고 생각합니다 (다각형 모서리의 결합이 경로 인 경우를 제외하고는 다각형이 약한 단순해야 함). 아래 내 답변을 참조하십시오. 그러나 위의 새로운 예 폴리곤은 자체 교차 및 터닝 번호 1이 단순 하지 않다는 것을 의미합니다.

우리는 주어진 다각형인지 여부를 결정할 수 간단한 에서 또는에 대해 교차 에지들의 모든 쌍을 확인하여 타임 , 또는 표준 sweepline 알고리즘을 사용하여 시간 시간 Chazelle의 삼각 분할 알고리즘을 사용합니다. (입력 다각형이 단순하지 않은 경우 삼각 측량 알고리즘은 예외, 무한 루프를 발생 시키거나 유효한 삼각 측량이 아닌 출력을 생성합니다.) 그러나 이러한 알고리즘 중 어느 것도 내가 요구하는 문제를 해결하지 못합니다. O ( N 로그 N ) O ( N를 )O(n2)O(nlogn)O(n)


1 브랑코 그 ün 바움. 다각형 : Meister는 옳았 고 Poinsot는 틀렸지 만 우세했습니다 . Beiträge zur Algebra and Geometrie 53 (1) : 57–71, 2012.

2 예를 들어 : Erik D. Demaine과 Joseph O'Rourke. 기하 접기 알고리즘 : 링키지, 종이 접기, 다면체 . 케임브리지 대학 출판부, 2007.


왜이 질문에 대한 투표를했는지 이해할 수 없습니까?!
Kaveh

나는 질문을 완전히 이해하지 못했을 수도 있습니다. 그래서 이것이 잘못되었을 수도 있습니다. 그러나 정점을 계산하는 방식은 두 번째 질문이 기하 급수적으로 걸리는 것을 의미합니다. 설명하겠습니다 : 마지막 예에서는 동일한 정점을 여러 번 사용합니다. 지수가 고유 한 사이클이있는 경우 그래프를 작성하는 것이 쉬운 것 같습니다.
Joe Fitzsimons

입력 내용이 예제에서와 같이 제공된 다각형 인 경우 사이클을 반복하지 않고도 입력이 정점 수에서 지수 적으로 증가 할 수 있습니다. 그래프에 예제 그래프 (2 및 3)가 하위 그래프로 포함 된 경우 비교 차주기와 교차하는주기가 있습니다. 결과적으로 교차주기 (포함되었거나 포함되지 않았을 수 있음)가 없도록 전체 문자열을 읽어야합니다. 최악의 경우 시간 지수가 으로 걸립니다 . n
Joe Fitzsimons

1
@JoeFitzsimons : 입력은 단지 일련의 점들 (즉, 실수 쌍)이며 구별 할 필요는 없습니다. 입력 크기 상기 시퀀스의 길이이다 없는 독특한 점의 수. n
Jeffε

2
@ Kaveh : 아마도 너무 추상적이거나 전문적입니까? 너무 많은 단어? 나는 점을 Ga, Ka, Naa, Taa, Tin, Khat 라고 명명 했어야 합니까?
Jeffε

답변:


2

첫 번째 질문에는 알고리즘 이있는 것처럼 보입니다 (이것은 최적이 아닐 수도 있음). 교차점이 있다고 가정하면, 발견해야 할 모서리는 공통 서브 패스의 양쪽에있는 모서리 여야합니다. 따라서 모든 쌍의 연속 모서리 쌍을 살펴 봅니다. 이들의 2 차 수가 있습니다. 만약 모서리 와 가 동일 하도록 꼭지점 와 갖는 한 쌍의 모서리를 찾으면 , 끝까지의 공통 서브 패스를 따라가는 모서리를 검사합니다. 그들이 와 와 함께 교차점을 형성한다면a b cO(n3)abcb c e f a b d e O ( n 3 )defbcefabde우리는 끝났고, 그렇지 않으면 다음 쌍으로 넘어갑니다. 공통 서브 패스를 따르는 것은 최대 선형 시간 연산이므로 전체 알고리즘은 입니다.O(n3)

선형 길이의 공통 서브 패스가 따르는 횟수가 쌍의 쌍의 수에서 선형이 아니기 때문에이 분석은 타이트하지 않을 것입니다. 그 숫자는 일정해야합니다. 마찬가지로, 가장 긴 공통 서브 패스의 길이가 일정하다면, 공통 서브 패스를 따르는 시간의 양으로도 괜찮습니다. 길이의 단일 하위 경로가있을 때 나는 최악의 경우가 발생 것을 기대 에 공통적 인 서브 패스가. 그런 다음 상호 작용이 있으며 각 상호 작용에서 가장자리가 따르고 있습니다. 그럼에도 불구하고 따르는 모서리의 수는O(O(n)O(n)O(O(n)O(n)o(n2)O(n2)O(n)o(n2)이며 바운드 수는 쌍 수로 제공됩니다. 따라서이 알고리즘의 진정한 한계는 입니다.O(n2)


1
"공통 하위 경로를 따르는 것은 최대 선형 시간 작업입니다 ..."이것이 사실입니까? 서브 패스는 동일하지 않습니다. 하나는 다른 하나의 이미지를 따라 앞뒤로 접을 수 있습니다. 사실, 당신이 끝났다는 것을 알 때조차 분명하지 않습니다.
Pat Morin

좋은 지적. 전처리 단계로서 다각형을 어떤 종류의 표준 형태로 놓을 수 있습니까? 우리는 바로 접히는 길과 인접한 이웃과 공선 인 정점을 제거합니다. 그런 다음 인용 한 문장이 더 잘 정의됩니다. 공통 하위 경로는 동일한 꼭지점을 가진 모서리로 구성되며 다른 꼭지점을 쳤다는 것을 알고 있습니다. 표준 형식의 다각형에서 답이 동일하게 유지되는 것은 너무 어렵지 않아야합니다.
Chris Gray

@ChrisGray : 아마도 당신이 제안한 것만 큼 쉽지는 않습니다. 의 이미지 가 트리 인 경우 모든 스위치 백 을 재귀 적으로 제거 하면 결국 가 단일 지점 으로 줄어 듭니다 . PPP
Jeffε

네, 맞습니다. 그 아이디어는 효과가 없습니다. 위에서 가장 오른쪽 그림은 단일 지점으로 축소됩니다.
Chris Gray

현상금이 만료되도록 할 계획입니다. 이 답변에 포인트의 절반이 자동으로 부여됩니다.
Jeffε

2

Pat Morin의 제안에서 터닝 번호 계산에 대한 아이디어는 다음과 같습니다. 이것이 약간 조잡하다면 죄송합니다. 나는 여전히 표기법 악마와 싸우고 있습니다. 또한 Chris의 답변에 대한 Pat의 의견은 중요한 퇴보 사례를 무시한 것으로 나타났습니다. 그러나 다른 사람들이 유용하다고 생각하는 경우 여기에 게시하겠습니다.

인덱스 경우, 은 정점 에서 부호있는 외부 각도 를 나타냅니다 . 이것은 광선 와 사이의 반 시계 방향 각도로 범위로 정규화됩니다 . (모든 인덱스 산술 내재적의 MOD .)를 회전 수 의 로 정의 내부 각도가 다음과 같은 경우 정점 를 박차 라고하겠습니다 .iθ(pi)=θ(pi1,pi,pi+1)pipi1pipipi+1πθiπnP

Turn(P)=12πi=0n1θ(pi).
pipi 는 과 같습니다 . 박차에서 의 외부 각도 는 잘 정의되어 있지 않습니다. 또는 일 수 있습니다 . 보다 일반적으로는, 회전 수의 경우에만, 잘 정의 된 더 박차가없는 (그리고 반복 된 정점 ). 가 잘 정의되어 있으면 정수임 을 증명하는 것은 어렵지 않습니다 . 특히 가 단순한 다각형 이면 입니다.0θiππPPpi=pi+1Turn(P)Turn(P)=±1P

이제 에 의 경로 가 포함되어 있다고 가정합니다 . 여기서 및 경로 는 경로 . 그런 다음 는 박차입니다. 을 의 루트 라고 부릅니다 . 이 경우 다음과 같이 에서 외부 각도를 정의 하겠습니다 . (그러나Pprsrqpqrssrsrss

θ~(s)=πsgnθ(p,r,q)={πif θ(p,r,q)>0πif θ(p,r,q)<0
θ(p,r,q)=0? Pat이 관찰 한 것처럼 실제로 발생할 수 있습니다. 이 경우에도 를 정의하는 일종의 재귀 적 방법 이있을 수 있지만 그것이 무엇인지 모르겠습니다.)θ~(s)

경우 약 단순한는 다음 단순가 -gon 임의로 가까운 ; TET 의 정점이 될 에 가장 가까운 . 가 에 접근 함에 따라 의 내부 각도는 0에 접근합니다. 외부 각도 가 접근 한다는 것을 증명하는 것은 어렵지 않습니다 ( 길이에 의해 유도 됨 .PnP~Ps~P~PP~Ps~rsθ(s~)θ~(s)

경우 전적으로 반전 뒤에 도보로 구성되어 의 박차에 다음 외부 각 하고 여전히 잘 정의되지 않습니다. 그러나이 경우, 나는 산책 가 비 자체 교차 인 경우에만 가 약한 것으로 생각 합니다. (특히 다각형이 한 번의 산책을 통해 앞뒤로 돌아 다니는 경우 합리적인 수정 된 터닝 번호를 정의 할 수없는 더 복잡한 경우가 있습니다. 그러나 이러한 경우 다각형은 다각형이 약한 경우에만 약한 것처럼 보입니다. 자체 교차하지 않습니다.)PrsrrsPrs

그렇지 않으면, 하지 않은 정점 대해 를 정의하면 이제 잘 정의 된 전환 번호 이며 가 약한 경우 이어야합니다 .pi ~ T u r n (P)=i ~ θ (pi)/2π=Turn( ~ P )±1Pθ~(pi)=θ(pi)piTurn~(P)=iθ~(pi)/2π=Turn(P~)±1P

더 이상 을 선형 시간으로 계산할 수 있다고 확신하지 않습니다 . 가장 어려운 점은 walk 자체가 스퍼를 포함 할 수 있다는 것입니다. 무차별 대입으로 각 박차의 근을 찾는 순진한 알고리즘은 실제로 최악의 경우 시간 이 걸립니다 . 길이가 횡단면이 있고 두 점 사이를 번갈아 가며 gon을 고려하십시오 .rsΘ(n2)nΩ(n)Turn~(P)rsΘ(n2)nΩ(n)

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