Пусть , быть ориентированный ациклический граф , и пусть - функция маркировки отображения каждой вершины с меткой в некотором конечном алфавите . Запись, А топологическая сортировка из является взаимно однозначное от к (т.е., упорядочение в последовательности) таким образом, что всякий раз , когда , то (т. Е. Если есть ребро от доλ v ∈ V λ ( v ) L n : = | V | G σ { 1 , … , n } V Vсг - 1 ( v ) < сг - 1 ( v ' ) v v ' v v ' сг сг ( 1 ) ⋯ сг ( п ) л птогда происходит перед в последовательности). Метка из слово в .
Учитывая , я хотел бы перечислить метки топологических видов эффективно. В чем сложность перечисления меток топологических сортов? Конечно, так как их может быть экспоненциально много, я хочу изучить сложность как функцию от размера вывода или с точки зрения задержки. В частности, может ли перечисление выполняться с полиномиальной задержкой? (или даже постоянная задержка?)G
В случае, когда все вершины имеют разные метки (или, что то же самое, вершины помечены самими собой), я знаю, что метки можно перечислять в постоянном амортизированном времени, этим результатом на перечисление линейных расширений множеств (это то же самое, что перечисление топологических видов DAG). Однако, когда вершины помечены произвольно, может случиться так, что очень большое количество топологических сортировок имеют одинаковую метку, поэтому вы не можете просто перечислить топологические сортировки и вычислить их метки, чтобы получить эффективный способ перечисления меток , В терминологии poset помеченный DAG можно рассматривать как помеченный{ 1 , … , n } G ( G , λ ) и я не смог найти результаты перечисления о них.
Я уже знаю твердость некоторых связанных проблем благодаря ответам на мои другие вопросы здесь. В частности, я знаю, что найти лексикографически минимальный ярлык сложно . Я также знаю , что решить , является ли данный ярлык может быть достигнуто с помощью некоторого топологического рода является NP-трудной (от твердости этой задачи : дана последовательность кандидатов метка , попросите топологического рода , где каждая вершина должна происходить в положении где правильная метка встречается вG s). Однако я не думаю, что все это подразумевает сложность для перечисления, поскольку вы можете перечислять в любом порядке, который вам нравится (необязательно лексикографический), и алгоритм перечисления не может быть использован для эффективного решения о том, достижима ли метка, даже с постоянной задержкой (поскольку может быть экспоненциально много последовательностей для перечисления в первую очередь).
Обратите внимание, что, очевидно, легко перечислить первую метку (просто возьмите любой топологический вид). Для того, чтобы перечислить другой ярлык , чем с , вы можете продолжить, наложив , что некоторый элемент v из V получает перечисленные в некотором положении я ∈ { 1 , ... , п } , где s я ≠ А , ( v ) : попробуйте каждый V и I , а также проверить если G имеет топологический вид, где v находится в положении I, что явно можно сделать в PTIME. Но так как вы выводите все больше и больше ярлыков, я не уверен, как обобщить этот подход.