2009-12-03 3 views
1

Я хотел бы знать, существует ли эффективный алгоритм S = F (v, G), чтобы построить подграф S из DAG G = (V, E) такой, что все пути в S содержат вершину v из V. Если это так, то можно эффективно расширить F до F '(N, G) для набора вершин N. Я открыт для любых структур данных для хранения DAG G изначально.Алгоритм подграфа

На самом деле условием, которое я забыл добавить, было бы то, что G имеет уникальную вершину r без входящего края, а путь должен иметь вид где d - это вершина без исходящего края.

Другое условие, которое я пропустил, дается расширенным F '(N, G) таким, что для всех v, w из N, если < r, .., v, .., w> где w - раковина, то мы должны игнорировать пути < r, .., v, .., x> где x! = w.

Я на самом деле есть одно решение, но не масштабируется, когда #V> 2000 и #N> 2.

+0

Это может быть домашнее задание? – Sebastian

+0

Если это домашнее задание, отметьте его как таковой. –

+0

Это не домашнее задание. – Peter

ответ

1

Я предполагаю, что вы ищете наибольшего подграфа S в G = ({г} + V + {d}, Е), где г является единственным узлом источника и d является раковина таким образом, что каждый путь от г к д проходит конкретный узел V

предлагаемый мною алгоритм:.

  1. Найти все пути между r и v, используя, например, ответы предоставлены в Find the paths between two given nodes?

  2. Найти все пути между v и используя тот же алгоритм. Так как G ациклическая, ни один путь от В до D может привести обратно к пути уже найденному на шаге 1. Таким образом, в результате графа все пути между г и д будут проходить ст.

+0

S может быть самой G, если есть путь, идущий от каждой вершины в G до v (помните, что G является DAG). На самом деле условие, которое я забыл добавить, будет состоять в том, что G имеет уникальную вершину r без входящего края, а путь должен иметь вид , где d - вершина без исходящего края. – Peter

+0

Тривиальное решение все еще существует, даже при условии выше. Любой путь вида удовлетворяет условиям для подграфа. –

+0

Спасибо. Это действительно должен быть самый большой подграф, удовлетворяющий условию. К сожалению, ваше решение не очень хорошо масштабируется (это действительно очень похоже на мое первоначальное решение.), Когда мы рассматриваем более одного такого v. Еще одно условие, которое я пропустил, также дал расширенный F '(N, G) такой, что для всех v, w из N, если где w - раковина, тогда мы должны игнорировать пути где x! = w. – Peter

1

Результирующего граф содержит узлы которые достижимы из v, а узлы v достижимы (или, узлы, которые достижимы из v в транспонированном подграфе). Получение набора достижимых узлов может быть выполнено эффективно.

Это может быть легко расширена для набора узлов: вы должны просто добавить их все в начале своего поиска в ширину.

Смежные вопросы