답변:
힌트 : 좌표가 이웃보다 작은 정점이 정확히 하나 인 경우에만 일반적인 단순 다각형은 축 과 관련하여 모노톤입니다 . 이 관찰 은 최소한 다각형의 모서리가 수직이 아닌 경우 -시간 알고리즘을 즉시 제안합니다 .x O ( n )
스포일러 아호이 :
IsMonotone (X [0..n-1], Y [0..n-1]) local_mins ← 0 i ← 0 ~ n-1 (X [i] <X [i + 1 mod n]) 및 (X [i] <X [i-1 mod n]) 인 경우 local_mins ← local_mins + 1 리턴 (local_mins = 1)
다각형에 세로 모서리가 있을지 걱정되는 경우 비교 대신 다음 서브 루틴을 사용하여 X[i] < X[j]
타이를 일관되게 끊으십시오.
IsLess(X, i, j):
return ((X[i] < X[j]) or (X[i] = X[j] and i < j))
마지막으로 이 형식의 다른 행 이면 다음과 같이 수정하십시오 .a x + b y = cIsLess
IsLess(X, Y, i, j):
Di ← a·X[i] + b·Y[i]
Dj ← a·X[j] + b·Y[j]
return ((Dj < Dj) or (Di = Dj and i < j))