В своей книге « Вычислительная сложность» Пападимитриу определяет FNP следующим образом:
Предположим, что является языком в NP . Согласно предложению 9.1, существует многочлен время разрешимо, полиномиальные сбалансировано соотношение таких , что для всех строк : Существует строку с , если и только если . Функциональная проблема, связанная с , обозначаемая , является следующей вычислительной задачей:
По заданному найдите строку такую, что если такая строка существует; если такой строки не существует, вернуть «нет».
Класс всех функциональных проблем, связанных с языком в NP, как указано выше, называется FNP . FP является подклассом, возникающим, если мы рассмотрим только функциональные проблемы в FNP, которые могут быть решены за полиномиальное время.
(...)
(...) мы называем задачу в общем объеме FNP, если для каждой строки x найдется хотя бы один такой y , что R ( x , y ) . Подкласс FNP, содержащий все полные функциональные проблемы, обозначается TFNP .
В диаграмме Венна в обзоре главы Пападимитриу подразумевает, что FP TFNP FNP .
Я с трудом понимаю, почему именно FP TFNP, поскольку проблемы в FP не должны быть общими как таковые.
Чтобы лучше понять, я безуспешно пробираюсь через литературу, чтобы найти водонепроницаемое определение FP , FNP и сортов.
По моему очень (скромному) мнению, я думаю, что есть немного (правильно!) Дидактического материала по этим темам.
Для решения задач классы представляют собой наборы языков (т.е. наборы строк).
Какие именно классы для функциональных задач? Это наборы отношений, языков, ...? Что такое твердое определение?
источник
Ответы:
Комментарий Эмиля Джерабека - хорошее резюме, но я хотел бы отметить, что существуют другие классы с более четкими определениями, которые более или менее отражают ту же концепцию, и прояснить связь между всеми этими вещами.
[Предупреждение: хотя я считаю, что я правильно понял определения, некоторые из приведенных ниже вещей отражают мои личные предпочтения - я пытался уточнить, где это было.]
В детерминированном мире класс функций - это просто набор функций (в обычном математическом смысле слова «функция», то есть отображение ). Иногда мы хотим разрешить «частичные функции», чей вывод «неопределен» для определенных входных данных. (Эквивалентно, функции, которые определены на подмножестве Σ ∗, а не на всех.)Σ∗→Σ∗ Σ∗
К сожалению, существует два разных определения , и, насколько я могу судить, они не эквивалентны (хотя они «морально» эквивалентны).FP
В недетерминированном мире все становится немного смешно. Там удобно разрешать «частичные, многозначные функции». Естественно было бы также назвать такую вещь бинарным отношением , то есть подмножеством . Но с точки зрения сложности часто философски и умственно полезно думать об этих вещах как о «недетерминированных функциях». Я думаю, что многие из этих определений разъясняются следующими классами (чьи определения полностью стандартизированы, если не очень хорошо известны):Σ∗×Σ∗
: класс «частичных многозначных функций», вычисляемых недетерминированной машиной за полиномиальное время. Это означает, что есть недетерминированная машина с многократным использованием времени, и на входе x в каждой недетерминированной ветви она может принять решение принять и сделать некоторый вывод, либо отклонить и не делать вывод. «Многозначный» выходной сигнал на входе x представляет собой набор всех выходных данных на всех недетерминированных ветвях, если вкачестве входных данныхуказан x . Обратите внимание, что этот набор может быть пустым, поэтому как «многозначная функция» он может быть только частичным. Если мы думаем об этом в терминах бинарных отношений, это соответствует отношению { ( x , y ) : yNPMV x x x .{(x,y):y is output by some branch of the computation on input x}
: Общее количество «функций» в N P M V , то есть на каждом входеxпринимает по крайней мере одна ветвь (и, следовательно, делает вывод по определению)NPMVt NPMV x
: однозначная (потенциально) частичные функции в N P M V . Однако здесь есть некоторая гибкость, заключающаяся втом, что несколько ветвей могут принять, но если любая ветка принимает, то все принимающие ветви должны быть гарантированно сделать один и тотжевывод (так, чтобы это действительно было однозначным). Тем не менее, все еще возможно, что ни одна ветвь не принимает, поэтому функция является только «частичной функцией» (т.е. не определена на всех из Σ ∗ ).NPSV NPMV Σ∗
: Однозначная общие функции в N P S V . Это действительно функции в обычном смысле слова Σ ∗ → Σ ∗ . Это не слишком сложное упражнение, чтобы увидеть, что N P S V t = F P N P ∩ c o N P (используя Def 1 для FP выше).NPSVt NPSV Σ∗→Σ∗ NPSVt=FPNP∩coNP
Чтобы не приходилось писать такие вещи, как «Если каждая функция (соответственно, )» имеет решение в (соответственно, согласно вышеописанному определение), затем ... "в этом контексте используется определение 2 из , а именно:FNP TFNP PF FP FP
Вот как эти различные определения связаны друг с другом, (определение 2, что вы и должны предполагать, поскольку оно находится в контексте, где его сравнивают с ), эквивалентно to . (def 2) эквивалентно (def 1).FNP⊆FP FNP NPMV⊆cPF TFNP⊆FP NPMVt⊆cFP
источник
В дополнение к обширному ответу Джошуа, я хочу добавить следующие определения от Элейн Рух, ее автоматов, вычислимости и сложности .
Из этих определений ясно, что . Она также кратко рассказывает о проблемах за пределами .Р Н РFP⊆TFNP⊆FNP FNP
Для меня это был самый приятный ресурс, который состоит из одной единственной страницы, которую я нашел за долгое время.
источник