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

15

Одним из классических расширений проблемы максимального потока является проблема «максимального потока во времени»: вам дается орграф, два узла которого различаются как источник и приемник, где каждая дуга имеет два параметра, - единичное время и задержка. Вы также дали горизонт времени . Цель состоит в том, чтобы вычислить поток с течением времени , который получает максимальное количество материала от источника к стоку по времени . Поток максимального значения может быть вычислен за полиномиальное время с помощью умного классического сокращения до минимального максимального расхода.TT

Меня интересует расширение этой модели, где у ребер есть третий параметр «продолжительности жизни». Если дуга имеет срок службы , а - самое раннее время, когда положительный поток посылается через дугу, то мы разрушаем дугу в момент времени . Вы можете думать об этом, как о платформах в Super Mario Brothers, которые падают / разрушаются вскоре после того, как вы наступили на них, или вы можете думать о них как о батареях, необходимых для питания краев, которые нельзя отключить после их включения. , ( Изменить :) Проблема решения заключается в том, что, когда также задана нижняя граница значения потока , можно ли запланировать поток, отвечающий как верхней границе временного горизонта, так и нижней границе значения потока.т т + Бtt+B

До сих пор я вижу, что эта проблема сильно NP-сложна (через 3 раздела). Но на самом деле я не знаю, есть ли это в NP: есть ли гарантия способа выразить решение компактно? В классическом варианте для обхода этой проблемы используется специальный тип оптимального потока.

Примечание: приведенная выше модель немного не указана, так как вы можете разрешить или запретить накопление потока в узлах, и у вас может быть модель с дискретным временем или непрерывная модель. Решение вопроса для любой из этих моделей было бы превосходным.

daveagp
источник
1
Я не уверен, что понимаю. Почему существует проблема в компактном выражении конкретного плана потока и проверке того, что общий поток равен по крайней мере F за многократное время?
Суреш Венкат
3
Вы можете подумать о том, как доказать, что выходные данные задачи оптимизации, выходные данные которой представляют собой синхронизированный поток, могут быть проверены на оптимальность за многократное время. Тем не менее, часто можно показать, что проблемы решения с ответами «только да» или «нет» есть в NP, а проблемы оптимизации, которые максимизируют некоторую функцию, такую ​​как поток, обычно превращаются в проблему решения путем добавления нижнего граничного значения B к входу, и проблема решения становится «Есть ли решение со значением по крайней мере B?»
andy_fingerhut
Суреш: скажем, в дискретной модели естественный способ выражения плана потока принимает целых чисел для каждой дуги, но это не полином, а только псевдополином во входном размере. Аналогично, в непрерывной модели я не вижу, как это сжимать. T
daveagp
Энди: Вы правы, формально, для меня лучше заявить, что это проблема решения, имея нижнюю границу значения в дополнение к временному горизонту, тогда мы можем спросить, лежит ли она в NP.
daveagp
1
@daveagp: Вы пробовали PSPACE-hardness, например, уменьшить QBF для вашей проблемы?
Ёсио Окамото

Ответы:

13

Прошло много времени, но я уверен, что эта проблема в P.

Я написал свою диссертацию на эту тему в 1995 году. См. «Алгоритмы эффективного динамического потока в сети» Брюса Хоппе, представленные в отделе Cornell CS. Онлайн на http://dspace.library.cornell.edu/bitstream/1813/7181/1/95-1524.pdf

См. Главу 8 «Расширения» раздел 8.1 о «смертных краях»

Брюс Хоппе
источник
3
«Это была темная и бурная ночь. Джек лежал неподвижно в своей каюте - неподвижно, за исключением живота, который вращался в его кишке, как безумный карнавальный заезд ...» (страница xiii, где автор обсуждает практические применения).
Нил Янг
Хорошая цитата, Нил! :) Кстати, daveagp подчеркивает необходимость использования псевдополиномиального пространства для хранения «потока», который отвечает на вопрос о решении. Как не только найти оптимальный поток, но также и представить, что поток в главах 1–7 моей диссертации
Брюс Хоппе
Отлично! Я наконец прочитал все это. После того, как мы исправим первый поток времени, достигший грани, доказательство осуществимости сети с результирующим временем начала и конца находится в P (при условии, что удержание разрешено), и, следовательно, исходная проблема в NP: наш сертификат полиномиального размера перечисляет время начала для каждое ребро Супер Марио поэтому течет NP-полностью. Случайные вопросы: запрещает ли удержание что-то изменить? есть ли приличный алгоритм приближения?
daveagp
2

РЕДАКТИРОВАТЬ: ответ НЕПРАВИЛЬНО. Я сделал (глупое) неявное предположение, что, когда поток пути начинается в момент времени s и заканчивается в момент времени t и проходит через край e, он блокирует край e на это время. Однако это не так. Видеть *.

Примечание: возможно, этот подход излишне сложен или некорректен. Хотя я пытался проверить и записать это внимательно - я не тратил на это огромное количество времени.

Предполагается, что «накопление» не допускается, например, поток должен быть передан немедленно. Обозначим через количество ребер, а N - длину входа. Я не указывал непрерывное или дискретное время, поскольку не принимал его во внимание. Это должно работать для дискретного мышления, для непрерывного я уверен.mN

Затем мы можем описать решение как набор «путей-потоков» от источника к стоку. Путь потока - это четверка которая состоит из следующего: простой путь P от источника к стоку; Время начала пути потока s ; Объем потока через путь а ; Пропускная способность р .(P,s,a,r)Psar

Пусть решение задано множеством -потоков. Мы можем проверить, является ли решение, данное этими путями, правильным во времени полиномом от | F | и N :F|F|N

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

Теперь мы «просто» нужно показать , что число путь-потоков является многочленом .N

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

Рассмотрим некоторое некомпактное решение и (изначально) пустое множество путей. Идея состоит в том, что мы итеративно находим поток пути в некомпактном решении, удаляем его и сохраняем в нашем наборе потоков пути.

titji<jtptq[tp,tq][ti,tj]Fi,jtjtj

[i,j][ti,tj][ti+1,tj1]|Fs,t|m

Fti,tjti+1tj1

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

Ruub
источник
Для меня граница разложения выглядит ошибочной, я попытаюсь привести иллюстративный контрпример. Предположим, что сеть - это всего лишь один источник -> край приемника емкости 100, задержка 0, срок службы 100. Теперь рассмотрим этот график потока: во временном интервале [0, 1) поток передачи отправляется со скоростью 1; в [1, 2) со скоростью 2 и т. д. до 100 в [99, 100). Любая декомпозиция требует> = 100 путей-потоков, что противоречит вашему требованию, насколько я понимаю. Я должен упомянуть, что Форд и Фулкерсон избегают этого препятствия в своем классическом решении (без продолжительности жизни), рассматривая определенный тип оптимального решения, а не произвольный.
daveagp
Этого, вероятно, можно избежать, увеличив максимизируя «продолжительность жизни» потока, но в доказательстве есть еще одна проблема, я отредактировал ее, чтобы прояснить.
Рууб
1

Как я понимаю, вам нужно хранить только одно число на дугу, представляющее момент, когда поток начинает передаваться по дуге. Это предполагает, что после этого дуга становится непригодной для использования. Если, в противном случае, дуга может быть использована снова после того, как она перестанет использоваться, у нее должны быть решения, максимально приближенные к решениям с максимальным расходом с течением времени (поскольку поток может прекратить посылаться на сколь угодно малое количество времени, а затем начать перекачиваться снова ).

Леандро М.
источник
Я не могу понять, какова ваша претензия.
Tsuyoshi Ito
Я не думаю, что это правильно. Например, представьте сеть с тремя узлами, источником 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 можно будет использовать еще раз, и это даст лучшее решение.
Леандро М.
@ Дэйв: нет, это не совсем то, что я утверждаю. Я хочу сказать, что либо каждая дуга может использоваться только конечное число раз, либо решения проблемы должны произвольно приближаться к решениям с максимальным расходом во времени. Короче, я обеспокоен деталями определения проблемы.
Леандро М.