Чи логічно завершено NP-логічне скорочення?


24

Визначення проблеми логічного мінімуму (LMC)

Припустимо, що - невагомий диграф, і - дві вершини , а досягається з . Проблема LMC вивчає, як ми можемо зробити недоступним для , видаливши деякі ребра з наступними обмеженнями:s t V t s t s GG=(V,E)stVtstsG

  1. Кількість знятих країв повинна бути мінімальною.
  2. Ми не можемо видалити кожен край виходу з будь-якої вершини (тобто жодна вершина з вихідними ребрами не може видаляти всі її вихідні краї).G

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

Спроби рішення

Якщо ми ігноруємо обмеження логічного усунення проблеми LMC, то це буде проблема мінімуму розрізу в незваженому диграфові , тому вона буде вирішена поліноміально (теорема про максимум потоку з мінімальним розрізом).G

Якщо ми ігноруємо обмеження на мінімальне обмеження для усунення проблеми LMC, воно буде знову розв’язуваним поліноміально в DAG: знайдемо вершину такою, що є доступною з а не є доступною від . Потім розглянемо шлях який є довільним шляхом від до . Тепер розглянемо шлях як підграф : відповідь буде на кожен вихідний край підграф . Очевидно, що вершину може бути знайдено DFS в за многочлен. На жаль, цей алгоритм взагалі не працюєk s t k p s k p G p k GkkstkpskpGpkG для довільно спрямованого графа.

Я намагався вирішити проблему LMC за допомогою методики динамічного програмування, але кількість необхідних станів для вирішення проблеми стала експоненціальною. Більше того, я намагався зменшити деякі проблеми NP-Complete, такі як 3-SAT, max2Sat, max-cut та clique до проблеми LMC, мені не вдалося знайти скорочення.

Я особисто думаю, що проблема LMC є NP-Complete, навіть якщо є двійковим DAG (тобто, DAG, де жоден вузол не має ступеня більше 2).G

Запитання

  1. Чи є проблема LMC NP-Complete у довільному диграфові ? (головне питання)G
  2. Чи є проблема LMC NP-Complete у довільній DAG ?G
  3. Чи є проблема LMC NP-Complete у довільній двійковій DAG ?G

Я впевнений, що проблема в якщо ваш графік непрямий . Це буде достатньою відповіддю на ваше запитання? P
Алекс десять Бринк

@SaeedAmiri: знайдіть міні-розріз для і . Якщо вона від’єднує вершину, то ця вершина повинна бути або . Якщо це і те, і інше, не існує такого міні-розрізу. Припустимо, - відключена вершина і край. Видаліть цей край і виконайте міні-розріз на і рекурсивно. t s t t ( t , v ) s vststt(t,v)sv
Олексій десять Брінк

Простим спостереженням можна зробити висновок, що якщо наступна проблема є NP-Complete, то проблема LMC буде також NP-Complete (я не впевнений, що зворотна правда). Припустимо, що - це диграф. Як ми можемо мати міні-розріз на (у розділі до і го, число ребер від до мінімально), і не існує вершини належать й, головка кожного вихідного краю належить до (вихідний край від до ). G V S T S T v V v T S TG=(V,E)GVSTSTvVvTST
amirv


2
Amirv, для проблеми з просто обмеженням (2) алгоритм, який ви пропонуєте, як я розумію, не зовсім правильний. Може бути рішення, навіть якщо для всіх вузлів v існує шлях від s до v і шлях від v до t. Розглянемо графік з і . V = { s , t , a }G=(V,E)V={s,t,a}E={(s,t),(s,a),(a,s)}
Ніл Янг

Відповіді:


1

Нехай G = (V, E) - зважений DAG, s і t - дві вершини G, а LSTMC = (G, s, t) - екземпляр логічної задачі min min cut. Очевидно, що проблема LSTMC - це NP.Зараз слід показати, що LSTMC є NP-Hard. Ми зводимо задачу набору ударів до проблеми LSTMC. Нехай S = {s1, s2, ..., sn} - задані множини, а {a1, a2, ..., am} є об'єднанням усіх множин. Враховуючи число k1, проблема рішення заданої заданої множини визначає, чи існує множина A з елементами k1 така, що кожен елемент S (кожен множина si st i = 1..n) містить щонайменше один елемент А. Ми позначають задачу набору ударів як HS (S). Побудуємо зважений DAG G ′ з множини S за алгоритмом HS2LSTMC. Цей алгоритм розглядає s як вихідну вершину DAG G ′. Для кожного набору si HS st i = 1..n алгоритм розглядає відповідну вершину, si, і додає край з нескінченною вагою від s до кожного si. Тоді для кожного елемента aj об'єднання вхідних множин st j = 1..m алгоритм розглядає відповідну вершину, aj і додає ребро з нульовою вагою від кожного si до будь-якого aj st aj ∈si в HS. Нарешті, алгоритм розглядає дві кінцеві вершини, які називаються t і k, і додає два ребра від кожної aj st j = 1..m до обох кінцевих вершин. Зрозуміло, що G ′ можна скласти в многочлен.

Тепер ми повинні продемонструвати, що HS (S) має відповідь з елементами k1, якщо і лише тоді, коли LSTMC = (G ′, s, t) має відповідь з деякими логічно вилученими ребрами, так що сума ваг вилучених ребер дорівнює k1.

Для простоти ми виконуємо цю частину доказування, подаючи приклад:

На наступному малюнку припустимо, що S = {s1, s2, s3} такий, що s1 = {1, 2, 3}, s2 = {1, 4} і s3 = {2, 5}. На рис. 2 показано зважене значення DAG G 'задачі LSTMC, що відповідає задачі HS (S) про набір ударів. У цьому прикладі множина A, а саме об'єднання всіх елементів S, є A = {1, 2, 3, 4, 5}. У нас | S | = 3 і | А | = 5. Цей приклад показує, як довільний екземпляр задачі набору ударів може бути вирішений за допомогою конкретного екземпляра логічної задачі min min cut у зваженому DAG. Якщо ми обчислимо відповідь на LSTMC = (G ′, s, t) і розглянемо ті вилучені краї відповіді, які у формі (aj, t) називаються E1 (1 ≤ j ≤ m), то хвостовий набір E1 - відповідь на HS (S). Відповідь на задачу LSTMC - це набір ребер E1 = {(s1, 2), (s1, 3), (s2, 4), (s3, 5), (1, t), (2, t)}. Отже, хвостовий набір підмножини E2 = {(1, t), (2,

Зменшення


0

Ось (спроба) алгоритм поліноміальний час для БМО на довільне бінарне DAGs .G

Це відповідає на запитання №3. (Вибачте за безладний запис достроково. :))

Для початку викиньте «назавжди» будь-яку вершину, недоступну для . Ми не дбаємо про них, так як вони не є частиною будь-якого - шляху.s tsst

Далі визначте під-DAG-адреси і , спочатку порожні. Потім для всіх вершин ,B v G - { s , t }ABvG{s,t}

Перевірте, чи є шлях від до . Якщо це так, додайте до . Якщо немає, додайте до .t v A v BvtvAvB

Нехай краї і є тими, що індукуються вершинами в кожному наборі (поки що ігноруйте будь-які ребра від до , від до і від до ; також зауважте, що немає ребер від до від будівництво).B s A A t A B B tABsAAtABBt

Потім обчислити транзитивне замикання . А саме, ми зацікавлені в пошуку деякого безлічі вершин , які є «листя» на суб-DAG .{ a } AA{a}A

Виправте будь-який такий . Зверніть увагу , що повинно бути направлено ребро з в . Це тому, що, будуючи, (i) існує - шлях через , (ii) немає шляхів від до , і (iii) оскільки є сам по собі DAG і - лист , немає шляху від через іншу вершину від до .a t s t a a B A a A a A taatstaaBAaAaAt

Тепер також має бути спрямований край від кожної вершини в до деякої вершини в , або деякі з мають один край до . У будь-якому випадку ми можемо видалити будь-який край .B { a } t a t{a}B{a}tat

Якщо= 1, то або ми повинні видалити край унікальної , або є вершина раніше в шляху - що містить який має два шляхи до - один через і один безпосередньо. У випадку, якщо остання може бути утриманою, ми записуємо і продовжуємо "жадібно назад" (детальніше про це нижче).a t|{a}|att a t a a tstataat

Якщо> 1, то ми повинні або видалити всі ребра з , або ще є певна кількість реберраніше при перехідному закритті що відключає всі шляхи від через до .{ a } t k < | { a } | A s { a } t|{a}|{a}tk<|{a}|As{a}t

Тут ми використовуємо той факт, що графік є двійковим DAG.G

Розглянемо набір попередників . Оскільки кожна з цих вершин має ступінь перевищення, щонайменше, дві, то існує рівно три випадки:{a}

Випадок 1. Попередник має через краю до деякої вершини в і через краю до деякої вершини в .B{a}B

У цьому випадку не має значення, чи будемо видалити край від попередника до вершини в або край з вершини в до . Тому ми можемо «пропустити минулу» цю вершину (і перевірити, чи зливається шлях назад за допомогою шляху іншої вершини в ).{a}{a}t{a}

Випадок 2. Попередник має вершину вершини у та інший попередник .{a}{a}

У цьому випадку ми повинні або видалити обидва краї від до , або ми можемо видалити один попередній край на шляху від до попередника, який від’єднує обидва шляху.{a}ts

Випадок 3. У попередника є перехід до двох вершин у .{a}

Це ідентично випадку 2. Не має значення, чи будемо ми видалити один з ребер цього попередника та відповідні інші ребра від до або обидва ребра з до . Ми просто хочемо знати, чи можемо ми відключити шлях від через цього попередника до з одним краєм раніше на шляху від до попередника.{a}t{a}tsts

Загалом, коли ми скануємо назад через попередників у перехідному закритті , ми можемо жадібно відслідковувати вибір "найкращих поки що". Тобто, на кожному кроці у нас є очевидний вибір, який передбачає видалення деякої кількості ребер, але ми хочемо почекати, щоб побачити, чи є кращий варіант. Як тільки знайдеться кращий варіант, ми можемо «забути» про попередній варіант. Отже, жадібного вибору на кожному шарі попередників достатньо (до тих пір, поки ми будемо чекати до кінця, щоб взяти на себе будь-який вибір).A

Тому за деякої основної запам'ятовування часові та просторові складності цього процесу виявляються не більше . Це виключає той факт, що, хоча ми можемо локально / жадібно ідентифікувати, коли ми знайшли «дешевший вибір», апріорі незрозуміло, які раніше записані краї потрібно видалити. Тому ми записуємо порядок, у якому перевіряємо ребра під час руху. Знайшовши кращий варіант, ми повторюємо пошук до цього моменту, щоб знайти, які раніше записані краї видалити. Загальна часова складність цього кроку становить а просторова складність .O(|E|)O(|E|2)O(|E|)

Загалом, часова складність становить для ініціалізації, плюс для перехідного закриття плюс для пошук. Загальний час - .O ( | V | 3 )O(|V|(|V|+|E|))O(|V|3)O(|E|2)O(|V|2+|E||V|+|V|3+|E|2)=O(|V|3+|E|2)

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


Я не отримую наступного твердження: "[дуга] від кожної вершини в до деякої вершини в , або частина має один край до . у випадку, нам дозволяється видалити будь-яку дугу. " Якщо є лише одна поза дуги, нам заборонено видаляти її за визначенням! До речі, що з позначкою ? B { a } t ( a , t ) a { a }{a}B{a}t(a,t)a{a}
Pål GD

Ага - я неправильно прочитав коментар про другу умову. Це не є невід'ємною частиною алгоритму - якщо ми не можемо видалити окремі позадугові дуги, ми просто не робимо. Пропустіть його та перейдіть на вказівку зворотного переходу-закриття. Ви досягаєте вершини з двома поза дугами або (якщо так, виведіть "немає рішення"). позначення тому , що я маю в виду поточної колекції максимальних вершин (взагалі кажучи, більш ніж 1 така вершина в той час, так як транзитивне замикання є часткове впорядкування). Крім того , з використанням тільки як видається, означає довільний елемент , який не призначений. { a } a As{a}aA
Даніель Апон

2
Нарешті мені вдалося довести, що ця проблема є NP-Complete.
amirv

1
@amirv О, будь ласка , поділіться описом доказу у вигляді відповіді!
Рафаель

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