ฉันจะทดสอบได้อย่างไรว่ารูปหลายเหลี่ยมนั้นมีโทนสีเดียวกับเส้นตรงหรือไม่?


10

เป็นที่รู้จักกันดีว่ารูปหลายเหลี่ยมทางเดียวมีบทบาทสำคัญในรูปหลายเหลี่ยมรูปสามเหลี่ยม

คำจำกัดความ:รูปหลายเหลี่ยมในระนาบเรียกว่าเสียงเดียวที่เกี่ยวกับเส้นตรงLถ้าทุกมุมฉากเป็นLตัดกับPมากที่สุดสองครั้งPLLP

กำหนดเส้นและรูปหลายเหลี่ยมPมีอัลกอริทึมที่มีประสิทธิภาพในการพิจารณาว่ารูปหลายเหลี่ยมPเป็นเสียงเดียวที่เกี่ยวกับLหรือไม่?LPPL

คำตอบ:


10

xxO(n)

สปอยเลอร์ ahoy:

IsMonotone (X [0..n-1], Y [0..n-1])
    local_mins ← 0
    สำหรับฉัน← 0 ถึง n-1
        ถ้า (X [i] <X [i + 1 mod n]) และ (X [i] <X [i-1 mod n])
            local_mins ← local_mins + 1
    return (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)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.