กริดครอบคลุมด้วยรูปสี่เหลี่ยมผืนผ้า


15

เรามีตารางเรามีคอลเลกชันของรูปสี่เหลี่ยมในตารางนี้แต่ละรูปสี่เหลี่ยมผืนผ้าสามารถแสดงเป็น -by-ไบนารีเมทริกซ์Rเราต้องการครอบคลุมกริดด้วยสี่เหลี่ยมเหล่านั้นN 1 N 2 Rยังไม่มีข้อความ1×ยังไม่มีข้อความ2ยังไม่มีข้อความ1ยังไม่มีข้อความ2R

เวอร์ชันการตัดสินใจของชุดนี้ครอบคลุมปัญหา NP-complete หรือไม่

  • อินพุต: คอลเล็กชันของรูปสี่เหลี่ยมบนกริด (ขนาดอินพุต: ) และN 1 N 2 L K N +={R1,R2,...,RL}ยังไม่มีข้อความ1ยังไม่มีข้อความ2LKN+
  • เอาท์พุท: เซตย่อยกับและที่มีแต่ละเซลล์อย่างน้อยหนึ่งรูปสี่เหลี่ยมผืนผ้าครอบคลุมมัน| S | K SS|S|KS

ตัวอย่างภาพของปัญหา

ฉันพบว่ากรณี 1D ( ) สามารถแก้ไขได้ในเวลาพหุนามโดยการโปรแกรมแบบไดนามิก: ปกที่ดีที่สุดใด ๆ จะเป็นสหภาพของN2=1

  • ครอบคลุมที่ดีที่สุดสำหรับปัญหาย่อยของการครอบคลุมเซลล์แรกN1n1
  • สี่เหลี่ยมผืนผ้า 1D เช่นช่วงเวลาซึ่งครอบคลุมเซลล์ที่เหลืออยู่n1

ฉันไม่คิดว่า DP จะทำงานกับปัญหา 2D ได้: สำหรับปัญหา 1D คุณมีปัญหาย่อยจะแก้ปัญหา แต่สำหรับ 2D คุณมี\ binom {N_1 + N_2} {N_2} subproblems จำนวน (โครงตาข่ายตะวันออกเฉียงเหนือ) เส้นทางบนตาราง)( N 1 + N 2N1(N1+N2N2)

ฉันคิดว่าปัญหาอาจเป็นปัญหา แต่ฉันไม่แน่ใจ (แม้ว่ามันจะดูยากกว่า P) และฉันก็ไม่ประสบความสำเร็จในการค้นหาการลดจำนวนชื่อพหุนามจากปัญหาสมบูรณ์แบบ (3-SAT, Vertex Cover, ... )

ความช่วยเหลือหรือคำใบ้ยินดีต้อนรับ


3
คำแนะนำ: มองหาการลดลงของ Vertex Cover ที่เราสร้างโดยกริดของบล็อกแต่ละอันจะเป็นองค์ประกอบเมทริกซ์ขนาด 3 คูณ 3 แต่ละแถวของบล็อกสอดคล้องกับขอบและจะมี 2 บล็อกที่ออกแบบมาเป็นพิเศษที่สอดคล้องกับจุดปลายของมัน สำหรับแต่ละจุดยอดจะมีความสูง -, width-1 สี่เหลี่ยมผืนผ้าที่ผ่านคอลัมน์กลางของคอลัมน์ของบล็อค 3 คูณ 3 ที่สอดคล้องกับจุดยอดนั้น วิธีที่คุณสามารถบังคับรวมของการใด ๆ ที่ถูกต้องปก -vertex เสียค่าใช้จ่ายตรง ? (คุณจะต้องใช้รูปสี่เหลี่ยมผืนผ้าอื่น ๆ )| V | 3 | E | k | E | ( | V | + 3 ) + k|E||V|3|E|k|E|(|V|+3)+k
j_random_hacker

ฉันคิดว่านี่อาจเป็นการออกกำลังกายทำการบ้านดังนั้นฉันลังเลที่จะพูดมากกว่านี้ในตอนนี้ สูตรค่าใช้จ่ายที่ฉันให้มีเงื่อนงำอยู่บ้าง โปรดทราบว่าคุณสามารถบังคับสี่เหลี่ยมอย่างน้อย 1 ในหลาย ๆ รูปแบบโดยทำให้เป็นรูปสี่เหลี่ยมผืนผ้าเพียงรูปแบบเดียวที่ครอบคลุมองค์ประกอบเมทริกซ์บางส่วน (กรณีพิเศษของรูปสี่เหลี่ยมผืนผ้า 1 มีประโยชน์เช่นกัน) FWIW ฉันลองใช้ด้วย-by-กริดแรกซึ่งการเลือกจุดสุดยอดจะสอดคล้องกับ "การข้าม" แถวและคอลัมน์ที่เกี่ยวข้อง แต่ไม่สามารถหาวิธีบังคับให้คอลัมน์ -th ถูกเลือกเมื่อเลือกแถว th หรือในทางกลับกัน | V | ฉันฉัน|V||V|iผม
j_random_hacker

ฉันมีปัญหาเดียวกันกับ-by-ตะแกรง ฉันคิดว่าฉันเห็นวิธีแก้ปัญหาแบบใดที่คุณมีในใจ (ฉันไม่มีสูตรค่าใช้จ่ายเหมือนกันทุกประการ) ดูการแก้ไขของฉัน อย่างไรก็ตามมันไม่ใช่การบ้าน มันเป็นปัญหาเชิงผสมที่ปรากฏในปัญหาวิศวกรรมชีวิตจริง เราแก้ปัญหาด้วย MIP แต่ฉันต้องการแน่ใจว่าปัญหาคือปัญหา NP (และไม่มีวิธีแก้ปัญหาพหุนาม) ไม่ว่าในกรณีใดถ้าคุณยืนยันว่าการแก้ปัญหานั้นถูกต้องคุณสามารถใส่คำใบ้ของคุณเป็นคำตอบและฉันจะตรวจสอบมัน (ตั้งแต่ฉันพบวิธีแก้ปัญหาด้วยความช่วยเหลือของคุณ) | V ||V||V|
Yann

1
ใช่ว่าเกือบจะลดลงที่ฉันมีอยู่ในใจ! :) ฉันทำสี่เหลี่ยม "type 4" ของคุณอีกต่อไปเล็กน้อยที่ปลายด้านหนึ่ง: ที่คุณครอบครอง 2 เซลล์ภายในบล็อกฉันใช้ทั้งหมด 3 แทนที่จะเป็นสี่เหลี่ยมพิเศษ "type 3" สำหรับ endblocks ฉันใช้ทั้งแถวบนสุดเพียง เช่น "พิมพ์ 2" สี่เหลี่ยมสำหรับ<b ในที่สุดฉันมีรูปสี่เหลี่ยมผืนผ้าครอบครองเซลล์กึ่งกลางด้านซ้ายและด้านล่างซ้ายในแต่ละ endblock ด้านซ้าย (พลิกตามแนวนอนสำหรับ endblock ด้านขวาแต่ละอัน) เพื่อให้คุณสามารถครอบคลุม 2 แถวด้านล่างของบล็อกทั้งหมดรวมถึงและระหว่าง endblock โดยใช้รูปแบบหรือ a<J<|==|
j_random_hacker

1
ฉันชอบ-by-แนวคิดการลด ด้วยสิ่งนี้แตกต่างจาก-by-การลดลงอาจมีวิธีแก้ปัญหาค่าใช้จ่ายขั้นต่ำที่ไม่สอดคล้องกับจุดสุดยอด - แต่โซลูชั่นดังกล่าวทั้งหมดสามารถเปลี่ยนเป็นโซลูชันที่คุ้มค่า (ขั้นต่ำเท่ากัน) โดยใช้อาร์กิวเมนต์เดียวกับในหัวข้อสุดท้ายของคุณดังนั้นนี่ไม่ใช่ ปัญหาสำหรับการลดลง :)3 | V | 3 | E | 3 | V ||E|3|V|3|E|3|V|
j_random_hacker

คำตอบ:


4

ขอบคุณคำแนะนำของ j_random_hacker ฉันได้พบวิธีแก้ปัญหา Vertex Cover เพื่อแก้ไขปัญหา Grid:

เราทำ-by-ตารางของ 3-by-3 blocks คือ-by-ตารางที่มีจุดสั่งซื้อเป็นคอลัมน์และขอบสั่งแถว\} เราจะสร้างรูปสี่เหลี่ยมในตารางนี้ (ภาพวาดด้านล่างจะช่วยให้เข้าใจรูปสี่เหลี่ยมต่าง ๆ ที่ใช้)| V | 3 | E | 3 | V | { v 1 , , v N 1 } { e 1 , , e N 2 }|E||V|3|E|3|V|{v1,,vN1}{e1,,eN2}

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

สำหรับแต่ละจุดยอดเราสร้างสี่เหลี่ยมผืนผ้าประเภท 1 ซึ่งครอบคลุมคอลัมน์กลางของคอลัมน์ของบล็อกที่สอดคล้องกับจุดสุดยอดดังนั้นเราจึงมีรูปสี่เหลี่ยมผืนผ้าประเภท 1|V|

แต่ละบล็อกตรงกับคู่ที่ไม่ซ้ำกัน , กับสำหรับแต่ละบล็อกเราเพิ่มสี่เหลี่ยมประเภท 2:e i = ( v a , v b )(ei,vj)ei=(va,vb)

  • ถ้าหรือนี่คือรูปสี่เหลี่ยมผืนผ้าขนาด 3 คูณ 3 ที่ครอบคลุมทั้งบล็อกb < jj<ab<J
  • ถ้า (resp. ) นี่คือสี่เหลี่ยม 3-by-1 ที่ครอบคลุมของคอลัมน์ซ้าย (resp. ขวา) ของบล็อกj = bj=aj=b
  • ถ้านี่คือสี่เหลี่ยม 1-by-3 ซึ่งครอบคลุมแถวด้านบนของบล็อกa<j<b

ดังนั้นเราจึงมีรูปสี่เหลี่ยมผืนผ้าของประเภท 2 สี่เหลี่ยมเหล่านั้นจะเป็นข้อบังคับในการเลือกเนื่องจากแต่ละรูปแบบจะเป็นมุมปิดด้านบน (หรือมุมบนขวา) ของบล็อกที่อยู่ด้านบนเท่านั้น|E||V|

ดังที่เราได้กล่าวว่าขอบแต่ละเส้นตรงกับแถวโดยมีบล็อกสองบล็อก (เรียกว่าบล็อกเอนด์) ที่สอดคล้องกับจุดสิ้นสุดของจุดยอดและตอนนี้เรามีรูปสี่เหลี่ยมผืนผ้าประเภท 3:(ei,va)(ei,vb)

  • สำหรับ endblock (resp. ( e i , v b ) ) เรามีสี่เหลี่ยมผืนผ้า 1 ต่อ 2 ที่ครอบคลุมมุมบนขวา (resp. บนซ้าย) ของ endblock(ei,va)(ei,vb)

เรามีรูปสี่เหลี่ยมผืนผ้าประเภท 3 และอีกครั้งเนื่องจากเป็นหน้าที่ครอบคลุมเฉพาะมุมบนขวา (หากเป็น endblock แรก) หรือมุมบนซ้าย (หากเป็น endblock ตัวที่สอง) ที่อยู่ในนั้น2|E|

ทีนี้สำหรับแต่ละขอบเราสร้างรูปสี่เหลี่ยมผืนผ้าของ type 4 ระหว่าง endblocks เรามีสอง rectangles สำหรับแถวที่สอง:

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

เรามีรูปสี่เหลี่ยมผืนผ้าของแบบ 4 นั้นไม่ได้บังคับทั้งหมด4|E|

ดังนั้นตอนนี้เพื่อครอบคลุมกริด:

  • |E|(|V|+2)|V|+4|E|

เพื่อครอบคลุมสำหรับขอบที่กำหนดส่วนระหว่าง edge endblock ที่ยังไม่ครอบคลุม (แถวที่สองและสามของแถวของบล็อก) เราสามารถใช้:

  • สี่เหลี่ยมทั้งสี่ประเภท 4
  • สี่เหลี่ยมผืนผ้าหนึ่งประเภท 1 และสี่เหลี่ยมผืนผ้าสองประเภท 4

โปรดทราบว่าในกรณีใด ๆ เราต้องมีอย่างน้อยสองรูปสี่เหลี่ยมของประเภท 4

|E|(|V|+4)+k

  • |E|(|V|+2)

  • |E|(|V|+4)+k|E|(|V|+4)+k

|E|(|V|+6)+|V|9|V||E|

|E|3|V||V|+4|E|3|E|+k

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