Aşağıdaki sorunu göz önünde bulundurun S : Bize 1 ≤ l i ≤ r i ≤ 2 n ile ve k aralıkları [ l i , r i ] verilir . Ayrıca 2 n tamsayı d 1 , … , d 2 n ≥ 0 verilir . Görev, minimum sayıda aralık seçmektir [ l i , r i ]Bu tür her bir söz konusu , en azından d i tam sayı içeren aralıklarla i seçilir.
polinom zamanında çözülebildiğini görmek zor değildir (aşağıya bakınız).
Şimdi aşağıdaki biraz değiştirilmiş sorunu göz önünde bulundurun S ′ : Sorunun girişi öncekiyle aynıdır. Ancak bu görev artık aralıklarla az sayıda seçmektir böyle her için bu , en azından d 2 i - 1 tam sayı içeren aralıkları 2 i - 1 ya da en azından d 2 i tam sayı içeren aralıkları 2 i seçilir (“ya da” ile olağan mantık ya da anlamına geliriz).
Sorum: Can polinom sürede çözülecek?
verimli bir şekilde çözmenin iki yolu :
Basit bir açgözlü algoritma: Soldan sağa doğru aralıkları gözden geçirin ve sayılarını “tatmin etmek” için sadece gerektiği kadar az aralık seçin . Farklı aralıklar arasında bir seçenek olduğunda, maksimum sağ bitiş noktasına sahip olanları seçin.
Bir tamsayı programı: Her aralık için , x i = 1 i ile bir karar değişkeni x i ∈ { 0 , 1 } girin , aralık seçilirse. Amaç en aza indirmek için x 1 + ... + x k kısıtlamaları, konu Σ j : i ∈ [ l J , r j ] x j ≥ d ı. Bu tamsayı programının kısıtlama matrisi ardışık olanlar özelliğine sahiptir ve bu nedenle bu programın doğrusal programlama gevşemesi bir tamsayı optimal çözümüne sahiptir.
Herhangi bir ipucu ve referanslar için teşekkürler!