Очень похоже на мой ранее опубликованный вопрос . На этот раз, однако, график является ненаправленным.
Данный
- Неориентированный граф без каких - либо множественных ребер или петель,
- Исходная вершина ,
- Целевая вершина ,
- Максимальная длина пути ,
Я ищу - подграф который содержит любую вершину и любое ребро в (и только те), которые являются частью хотя бы одного простого пути из в с длиной .
Примечания:
- Мне не нужно перечислять пути.
- Я ищу эффективный алгоритм (и время, и память), так как мне нужно выполнить его на очень больших графах (10 ^ 8 вершин, 10 ^ 9 ребер).
ds.algorithms
graph-algorithms
shortest-path
Лиор Коган
источник
источник
Ответы:
Ну, проблема в конце концов. Я оставлю предыдущий ответ, так как он также работает для направленного случая (который является NPC, как ответили на другой вопрос), и покажет, что это F P T по отношению к l .P FPT l
В неориентированном случае это разрешимо, детерминистически с помощью минимального потока затрат (это может не сработать в масштабах, на которые вы ссылаетесь в вопросе, но лучше, чем экспоненциальный алгоритм).
Следующая процедура определит, должно ли какое-либо ребро быть частью выходного графа. Чтобы ответить на исходную задачу, просто переберите все ребра.e=(u,v)∈E
Чтобы создать потоковую сеть, выполните следующие действия:
Шаг 1: Разверните чтобы получить вершину x e, и замените e ребрами ( u , x e ) , ( x e , u ) , ( v , x e ) , ( x e , v ) (они направлены как часть сети потоков), установите их стоимость на 0.e xe e (u,xe), (xe,u),(v,xe),(xe,v)
Шаг 2: замените каждую вершину , кроме x e , двумя вершинами t - и t + и добавьте ребро ( t - , t + ) . Установите стоимость этих ребер равной 1.t xe t− t+ (t−,t+)
Шаг 3: Заменить каждое ребро ребрами ( a + , b - ) , ( b + , a - ) . Установите стоимость этих ребер равной 0.{a,b}∈E (a+,b−),(b+,a−)
Шаг 4: Добавьте новую вершину и добавьте ребра ( s , y e ) , ( t , y e ) со стоимостью 0.ye (s,ye),(t,ye)
Шаг 5: установите все мощности на 1.
Теперь запустите алгоритм минимального потока затрат, ища поток значения 2 от до y e .xe ye
Анализ:
источник
источник
Это подразумевается как комментарий, но его слишком долго публиковать как комментарий.
Если это звучит полезно, я могу попытаться выкопать соответствующие конструкции для вас.
источник