Посилання на алгоритм тестування змішаної графіки на ациклічність?


16

Змішаний графік - це графік, який може мати як спрямовані, так і непрямі краї. Її основний непрямий графік отримується шляхом забуття орієнтацій спрямованих ребер, а в іншому напрямку орієнтація змішаного графа отримується шляхом присвоєння напрямку кожному непрямому краю. Набір ребер утворює цикл у змішаному графіку, якщо він може бути орієнтований на формування спрямованого циклу. Змішаний графік є ациклічним тоді і лише тоді, коли він не має циклів.

Це все стандартно, і є багато опублікованих робіт, де згадуються ациклічні змішані графіки. Отже, повинен бути відомий наступний алгоритм тестування на ациклічність змішаних графіків:

Повторіть наступні дії:

  • Видаліть будь-яку вершину, яка не має вхідних спрямованих країв і не має прямих напрямків, оскільки вона не може бути частиною жодного циклу.
  • Якщо будь-яка вершина не має спрямованих ребер, але вона має рівно один непрямий край, що падає, то будь-який цикл із використанням непрямого краю повинен входити на цей край. Замініть непрямий край на вхідний спрямований край.

Зупиніть, коли більше кроків не можна виконати. Якщо результат - порожній графік, то початковий графік обов'язково повинен бути ациклічним. В іншому випадку, починаючи з будь-якої вершини, що залишилася, можна відслідковувати графік, на кожному кроці слідуючи назад через вхідний край або слідуючи за непрямим краєм, який не є тим, який використовується для досягнення поточної вершини, до появи повтореної вершини. Послідовність ребер, що слідує між першим і другим повторенням цієї вершини (у зворотному порядку) утворює цикл у змішаному графіку.

Стаття Вікіпедії про змішані графіки згадує ациклічні змішані графіки, але не згадує, як їх перевірити, тому я хотів би додати до неї щось про цей алгоритм, але для цього мені потрібна опублікована довідка. Може хтось скаже мені, де це (або будь-який інший алгоритм тестування на ациклічність) з'являється в літературі?


що відбувається, коли вершина має два непрямо розташованих ребра, а жодного іншого ребра немає? Наприклад, у непрямому трикутнику. Я маю на увазі, чи охоплюють цю справу правила вище?
Матеус де Олівейра Олівейра

Ви не можете нічого робити з такою вершиною, поки інша вершина не застосує правило, яке орієнтує один з ребер. Якщо ви застрягли в ситуації, коли такі вершини існують, і ви більше не можете застосовувати правила, то ваш графік містить цикл.
Девід Еппштейн

Можливо, було б зрозуміліше розглянути, що відбувається в тому випадку, якщо ваш графік непрямий. Один із способів перевірити, чи є це лісом, - це видалити листя (вершини один градус) та ізольовані вершини, поки ви не отримаєте або порожній графік (це ліс), або нетривіальний 2-ядерний (підграф, у якому всі вершини мають ступінь ≥ 2, який обов’язково містить цикл). Алгоритм змішаного графа вироджується до цього у непрямому випадку (за винятком того, що він орієнтує листя, а не негайно видаляючи їх), так само, як він вироджується до стандартного алгоритму топологічного сортування у спрямованому випадку.
Девід Еппштейн

Не впевнений, чи бачив ви: на cs.stackexchange є повідомлення, яке задає аналогічне запитання ref . Відповідач дає алгоритм пошуку циклу в змішаному графіку, орієнтуючи непрямі краї, відхиляючи графік, якщо його не існує. Там також документ (и) про визначення змішаного графа сильно чи орієнтуємо ісй але як не дивно, не міг знайти що - небудь насправді знайти зв'язкові компоненти в змішаних графах.
Quanquan Лю

Спасибі - ні, я цього не бачив. Питання "знайти орієнтацію, щоб зробити графік містив спрямований цикл", безумовно, те саме, і алгоритм у відповіді виглядає правильним. Але на відміну від описаного мною, це не лінійний час.
Девід Еппштейн

Відповіді:


1

Пошук змішаних циклів у змішаному графіку еквівалентний знаходженню елементарних спрямованих циклів (довжини> = 3) у відповідному спрямованому графіку. Відповідний спрямований графік отримують із змішаного графіка, замінюючи кожен непрямий край на два спрямовані краї, спрямовані в протилежні сторони. Доведення: (1) Кожному елементарному спрямованому циклу (довжини> = 3) у диграфові відповідає безпосередньо змішаний цикл у змішаному графіку. (2) Кожен змішаний цикл у змішаному графіку містить елементарний змішаний цикл довжиною> = 3, і кожен такий цикл безпосередньо відповідає елементарному спрямованому циклу (довжини> = 3) у спрямованому графіку. (1) та (2) разом доводять обидва напрямки твердження, qed. Тож ми шукаємо посилання на те, як обчислити (усі?) Елементарні цикли (довжини> = 3) у спрямованому графіку.

У коментарях вказується, що cs.stackexchange містить деякі відповіді на це питання, але незрозуміло, як організувати результати в стислу відповідь. Здається, що цей блог добре підсумовує (найбільш?) Важливі посилання:

Алгоритм Р. Таряна

Найдавніший алгоритм, який я включив, опублікував Р. Тарджан у 1973 році.

Enumeration of the elementary circuits of a directed graph
R. Tarjan, SIAM Journal on Computing, 2 (1973), pp. 211-216
http://dx.doi.org/10.1137/0202017

Алгоритм Д. Б. Джонсона

Алгоритм DB Johnson з 1975 р. Вдосконалює алгоритм Тарджана за своєю складністю.

Finding all the elementary circuits of a directed graph.
D. B. Johnson, SIAM Journal on Computing 4, no. 1, 77-84, 1975.
http://dx.doi.org/10.1137/0204007

У гіршому випадку алгоритм Тарджана має складність у часі O (n⋅e (c + 1)), тоді як алгоритм Джонсона нібито зуміє залишитися в O ((n + e) ​​(c + 1)), де n - число вершин, e - кількість ребер і c - кількість циклів у графі.

Алгоритм К. А. Говіка та Х. А. Джеймса

Алгоритм К.А.Говіка та Х.А. Джеймса з 2008 р. Вдосконалює алгоритм Джонсона та усуває його обмеження.

Enumerating Circuits and Loops in Graphs with Self-Arcs and Multiple-Arcs.
Hawick and H.A. James, In Proceedings of FCS. 2008, 14-20
www.massey.ac.nz/~kahawick/cstn/013/cstn-013.pdf
http://complexity.massey.ac.nz/cstn/013/cstn-013.pdf

На відміну від алгоритму Джонсона, алгоритм К.А. Хокіка та Х.А. Джеймса здатний обробляти графіки, що містять ребра, які починаються і закінчуються в одній вершині, а також кілька ребер, що з'єднують однакові дві вершини.

Тестування на ациклічність здається простим: обчисліть сильно пов'язані компоненти графіка. Будь-який (елементарний) цикл повністю міститься у сильно пов'язаному компоненті. Сильно пов'язаний компонент містить елементарний цикл, якщо це не є прямим деревом.

Запропонований алгоритм Девіда Еппштейна додатково обчислює один елементарний цикл як доказ, а вищезазначені алгоритми перераховують усі елементарні цикли. Будь-яку вершину чи край, що не містяться в елементарному циклі, можна видалити як крок попередньої обробки для підвищення швидкості вищезазначених алгоритмів. Алгоритм Девіда Еппштейна може бути використаний для цієї мети, але навіть якщо він використовується лише на сильно з’єднаних компонентах, він не буде видаляти всі можливі вершини або краю, які можна видалити. Але навіть якщо це можна було б розширити для цього (обчислення дерева зрізаних блоків дозволяє принаймні видалити всі можливі вершини, які можна видалити), незрозуміло, чи дійсно це підвищило б швидкість вищезазначених алгоритмів.


Хтось із цих посилань навіть згадує змішані графіки? Я знаю про знаходження циклів у спрямованих графах. Моє запитання стосувалося розширення цих алгоритмів до змішаних графіків.
Девід Еппштейн

@DavidEppstein Пошук змішаних циклів у змішаному графіку еквівалентний пошуку елементарних циклів (довжини> = 3) у відповідному спрямованому графіку. Пошук посилання на це твердження може бути складним, але довести це твердження просто. Зараз я додав у відповідь заяву та її докази. (Також додано зауваження без доказів того, що обчислення дерева з блоком дозволяє видалити всі можливі вершини, які можна видалити, не впливаючи на елементарні цикли.)
Томас Клімпель,

Гаразд, але вони все ще не лінійно-часові.
Девід Еппштейн

@DavidEppstein Сама перевірка на ациклічність проводиться в лінійний час. Але ви маєте рацію, час, коли комусь із цих алгоритмів потрібно знайти перший елементарний контур (довжиною> = 3), не є лінійним (в гіршому випадку). Гірше, що більшість доступних реалізацій алгоритму Джонсона, здається, використовують більше, ніж O ((n + e) ​​(c + 1)) час, коли застосовується до одного спрямованого кола (з n вершинами, e = n ребрами і c = 1 елементарним) цикли). Все-таки це мало бути правильною відповіддю, тому що, здається, документ Джонсона є найбільш цитованим посиланням на «пошук елементарних схем».
Томас Клімпель
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.