यदि एक बहुभुज एक पंक्ति के संबंध में एक मोनोटोन है तो मैं कैसे परीक्षण करूं?


10

यह सर्वविदित है कि मोनोटोन बहुभुज बहुभुज त्रिभुज में महत्वपूर्ण भूमिका निभाते हैं ।

परिभाषा: विमान में एक बहुभुज को एक सीधी रेखा L के संबंध में मोनोटोन कहा जाता है , यदि प्रत्येक पंक्ति orthogonal से L दो बार P को प्रतिच्छेद करती है ।PLLP

एक लाइन और एक बहुभुज पी को देखते हुए , यह निर्धारित करने के लिए एक कुशल एल्गोरिदम है कि क्या बहुभुज पी , एल के संबंध में एक मोनोटोन है ?LPPL

जवाबों:


10

xxO(n)

स्पोइलर अहोई:

IsMonotone (X [0..n-1], Y [0..n-1])
    local_mins ← 0
    i to 0 से n-1 के लिए
        अगर (X [i] <X [i + 1 mod n]) और (X [i] <X [i-1 mod n]]
            local_mins ins 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))

Lax+by=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))

1

x

  1. xO(n)

  2. ये दो कोने बहुभुज की सीमा को दो घटों में विभाजित करते हैं: एक ऊपरी श्रृंखला और एक निचली श्रृंखला।

  3. xO(n)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.