Изменения

Перейти к: навигация, поиск

Сведение по Карпу

52 байта добавлено, 14:17, 19 марта 2010
Доказательство транзитивности
Пусть <tex>A \le B</tex>. Тогда существует функция <tex>f</tex>: <tex>x \in A \Leftrightarrow f(x) \in B</tex>. Пусть в свою очередь <tex>B \le C</tex> и есть функция <tex>g</tex>: <tex>y \in B \Leftrightarrow g(y) \in C</tex>.
Рассмотрим функция <tex>h(x) = g(f(x))</tex>. <tex>x \in A \Leftrightarrow f(x) \in B</tex>. Также <tex>f(x) \in B \Leftrightarrow g(f(x)) \in C</tex>. Т.е. То есть <tex>x \in A \Leftrightarrow h(x) = g(f(x)) \in C </tex>.
Проверим, что функция <tex>h(x)</tex> вычислима за полиномиальное время от длины входа. Для вычисления значения функции <tex>h(x)</tex> сначала нужно вычислить <tex>f(x)</tex>. Время вычисления <tex>f(x)</tex> ограничено сверху некоторым полиномом <tex>p_1(|x|)</tex>, т.к. так как эта функция применяется в сведении по Карпу. Затем нужно вычислить <tex>g(f(x))</tex>. Пусть <tex>t = f(x)</tex>. Т.к. Так как за единицу времени может быть написан лишь один символ, то <tex>|t| < p_1(|x|)</tex>. Время вычисления <tex>g(t)</tex> ограничено сверху некоторым полиномом <tex>p_2(|t|)</tex>. Т.о. Таким образом, время вычисления <tex>h(x)</tex> не больше <tex>p_2(p_1(|x|)) + p_1(|x|)</tex>.
----
См. Смотрите также [[сведение по Куку]].
51
правка

Навигация