การแบ่งพาร์ติชันของสี่เหลี่ยมโดยไม่ทำอันตรายสี่เหลี่ยมด้านใน


12

Cคือสี่เหลี่ยมผืนผ้าที่ขนานกับแกน

C1,,Cnเป็นรูปสี่เหลี่ยมผืนผ้าแกนคู่ขนานภายในแยกออกจากกันซึ่งดังนี้:C1CnC

ป้อนคำอธิบายรูปภาพที่นี่

พาร์ทิชันสี่เหลี่ยมผืนผ้ารักษาของCคือพาร์ทิชันC=E1ENเช่นว่าNnที่Eiเป็นรูปสี่เหลี่ยมแกนขนานคู่-ภายใน-เคลื่อนและสำหรับทุกi=1,,n : CiEiกล่าวคือสี่เหลี่ยมที่มีอยู่แต่ละอันมีอยู่ในสี่เหลี่ยมผืนผ้าใหม่ที่ไม่ซ้ำใครเช่นนี้

ป้อนคำอธิบายรูปภาพที่นี่

อัลกอริทึมสำหรับการค้นหาพาร์ติชันที่เก็บรักษาสี่เหลี่ยมผืนผ้าด้วยN ตัวเล็กNคืออะไร

โดยเฉพาะมีอัลกอริทึมสำหรับการค้นหาพาร์ติชันที่เก็บรักษาสี่เหลี่ยมผืนผ้าด้วยN=O(n)ส่วนหรือไม่

คำตอบ:


4

ใหม่คำตอบ: อัลกอริทึมแบบง่าย ๆ ต่อไปนี้เป็นแบบอะซิมโตติติกที่ดีที่สุด:

ยืดแต่ละสี่เหลี่ยมโดยพลการสูงสุดเท่าที่เป็นไปได้เพื่อให้สี่เหลี่ยมยังคงแยกกันเป็นสองส่วนCi

จำนวนของหลุมที่มากที่สุดk-2นี่คือ asymptotically ดีที่สุดเนื่องจากมีการกำหนดค่าที่จำนวนหลุมเป็นอย่างน้อยk)k2kO(k)

หลักฐานอยู่ในเอกสารนี้


คำตอบเดิม:

ขั้นตอนวิธีการดังต่อไปนี้ในขณะที่ไม่เหมาะสมก็ดูเหมือนจะเพียงพอสำหรับการหาพาร์ทิชันสี่เหลี่ยมผืนผ้ารักษาด้วยชิ้นส่วนN=O(n)

ขั้นตอนวิธีการทำงานร่วมกับเส้นตรงรูปหลายเหลี่ยมซึ่งจะเริ่มต้นที่จะสี่เหลี่ยมCPC

ขั้นตอนที่ 1:เลือกสี่เหลี่ยมผืนผ้าซึ่งอยู่ติดกับขอบเขตตะวันตกของ (กล่าวคือไม่มีสี่เหลี่ยมผืนผ้าอื่น ๆระหว่างด้านตะวันตกของและขอบเขตตะวันตกของ ) สถานที่ภายในและยืดมันจนกว่าจะสัมผัสกับพรมแดนด้านตะวันตกของPให้ (สำหรับ ) เป็นรุ่นยืดของC_iให้E_i ทำซ้ำเฟส 1ครั้งจนกระทั่งทั้งหมดCiPCjCiPCiPPEii=1,,nCiP=PEinnสี่เหลี่ยมต้นฉบับถูกวางและเหยียด ในภาพด้านล่างลำดับที่เป็นไปได้ของการวางรูปสี่เหลี่ยมผืนผ้าคือ :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+1N3n+1


อัลกอริทึมนี้ไม่เหมาะสม เช่นในตัวอย่างข้างต้นจะช่วยให้ในขณะที่การแก้ปัญหาที่ดีที่สุดมี 5 ดังนั้นคำถามสองข้อยังคงอยู่:N=13N=5

A. ขั้นตอนวิธีนี้ถูกต้องหรือไม่?

B. มีอัลกอริธึมเวลาพหุนามสำหรับการหาดีที่สุดหรืออย่างน้อยก็ประมาณที่ดีกว่า?N


ในเฟส 1 คุณเพิ่มพาร์ติชั่นเซลล์แต่ละอันมีหนึ่งสี่เหลี่ยมเริ่มต้นและไม่ทับซ้อนกัน ในเฟส 2 คุณแบ่งพาร์ติชันพื้นที่ที่เหลือดังนั้นเซลล์ที่สร้างในเฟส 2 จะไม่ตัดสี่เหลี่ยมเริ่มต้นใด ๆ การพิสูจน์ความถูกต้องนั้นค่อนข้างตรงไปตรงมาหรือว่าฉันพลาดอะไรไป?
Boson

@Boson จุดผมไม่แน่ใจว่าที่คือจำนวนของจุดเว้าที่มากที่สุด2nดูเหมือนว่า "ชัดเจน" ว่ามีความเป็นไปได้เพียง 3 อย่างที่ฉันเขียน แต่ฉันอาจพลาดความเป็นไปได้อื่น ๆ 2n
Erel Segal-Halevi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.