Односторонние функции
Определение
Функция f:{0,1}k(n)→{0,1}l(n) называется сильно односторонней, если f вычисляется за время poly(n) и
∀p ∀{Rn}∞n=1 ∃N ∀n>N Prx∈{0,1}k(n){f(Rn(f(x)))=f(x)}<1p(n)
Здесь Rn -- семейства схем полиномиального размера
Определение
Функция f:{0,1}k(n)→{0,1}l(n) называется слабо односторонней, если f вычисляется за время poly(n) и
∃q ∀{Rn}∞n=1 ∃N ∀n>N Prx∈{0,1}k(n){f(Rn(f(x)))=f(x)}<1−1q(n)
Здесь Rn - семейства схем полиномиального размера
Замечание
Любая сильно односторонняя функция является слабо односторонней. Достаточно взять p=2.
Утверждение
Если существует слабо одностороняя функция, то P≠NP
Доказательство
Рассмотрим для произвольной функции f язык L={y∈{0,1}l(n):∃x∈{0,1}k(n)f(x)=y}. Очевидно, L∈NP.
Если P=NP, то соответствующая задача поиска решается за полиномиальное время. А эта задача обращает f(x).
Свойства
-
Если f - односторонняя функция, то h(x)=f(x)0…0 (l(n) нулей) - односторонняя функция.
Дан y, хотим найти x:f(x)=y. Запишем y дополненный l(n) нулями, обратим h, получим x.
-
Если f - одностороння функция, то h(x)=f(x)f(x) (конкатенация) - односторонняя функция.
Дан y, хотим найти x:f(x)=y. Запишем y два раза подряд, обратим g, получим x.
Определение
Функция f:{0,1}k(n)→{0,1}l(n) называется сильно односторонней в вероятностной схеме, если f вычисляется за время poly(n) и ∀p∀{Rn}∞n=1∃N∀n>NPrx∈{0,1}k(n),r{f(Rn(f(x),r))=f(x)}<1p(n)
Здесь Rn - семейства схем полиномиального размера
Предложение
Сильно односторонняя функция является сильно односторонней в вероятностной схеме и наоборот
Примеры предположительно односторонних функций:
Умножение (cлабо односторонняя функция)
f(x)=x⋅y
|x|=|y|=nSUBSET-SUM
(n1,…,nk,s)→(n1,…,nk,N), |s|=k
N=∑i:si=1ni
Теорема
Если существует сильно односторонняя функция, то существует слабо одностороняя функция, не являющаяся сильно односторонней.
Доказательство
Пусть f -- сильно односторонняя. Определим g следующими равенствами:
g(x0)=f(x)0
g(x1)=x1
Такая g - слабо односторонняя, ибо если ее можно обратить с вероятностью 23, то ее можно обратить в первом случае с вероятностью 13. Тогда и f можно обратить с такой вероятностью, а значит, f -- не сильно односторонняя.
Предложение
Посмотрим на два высказывания о функции f:
∀{Rn} ∃p(⋅) ∃N ∀n>N Pr{f(Rn(f(x)))=f(x)}<1−1p(n)
∃p(⋅) ∀{Rn} ∃N ∀n>N Pr{f(Rn(f(x)))=f(x)}<1−1p(n)
Второе из них -- определение того, что f слабо непрерывна. Очевидно, что из второго следует первое. На самом деле, эти утверждения равносильны.
Теорема
Если существует слабо одностороняя функция, то существет сильно одностороняя функция.
Идея доказательства
F(x1,…,xN)=f(x1)…f(xN)
Пусть обратитель F пытается обратить все компоненты по отдельности. Тогда вероятность успеха ≤(1−1q(n))N=l−n
Нужно по обратителю F построить обратитель f.
S(y): запуск R(y,f(x2),…,f(xN)), проверка успешности
запуск R(y,f(x2),…,f(xN)), проверка успешности
запуск R(y,f(x2),…,f(xN)), проверка успешности
Достаточно доказать следующее утверждение:
Если R успешен с вероятностью ≥1p(n), то
∀q ∃m S успешен с вероятностью≥1−1q(n)
Доказательство
S1(x)=Prx2,…,xn{f(R1(f(x),f(x2),…,f(xN)))=f(x)}
Si(x)=Prx1,…,xi−1,xi+1,…,xN{f(R1(f(x1),…,f(xi−1),f(x),f(xi+1),…,f(xN)))=f(x)} Вероятность успеха 1 шага S≥max{S1(x),…,SN(x)}
Если maxSi(x)>1poly(n), тогда за счет выбора m можно повысить вероятность успеха до 1−1q(n) таких x, что maxSi(x)<1poly(n), мало.