Сведение по Куку задачи факторизации к языку из NP — различия между версиями
(Новая страница: «==Формулировка задачи== Задача факторизации '''FACTORIZE''' — это задача разложения натурального…») |
|||
| Строка 20: | Строка 20: | ||
p(n) | p(n) | ||
{ | { | ||
| − | + | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
} | } | ||
</code> | </code> | ||
Версия 22:09, 13 марта 2010
Формулировка задачи
Задача факторизации FACTORIZE — это задача разложения натурального числа на простые множители.
Сведение задачи факторизации к языку FACTOR
Рассмотрим язык .
Используя его в качестве оракула, можно за полиномиальное время найти нетривиальные простые делители числа .
Пусть функция f разрешает язык FACTOR:
Тогда можно написать функцию p, работающую не медленнее, чем за полином, и возвращающую список A нетривиальных простых делителей n:
p(n)
{
}
Принадлежность языка FACTOR классу NP
.
Сертификатом y является нетривиальный делитель числа n, а верификатором - функция, которая проверяет, является ли y делителем n и меньше ли он числа x:
R(<n, x>, y)
{
if ((y >= x) || (y <= 1))
return false;
if (n % y != 0)
return false;
return true;
}
Таким образом, задача FACTORIZE сводится по Куку за полиномиальное время к языку FACTOR, принадлежащему классу NP.