Сведение относительно класса функций. Сведение по Карпу. Трудные и полные задачи — различия между версиями
Kirelagin (обсуждение | вклад) (→Определения) |
Kirelagin (обсуждение | вклад) (→Банальный пример сведения по Карпу) |
||
Строка 12: | Строка 12: | ||
'''Замечание.''' Часто используется именно сведение по Карпу, поэтому слова «относительно сведения по Карпу» и индекс у символа сведения обычно опускают. | '''Замечание.''' Часто используется именно сведение по Карпу, поэтому слова «относительно сведения по Карпу» и индекс у символа сведения обычно опускают. | ||
− | == | + | == Простой пример сведения по Карпу == |
Зададим следующие языки: | Зададим следующие языки: | ||
− | * <tex>IND</tex> — множество пар вида <tex> \langle G, k \rangle </tex>, где <tex>G</tex> — граф, а <tex>k</tex> — число, | + | * <tex>IND</tex> — множество пар вида <tex> \langle G, k \rangle </tex>, где <tex>G</tex> — граф, а <tex>k</tex> — число, такое, что в <tex>G</tex> есть [http://ru.wikipedia.org/wiki/%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0_%D0%BE_%D0%BD%D0%B5%D0%B7%D0%B0%D0%B2%D0%B8%D1%81%D0%B8%D0%BC%D0%BE%D0%BC_%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5#.D0.9E.D0.BF.D1.80.D0.B5.D0.B4.D0.B5.D0.BB.D0.B5.D0.BD.D0.B8.D1.8F независимое множество] размера <tex>k</tex>. |
* <tex>CLIQUE</tex> — множество пар вида <tex> \langle G, k \rangle </tex>, где <tex>G</tex> — граф, а <tex>k</tex> — число, такое, что в <tex>G</tex> есть [http://ru.wikipedia.org/wiki/%D0%9A%D0%BB%D0%B8%D0%BA%D0%B0_(%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2) клика] размера <tex>k</tex>. | * <tex>CLIQUE</tex> — множество пар вида <tex> \langle G, k \rangle </tex>, где <tex>G</tex> — граф, а <tex>k</tex> — число, такое, что в <tex>G</tex> есть [http://ru.wikipedia.org/wiki/%D0%9A%D0%BB%D0%B8%D0%BA%D0%B0_(%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2) клика] размера <tex>k</tex>. | ||
{{Теорема | {{Теорема | ||
|statement= <tex>IND \leq CLIQUE</tex> | |statement= <tex>IND \leq CLIQUE</tex> | ||
|proof= | |proof= | ||
− | Рассмотрим функцию <tex>f( \langle G, k \rangle ) = \langle \overline{G}, k \rangle</tex>, где <tex>\overline{G}</tex> — [http://ru.wikipedia.org/wiki/%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B3%D1%80%D0%B0%D1%84%D0%B0 дополнение графа] <tex>G</tex>. <tex>f</tex> вычислима за линейное время от длины входа, если граф | + | Рассмотрим функцию <tex>f( \langle G, k \rangle ) = \langle \overline{G}, k \rangle</tex>, где <tex>\overline{G}</tex> — [http://ru.wikipedia.org/wiki/%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B3%D1%80%D0%B0%D1%84%D0%B0 дополнение графа] <tex>G</tex>. <tex>f</tex> вычислима за линейное время от длины входа, если граф задан в виде матрицы смежности.<br> |
− | * (<tex>x \in L_1 \Rightarrow f(x) \in L_2</tex>) Заметим, что, если в <tex>G</tex> было независимое множество размера <tex>k</tex>, то в <tex>\overline{G}</tex> будет клика такого же размера (вершины, которые были в независимом множестве, в <tex>\overline{G}</tex> попарно соединены рёбрами и образуют клику). | + | * (<tex>x \in L_1 \Rightarrow f(x) \in L_2</tex>). Заметим, что, если в <tex>G</tex> было независимое множество размера <tex>k</tex>, то в <tex>\overline{G}</tex> будет клика такого же размера (вершины, которые были в независимом множестве, в <tex>\overline{G}</tex> попарно соединены рёбрами и образуют клику). |
− | * (<tex>x \in L_1 \Leftarrow f(x) \in L_2</tex>) Обратно, если в <tex>\overline{G}</tex> есть клика размера <tex>k</tex>, то в исходном графе было независимое множество размера <tex>k</tex>. | + | * (<tex>x \in L_1 \Leftarrow f(x) \in L_2</tex>). Обратно, если в <tex>\overline{G}</tex> есть клика размера <tex>k</tex>, то в исходном графе было независимое множество размера <tex>k</tex>. |
Таким образом, <tex>IND \leq CLIQUE</tex> по определению. | Таким образом, <tex>IND \leq CLIQUE</tex> по определению. | ||
}} | }} | ||
− | '''Замечание.''' | + | '''Замечание.''' Другие примеры сведения по Карпу приведены в статье, содержащей [[Примеры NP-полных языков. Теорема Кука | примеры NP-полных языков]]. |
== Свойства сведения == | == Свойства сведения == |
Версия 12:14, 9 мая 2012
Содержание
Определения
Определение: |
Язык | — класс языков, удовлетворяющих некоторым ограничениям; — класс вычислимых функций, удовлетворяющих тем же ограничениям.
Определение: |
Сведение относительно | называется сведением по Карпу.
Замечание. Часто используется именно сведение по Карпу, поэтому слова «относительно сведения по Карпу» и индекс у символа сведения обычно опускают.
Простой пример сведения по Карпу
Зададим следующие языки:
- независимое множество размера . — множество пар вида , где — граф, а — число, такое, что в есть
- клика размера . — множество пар вида , где — граф, а — число, такое, что в есть
Теорема: |
Доказательство: |
Рассмотрим функцию дополнение графа . вычислима за линейное время от длины входа, если граф задан в виде матрицы смежности.
|
Замечание. Другие примеры сведения по Карпу приведены в статье, содержащей примеры NP-полных языков.
Свойства сведения
Теорема (о транзитивности): |
Сведение по Карпу транзитивно, то есть: . |
Доказательство: |
Пусть |
Лемма: |
Доказательство: |
По определению сведения существует такая функция |
Определения трудных и сложных задач
Определение: |
— -hard . | — сложностный класс, — сведение. Язык называется -трудным относительно -сведения ( -hard), если любой язык из сводится к относительно :
Определение: |
— сложностный класс, — сведение. Язык называется -полным относительно -сведения ( -complete), если является -трудным относительно -сведения и сам лежит в . |