Не проще ли проверить транзитивность орграфа, чем (с точки зрения асимптотической сложности) взять транзитивное замыкание орграфа? Знаем ли мы какую-либо нижнюю границу лучше, чем определить, является ли орграф транзитивным или нет?
Не проще ли проверить транзитивность орграфа, чем (с точки зрения асимптотической сложности) взять транзитивное замыкание орграфа? Знаем ли мы какую-либо нижнюю границу лучше, чем определить, является ли орграф транзитивным или нет?
Ответы:
Ниже я покажу следующее: если у вас есть O () алгоритм времени для проверки, является ли граф транзитивным для любого , тогда у вас есть O () алгоритм времени для обнаружения треугольника в граф узлов, и, следовательно, (по документу из FOCS'10 ) у вас будет O () алгоритм времени для умножения двух логических матрицы, и, следовательно, в результате Фишера и Мейера из 70-х годов , это также подразумевает O () алгоритм времени для транзитивного замыкания.
Предположим, что вы хотите обнаружить треугольник в узел , Теперь мы можем создать следующий график, трехсторонний с перегородками на узлы каждый. Здесь каждый узел из имеет копии по частям , Для каждого края из добавить направленные края а также , Для каждого неграда из добавить направленный край ,
Во-первых, если содержит треугольник , тогда не является переходным. Это с краев находятся в но не является. Во-вторых, если не транзитивен, то должен существовать некоторый направленный путь от некоторого узла в какой-то узел в такой, что не направленный край в , Тем не менее, самые длинные пути в иметь ребра, и поэтому любой такой путь должен иметь форму а также не в отсюда сформировать треугольник в ,
Это выглядит так является самой известной нижней границей, поскольку любая нижняя граница подразумевает нижнюю границу для умножения логической матрицы. Мы знаем, что проверка транзитивности может быть достигнута с помощью умножения одной логической матрицы, то есть транзитивен тогда и только тогда, когда ,
Определить, является ли DAG транзитивным, так же сложно, как решить, является ли общий орграф транзитивным (что возвращает нас к вашему предыдущему вопросу :)).
Предположим, у вас есть алгоритм, работающий во времени для принятия решения, является ли DAG транзитивным.
Дан ориентированный граф , вы можете использовать следующий рандомизированный алгоритм, чтобы решить, транзитивен во времени и вероятность ошибки :
1. for $O(\log{\frac{1}{\delta}})$ iterations:
1.1. Compute a random permutation on $V$. Denote the result by $<v_1,v_2,...,v_n>$.
1.2. Set $G'=(V,E\cup \{(v_i,v_j)|i<j\})$ (i.e. compute a random acyclic orientation).
1.3. If $G'$ (which is acyclic) is not transitive return false.
2. return true.
Теперь очевидно, что если был транзитивным, этот алгоритм возвращает истину.
Теперь предположим не был переходным. Позволять такой, что (должны быть такие ребра как не переходный). Вероятность того, что является поэтому в каждой итерации вероятность того, что алгоритм будет фигурировать не был переходным и после итерации вероятность отказа не более ,
I think this should be feasible in linear time, i.e. where is the number of vertices and the number of edges. Maybe by adapting some graph traversal scheme to the directed setting? A starting point could be the LexBFS / LexDFS described here; for directed graphs it seems that we should use topological sorting rather than DFS, so maybe it's possible with some LexTSA algorithm to discover?
Regarding the previous answer, here's a simple way of defining such an algorithm. Assign to each vertex an index , initialized to . For each , let denote the multiset of indices of its in-neighbors. We simulate a topological sorting by maintaining a set of unexplored vertices, initialized to the entire set. At each step, we do the following:
Chose a vertex whose multiset is minimal (in the multiset order);
Update to the current loop counter and remove from .
Can this algorithm be used for your problem, or for some other application?