Сложность уникального st-Connectivity

11

Я хотел бы знать, может ли быть решена следующая проблема в (недетерминированное пространство журнала):NL

Для ориентированного графа с двумя выделенными вершинами s и t существует ли единственный путь из s в t в G ?s tGstт гstG

Я чувствую, что он, вероятно, находится в NL так как мы можем решить, есть ли путь s - t и нет ли такого пути. Тем не менее, подсчет количества таких путей является P -hard (Valiant, 1979).

Итак, мои вопросы: у вас есть ссылки на это? Очевидно ли, что он находится в NL ? Или это не в NL ?

Bruno
источник
5
Вы имеете в виду простые пути? Не ясно, то же самое в этом контексте.
Лэнс Фортноу
1
Хорошая мысль, я имею в виду простые пути.
Бруно

Ответы:

16

Кажется, ваша проблема в NL . Вот алгоритм.

Во-первых, недетерминированно угадать путь от s до t . Если вы угадаете неправильно, отклоните . Назовите этот алгоритм A .

Рассмотрим следующий недетерминированный алгоритм , который определяет, существуют ли хотя бы два пути. Учитывая граф и , для всех пар различных ребер угадать путь от до который включает но не , затем угадать путь от до который включает но не . Если догадки верны, примите . Если для всех вариантов и не принято ни одного подтверждения , отклоните . Примечание реализуемо в недетерминированном пространстве журнала.сек , т е , е с т е е с т е е е е ВBs,te,fstefstfeefB

Теперь множество - это множество - графов, по крайней мере с двумя путями из в . Поскольку , дополнение также в , то есть, мы можем определить, и иметь меньше , чем два пути, в недетерминированных logspace.s t s t N L = c o N L B N L s tL(B)ststNL=coNLBNLst

Последний алгоритм: «Запустите Если принимает, запустите дополнение и выведите его ответ».A BAAB

Я не знаю ссылки.

ОБНОВЛЕНИЕ: Если вы действительно хотите ссылку, ознакомьтесь с первым параграфом Раздела 3 этого документа . Но это, вероятно, только одна из многих ссылок, которые ссылаются на это следствие. Было бы более разумно назвать результат "фольклором", а не ссылаться на статью, в которой упоминается об этом.

ОБНОВЛЕНИЕ 2: Предположим, вы хотите определить, существует ли уникальный простой путь. В этом случае алгоритм не должен изменяться: если путь вообще существует, тогда существует простой путь. Я считаю , что следующая модификация будет работать для алгоритма .BAB

Мы хотим переписать алгоритм так, чтобы он принимал, если есть хотя бы два простых пути.B

Сначала рассмотрим следующий алгоритм полиномиального времени для задачи. Найти кратчайший путь от до . Для каждого ребра в проверьте, существует ли другой путь - , который не проходит через . Если вы найдете такой путь, то примите . Если вы никогда не найдете другой путь, то отклоните . Поскольку является самым коротким, у него нет цикла, и если есть другой путь, который не использует какое-либо ребро , то есть другой путь, который прост и не использует какое-то ребросек т е р сек т е Р Р РPstePstePPP, (Этот алгоритм используется для решения проблемы «вторых кратчайших путей».)

Мы будем реализовывать этот алгоритм в . Если бы у нас был алгоритм для запроса ребер в фиксированном пути , мы могли бы реализовать вышеизложенное в недетерминированном логарифмическом пространстве: перебирая все ребра в , угадывая путь - и проверяя его для каждого ребра, посещенного по пути , ни один из них не равен .N L E P e P s t eNLNLePePste

Итак, нам нужен «оракул пути», алгоритм со свойством: учитывая , в каждом пути вычислений алгоритм либо сообщает й фронт на конкретном фиксированном пути - , либо отказаться . Мы можем получить путь оракула, используя чтобы выделить лексикографически первый путь.i = 1 , , n i s t N L = c o N LNLi=1,,nistNL=coNL

Вот набросок пути оракула.

Найдите , длину кратчайшего пути от до , попробовав все и используя .s t k = 1 , , n N L = c o N Lkstk=1,,nNL=coNL

Установите переменные , , .x : = 1 j : = ku:=sx:=1j:=k

Для всех соседей из в лексикографическом порядке,Uvu

Определите, существует ли путь от до длины (используя результат ). Точнее, запустить недетерминированную алгоритм - связи (длины ) и алгоритм его дополнения, одновременно. Когда один из них принимает, идите с его ответом (он должен быть правильным; оба не могут принять). Если оба отклоняют, то отклоняют .t j - 1 N L =vtj1NL=coNLstj1

Если пути нет, переходите к следующему соседу. Если вы исчерпали всех соседей, откажитесь .

Если есть путь, то, если , выведите в качестве го ребра на пути от до . В противном случае увеличьте , уменьшите , установите и снова запустите цикл for, если .( u , v ) i s t x j u : = v v tx=i(u,v)istxju:=vvt

Если после достижения вывод плохой (заданный был слишком большим).т I яx<itii

Учитывая , этот алгоритм либо выводит е ребро по лексикографически кратчайшему пути из в , либо отклоняет.я P S TiiPst

Райан Уильямс
источник
Я думал о чем-то похожем, но он использует линейное пространство. Спасибо за Ваш ответ!
Бруно
5
Я согласен, что это действительно фольклор. Это является непосредственным следствием краха иерархии . Кроме того, проблема в подсчете не # P-полная. Это в #L, который в свою очередь находится вN C 2NLNC2
V Vinay
2
Да, как я уже говорил выше, алгоритм не различает простые пути и пути с циклами.
Райан Уильямс
1
@V Vinay: В этой статье авторы ссылаются на статью Валианта . Сложность задач перечисления и надежности доказывает полноту задачи. Я только что проверил в газете Валианта , и это проблема 14 (p414). Я что-то неправильно понимаю? Может быть, вы говорили о непростых путях, и сложность резко меняется в этом случае? Благодаря! P
Бруно
1
Кстати, комментарий Allender & Lange достаточно для непосредственного заключения.
Бруно