Классы сложности, относящиеся к перечислению всех решений?

15

Я читал в Stack Overflow вопрос о том, является ли NP- трудным перечисление всех простых циклов в графе, содержащем определенный узел, и мне пришло в голову, что я не могу придумать какой-либо существующий класс сложности, который хорошо подходит для разговор о проблемах в форме «перечислите все решения этой проблемы». Класс NP в некотором смысле состоит из задач, которые задают вопрос о том, существует ли хотя бы одно решение, класс FNP просит создать единственное решение, а класс #P просит подсчитать, сколько существует решений, но ни одно из них не касается сложности. исчерпывающего перечисления всех возможных решений.

Существует ли класс сложности для описания задач, которые имеют вид "заданный вычисляемый предикат полиномиального времени и строку , перечислим все для которых истинно, при условии [вставить некоторые соответствующие ограничения сложности]? " Я понимаю, что может быть сложно определить ограничения, учитывая, что число решений может быть экспоненциально больше, чем размер ввода , хотя это не кажется непреодолимым.P(x,y)xyP(x,y)x

templatetypedef
источник
Интересный. Возможно, на практике слишком много случаев соответствующих проблем часто имеют экспоненциальное число решений, если таковые имеются. Экземпляры для SAT и CLIQUE, как правило, имеют большое пространство для решения.
Чи
3
Вот еще один анзац для оформления этого. Задача находится в (для X-перечислимого), если существует X-алгоритм с таким образом, что возвращает е решение (т.е. й с ) относительно некоторого упорядоченность. Обратите внимание, что это похоже на то, как иногда определяют RE. Это позволяет обойти размер пространства решений и сосредоточиться на том, насколько сложно найти следующее решение. Общая стоимость доступна суммированием, конечно. X E A A ( x , i ) i I y P ( x , y )PXEAA(x,i)iIyP(x,y)
Рафаэль
3
(Я никогда не видел , как это определено в классе , но вы знаете о концепции перечисления с полиномиальной задержкой ?)
@ Рафаэль Это может быть не то, что мы ищем. Например, если лучший алгоритм для должен перебирать все решения до тех пор, пока он не найдет из них и не запустится во времени , то сложность, которую мы ищем, , но суммирование предполагает сложность . i Θ ( f ( | x | ) ) Θ ( f ( | x | ) ) Θ ( f ( | x | ) 2 )A(x,i)iΘ(f(|x|))Θ(f(|x|))Θ(f(|x|)2)
Лиуве Винхуйзен
@RickyDemer Это то, что я вытряхивал из своих рукавов, не так ли? Приятно знать, что существует установленная формализация.
Рафаэль

Ответы:

10

Понятие, которое вы ищете, называется сложностью перечисления , то есть изучением вычислительной сложности перечисления (перечисления) всех решений проблемы (или членов языка / набора). Алгоритмы перечисления можно смоделировать как двухэтапный процесс: этап предварительного вычисления и этап перечисления с задержкой . Оба этих шага имеют свои временные и пространственные сложности (возможно, и энтропию). В общем духе сложности между ними часто приходится искать компромиссы.

Шаг предвычисления выполняет какую - то работу, которая необходима , прежде чем первый раствор перечислен. Это может включать в себя поиск самого решения или инициализацию некоторой большой структуры данных, которая уменьшит общую задержку между каждым решением.

Задержка является стоимостью ресурсов , связанной с вычислением необходимого между произвольными перечисленными решениями. Другими словами, задержка является мерой пространства и времени, необходимых для получения решения после решения . Задачи, решения которых требуют времени для каждого перечисления, имеют постоянную задержку. Говорят, что требование времени имеет полиномиальную задержку. i t h O ( 1 ) O ( p o l y ( n ) )i+1thithO(1)O(poly(n))

Для проблемы перечисления, которую вы конкретно упомянули в своем вопросе, вам следует обратиться к классу и связанным с ним братьям и сестрам в разделе 2.1 «Перечисление: алгоритмы и сложность» Йоханнеса Шмидта (ссылка внизу).ENUMNP


Почему мы заботимся о времени предварительного расчета и задержке?

Задержка - это ключ к пониманию истинных сложностей перечислимых проблем. Перечисление элементов (до размера ) и где - булева формула (т.е. SAT) оба занимают экспоненциальное время. Однако перечисление через требует только постоянной задержки, поскольку вы можете просто проходить элементы в некотором порядке. Насколько нам известно, задержка для перечисления решений для экземпляра 3SAT может быть экспоненциальной. Наша работа как теоретиков сложности заключается в том, чтобы понять, почему последняя проблема существенно сложнее (более сложная), чем первая. Задержка делает довольно хорошую работу по демонстрации этой разницы. n { x : ϕ ( x ) } ϕ ( x ) Σ Σn{x:ϕ(x)}ϕ(x)Σ

Кроме того, мы также должны знать, сколько выполнено предварительных вычислений. Мы можем уменьшить задержку для любой проблемы перечисления до постоянного времени и пространства, предварительно рассчитав все решения и сохранив их в списке для последующего перечисления. Задача состоит в том, чтобы найти наилучший баланс между двумя ресурсами.

Порядок, в котором вы перечисляете элементы, также может влиять на сложность. Требование возврата результатов в указанном отсортированном порядке может потребовать от нас выполнения дополнительных вычислений на обоих этапах. Хотя ситуации, в которых достаточно любого порядка (если каждый перечисляемый элемент уникален), конечно, тоже изучаются.

Насколько я знаю, эти классы обычно не имеют кратких меток (сродни и ). Мы не можем ожидать, что сможем сделать это, поскольку классы сложности перечисления манипулируют 3 или более ресурсами (предварительное вычисление / общее время, пространство, задержка и энтропия). Просто слишком много комбинаций границ ресурсов, чтобы выдавать специальные имена. Это не делает эти занятия менее интересными, а также не мешает исследователям в любом случае попробовать.Н ПPNP


Ресурсы

Этот опрос (действительно попытка формализации) должен помочь вам начать. Это также доказывает некоторые основные теоремы иерархии.

Перечисление: алгоритмы и сложность (Йоханнес Шмидт, 2009)

https://www.thi.uni-hannover.de/fileadmin/forschung/arbeiten/schmidt-da.pdf

Для перечисления результатов в сложности перечисления, проверьте этот сборник, куратор Кунихиро Васа. Поскольку он классифицирован по типу задачи, вы можете легко найти ряд статей, посвященных перечислению циклов графа. Должно быть просто изменить используемые алгоритмы, чтобы рассматривать только циклы с данным узлом.

http://www-ikn.ist.hokudai.ac.jp/~wasa/enumeration_complexity.html

mdxn
источник
ΣnO(1)O(1)
1
@j_random_hacker Я не думаю, что вы думаете неправильно, хотя реальный ответ на ваш вопрос "это зависит". Авторы этих работ обычно указывают, какую модель вычислений (обычная лента TM или RAM против Word RAM) они используют. Этот выбор изменит то, что можно считать операцией с постоянным временем, а что нет (например, увеличение числа или генерирование вывода). Предполагается, что эта разница исчезает, как только ваша задержка становится полиномиальной из-за расширенного тезиса Черч-Тьюринга.
MDXN