Сведение по Карпу — различия между версиями
(→Определение) |
(→Определение) |
||
Строка 4: | Строка 4: | ||
Обычно требуют, чтобы сводящая функция была вычислима за полиномиальное время от длины входа. | Обычно требуют, чтобы сводящая функция была вычислима за полиномиальное время от длины входа. | ||
− | Заметим, что в таком случае класс языков <tex>P</tex> замкнут относительно сведения по Карпу. Если язык <tex>L</tex> не равен пустому языку и не равен <tex>\Sigma ^*</tex>, то существуют слова <tex>x_1 \in L</tex> и <tex>x_2 \not\in </tex>. Сводящая функция <tex>f(x)</tex> может решить сводимую задачу <tex>M</tex> за полиномиальное время от длины входа и выдать <tex>x_1</tex>, если <tex>x \in M</tex>, или <tex>x_2</tex>, если <tex>x \not\in M</tex> | + | Заметим, что в таком случае класс языков <tex>P</tex> замкнут относительно сведения по Карпу. Если язык <tex>L</tex> не равен пустому языку и не равен <tex>\Sigma ^*</tex>, то существуют слова <tex>x_1 \in L</tex> и <tex>x_2 \not\in L</tex>. Сводящая функция <tex>f(x)</tex> может решить сводимую задачу <tex>M</tex> за полиномиальное время от длины входа и выдать <tex>x_1</tex>, если <tex>x \in M</tex>, или <tex>x_2</tex>, если <tex>x \not\in M</tex> |
==Пример== | ==Пример== |
Версия 14:00, 19 марта 2010
Определение
Язык
сводится по Карпу к языку , если существует функция такая, что тогда и только тогда, когда .Обычно требуют, чтобы сводящая функция была вычислима за полиномиальное время от длины входа.
Заметим, что в таком случае класс языков
замкнут относительно сведения по Карпу. Если язык не равен пустому языку и не равен , то существуют слова и . Сводящая функция может решить сводимую задачу за полиномиальное время от длины входа и выдать , если , или , еслиПример
Рассмотрим следующие языки:
и — множества пар , где — граф, — натуральное число. Пара принадлежит , если в графе есть подграф с вершинами, в котором все вершины не связаны ребрами. Пара принадлежит , если в графе есть подграф с вершинами, в котором между каждой парой вершин проходит ребро.Существует функция
такая, что , где — граф, в котором столько же вершин, сколько и в , а ребра расставлены следующим образом: если в графе между вершинами и есть ребро, то в графе это ребро не проводится, если же в графе между этими вершинами его не было, то в оно есть между соответствующими вершинами. Эта функция вычисляется за линейное время от длины входа, если представлять граф в виде матрицы смежности.Заметим, что если в графе
был независимый подграф с вершинами, то в между всеми вершинами подграфа будут ребра, следовательно, в графе будет клика с вершинами.С другой стороны, если в
есть клика с вершинами, значит между всеми вершинами клики проведены ребра, а значит их не было в графе . Т.о. в графе был независимый подграф с вершинами.Из всего сказанного следует, что
.Теорема о транзитивности
Операция сведения по Карпу транзитивна. Т.е. если
, , то .Доказательство транзитивности
Пусть
. Тогда существует функция : . Пусть в свою очередь и есть функция : .Рассмотрим функция
. . Также . Т.е. .Проверим, что функция
вычислима за полиномиальное время от длины входа. Для вычисления значения функции сначала нужно вычислить . Время вычисления ограничено сверху некоторым полиномом , т.к. эта функция применяется в сведении по Карпу. Затем нужно вычислить . Пусть . Т.к. за единицу времени может быть написан лишь один символ, то . Время вычисления ограничено сверху некоторым полиномом . Т.о. время вычисления не больше .