Перевірка транзитивності проти транзитивного закриття


9

Чи перевірити транзитивність диграфа не простіше, ніж (з точки зору асимптотичної складності) прийняти транзитивне закриття диграфа? Чи знаємо ми будь-яку нижню межу кращу, ніж щоб визначити, чи є диграф перехідним чи ні?Ω(n2)


1
Зберігання всього перехідного закриття обійдеться вам у додатковий простір. Для деяких графіків ви повинні мати змогу підключити та скоротити перевірку транзитивності, не переглядаючи краї. Див. Алгоритм паралельного підключення , Y Shiloach, U Vishkin - Journal of Algorithms, 1982O(logn)
Chad Brewbaker

1
Тут Siek має нотатки про реалізацію бібліотеки Boost Graph boost.org/doc/libs/1_54_0/libs/graph/doc/…
Чад Брюбекер

2
Не впевнений, що ви маєте на увазі під , але нижня межа проста - розгляньте для деякого краю . Будь-який алгоритм попросить перевірити, чи для всіх , оскільки в іншому випадку край, про який він не запитував, може бути відсутнім. - це верхня межа, оскільки це час, який потрібен для обчислення транзитивного закриття. nΩ(|V|2)Kn{e}e(u,v)Eu,vVO(|V||E|)
РБ

2
Розглянемо спрямований графік с n=3k вершини: вершини джерела s1,,sk, проміжні вершини t1,,tk які є безпосередніми наступниками кожного si, і потопають вершини u1,,uk які є безпосередніми наступниками кожного ti. Діграф є перехідним, якщо кожна дуга(si,uj)присутній у графіку. Це вимагає перевіркиk2=(n/3)2=Ω(n2)краї. З іншого боку, знайти транзитивне закриття можна вO(nω) час, де ω<2.373є показником множення матриць. Це найвідоміші межі.
Андраш Саламон

Чи може ваш DAG мати якусь додаткову структуру, або ви хочете повністю загальних результатів?
Ніль де Бодорап

Відповіді:


9

Нижче я покажу наступне: якщо у вас є О (n3ε) алгоритм часу для перевірки, чи графік є транзитивним для будь-якого ε>0, тоді у вас є О (n3ε) алгоритм часу для виявлення трикутника в nграфік вузла, а значить (з паперу з FOCS'10 ) у вас з'явиться O (n3ε/3) алгоритм часу для множення двох булевих n×nматриць, а отже, в результаті Фішера і Мейєра з 70-х років , це також передбачає O (n3ε/3) алгоритм часу для транзитивного закриття.

Припустимо, ви хочете виявити трикутник у n вузол G. Тепер ми можемо створити наступний графікH. H є тристороннім з перегородками I,J,K на nвузли кожен. Тут кожен вузолx з G має копії xI,xJ,xK у частинах I,J,K. Для кожного краю(u,v) з G додайте спрямовані краї (uI,vJ) і (uJ,vK). На кожне відступ(u,v) з G додайте спрямований край (uI,vK).

По-перше, якщо G містить трикутник u,v,w, тоді Hне є перехідним. Це з ребер(uI,vJ),(vJ,wK) знаходяться в H але (uI,wK)не. По-друге, якщоH не є перехідним, тоді повинен існувати якийсь спрямований шлях від якогось вузла s до якогось вузла t в H такий як (s,t) не є спрямований край у H. Однак найдовші шляхи в РосіїH мати 2 країв, і тому будь-який такий шлях повинен мати форму (uI,vJ),(vJ,wK) і (uI,wK) не в H, отже u,v,w утворюють трикутник в G.


1
Пошук транзитивного закриття по суті те саме, що і множення матриці. Питання полягає в тому, чи можна підняти показник в нижній межі від 2, або експонент у верхній межі можна опустити з 2.373. Ланцюжок міркувань, яку ви демонструєте, показує, що навіть оптимальноO(n2) алгоритм перевірки транзитивності дав би лише a O(n2.667) алгоритм часу для транзитивного закриття - але у нас вже є O(n2.373)алгоритм часу.
Андраш Саламон

Справа в тому, що зменшення чорної скриньки існує. О (n2.373) алгоритм часу далеко не практичний. Практичний алгоритм перевірки транзитивності, який працює в субкубічний час, однак, за допомогою вищезазначених скорочень, також передбачає практичне використання для BMM і, отже, транзитивного закриття. Крім того, навіть якщо ви не переймаєтесь практичними алгоритмами, цілком можливо, що втрата експонента з паперу FOCS'10 не потрібна, і виявлення трикутника, ймовірно, еквівалентно BMM.
virgi

Ну і звичайно, ми могли б просто грунтуватися на твердості проблеми перехідності лише на передбачуваній твердості виявлення трикутника. Зауважте, що нижчих меж немає, ніж кращеn2 для виявлення трикутника, і найкраща верхня межа O(nω).
virgi

У нас вже є підкубний практичний алгоритм, використовуючи будь-який метод швидкого множення матриць: див., Наприклад, cacm.acm.org/magazines/2014/2/…
András Salamon

2
Балард та інші праці, які ви цитуєте, говорять про алгоритм Страссена, зокрема. З того, що мені відомо, жоден з алгоритмів множення матриць, що використовують ранг границь, не є практичним. Зокрема, я не знаю практичних алгоритмів для будь-якого пов'язаногоω нижче, ніж 2.78.
virgi

7

Це виглядає так Ω(n2)є найбільш відомою нижньою межею, оскільки будь-яка нижня межа передбачає нижню межу для булевого множення матриці. Ми знаємо, що перевірку транзитивності можна досягти за допомогою одного булевого множення матриці, тобтоG є перехідним, якщо і тільки якщо G=G2.


4

Зрозуміти, чи є DAG транзитивним, настільки ж важко, як і вирішити, чи загальний диграф є перехідним (що повертає нас до вашого попереднього питання :)).

Припустимо, що алгоритм працює вчасно O(f(n)) для визначення того, чи є DAG перехідним.

Дано спрямований графік G, ви можете використовувати наступний рандомізований алгоритм, щоб вирішити, чи є G є перехідним у часі O(f(n)log(1δ)) та ймовірність помилок δ:

 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.

Тепер очевидно, що якщо G був транзитивним, цей алгоритм повертає істину.

Тепер припустимо Gне був перехідним. Дозволяєe1=(vi,vj),e2=(vj,vk)E такий як (vi,vk)E (повинні бути такі краї, як Gне є перехідним). Ймовірність тогоe1,e2G є 16, тому в кожній ітерації вірогідність того, що алгоритм буде фігурувати G не був перехідним 16 і після O(log(δ)) ітерації ймовірність відмови становить щонайбільше δ.


1
Дякую за відповідь. Припустимо, у мене є алгоритм для визначення, чи є DAG транзитивнимO(f(n)) таких f(n)=Ω(n2). Тоді я можу вирішити, чи спрямований графік G є перехіднимO(f(n))-час як; 1) Отримайте сильно пов'язаний диграф уO(n2)-час. 2) Перевірте, чи завершено кожен компонентO(n2)-час. 3) Перевірте, чи кожна пара компонентів, для яких є ребро у складі диграфа, є двоповною, тобто є ребро від кожної вершини одного компонента до кожної вершини другого компонента вO(n2)-час. 4) Перевірте, чи перехід компонента в перехіднийO(f(n))-час.
ekayaaslan

1

Я думаю, що це повинно бути здійснено в лінійний час, тобто O(n+m) де n - кількість вершин і mкількість ребер. Можливо, адаптувавши якусь схему переходу графіків до орієнтованої настройки? Вихідною точкою може бути описаний тут LexBFS / LexDFS ; для орієнтованих графіків здається, що нам слід скористатися топологічним сортуванням, а не DFS, то, можливо, це можливо за допомогою деяких алгоритмів LexTSA виявити?


2
Це навряд чи ІМО, оскільки це дало б імовірнісний лінійний алгоритм для перевірки транзитивності в загальних діаграмах, дивіться мою відповідь.
РБ

0

Щодо попередньої відповіді, ось простий спосіб визначення такого алгоритму. Присвоїти кожній вершиніx індекс i(x), ініціалізований до 0. Для кожногоx, дозволяє M(x)позначають безлічі індексів своїх внутрішніх сусідів. Ми моделюємо топологічне сортування, підтримуючи множинуRневивчених вершин, ініціалізованих на весь набір. На кожному кроці ми робимо наступне:

  1. Вибрали вершину xR чий мультисет M(x) мінімальний (у багатозахисному порядку);

  2. Оновлення i(x) до поточного лічильника циклу та видаліть x з R.

Чи можна цей алгоритм використовувати для вашої проблеми чи для якоїсь іншої програми?


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