พิจารณาต่อไปนี้ปัญหา n k [ l i , r i ] 1 ≤ l i ≤ r i ≤ 2 n 2 n d 1 , … , d 2 n ≥ 0 [ l i , r i ] i = 1 , … , 2 n d i i : เราจะได้รับจำนวนเต็มและช่วงกับ2n เรายังจะได้รับจำนวนเต็ม0 ภารกิจคือการเลือกช่วงเวลาต่ำสุดเช่นนั้นสำหรับทุกๆ , อย่างน้อยช่วงที่มีจำนวนเต็มถูกเลือก
ไม่ยากที่จะเห็นว่าสามารถแก้ไขได้ในเวลาพหุนาม (ดูด้านล่าง)
ตอนนี้ให้พิจารณาปัญหาที่แก้ไขเล็กน้อยต่อไปนี้ : อินพุตของปัญหาเหมือนกันก่อนหน้านี้ อย่างไรก็ตามตอนนี้ภารกิจคือการเลือกช่วงเวลาขั้นต่ำเช่นสำหรับทุก , อย่างน้อยช่วงเวลาที่มีจำนวนเต็มหรืออย่างน้อยช่วงเวลาที่ประกอบด้วย จำนวนเต็มถูกเลือก (ด้วย“ หรือ” เราหมายถึงตรรกะปกติหรือ)d 2 i - 1 2 i - 1 d 2 i 2 i
คำถามของฉัน:สามารถแก้ไขได้ในเวลาพหุนามหรือไม่
นี่คือสองวิธีในการแก้ปัญหาอย่างมีประสิทธิภาพ:
อัลกอริทึมโลภง่าย: กวาดผ่านช่วงเวลาจากซ้ายไปขวาและเลือกเป็นเพียงช่วงเวลาไม่กี่เท่าที่จำเป็นในการ“ตอบสนองความว่า” ตัวเลขd_iเมื่อใดก็ตามที่มีตัวเลือกระหว่างช่วงเวลาที่แตกต่างกันให้เลือกหนึ่งรายการที่มีจุดสิ้นสุดด้านขวาสูงสุด
โปรแกรมจำนวนเต็ม: สำหรับแต่ละช่วงเวลาแนะนำตัวแปรการตัดสินใจด้วย iff เลือกช่วงเวลา โดยมีวัตถุประสงค์เพื่อลดภายใต้ข้อ จำกัดd_i เมทริกซ์ข้อ จำกัด ของโปรแกรมเลขจำนวนเต็มนี้มีคุณสมบัติตัวต่อเนื่องกันดังนั้นการโปรแกรมเชิงเส้นของโปรแกรมนี้จึงมีวิธีแก้ปัญหาจำนวนเต็มที่ดีที่สุดx i ∈ { 0 , 1 } x i = 1 x 1 + … + x k ∑ j : ฉัน∈ [ l j , r j ] x j ≥ d ฉัน
ขอบคุณสำหรับคำแนะนำใด ๆ และสำหรับการอ้างอิง!