Перерахування всіх пар неперерізних шляхів


10

З огляду на , орієнтований граф і дві вершини їв , т V . Пара простих контурів p 1 , p 2 від s до t є неперервними ребрами, якщо вони не ділять ребро.G=(V,E)s,tVp1,p2st

Використовуючи максимальний потік, легко вирішити, чи є пара крайових роз'єднаних шляхів від до t . Тепер, чи існує алгоритм затримки поліноміального часу, щоб перерахувати всі пари реберного роз'єднаного шляху від s до t ?stst


1
Ні, оскільки таких шляхів може бути експоненціально багато.
Каве

6
@Kaveh: Я думаю, що "алгоритм затримки поліномів" може зайняти експоненціальний час, доки затримка між виходами буде поліноміально довгою. Наприклад, існує алгоритм багаточленної затримки, який перераховує всі максимальні кліки у порядку зростання, хоча число максимальних кліків є експоненціальним.
Робін Котарі

3
Чи можна включити до запитання пояснення затримки поліномів? Я не був знайомий з цим, поки не прочитав коментар Робіна.
Артем Казнатчеєв

@Robin, ти маєш рацію, я не звертав уваги на слово "затримка".
Каве

Відповіді:


6

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

Використовуючи максимальний потік, можна вирішити дещо більш загальну задачу: знайти пару крайових неперехідних контурів від деяких двох вершин {s1, s2} до деяких інших вершин {t1, t2}, але не контролюючи, до якої вершини джерела підключено до якої вершини призначення.

Припустимо, у нас є графік G і вершини s1, s2, t1, t2, для яких ми хочемо перерахувати всі пари шляхів. Знайдіть одну пару шляхів P1, P2, і нехай e = (s1, v) є першим краєм на одному з цих шляхів. Тоді ми можемо розділити проблемний простір на дві підпроблеми: пари шляхів, які використовують e, такі самі, як і шляхи від {v, s2} до {t1, t2} у G-s1, і пари шляхів, які не використовують e такі ж, як і шляхи від {s1, s2} до {t1, t2} в Ge. Повторіть обидві ці подпрограми, і (щоб уникнути дублювання) повідомте про шлях лише тоді, коли ви знаходитесь внизу рекурсії.


1
чи очевидно, що алгоритм - це поліномальна затримка, якщо ми зачекаємо до нижньої частини рекурсії?
Артем Казнатчеєв

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

5

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

Виберіть деяку умову для представлення шляхів, що мають природне загальне впорядкування визначене на ньому. (Одним із прикладів може бути лише перелік вершин шляху та впорядкування лексикографічно). Виберіть улюблену структуру даних D на місці D, яка підтримує логарифмічний пошук та вставлення (скажімо, червоно-чорне дерево). Нехай G - ваш графік<DG

Визначте алгоритм :F


:F(s,t,G,D)

(тут D означає посилання на внутрішню структуру даних D )DD

  1. запустіть свій алгоритм багаторазового часу для повернення пари контурів, що не перетинаються на край з P < Q від s до t(P,Q)P<Qst .
  2. Якщо немає у D(P,Q)D .

    2.1. Вставте у D(P,Q)D (і виведіть, якщо ви вважаєте, що виводить, як алгоритм працює).

    2.2. Для кожного краю запустіть F ( s , t , G - { u v } , D )uvE(PQ)F(s,t,G{uv},D)


Ds,tV(G)s<tstF(s,t,G,D)

PSPACEPSPACE


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