Позитивне топологічне впорядкування


45

Припустимо, у мене є спрямований ациклічний графік з реальними вагами на його вершинах. Я хочу знайти топологічну впорядкованість DAG, в якій для кожного префікса топологічного впорядкування сума ваг невід’ємна. Або якщо ви віддаєте перевагу теоретико-порядковій термінології, у мене є зважений частковий порядок, і я хочу лінійне розширення таким, щоб кожен префікс мав негативну вагу. Що відомо про цю проблему? Чи є NP-повним чи вирішуваним у поліномічний час?


4
Спробуйте алчний алгоритм на цьому графіку: 1 -> 2 -> 3, 1 -> 4 -> 5, вершина ваги дорівнює 1: +2, 2: -2, 3: +3, 4: -1 , 5: -2. Жадібний алгоритм починався з v1, потім вибирав v4, а потім застрягав. Правильний порядок - v1, v2, v3, v4, v5.
Робін Котарі

2
"Деякі проблеми на відстані Фреше JeffE та інші дивилися" - Хороша абстракція! Для інших переваг, ось одна версія: Припустимо, вам задано графовий граф G, зважений по краях, і дві вершини s і tn зовнішньої грані. Ви хочете перетворити один граничний шлях від s до t в інший послідовністю елементарних ходів. Кожен хід замінює поточний шлях своєю симетричною різницею деякою межею обличчя. Як швидко ми можемо знайти послідовність mve, яка мінімізує максимальну довжину еволюційного шляху?
Jeffε

3
Цуйосі, вибачте з цього приводу, я намагався додати новий рядок під час коментування, і це спричинило відключення мого коментаря. Отже, ідея полягає у тому, що у вас щільно зав'язана струна навколо зап'ястя, і ви хочете знати, чи можете ви її відкрутити. Ваше зап'ястя представлено у вигляді багатокутної сітки, осередки якої є елементами часткового порядку (ближче до струни раніше, ближче до виходу пізніше в порядку). Вага клітини - це різниця довжин між її внутрішніми та зовнішніми межами.
Девід Еппштейн

1
@David: Дякую за пояснення. Цього разу я можу зрозуміти, як це пов’язано з поточним питанням, і це цікаво!
Цуйосі Іто

3
Не дуже корисне, але веселе спостереження: Ця проблема еквівалентна проблемі послідовного одномашинного встановлення строків та обмежень пріоритету, коли час обробки кожного завдання може бути негативним . Із негативним часом обробки ця проблема знаходиться в P (Lawler та Mooer 1969, jstor.org/stable/2628367 ), і якщо рішення існує, то існує рішення, яке не залежить від часу обробки. Це чітко руйнується, якщо деякі завдання мають негативний час обробки.
Цуйосі Іто

Відповіді:


18

Ця проблема, схоже, дуже схожа на ПОТРІБНІСТЬ МІНІМІЗУВАННЯ МАКСИМАЛЬНОЇ КУМУЛЯТНОЇ ВАРТІ, проблема [SS7] у Garey & Johnson . А саме:

ІНСТАНЦІЯ: Встановіть завдань, частковий порядок на T , «вартість» c ( t ) Z для кожного t T (якщо c ( t ) < 0 , це може розглядатися як «прибуток»), і a константа K Z .TTc(t)ZtTc(t)<0KZ

ПИТАННЯ: Чи існує однопроцесорний графік для T, який підкоряється обмеженням пріоритету і має властивість, що для кожної задачі t T сума витрат на всі завдання t з σ ( t ) σ ( t ) не більше K ?σTtTtσ(t)σ(t)K

Я НЕ впевнений , чи залишиться проблема NP-повної , коли фіксована 0. G & J згадкою про те , що проблема залишається NP-повної , якщо з ( т ) { - 1 , 0 , 1 } для всіх т Е Т .Kc(t){1,0,1}tT


7
Це добре виглядає. Тоді я думаю, що можна прийняти без втрати загальності, інакше додати необмежену роботу з c -значенням - K (або K завданнями c -значення - 1 ). K=0cKKc1
daveagp

@mhum: Я працюю над технічним звітом щодо відповідних результатів і хочу вас навести. Ти б дав мені своє справжнє ім’я? Якщо ви хочете, ви можете надіслати мені це електронною поштою або просто залишитися
непотрібним

9

Ну, моя відповідь - це моє запитання, з якого виходить, що якби ви могли вирішити цю проблему в P, ви могли також вирішити ще одну відкриту проблему: Позитивне топологічне упорядкування, візьміть 3

Редагувати: Ця проблема також виявилася NP-завершеною, тому ваша проблема є NP-повною вже тоді, коли ваша DAG має лише два рівні, тобто якщо немає спрямованих контурів з двома краями.


3

Якщо я правильно розумію проблему, я вважаю, що проблема обмеження пріоритетом одного планування машини для мінімізації зваженої суми часу завершення (1 | prec | \ sum wc) може бути зведена до проблеми, яка вас цікавить. У задачі 1 | prec | \ sum wc у нас є n робочих місць, кожна з яких має негативну вагу та час обробки, набір робочих місць, і ми хочемо лінійного розширення завдань таким чином, щоб зважена сума разів завершила роботу мінімізований. Проблеми неповні, хоча ми вважаємо, що час опрацювання кожного завдання дорівнює 1. Чи має це сенс?


Це, безумовно, цікава можливість. Але як зробити зменшення таким чином, що критерій оптимізації (мінімізувати суму часу завершення) перетворюється на обмеження (негативні префікси)?
Девід Еппштейн

Я не знаю цього NP-повноти результату планування, але я думаю, що це стосується проблеми вирішення питання про те, чи є лінійне розширення таким, щоб зважена сума разів завершила роботу не більше K, тому я не думаю тут важлива відмінність між критерієм оптимізації та обмеженням. Однак я не зрозумів, як уявити обмеження щодо зваженої суми часу завершення в поточній проблемі.
Tsuyoshi Ito

Я думаю, що скорочення не так просто, як я думав на початку. Я вже не впевнений у своїй відповіді.
monaldo

Я щойно зрозумів помилку в своєму попередньому коментарі. Коли я опублікував це, я подумав, що представляти обмеження на незважену суму легко (звідси наголос на зваженому ), але це було абсолютно неправильно.
Цуйосі Іто,

2

Що робити, якщо ми завжди беремо максимальний елемент (у частковому порядку) з найменшою вагою. Після вичерпання елементів ми повертаємо їх у зворотному порядку як вихід.


Проблема є інваріантною під час перетворення зворотного часткового впорядкування та відкидання всіх ваг. Тож я не бачу, як це може відрізнятися від алгоритму, що просунувся вперед, Робін К. дав контрприклад у коментарях.
Девід Еппштейн

Але цей метод працює для його прикладу: спочатку буде обрана вершина 5, потім вершина 4, потім 3, 2 і, нарешті, 1. Отже, остаточний порядок був би 1, 2, 3, 4, 5. Насправді я розумію Думаю, важко довести, що цей метод працює. Припустимо, у вас є рішення, яке не має максимального елемента (раковини) мінімальної ваги в останньому положенні. Тоді ви можете знайти ще одне рішення, яке має цю властивість, просто змінивши положення такого елемента на останнє та зберігши решту таким, яким він є. Виконайте індукцію щодо того, що залишилося, і ви отримаєте офіційний доказ.
Даніель Мартін

Так ... це не працює ... 1 -> 2 -> 3, 1 -> 4 з вагами 4, -7, 6, 3 відповідно.
Даніель Мартін

1

Ця проблема нагадує мені багато дерев рішень. Я б розглядав такий тип рішення, який намагається завжди вибрати найбільш перспективний шлях, але дивлячись на весь підграф:

Починаючи з вузлів раковини, просувайтесь до джерел, один за одним. Поки ви робите це, надайте кожному краю вагу. Ця вага повинна представляти мінімальну суму, яку вам доведеться "заплатити", або ви "наберетеся", пройшовши підграф, починаючи від вузла, на який вказує край. Припустимо, ми перебуваємо на рівні i + 1 і рухаємось до рівня i. Це я б зробив, щоб призначити вагу для краю, що вказує на вузол рівня i:

  1. edge_weight = вказівний_node_weight.
  2. Знайдіть край, починаючи з "вказівного вузла" з максимальною вагою. Нехай ця вага буде next_edge_weight.
  3. edge_weight + = next_edge_weight

Потім побудуйте порядок наступним чином:

  1. Нехай S - межа пошуку, тобто набір вузлів, які слід вибрати з наступного.
  2. Виберіть вузол так, щоб (node_weight + maks_edge_weight) був максимальним.
  3. Видаліть вузол із графіка і S. Додайте «діти» до вузла S.
  4. Якщо графік не порожній, перейдіть до кроку 1.
  5. Зупинка.

Ідея полягає в тому, щоб перейти на ті підграграфи, які дадуть якомога більше виграшів, щоб потім нести витрати на підграграфи з негативною вагою пізніше.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.