Розглянемо наступну задачу : Нам задано ціле число та k інтервалі [ l i , r i ] з 1 ≤ l i ≤ r i ≤ 2 n . Нам також дано 2 n цілих чисел d 1 , … , d 2 n ≥ 0 . Завдання полягає у виборі мінімальної кількості інтервалів [ l i , r i ]таким, що для кожного , вибираються принаймні d i інтервали, що містять ціле число i .
Не важко зрозуміти, що можна розв’язати за полиномним часом (див. Нижче).
Тепер розглянемо наступну дещо змінену задачу : Вхід проблеми такий же, як і раніше. Однак тепер завдання полягає у виборі мінімальної кількості інтервалів, таких, що для кожного інтервалу , принаймні d 2 i - 1, що містить ціле число 2 i - 1 або принаймні d 2 i інтервали, що містять ціле число 2 я обраний (під "або" ми маємо на увазі звичайний логічний або).
Моє запитання: Чи можна розв’язати в поліноміальний час?
Ось два способи ефективно вирішити :
Простий жадібний алгоритм: прокрутіть інтервали зліва направо і виберіть лише стільки інтервалів, скільки потрібно, щоб "задовольнити" числа . Щоразу, коли є вибір між різними інтервалами, вибирайте один (и) з максимальною правильною кінцевою точкою.
Ціла програма: Для кожного інтервалу введіть змінну рішення x i ∈ { 0 , 1 } з x i = 1, якщо буде обраний інтервал. Мета - мінімізувати x 1 + … + x k , за умови обмежень ∑ j : i ∈ [ l j , r j ] x j ≥ d i. Матриця обмежень цієї цілочисельної програми має послідовні властивості one, і тому лінійна релаксація програмування цієї програми має ціле оптимальне рішення.
Дякуємо за будь-які підказки, а також за довідки!