Одним із підходів до вирішення цієї проблеми було б використання цілого лінійного програмування (ILP). Давайте візьмемось за версію рішення проблеми: заданий , чи є спосіб укласти одноколірні вершини для отримання DAG розміром ≤ k ?k≤k
Це можна виразити як примірник ILP, використовуючи стандартні методи. Колір кожної вершини нам надається в оригінальному графіку. Я пропоную позначити кожну вершину міткою в ; всі вершини з однаковою міткою та одним кольором будуть укладені. Отже, проблема вирішення стає такою: чи існує маркування таким чином, що укладання всіх одноколірних вершин однотипних ярликів дає DAG?{1,2,…,k}
Щоб виразити це цілою лінійною програмою, введіть цілу змінну для кожної вершини v , щоб представити мітку на вершині v . Додайте нерівність 1 ≤ ℓ v ≤ k .ℓvvv1≤ℓv≤k
Наступним кроком є висловлення вимоги, що графік, що укладає контракт, повинен бути DAG. Зауважте, що якщо є маркування переліченої вище форми, без втрати загальності існує таке маркування, коли мітки індукують топологічний сортування на графіку, що укладається на контракт (тобто, якщо передує w у графіку, що контрактується, то v 's label менше, ніж ш етикетка). Отже, для кожного краю v → w у початковому графіку ми додамо обмеження, що або v, і w мають однаковий ярлик і той самий колір, інакше мітка v 'менша, ніж мітка w . Зокрема, для кожного краю vvwvwv→wvwvw в початковий графік, де v , w мають однаковий колір, додамо нерівність ℓ v ≤ ℓ w . Для кожного краю v → w, де v , w мають різні кольори, додайте нерівність ℓ v < ℓ w .v→wv,wℓv≤ℓwv→wv,wℓv<ℓw
Тепер подивіться, чи є якесь можливе рішення для цієї цілолінійної лінійної програми. Буде можливим рішення, якщо і лише тоді, коли маркування має бажану форму (тобто, укладання всіх однокольорових вершин однієї мітки дає DAG). Іншими словами, буде можливим рішенням тоді і лише тоді, коли є спосіб скоротити початковий графік до DAG розміром . Ми можемо використовувати будь-яке цілочисельне лінійне програмування лінійки; якщо вирішувач ILP дає нам відповідь, ми маємо відповідь на оригінальну проблему рішення.≤k
Звичайно, це не гарантовано завершиться за полиномний час. Гарантій немає. Однак вирішувачі ILP отримали досить непогано. Я би сподівався, що для графіка розумного розміру у вас є гідний шанс, що вирішувач ILP зможе вирішити цю проблему за розумну кількість часу.
Можна також кодувати це як екземпляр SAT і використовувати розв'язувач SAT. Я не знаю, чи було б це ефективніше. Версію ILP, мабуть, простіше думати.
(Я сподіваюся, що це правильно. Я не перевіряв кожну деталь уважно, тому, будь ласка, перевірте мої міркування! Я сподіваюся, що я кудись не спробував.)
Оновлення (10/21): Схоже, ILP цієї форми можна вирішити за лінійним часом, обробляючи DAG у топологічно відсортованому порядку та відстежуючи нижню межу на мітці для кожної вершини. Це викликає підозру в моєму рішенні: чи я десь помилився?