ใหม่คำตอบ: อัลกอริทึมแบบง่าย ๆ ต่อไปนี้เป็นแบบอะซิมโตติติกที่ดีที่สุด:
ยืดแต่ละสี่เหลี่ยมโดยพลการสูงสุดเท่าที่เป็นไปได้เพื่อให้สี่เหลี่ยมยังคงแยกกันเป็นสองส่วนCi
จำนวนของหลุมที่มากที่สุดk-2นี่คือ asymptotically ดีที่สุดเนื่องจากมีการกำหนดค่าที่จำนวนหลุมเป็นอย่างน้อยk)k−2k−O(k−−√)
หลักฐานอยู่ในเอกสารนี้
คำตอบเดิม:
ขั้นตอนวิธีการดังต่อไปนี้ในขณะที่ไม่เหมาะสมก็ดูเหมือนจะเพียงพอสำหรับการหาพาร์ทิชันสี่เหลี่ยมผืนผ้ารักษาด้วยชิ้นส่วนN=O(n)
ขั้นตอนวิธีการทำงานร่วมกับเส้นตรงรูปหลายเหลี่ยมซึ่งจะเริ่มต้นที่จะสี่เหลี่ยมCPC
ขั้นตอนที่ 1:เลือกสี่เหลี่ยมผืนผ้าซึ่งอยู่ติดกับขอบเขตตะวันตกของ (กล่าวคือไม่มีสี่เหลี่ยมผืนผ้าอื่น ๆระหว่างด้านตะวันตกของและขอบเขตตะวันตกของ ) สถานที่ภายในและยืดมันจนกว่าจะสัมผัสกับพรมแดนด้านตะวันตกของPให้ (สำหรับ ) เป็นรุ่นยืดของC_iให้E_i ทำซ้ำเฟส 1ครั้งจนกระทั่งทั้งหมดCiPCjCiPCiPPEii=1,…,nCiP=P∖Einnสี่เหลี่ยมต้นฉบับถูกวางและเหยียด ในภาพด้านล่างลำดับที่เป็นไปได้ของการวางรูปสี่เหลี่ยมผืนผ้าคือ :C1,C2,C4,C3
ตอนนี้เป็นรูปหลายเหลี่ยมรูปสี่เหลี่ยมผืนผ้า (อาจตัดการเชื่อมต่อ) เช่นนี้:P
ฉันเรียกร้องว่าจำนวนของจุดเว้าในที่มากที่สุด2nเนื่องจากเมื่อใดก็ตามที่รูปสี่เหลี่ยมผืนผ้าที่ยืดออกจะถูกลบออกจากมีความเป็นไปได้ 3 ประการ:P2nP
- มีการเพิ่มจุดยอดเว้าใหม่ 2 อัน (เช่นเมื่อวาง )C1,C4
- มีการเพิ่มจุดยอดเว้าใหม่ 3 รายการและลบ 1 จุด (เช่นเดียวกับ )C3
- มีการเพิ่มจุดยอดเว้าใหม่ 4 รายการและลบ 2 จุด (เช่นเดียวกับ )C2
ขั้นตอนที่ 2:แบ่งพาร์ติชันเป็นสี่เหลี่ยมขนานแกนโดยใช้อัลกอริทึมที่มีอยู่ (ดูKeil 2000, หน้า 10-13และEppstein 2009, หน้า 3-5สำหรับการตรวจสอบ)P
Keil อ้างถึงทฤษฎีบทที่บอกว่าจำนวนของรูปสี่เหลี่ยมในพาร์ติชั่นน้อยที่สุดนั้นถูก จำกัด โดย 1 + จำนวนของจุดยอดเว้า ดังนั้นในกรณีของเราเป็นจำนวนที่มากที่สุดและจำนวนรวมของรูปสี่เหลี่ยมในพาร์ทิชัน 12n+1N≤3n+1
อัลกอริทึมนี้ไม่เหมาะสม เช่นในตัวอย่างข้างต้นจะช่วยให้ในขณะที่การแก้ปัญหาที่ดีที่สุดมี 5 ดังนั้นคำถามสองข้อยังคงอยู่:N=13N=5
A. ขั้นตอนวิธีนี้ถูกต้องหรือไม่?
B. มีอัลกอริธึมเวลาพหุนามสำหรับการหาดีที่สุดหรืออย่างน้อยก็ประมาณที่ดีกว่า?N