Чи перевірити транзитивність диграфа не простіше, ніж (з точки зору асимптотичної складності) прийняти транзитивне закриття диграфа? Чи знаємо ми будь-яку нижню межу кращу, ніж щоб визначити, чи є диграф перехідним чи ні?
Чи перевірити транзитивність диграфа не простіше, ніж (з точки зору асимптотичної складності) прийняти транзитивне закриття диграфа? Чи знаємо ми будь-яку нижню межу кращу, ніж щоб визначити, чи є диграф перехідним чи ні?
Відповіді:
Нижче я покажу наступне: якщо у вас є О () алгоритм часу для перевірки, чи графік є транзитивним для будь-якого , тоді у вас є О () алгоритм часу для виявлення трикутника в графік вузла, а значить (з паперу з 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.
Тепер очевидно, що якщо був транзитивним, цей алгоритм повертає істину.
Тепер припустимо не був перехідним. Дозволяє такий як (повинні бути такі краї, як не є перехідним). Ймовірність того є , тому в кожній ітерації вірогідність того, що алгоритм буде фігурувати не був перехідним і після ітерації ймовірність відмови становить щонайбільше .
Я думаю, що це повинно бути здійснено в лінійний час, тобто де - кількість вершин і кількість ребер. Можливо, адаптувавши якусь схему переходу графіків до орієнтованої настройки? Вихідною точкою може бути описаний тут LexBFS / LexDFS ; для орієнтованих графіків здається, що нам слід скористатися топологічним сортуванням, а не DFS, то, можливо, це можливо за допомогою деяких алгоритмів LexTSA виявити?
Щодо попередньої відповіді, ось простий спосіб визначення такого алгоритму. Присвоїти кожній вершині індекс , ініціалізований до . Для кожного, дозволяє позначають безлічі індексів своїх внутрішніх сусідів. Ми моделюємо топологічне сортування, підтримуючи множинуневивчених вершин, ініціалізованих на весь набір. На кожному кроці ми робимо наступне:
Вибрали вершину чий мультисет мінімальний (у багатозахисному порядку);
Оновлення до поточного лічильника циклу та видаліть з .
Чи можна цей алгоритм використовувати для вашої проблеми чи для якоїсь іншої програми?