Сведение относительно класса функций. Сведение по Карпу. Трудные и полные задачи — различия между версиями
Leugenea (обсуждение | вклад) м (→Определения трудных и сложных задач: о_0 !!!!!!) |
|||
| Строка 2: | Строка 2: | ||
{{Определение | {{Определение | ||
|definition = | |definition = | ||
| − | + | '''Язык <tex>L_1</tex> сводится по Карпу к языку <tex>L_2</tex> (<tex>L_1 \leq L_2</tex>)''', если существует такая функция <tex>f</tex>, работающая за полином, что <tex>x</tex> принадлежит <tex>L_1</tex> тогда и только тогда, когда <tex>f(x)</tex> принадлежит <tex>L_2</tex>. | |
| − | |||
| − | |||
| − | |||
| − | '''Язык <tex>L_1</tex> | ||
| − | |||
}} | }} | ||
| − | |||
== Простой пример сведения по Карпу == | == Простой пример сведения по Карпу == | ||
| Строка 39: | Строка 33: | ||
Таким образом, полное время работы программы есть сумма полиномов от <tex>|x|</tex> и потому тоже является полиномом от <tex>|x|</tex>. | Таким образом, полное время работы программы есть сумма полиномов от <tex>|x|</tex> и потому тоже является полиномом от <tex>|x|</tex>. | ||
}} | }} | ||
| + | |||
| + | == Определения трудных и полных задач == | ||
| + | |||
| + | {{Определение | ||
| + | |definition = | ||
| + | <tex>C</tex> — сложностный класс. Язык <tex>L</tex> называется '''<tex>C</tex>-трудным (относительно полиномиального сведения) (<tex>C</tex>-hard)''', если любой язык <tex>M</tex> из <tex>C</tex> сводится по Карпу к <tex>L</tex>:<br> | ||
| + | <tex> (L </tex> — <tex>C</tex>-hard <tex>) \overset{\underset{\mathrm{def}}{}}{\Leftrightarrow} ( \forall M \in C \Rightarrow M \leq L) </tex>. | ||
| + | }} | ||
| + | |||
| + | {{Определение | ||
| + | |definition = | ||
| + | <tex>C</tex> — сложностный класс. Язык <tex>L</tex> называется '''<tex>C</tex>-полным (относительно полиномиального сведения) (<tex>C</tex>-complete)''', если <tex>L</tex> является <tex>C</tex>-трудным и сам лежит в <tex>C</tex>. | ||
| + | }} | ||
| + | |||
| + | == Обобщение на другие ограничения на сведения == | ||
| + | {{Определение | ||
| + | |definition = | ||
| + | <tex>D</tex> — класс языков, распознаваемых программами с некоторыми ограничениями. Тогда обозначим <tex>\widetilde{D}</tex> класс вычислимых функций, вычисляемых программами с теми же ограничениями. | ||
| + | }} | ||
| + | {{Определение | ||
| + | |definition = | ||
| + | '''Язык <tex>L_1</tex> <tex>\widetilde{D}</tex>-сводится по Карпу к языку <tex>L_2</tex> (<tex>L_1 \leq_{\widetilde{D}} L_2</tex>)''', если существует такая функция <tex>f</tex> из <tex>\widetilde{D}</tex>, что <tex>x</tex> принадлежит <tex>L_1</tex> тогда и только тогда, когда <tex>f(x)</tex> принадлежит <tex>L_2</tex>:<br> | ||
| + | <tex> (L_1 \leq_{\widetilde{D}} L_2) \overset{\underset{\mathrm{def}}{}}{\iff} ( \exists f \in \widetilde{D} : x \in L_1 \Leftrightarrow f(x) \in L_2 ) </tex>. | ||
| + | }} | ||
| + | '''Замечание.''' Часто используется сведение из <tex>\widetilde{P}</tex>, поэтому вместо «<tex>\widetilde{P}</tex>-сводится по Карпу» говорят просто «сводится». Также индекс у символа сведения обычно опускают. | ||
{{Лемма | {{Лемма | ||
| Строка 47: | Строка 66: | ||
В самом деле: <tex>( x \in L_1 \Leftrightarrow f(x) \in L_2 ) \iff ( \overline{x \in L_1} \Leftrightarrow \overline{f(x) \in L_2} ) </tex> <tex>\iff ( x \in \overline{L_1} \Leftrightarrow f(x) \in \overline{L_2} ) \iff (\overline {L_1} \leq_{\widetilde{D}} \overline {L_2})</tex>. | В самом деле: <tex>( x \in L_1 \Leftrightarrow f(x) \in L_2 ) \iff ( \overline{x \in L_1} \Leftrightarrow \overline{f(x) \in L_2} ) </tex> <tex>\iff ( x \in \overline{L_1} \Leftrightarrow f(x) \in \overline{L_2} ) \iff (\overline {L_1} \leq_{\widetilde{D}} \overline {L_2})</tex>. | ||
}} | }} | ||
| − | |||
| − | |||
{{Определение | {{Определение | ||
Версия 17:54, 1 июня 2018
Содержание
Определения
| Определение: |
| Язык сводится по Карпу к языку (), если существует такая функция , работающая за полином, что принадлежит тогда и только тогда, когда принадлежит . |
Простой пример сведения по Карпу
Зададим следующие языки:
- — множество пар вида , где — граф, а — число, такое, что в есть независимое множество размера .
- — множество пар вида , где — граф, а — число, такое, что в есть клика размера .
| Теорема: |
| Доказательство: |
|
Рассмотрим функцию , где — дополнение графа . вычислима за линейное время от длины входа, если граф задан в виде матрицы смежности.
|
Замечание. Другие примеры сведения по Карпу приведены в статье, содержащей примеры NP-полных языков.
Свойства сведения
| Теорема (о транзитивности): |
Сведение по Карпу транзитивно, то есть: . |
| Доказательство: |
|
Пусть и — функции из определения сведения для и соответственно. Из определения следует: . Проверим, что вычислима за полиномиальное от время. |
Определения трудных и полных задач
| Определение: |
| — сложностный класс. Язык называется -трудным (относительно полиномиального сведения) (-hard), если любой язык из сводится по Карпу к : — -hard . |
| Определение: |
| — сложностный класс. Язык называется -полным (относительно полиномиального сведения) (-complete), если является -трудным и сам лежит в . |
Обобщение на другие ограничения на сведения
| Определение: |
| — класс языков, распознаваемых программами с некоторыми ограничениями. Тогда обозначим класс вычислимых функций, вычисляемых программами с теми же ограничениями. |
| Определение: |
| Язык -сводится по Карпу к языку (), если существует такая функция из , что принадлежит тогда и только тогда, когда принадлежит : . |
Замечание. Часто используется сведение из , поэтому вместо «-сводится по Карпу» говорят просто «сводится». Также индекс у символа сведения обычно опускают.
| Лемма: |
| Доказательство: |
|
По определению сведения существует такая функция из класса , что . Для того, чтобы свести к будем использовать ту же функцию . |
| Определение: |
| — сложностный класс, — класс вычислимых функций. Язык называется -трудным относительно -сведения (-hard), если любой язык из -сводится к : — -hard . |
| Определение: |
| — сложностный класс, — класс вычислимых функций. Язык называется -полным относительно -сведения (-complete), если является -трудным относительно -сведения и сам лежит в . |