Перерахування топологічних різновидів DAG з міткою вершин


11

Нехай бути орієнтований ациклічний граф , і нехай λ є функцією маркування відображення кожної вершини v V до мітки Х ( про ) в деякому кінцевому алфавіті L . Написання n : = | V | , Топологічне сортування з G біекція σ з { 1 , ... , п } на V (тобто упорядкуваннямG=(V,E)λvVλ(v)Ln:=|V|Gσ{1,,n}V у послідовності) так, що коли ( v , v ) E тоді σ - 1 ( v ) < σ - 1 ( v ) (тобто, якщо є край від v до v ′, то v виникає до v у послідовності). Етикеткиз сг є слово сг ( 1 ) сг ( п ) в LV(v,v)Eσ1(v)<σ1(v)vvvvσσ(1)σ(n) .Ln

З огляду на , я хотів би перерахувати мітки топологічних видів G ефективно. У чому полягає складність перерахування міток топологічних сортів? Звичайно, оскільки їх може бути експоненціально багато, я хочу вивчити складність як функцію від величини виходу, або з точки зору затримки. Зокрема, чи можна перерахування проводити із затримкою поліномів? (або навіть постійна затримка?)(G,λ)G

У випадку, коли всі вершини несуть чіткі мітки (або, що рівно, вершини позначаються { 1 , ... , n }, позначені самими собою), я знаю, що мітки можна перераховувати в постійному амортизованому часі, цим результатом при перерахуванні лінійних розширень позитів (це те саме, що перерахувати топологічні різновиди DAG). Однак, коли вершини маркуються довільно, може статися так, що дуже велика кількість топологічних сортів мають однакову мітку, тому не можна просто перерахувати топологічні різновиди G та обчислити їх мітки, щоб отримати ефективний спосіб перерахування міток . У термінології набору позначається DAG ( G ,G{1,,n}G може розглядатися якміченийнабір, і я не міг знайти результатів перерахування щодо них.(G,λ)

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

Зауважте, що перерахувати першу мітку ( очевидно, будь-яка топологічна сортування) очевидно легко . Для того, щоб перерахувати інший ярлик , ніж з , ви можете продовжити, наклавши , що певний елемент v з V отримує перераховані в деякому положенні я { 1 , ... , п } , де s яА , ( v ) : спробуйте кожен V і I , а також перевірити якщо G має топологічний сорт, де v знаходиться в положенні issvVi{1,,n}siλ(v)viGvi, що чітко можна зробити в PTIME. Але, коли ви випускаєте все більше і більше етикеток, я не впевнений, як узагальнити такий підхід.

Відповіді:


-1

Одним з найпростіших способів обчислення топологічного впорядкування є проведення глибинного першого пошуку по даній DAG. Різні топологічні впорядкування можуть бути створені, використовуючи гнучкість вибору наступної вершини яку слід пройти від невідомих сусідів поточної вершини u . Оскільки, це рекурсивна процедура, що перераховує всі можливі обходи (а отже, і топологічні порядки) була б простою, вибираючи різні порядки, в яких проходять невідомі сусіди u .vуу

Тепер для того, щоб обмежити повторивши обхід з - за подібні мітки, можна порівняти заходив сусіди of u, що мають подібні мітки. Розглянемо дві вершини v i та v j, які мають однакових невідомих сусідів, коли обхід сягає u . Безумовно, вибір першого з них спочатку створить те саме дерево DFS, і, отже, будь-яке з них можна уникнути.v1,v2,...,vкуvivjу

Тепер, порівнюючи сусідів всіх призведе до накладних витрат O ( n 2 ) на загальний час, але може бути виконано більш ефективно в ˜ O ( n ) , використовуючи відповідні структури даних.v1,...,vкО(н2)О~(н)


Дякую за вашу відповідь! Однак я не розумію, чому виправлення, яке ви пропонуєте в першому пункті, було б достатнім для того, щоб зробити багато топологічної мітки сортування після поліноміально багато кроків. Наприклад, якщо всі елементи мають однакову мітку, то для перерахування існує лише одна топологічна мітка сортування, але я не впевнений, що я бачу, чому ваш алгоритм помітить це та завершиться досить швидко? (Ще один момент: ви говорите "сусід", але графік є DAG; ви мали на увазі "дитина"?)
a3nm

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

Для випадку, коли всі етикетки однакові, це тривіальний випадок, інакше навіть одна окрема мітка може призвести до безлічі різних упорядкувань. Способом мінімізації обчислень було б уникнути обробки ізоморфних невідомих графіків. Зараз я згоден, що це може не гарантувати накладних витрат, але, можливо, може дати хорошу евристику. О(н2)
sbzk

Дякую за пояснення. Однак я шукаю поліном, пов'язаний зі складністю, що стосується всіх випадків, а не евристику без теоретичних гарантій! :)
a3nm
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.