ปูกระเบื้องรูปหลายเหลี่ยมแบบมุมฉากพร้อมกำลังสอง


12

ให้รูปหลายเหลี่ยมแบบมุมฉาก (รูปหลายเหลี่ยมที่ด้านข้างขนานกับแกน) ฉันต้องการค้นหาชุดสี่เหลี่ยมจัตุรัสที่แยกกันไม่ออกซึ่งมีขนาดเล็กที่สุดซึ่งสหภาพมีรูปหลายเหลี่ยมเท่ากับ

ฉันพบการอ้างอิงหลายอย่างเกี่ยวกับปัญหาที่แตกต่างกันเล็กน้อยเช่น:

  • ครอบคลุมรูปหลายเหลี่ยมมุมฉากที่มีสี่เหลี่ยม - คล้ายกับปัญหาของฉัน แต่สี่เหลี่ยมครอบคลุมได้รับอนุญาตให้ทับซ้อนกัน ปัญหานี้มีวิธีแก้ปัญหาพหุนาม ( Aupperle, Conn, Keil และ O'Rourke, 1988 ; Bar-Yehuda และ Ben-Hanoch, 1996 )
  • ปูกระเบื้อง / ย่อยสลาย / แบ่งรูปหลายเหลี่ยมตั้งฉากกับรูปสี่เหลี่ยม ปัญหานี้มีวิธีแก้ปัญหาพหุนาม ( Keil, 2000 ; Eppstein, 2009 )
  • ครอบคลุมรูปหลายเหลี่ยมมุมฉากที่มีรูปสี่เหลี่ยมผืนผ้า - ปัญหานี้เป็นที่รู้จักกันว่า NP- สมบูรณ์ ( Culberson และ Reckhow, 1988 )

ฉันกำลังมองหาอัลกอริทึมสำหรับน้อยที่สุดการปูกระเบื้องที่มีสี่เหลี่ยม


mmm ฉันสามารถจินตนาการได้ว่านี่เป็นปัญหายาก ฉันจะพยายามกำหนดบางสิ่งบางอย่าง
Realz Slaw

1
เวอร์ชันย่อเล็กสุดที่มีรูที่อนุญาตคือ NP-Hard แต่สำหรับรูปหลายเหลี่ยม orthogonal ที่เชื่อมต่อกัน (เช่นไม่มีรู) มันมีอัลกอริทึมพหุนาม อย่างไรก็ตามถ้าในปัญหาของคุณขนาดเป็นจำนวนเต็มและคุณหมายถึงการปกปิดน้อยที่สุดและไม่ใช่การปกปิดขั้นต่ำดังนั้นในกรณีนี้อัลกอริทึมพหุนามจึงเป็นไปได้
Parham

อืมฉันต้องการหลักฐานว่าสี่เหลี่ยมขั้นต่ำจะอยู่ในตำแหน่งที่สมเหตุสมผลและมีขนาดที่สมเหตุสมผล หรือมากกว่านั้นถ้าหากอินพุตเป็นขนาดจำนวนเต็มและตำแหน่งจำนวนเต็มสี่เหลี่ยมขั้นต่ำก็จะเป็นเช่นกัน (เพื่อลดเป็น SAT) ฉันคิดว่านี่เป็นเรื่องจริงคุณมีความคิดอะไรที่จะพิสูจน์ได้ไหม
Realz Slaw

@MahmoudAlimohamadi: คุณสามารถให้ชื่อ / ผู้แต่งของบทความที่มีปัญหาของการเรียงลำดับรูปสี่เหลี่ยมมุมฉากเรียงต่อกัน (มีหรือไม่มีรู) กับสี่เหลี่ยมกำลังศึกษา (และแก้ไข)
Vor

2
ครับ, ผมถือว่าคุณหมายถึงขีดต่ำที่สุดหนอแทนขีดต่ำที่สุดอัล
Realz Slaw

คำตอบ:


15

ฉันจะพยายามที่จะแสดงให้เห็นปัญหานี้คือ NP-อย่างหนักจากการลดลงจาก{}Planar-3-SAT


ลดจากPlanar-3-SAT

อุปกรณ์พื้นฐานบางอย่าง

แกดเจ็ตที่มีการกำหนดค่าภายในของรูปทรงเรขาคณิตที่จะช่วยให้เราสามารถสร้างประตูสำหรับการใช้งานในวงจรเพื่อที่เราจะลด{}Planar-3-SAT

4X3-แกดเจ็ต

แกดเจ็ตนี้มีสองที่ถูกต้องน้อยที่สุดตารางพาร์ทิชันรัฐ :

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

ซ้าย 4X3-แกดเจ็ต Middle and right:เป็นไปได้น้อยที่สุดที่จะแบ่งพาร์ติชั่นสแควร์

5x4-แกดเจ็ต

แกดเจ็ตนี้เหมือนกับอุปกรณ์4X3เพียงขนาดที่ใหญ่กว่า

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

ซ้าย 5x4-แกดเจ็ต Middle and right:เป็นไปได้น้อยที่สุดที่จะแบ่งพาร์ติชั่นสแควร์

ปลายทาง-แกดเจ็ต

ปลายทาง-แกดเจ็ต เป็น 5x4-แกดเจ็ต มักใช้เป็นจุดปลาย / พินของเกต หนึ่งในสองสถานะปลายทางมีค่าเป็นจริงและเท็จอื่น ๆ เครื่องหมายจุดสิ้นสุดปลายทั้งสองข้างหนึ่งเป็นและอื่น ๆ ที่เป็นFจุดสิ้นสุดที่ครอบคลุมโดยสี่เหลี่ยมจัตุรัสขนาดใหญ่คือค่าของจุดปลายFTF

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

ซ้าย: Wireframe ของปลายทาง-แกดเจ็ต ศูนย์:จุดสิ้นสุดที่แท้จริง ขวา:จุดสิ้นสุดที่มีค่าเท็จ

แกดเจ็ต i-wire

แกดเจ็ตที่ฉันสายสั้นสำหรับลวดหมาย

กฎ:

  • แกดเจ็ตของ i-ลวดประกอบด้วยสี่เหลี่ยมแปลกที่มีความยาวของความยาวกว่าและความกว้างของ2222
  • 3

ตัวอย่าง:

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

72

นี่คือวิธีการใช้งาน:

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

รูปที่ 8,9 , ซ้าย:โครงร่างของ i-ลวดข้ามสองปลายทาง ขวา:ยูเนี่ยน

ตอนนี้หากปลายทางหนึ่งอยู่ในสถานะที่ถูกต้องก็บังคับให้ปลายทางอื่นเข้าสู่ตำแหน่งที่ถูกผลัก ตัวอย่าง:

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

ซ้าย:แผนภาพพาร์ติชันสแควร์; สวิตช์ซ้ายจะลง "ดัน" กำลังสองทั้งหมดลงi-wireและในที่สุดก็ผลักสวิตช์อื่น ( ปลายทาง ) ขวา:แผนภาพพาร์ทิชันสแควร์; จุดสิ้นสุดด้านซ้ายเต็ม "ดัน" ช่องสี่เหลี่ยมทั้งหมดลงi-wireและบังคับให้จุดปลายด้านซ้ายเป็น "ขึ้น"

นี่คือความหมายเชิงตรรกะ พิจารณา "ลง" ที่จะเป็นจริงแล้วเรามีA¬BAB

อย่างไรก็ตามสิ่งนี้ทำให้กรณีที่ไม่มีข้อ จำกัด :

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

หากเรารวมสาย i-wireสองเส้นเข้าด้วยกันเราจะได้ความหมายแบบสองทางคือความเสมอภาคแบบบูล (ใน):

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

ดังนั้นสาย i-wireสองเส้นสามารถมีความสัมพันธ์ที่เท่าเทียมกันเหมือนวงจร - ในความเป็นจริงมันคือวงจร เราจะใช้คู่เหล่านี้เพื่อสร้างสายที่ใช้งานได้

l12+2

i-wireสามารถปรับได้ตามต้องการ

ลวด

ลวดประกอบด้วยคู่ของI-สายที่เชื่อมต่อกับเดียวกันประตูในแต่ละจุด

  • I-สายมีสีแดงและสีเขียว
  • 3
  • หมุดประตูแต่ละอันจะมีหน้าสัมผัสสีเขียวและสีแดง ลวดจะต้องเชื่อมต่ออย่างถูกต้อง
  • กฎคงที่:ผลัก i-wireหนึ่งเส้นไปในทิศทางตรงกันข้ามกับ i-wireอื่น ๆแต่ละประตูถือว่าสิ่งนี้และทำให้แน่ใจในสิ่งนี้ (เว้นแต่จะระบุไว้เป็นอย่างอื่น)
  • เนื่องจากลวดแต่ละเส้นมีความหมายแบบสองทางจึงมีค่าจากเกตไปเกทเหมือนกับลวดในวงจร
  • ลวดทุกเส้นจะต้องเชื่อมต่อกับเกตที่ปลายทั้งสองด้าน . ความล้มเหลวนี้สามารถทำลายสมมติฐานของบางประตูที่ฉันอธิบายและกฎที่ไม่เปลี่ยนแปลงข้างต้น อย่างไรก็ตามประตูที่มีจุดสิ้นสุด ข้ามโอกาสในการขายมีความปลอดภัย - คุณสามารถเชื่อมต่อสายเร่ร่อนไปยังจุดปลายเหล่านี้ได้โดยไม่ต้องกังวลว่าจะทำลายประตู
  • สายไฟจะต้องมีความยาวคี่รวมถึงสายไปยังวงจรใด ๆ ที่เชื่อมต่อด้วย แต่ฉันจะอธิบายคี่ - ข้ามประตูด้านล่างที่ช่วยให้ลวดยาวเท่ากันกลายเป็นคี่ยาว

รูปภาพ :

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

บน:ลวด

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

ซ้ายและขวา:สองเป็นไปได้น้อยที่สุดตารางพาร์ทิชันรัฐของลวด โปรดทราบว่าหากลวดเป็นเพียงความยาวนี้จะไม่สามารถเลื่อนไปทางขวาหรือซ้ายและจะต้องแยกหนึ่งสี่เหลี่ยมออกเป็นชิ้นเล็ก ๆ

สายไฟสามารถปรับได้ตามต้องการ

โค้งประตู : ดัดลวด

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

ซ้าย:มุมมองโครงลวด ขวา:มุมมองสหภาพ

หมายเหตุการใช้ของ4X3-แกดเจ็ต มันถูกใช้เพื่อแก้ไขตะกั่วสีแดงเป็นความยาวคี่

ต่อไปนี้คือสถานะของการโค้งงอน้อยที่สุดที่เป็นไปได้สองตาราง :

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

ซ้ายและขวา:สองลวดสแควร์ - สแควร์ - พาร์ติชัน - รัฐได้ลวดดัด

ประตูสามารถปรับได้ตามต้องการ เห็นได้ชัดว่าประตูนี้สามารถสะท้อนการทำงานไปในทิศทางอื่น

การเอียงลวด

มันง่ายที่จะเปลี่ยนสาย ภาพประกอบโครงลวด:

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

ชื่อมูลค่าประตู

ชื่อมูลค่าประตูเป็นหลักปลายทางเป็นประตูกับผู้ติดต่อสายหนึ่ง:

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

odd-skip-gate : แปลกข้ามลวด

บางครั้งมันก็ไม่สะดวกที่จะมีเพียงสายยาวคี่ ตัวอย่างเช่น:

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

อย่างที่คุณเห็นส่วนขยายเล็กน้อยนั้นน่ารำคาญเล็กน้อย นี่คือโซลูชันที่สอดคล้องกันโดยใช้4X3-gate :

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

ดังนั้นเมื่อเราเปลี่ยนสิ่งนี้เป็นเกตเราจะได้คี่ - ข้าม - เกท (ในโครงลวด):

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

ประตูสามารถปรับได้ตามต้องการ

ประตูบิด: บิดลวด

somtimes คุณจะได้รับสีแดงและสีดำI-สายด้านข้างที่ไม่ถูกต้องสำหรับใช้กับประตู ในกรณีนี้จะมีการติดตั้งประตูม้วนเพื่อทำการบิดสายไฟสีแดงและสีดำไปทางด้านตรงข้าม

ภาพประกอบโครงลวด:

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

โน้มน้าวใจตัวเองว่ามันใช้งานได้:

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

A

ประตูสามารถปรับได้ตามต้องการ

ประตูแยก: การแยกลวด

แยกลวด wireframe:

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

โน้มน้าวใจตัวเองว่ามันใช้งานได้:

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

A

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

A

หมายเหตุ:สายทุกเส้นที่เข้าและออกจากตัวแยกต้องเชื่อมต่อกับจุดปลายอย่างใดอย่างหนึ่งเพื่อรักษาค่าคงที่ อีกวิธีหนึ่งคุณสามารถเพิ่มจุดสิ้นสุดในแต่ละคู่ของโอกาสในการแยก

ประตูสามารถปรับได้ตามต้องการ

ไม่ได้ประตู

ประตูไม่ได้ใช้ลวดและเอาท์พุทลวดที่มีความหมายย้อนกลับ มันเป็นประตูหมุนยกเว้นว่ามันจะเปลี่ยนสีของสายไฟ ไม่ได้ประตูลักษณะเช่นนี้

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

และมุมมองของสองรัฐที่เป็นไปได้:

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

ประตูสามารถปรับได้ตามต้องการ

ข้อประตู

สำหรับclause-gateเราจะแนะนำclause-gadget ก่อน :

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

3

นี่คือลักษณะที่ประตู:

3

คำอธิบาย:

  1. เริ่มที่clause-gadgetและตามลูกศร
  2. เส้นไม่ใช่ลูกศรหมายความว่ามันเป็นส่วนหนึ่งของวงจร แต่มันไม่ได้ถูกบังคับให้เข้าสู่สถานะโดยประตู
  3. สถานะของข้อ-gadgetหนึ่งกองกำลังของปลายทางที่จะมีมูลค่าที่แท้จริง

3-CNF

ประตูสามารถปรับได้ตามต้องการ

การลดลง

Φ(x)Planar-3-SAT

Φ(x)=inCi,C={(xjxkxl)}

เครื่องช่วยมองเห็น (ที่มาดั้งเดิม: Terrain Guarding คือ NP-Hard (PDF) , สร้างซ้ำใน tikz):

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

แล้ว:

  1. xixxi¬xi
  2. เชื่อมต่อประตูเข้าหากันและกันด้วยประตูที่ไม่ทำให้พวกเขามองข้ามคุณค่าของกันและกัน
  3. วางรูปหลายเหลี่ยม 'ประตู' ตัวแปรที่สถานที่ของพวกเขาในการฝังภาพถ่าย
  4. สำหรับแต่ละประโยคให้วางclause-gateที่ตำแหน่งของ clause ในการฝังแบบระนาบ
  5. ใช้ประตูที่อธิบายไว้ข้างต้นเชื่อมต่อตัวแปรทั้งหมดกับส่วนคำสั่ง
  6. เรียกใช้อัลกอริธึมขั้นต่ำ - สแควร์ - การแบ่งส่วนบนผลรวมของรูปหลายเหลี่ยมของเกตทั้งหมด (วงจรทั้งหมด)
  7. หากอัลกอริทึมส่งคืนผลรวมของขนาดขั้นต่ำของพาร์ติชั่นสแควร์พาร์ติชันขั้นต่ำ (การลบสำหรับมุมที่ใช้ร่วมกัน) แสดงว่าเป็นที่น่าพอใจ ถ้ามันไม่เป็นที่น่าพอใจมันจะบังคับให้แกดเจ็ตที่มีข้อ จำกัด เพื่อแยกเป็นสี่เหลี่ยมเล็ก ๆ ซึ่งจะเป็นการเพิ่มจำนวนของสี่เหลี่ยมที่จำเป็นสำหรับการแบ่งวงจร

ทำไมมันถึงได้ผล

  • แกดเจ็ตแต่ละคนมีน้อยที่สุดตารางพาร์ทิชันรัฐขนาด; นั่นคือพาร์ทิชันขั้นต่ำสุดของ Gadget นั้นมีขนาดที่แน่นอน
  • แกดเจ็ตบางตัวมีหลายสถานะด้วยขนาดนี้ แต่ละรัฐเหล่านี้จะถูกต้องน้อยที่สุดตารางพาร์ทิชัน
  • เมื่อแกดเจ็ตจะรวมกันเพียง แต่ในมุมผลรวมของที่น้อยที่สุดตารางพาร์ทิชันรัฐของ gadgets คือ * ยังคงเป็นขั้นต่ำตารางพาร์ทิชันรัฐของสหภาพของพวกเขา; คุณสามารถดูได้โดยสังหรณ์ใจ: การเข้าร่วมที่มุมไม่ให้พื้นที่เหลือเฟือสำหรับสี่เหลี่ยมเพื่อขยาย / เชื่อมต่อกับสี่เหลี่ยมจากแกดเจ็ตอื่น
  • ในขณะที่การรวมโปรแกรมเบ็ดเตล็ดที่มุมไม่ลดขนาดสี่เหลี่ยมจัตุรัสของพาร์ติชันขั้นต่ำโดยรวมแต่จะเกี่ยวข้องและ จำกัด แกดเจ็ตซึ่งกันและกัน
  • ด้วยประตูที่แสดงข้างต้นคุณสามารถ จำกัด การรัฐพอเพื่อที่ว่าถ้าสูตรตรรกะ unsatisfiable แล้วหนึ่งหรือมากกว่า gadets จะมีการแบ่งเป็นสี่เหลี่ยมแม้มีขนาดเล็กและเพิ่มขนาดต่ำสุดตารางพาร์ทิชัน

แหล่งกราฟ

นอกจากนี้คุณยังสามารถดูภาพขนาดใหญ่ได้โดยลบ "s", "m", "l", คำต่อท้ายของ URL imgur ตัวอย่างเช่นคุณสามารถดูภาพขนาดใหญ่นี้: http://i.stack.imgur.com/6CKlGs.jpgโดยไปที่ http://i.stack.imgur.com/6CKlG.jpg สังเกตที่ขาดหายไป "S" .jpgก่อน


3
ว้าวมันน่าประทับใจมาก น่าเสียดายที่ฉันไม่ฉลาดพอที่จะตรวจสอบการลดลง แต่ฉันเอาคำพูดของคุณไป :) ขอบคุณ
Erel Segal-Halevi

1
ดังนั้นสถานการณ์ในการปูกระเบื้องจึงเป็นสิ่งที่ตรงกันข้ามกับสถานการณ์ในการครอบคลุม: ในการปิดบังการครอบคลุมรูปสี่เหลี่ยมคือพหุนามและการครอบคลุมรูปสี่เหลี่ยมผืนผ้าคือ NP-hard ในขณะที่ปูกระเบื้อง
Erel Segal-Halevi


8

NO(N3/2)

"ครอบคลุมรูปหลายเหลี่ยมมุมฉากกับสี่เหลี่ยม" LJ Aupperle และ HE Conn และ JM Keil และ Joseph O'Rourke พร 26th Allerton Conf commun คำนวณการควบคุม , pp. 97-106, 1988. ( ลิงก์เพื่อดาวน์โหลด PDF สแกน )

อย่างไรก็ตามการครอบคลุมที่เกิดขึ้นอาจรวมถึงสี่เหลี่ยมที่ทับซ้อนกัน คุณกำลังมองหาการเรียงแบบเรียงต่อกันโดยไม่ได้รับอนุญาตให้ทับซ้อนกันดังนั้นปัญหาของคุณจึงไม่เหมือนกัน


lol ฉันครึ่งทางผ่านการกำหนด :( น่าสนใจมาก แต่! ยินดีต้อนรับสู่ cs.SE
Slaw

2
หากฉันเข้าใจอย่างถูกต้องบทความนี้จะอนุญาตให้สี่เหลี่ยมทับซ้อนกัน (นั่นเป็นปัญหาที่ครอบคลุม) ฉันสนใจในกรณีที่ช่องสี่เหลี่ยมไม่ได้รับอนุญาตให้ทับซ้อน (เช่นเป็นปัญหาการแบ่งพาร์ติชัน / การเรียงต่อกัน)
Erel Segal-Halevi

@ErelSegalHalevi: โอ้ฉันขอโทษฉันไม่ได้อ่านคำถามของคุณอย่างระมัดระวัง
Joseph O'Rourke

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