Супер Маріо тече в НП?


15

Одне класичне розширення задачі про максимальний потік - це проблема "максимальний потік у часі": вам дають диграф, два вузли яких виділяються як джерело та раковина, де кожна дуга має два параметри, потужність-за -одиниця часу та затримка. Ви також дали горизонт часу . Мета полягає в тому, щоб обчислити потік з плином часу , який отримує максимальну кількість матеріалу від джерела до стоку за часом T . Потік максимальної величини може бути обчислений в поліноміальний час розумним класичним зниженням до мінімальної витрати максимального потоку.ТТ

Мене цікавить розширення до цієї моделі, де у країв є третій параметр "тривалість життя". Якщо дуга має тривалість життя , а t - найдавніший час, коли позитивний потік направляється через дугу, то ми знищуємо дугу в момент часу t + . Ви можете думати про це так, як платформи в Super Mario Brothers, які відпадають / руйнуються незабаром після того, як ви наступаєте на них, або ви можете вважати їх як батареї, необхідні для живлення країв, які неможливо вимкнути після їх увімкнення. . ( Редагувати :) Проблема вирішення полягає в тому, чи можна також задати значення потоку нижньої межі B , чи можна запланувати потік, що відповідає як верхній межі часового горизонту, так і нижній межі потоку.тт+Б

Поки я можу бачити, що ця проблема є сильно NP-жорсткою (через 3-х розділ). Але я насправді не знаю, чи є в НП: чи є гарантія способу компактного висловлення рішення? У класичному варіанті для обходу цієї проблеми використовується якийсь особливий тип оптимального потоку.

Примітка: наведена вище модель трохи не вказана, оскільки ви можете дозволити або заборонити накопичення потоку у вузлах, і у вас може бути дискретна модель часу або безперервна. Вирішення питання щодо будь-якої з цих моделей було б відмінним.


1
Я не впевнений, що розумію. Чому виникає проблема з компактним вираженням конкретного плану потоку та перевіркою того, що загальний потік становить принаймні F за багато часу?
Суреш Венкат

3
Ви можете думати, як довести, що вихід проблеми оптимізації, вихід якої є тимчасовим потоком, можна перевірити на оптимальність у полі-час. Однак часто видно, що проблеми рішення з лише відповідями "так" / "немає" є NP, а проблеми оптимізації, що максимізують деяку функцію, як потік, зазвичай перетворюються на проблему рішення шляхом додавання нижнього обмеженого значення B до вводу, і проблема рішення стає "Чи є рішення зі значенням принаймні B?"
andy_fingerhut

Суреш: скажімо, що в дискретній моделі природний спосіб виразити план потоку займає цілих чисел для кожної дуги, але це не многочлен, це лише псевдополіноми у вхідному розмірі. У моделі безперервної дії я не бачу, як це стиснути. T
daveagp

Енді: Ви праві, формально кажучи, для мене краще констатувати це як проблему рішення, маючи нижчу межу додатково до часового горизонту, то це те, для чого ми могли б запитати, чи лежить він у NP.
daveagp

1
@daveagp: Ви спробували твердість PSPACE, наприклад, зменшення QBF до вашої проблеми?
Йошіо Окамото,

Відповіді:


13

Минуло давно, але я впевнений, що ця проблема є в П.

Про це я написав кандидатську дисертацію в 1995 році. Див. "Ефективні алгоритми потоку динамічної мережі" Брюса Хоппе, подані до відділу Cornell CS. Інтернет за адресою http://dspace.library.cornell.edu/bitstream/1813/7181/1/95-1524.pdf

Див. Розділ 8 "Розширення", розділ 8.1, про "смертні краї"


3
"Була темна і бурхлива ніч. Джек лежав нерухомо у своїй кабіні - нерухомо, за винятком шлунку, який викручувався в кишечнику, як шалена їзда на карнавалі ..." (сторінка xiii, де автор обговорює практичні додатки).
Ніл Янг

Приємна цитата, Ніл! :) BTW daveagp робить хороший момент щодо необхідності псевдополіномічного простору для зберігання "потоку", який відповідає на питання рішення. Як не тільки знайти оптимальний потік, але й представити, що потік у P - розділи 1-7 моєї дисертації
Брюс Хоппе

Відмінно! Нарешті я все це прочитав. Як тільки ми фіксуємо, що перший потік потрапляє на край, доводить, що реалізація мережі з результуючими початковими та кінцевими часом знаходиться в P (якщо вважати, що дозволено зберігання), і тому початкова проблема полягає в NP: наш сертифікат розміру поліномів перераховує час початку для кожен край. Тому Super Mario тече NP повністю. Випадкові запитання: чи забороняє держателю щось змінити? чи є гідний алгоритм наближення?
daveagp

2

РЕДАКТУЙТЕ: відповідь НЕправильна. Я зробив (дурне) неявне припущення, що коли потік шляху починається в момент s і закінчується в момент t і проходить через край e, він блокує край e на цю тривалість. Однак це неправда. Побачити *.

Примітка: Можливо, такий підхід є зайвим складним або неправильним. Хоча я намагався це перевірити і ретельно записувати - я не витрачав на це величезної кількості часу.

Якщо припустити, що «запаси» не дозволяються, наприклад, потік потрібно негайно перенести. Нехай позначає кількість ребер і N довжину введення. Я не вказував постійний чи дискретний час, оскільки не брав його до уваги. Це повинно працювати для дискретної думки, для постійного, я впевнений.mN

Тоді ми можемо описати рішення як набір "шляхів-потоків" від джерела до раковини. Шлях-потік - це чотиричлен який складається з наступного: Простий шлях P від джерела до потоку; Час початку шляху-потоку s ; Кількість потоку через шлях a ; Пропускна здатність r .(P,s,a,r)Psar

Нехай рішення задається безліччю шляхових потоків. Ми можемо перевірити, чи правильне рішення, задане цими потоками шляху, правильним за тимчасовим поліном у | Ж | і N :Ж|F|N

  • Для кожного краю та моменту часу t , складіть швидкість пропускної здатності всіх потоків шляху, що йдуть через e, в момент t . Кожен потік шляху має початок і кінець часу, тому нам потрібно лише враховувати моменти часу, коли потік шляху починається або закінчується (між цими моментами нічого не змінюється щодо потоків шляху, що йдуть через край e .etete
  • Для кожного шляху-потік , ми можемо перевірити , чи надходить все це потік в раковині до того часу .T
  • Для кожного краю ми можемо перевірити, чи проходить потік шляху після його знищення чи ні.
  • Нижню межу потоку ми можемо просто перевірити, додавши кількість потоку потоків потоків.B

Тепер ми «просто» потрібно показати , що число шлях-потоків є многочленом .N

Для даного рішення ми можемо визначити час, коли деякий потік пройшов край і коли край був зруйнований. Перетворіть це на проблему з рівноцінним рішенням: на кожному краї є жорсткі межі, коли його можна використовувати, а коли ні - час початку та закінчення. Нехай позначають множину всіх цих часів.{t1,...,tk}

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

Знайдіть потоки шляху, які починаються і закінчуються між і t j , i < j, але не закінчуються між будь-якими t p і t q такими, що [ t p , t q ] [ t i , t j ] . Нехай F i , j позначає набір потоків шляху між t j і t j із властивостями, як описано вище.titji<jtptq[tp,tq][ti,tj]Fi,jtjtj

Припустимо, що ми вже видалили всі потоки шляху для всіх менших інтервалів, ніж . Жадібно знайдіть потоки шляхів, які починаються та закінчуються в [ t i , t j ] . Коли ми знайдемо його, видаліть цей потік з розчину і відповідно відрегулюйте пропускну здатність вершин, а також кількість потоку, що надсилається з джерела, щоб також потонути. Для цього потоку шляху ми максимізуємо пропускну здатність. Це означає, що принаймні для одного краю ми досягли максимальної швидкості пропускання або після видалення цього потоку шляху більше немає потоку через цей край. Зауважте, що це справедливо для періоду [ t i + 1 , t j[i,j][ti,tj]. В обох випадках більше цього потоку не проходить через цей край, і ми можемо зробити висновок, що | F s , t | м.[ti+1,tj1]|Fs,t|m

(*) Чому попередня претензія відповідає дійсності? Ну а кожен інший потік шляху в починається до t i + 1 і закінчується після t j - 1 . Тому повинні вчасно перекриватися, щоб вони використовували певний край. Оскільки пропускна здатність максимізована для тракту-потоку, там повинен бути край, де він щільний.Fti,tjti+1tj1

i,j[k]|Fi,j|cm3c


Для мене пов'язане з розкладанням виглядає несправним, я спробую дати ілюстративний контрприклад. Припустимо, мережа - це лише одне джерело-> край мийки ємністю 100, затримка 0, тривалість життя 100. Тепер розглянемо цей графік потоку: у часовому інтервалі [0, 1) відправити потік зі швидкістю 1; в [1, 2) зі швидкістю 2 і т. п. до курсу 100 в [99, 100). Будь-яке декомпозиція потребує> = 100 шляхів-потоків, що суперечить вашій заяві, наскільки я це розумію. Слід зазначити, що Форд та Фулкерсон уникають цієї перешкоди у своєму класичному рішенні (без тривалості життя), розглядаючи конкретний тип оптимального рішення, а не довільний.
daveagp

Цього, напевно, можна уникнути, максимально збільшивши "тривалість життя" потоку, але в доказі є ще одна проблема. Я відредагував це, щоб зробити це зрозумілим.
Руб

1

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


Я не можу зрозуміти, у чому полягає ваша претензія.
Цуйосі Іто,

Я не думаю, що це правильно. Наприклад, уявіть мережу з трьома вузлами, джерелом s, терміналом t та іншим вузлом v, з трьома дугами a1 = (s, v), a2 = (s, v), a3 = (v, t). Місткість дуг становить усі 1, а час у дорозі встановлюється як 0 для a1 і a3, і 100 для a2. Тривалість життя становить 1 для a1 і 1000 для a2 і a3. Тоді, в момент 0, можна відправити одну одиницю потоку через a1 і a3 від s до t, і починає відправляти одну одиницю потоку через a2. Протягом часу від 1 до 99, a3 не здійснює потоку, оскільки a1 відсутній, але під час 100 потік через a2 надходить на v, а a3 використовується знову.
Йосіо Окамото,

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

@Yoshio: У такому випадку, якщо замість того, щоб почати відправляти одну одиницю потоку по a2 негайно, ви перестали надсилати потоки взагалі, через довільно короткий проміжок часу a1 можна було б використати ще раз, і це дало б краще рішення.
Леандро М.

@Dave: ні, це не зовсім те, про що я стверджую. Що я говорю, це те, що або кожну дугу можна використовувати лише обмежену кількість разів, або рішення проблеми повинні довільно наближати рішення до максимального потоку з часом. Мене хвилюють деталі визначення проблеми, словом.
Леандро М.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.