Нехай бути орієнтований ациклічний граф , і нехай λ є функцією маркування відображення кожної вершини v ∈ V до мітки Х ( про ) в деякому кінцевому алфавіті L . Написання n : = | V | , Топологічне сортування з G біекція σ з { 1 , ... , п } на V (тобто упорядкуванням у послідовності) так, що коли ( v , v ′ ) ∈ E тоді σ - 1 ( v ) < σ - 1 ( v ′ ) (тобто, якщо є край від v до v ′, то v виникає до v ′ у послідовності). Етикеткиз сг є слово сг ( 1 ) ⋯ сг ( п ) в L .
З огляду на , я хотів би перерахувати мітки топологічних видів G ефективно. У чому полягає складність перерахування міток топологічних сортів? Звичайно, оскільки їх може бути експоненціально багато, я хочу вивчити складність як функцію від величини виходу, або з точки зору затримки. Зокрема, чи можна перерахування проводити із затримкою поліномів? (або навіть постійна затримка?)
У випадку, коли всі вершини несуть чіткі мітки (або, що рівно, вершини позначаються { 1 , ... , n }, позначені самими собою), я знаю, що мітки можна перераховувати в постійному амортизованому часі, цим результатом при перерахуванні лінійних розширень позитів (це те саме, що перерахувати топологічні різновиди DAG). Однак, коли вершини маркуються довільно, може статися так, що дуже велика кількість топологічних сортів мають однакову мітку, тому не можна просто перерахувати топологічні різновиди G та обчислити їх мітки, щоб отримати ефективний спосіб перерахування міток . У термінології набору позначається DAG ( G , може розглядатися якміченийнабір, і я не міг знайти результатів перерахування щодо них.
Я вже знаю твердість деяких пов’язаних проблем завдяки відповідям на інші мої запитання тут. Зокрема, я знаю, що знайти лексикографічно мінімальну мітку - важко . Я також знаю, що вирішити, чи може дана мітка домогтися якогось топологічного сорту, є важким NP (з жорсткості цієї проблеми : задавши послідовність міток кандидата , попросіть топологічний сорт G, де кожна вершина повинна виникати в позиції де права позначка зустрічається в s). Однак я не думаю, що будь-яке з цього означає тяжкість для перерахування, оскільки ви можете перераховувати в будь-якому вподобаному вами порядку (не обов'язково лексикографічному), і алгоритм перерахування не може бути використаний для ефективного визначення того, чи є ярлик досяжним, навіть з постійною затримкою (оскільки спочатку можна перерахувати багато послідовностей).
Зауважте, що перерахувати першу мітку ( очевидно, будь-яка топологічна сортування) очевидно легко . Для того, щоб перерахувати інший ярлик , ніж з , ви можете продовжити, наклавши , що певний елемент v з V отримує перераховані в деякому положенні я ∈ { 1 , ... , п } , де s я ≠ А , ( v ) : спробуйте кожен V і I , а також перевірити якщо G має топологічний сорт, де v знаходиться в положенні i, що чітко можна зробити в PTIME. Але, коли ви випускаєте все більше і більше етикеток, я не впевнений, як узагальнити такий підхід.