Сведение относительно класса функций. Сведение по Карпу. Трудные и полные задачи — различия между версиями
Kirelagin (обсуждение | вклад) (→Банальный пример сведения по Карпу) |
Leugenea (обсуждение | вклад) м |
||
Строка 4: | Строка 4: | ||
|definition = | |definition = | ||
'''Язык <tex>L_1</tex> сводится по Карпу к языку <tex>L_2</tex> (<tex>L_1 \leq L_2</tex>)''', если существует такая функция <tex>f(x)</tex>, вычислимая за полиномиальное от длины входа время, что <tex>x</tex> принадлежит <tex>L_1</tex> тогда и только тогда, когда <tex>f(x)</tex> принадлежит <tex>L_2</tex>:<br> | '''Язык <tex>L_1</tex> сводится по Карпу к языку <tex>L_2</tex> (<tex>L_1 \leq L_2</tex>)''', если существует такая функция <tex>f(x)</tex>, вычислимая за полиномиальное от длины входа время, что <tex>x</tex> принадлежит <tex>L_1</tex> тогда и только тогда, когда <tex>f(x)</tex> принадлежит <tex>L_2</tex>:<br> | ||
− | <tex> (L_1 \leq L_2) \Leftrightarrow ( \exists f \in P : x \in L_1 \Leftrightarrow f(x) \in L_2 ) </tex>. | + | <tex> (L_1 \leq L_2) \overset{\underset{\mathrm{def}}{}}{\Leftrightarrow} ( \exists f \in P : x \in L_1 \Leftrightarrow f(x) \in L_2 ) </tex>. |
}} | }} | ||
Строка 31: | Строка 31: | ||
|definition = | |definition = | ||
<tex>C</tex> — сложностный класс, <tex>\widetilde{D}</tex> — сведение. Язык <tex>L</tex> называется '''<tex>C</tex>-трудным относительно сведения <tex>\widetilde{D}</tex> (<tex>C</tex>-hard)''', если любой язык <tex>M</tex> из <tex>C</tex> сводится по <tex>\widetilde{D}</tex> к <tex>L</tex>:<br> | <tex>C</tex> — сложностный класс, <tex>\widetilde{D}</tex> — сведение. Язык <tex>L</tex> называется '''<tex>C</tex>-трудным относительно сведения <tex>\widetilde{D}</tex> (<tex>C</tex>-hard)''', если любой язык <tex>M</tex> из <tex>C</tex> сводится по <tex>\widetilde{D}</tex> к <tex>L</tex>:<br> | ||
− | <tex> (L </tex> — <tex>C</tex>-hard <tex>) \Leftrightarrow ( \forall M \in C \Rightarrow M \leq_{f} L, f \in \widetilde{D} ) </tex>. | + | <tex> (L </tex> — <tex>C</tex>-hard <tex>) \overset{\underset{\mathrm{def}}{}}{\Leftrightarrow} ( \forall M \in C \Rightarrow M \leq_{f} L, f \in \widetilde{D} ) </tex>. |
}} | }} | ||
Версия 00:33, 24 апреля 2012
Определение: |
Язык . | сводится по Карпу к языку ( ), если существует такая функция , вычислимая за полиномиальное от длины входа время, что принадлежит тогда и только тогда, когда принадлежит :
Банальный пример сведения по Карпу
Зададим следующие языки:
- независимое множество размера . — множество пар вида , где — граф, а — число, таких, что в есть
- клика размера . — множество пар вида , где — граф, а — число, такое, что в есть
Докажем, что
Рассмотрим функцию , где — дополнение графа . вычислима за линейное время от длины входа, если граф представлен в видел матрицы смежности.
- ( ) Заметим, что, если в было независимое множество размера , то в будет клика такого же размера (вершины, которые были в независимом множестве, в попарно соединены рёбрами и образуют клику).
- ( ) Обратно, если в есть клика размера , то в исходном графе было независимое множество размера .
Таким образом,
по определению.Замечание. Многие другие примеры сведения по Карпу могут быть найдены в статье про примеры NP-полных языков.
Теорема (о транзитивности): |
Сведение по Карпу транзитивно, то есть: . |
Доказательство: |
Пусть |
Определение: |
— -hard . | — сложностный класс, — сведение. Язык называется -трудным относительно сведения ( -hard), если любой язык из сводится по к :
Определение: |
— сложностный класс, — сведение. Язык называется -полным относительно сведения ( -complete), если является -трудным относительно сведения и сам лежит в . |
Замечание. Часто используется сведение по Карпу, поэтому слова «относительно сведения по Карпу» обычно опускаются. Например, NP-полные языки.