2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1, 2, 3  След.
 
 Re: Определение свойств программы (функции) по коду (формуле)
Сообщение16.05.2010, 17:50 


20/12/09
1527
Обратно тоже можно реализовать: $(g(x)\ne g(y)) \lor (x=y)  \equiv 1 \Longleftrightarrow g: x \to y$ - биекция.

-- Вс май 16, 2010 18:03:38 --

Итак, с биекцией разобрались - это та же проверка на тавтологию.

А если ослабить условие: пусть отображение совпадает с биекцией для почти всех элементов.
Или не биекция, но такое отображение, у которого для почти всех образов число прообразов невелико, и может быть обследовано вручную.

Такие отображения тоже годятся как шифрователи.

-- Вс май 16, 2010 18:09:30 --

Почему такой вопрос? Чтобы взломать шифр с открытым ключем, надо по коду шифрования построить обратную функцию.
Алгоритм, строящий обратную функцию, заодно покажет, что код был именно кодом шифрования: кодом биекции, или почти биекции, или отображения с небольшим числом образов.

 Профиль  
                  
 
 Re: Определение свойств программы (функции) по коду (формуле)
Сообщение16.05.2010, 21:29 
Заслуженный участник
Аватара пользователя


06/10/08
6422
Ales в сообщении #320146 писал(а):
Итак, с биекцией разобрались - это та же проверка на тавтологию.

А если ослабить условие: пусть отображение совпадает с биекцией для почти всех элементов.
Или не биекция, но такое отображение, у которого для почти всех образов число прообразов невелико, и может быть обследовано вручную.

Такие отображения тоже годятся как шифрователи.
Давайте поставим задачу так: задан некоторый положительный полином $p(n)$. Необходимо по заданной схеме $\Sigma$, задающей оператор $f\colon\mathbb{B}^n\to\mathbb{B}^n$, выяснить, верно ли, что прообраз любого эл-та $\mathbb{B}^n$ содержит не более $p(n)$ наборов.

И будем думать.

-- Вс май 16, 2010 21:47:47 --

В общем, можно действовать похожим образом.

Пусть есть формула $\Phi$, задающая функцию $\varphi\colon \mathbb{B}^m\to \mathbb{B}$. Построим по ней оператор $f\colon\mathbb{B}^n\to\mathbb{B}^n$, где $n - k\log n= m$, следующим образом: если $\phi(\sigma_1,\dots,\sigma_m) = 1$, то $f(\sigma_1,\dots,\sigma_m,\alpha_{m+1},\dots,\alpha_{n}) = (\sigma_1,\dots,\sigma_m,0,\dots,0)$ для любых $\alpha_i$. если же $\varphi(\sigma_1,\dots,\sigma_m) = 0$, то $f(\sigma_1,\dots,\sigma_m,\alpha_{m+1},\dots,\alpha_{n}) = (0,\dots,0)$. Понятно, что схему $\Sigma$ для такого оператора можно достаточно быстро (полиномиально) построить по формуле $\Phi$.
Теперь, если $\varphi(x_1,\dots,x_m) = 1$ для всех $x$, кроме, может быть, $(0,\dots,0)$, то каждый набор имеет не более $2^{n-m} = n^k$ прообразов. А если где-то функция равна 0, то набор $(0,\dots,0)$ имеет как минимум $2\cdot 2^{n-m} = 2n^k$ прообразов.

То есть, если мы можем быстро определять, все ли прообразы имеют мощность не более $n^k$, то мы можем быстро определять тавтологичность формул с $n-k\log n$ переменными.

Тут, по-хорошему, надо побольше расписать технические детали, целые части правильно расставить, сказать, что это для достаточно больших $n$, но идея такая.

Ну и опять же, достаточно просто по определению доказывается, что задача в coNP, так что эта задача также coNP-полна.

 Профиль  
                  
 
 Re: Определение свойств программы (функции) по коду (формуле)
Сообщение17.05.2010, 11:08 


20/12/09
1527
Xaositect в сообщении #320286 писал(а):
В общем, можно действовать похожим образом.

Получается, что Вы доказали соNP-полность задачи о точной оценке числа образов для функции.
Биекция - частный случай, с числом образов 1. Здорово.

Остается вопрос о почти точных (вероятностных) оценках. Здесь совсем по другому.

 Профиль  
                  
 
 Re: Определение свойств программы (функции) по коду (формуле)
Сообщение17.05.2010, 12:23 


20/12/09
1527
То есть, числа прообразов. Образов для обратной функции.

 Профиль  
                  
 
 Re: Определение свойств программы (функции) по коду (формуле)
Сообщение17.05.2010, 22:27 


20/12/09
1527
Можно ли любое разумное универсальное свойство для функции $f: \mathbb B^m \to \mathbb B^k$ формализовать,
как $p(f(x_1),f(x_2),....,f(x_n),x_1,.....,x_n) \equiv 1$, $p: \mathbb B^{(m+k)n} \to \mathbb B$?
Кажется можно, но лень доказывать, не известный ли это факт?

Тогда может быть получится распространить доказательства Xaositect на общий случай любого свойства?

-- Пн май 17, 2010 22:34:14 --

"Универсальное" свойство - свойство, не сводящееся, к тому какие значения функция принимает на конкретных данных.
Например, биекция - универсальное свойство.

 Профиль  
                  
 
 Re: Определение свойств программы (функции) по коду (формуле)
Сообщение17.05.2010, 22:35 
Заслуженный участник
Аватара пользователя


06/10/08
6422
Ну если $p$ произвольное и $n$ зависит от арности функции, то да.
Если брать $p$ быстро вычислимым, а $n$ полиномиальным, то нет. (Все задачи такого вида лежат в coNP).
Вот, скажем, выполнимость ($\exists x (f(x) = 1)$)- NP-полная задача. Если бы она лежала в coNP, то NP=coNP. Это не доказано, и специалисты считают, что скорее всего неверно.

-- Пн май 17, 2010 22:38:18 --

Вы попробуйте получше формализовать Вашу задачу про вероятностные оценки, а мб тоже что-нибудь подскажу.

 Профиль  
                  
 
 Re: Определение свойств программы (функции) по коду (формуле)
Сообщение17.05.2010, 22:48 


20/12/09
1527
Xaositect в сообщении #320838 писал(а):
Ну если $p$ произвольное и $n$ зависит от арности функции, то да.
Если брать $p$ быстро вычислимым, а $n$ полиномиальным, то нет. (Все задачи такого вида лежат в coNP).
Вот, скажем, выполнимость ($\exists x (f(x) = 1)$)- NP-полная задача. Если бы она лежала в coNP, то NP=coNP. Это не доказано, и специалисты считают, что скорее всего неверно.

-- Пн май 17, 2010 22:38:18 --

Вы попробуйте получше формализовать Вашу задачу про вероятностные оценки, а мб тоже что-нибудь подскажу.

Что-то я плохо это понял. Я ведь недозагружен теорией.
И не помню что такое "coNP". Но это я найду в интернете.

Что такое "арность", и к чему относятся "да", "нет"?

Разве ($\exists x (f(x) = 1)$) не то же самое, что проверить на тавтологию?

-- Пн май 17, 2010 23:10:12 --

Вероятностные свойства похоже сводятся к тому, какие значения функция принимает на последовательности из 10 000 аргументов. Думаю из этого вообще ничего нельзя извлечь и это никак нельзя использовать.
Тем более, что для шифрования реально используются настоящие биекции.

 Профиль  
                  
 
 Re: Определение свойств программы (функции) по коду (формуле)
Сообщение17.05.2010, 23:10 
Заслуженный участник
Аватара пользователя


06/10/08
6422
Ales в сообщении #320847 писал(а):
Xaositect в сообщении #320838 писал(а):
Ну если $p$ произвольное и $n$ зависит от арности функции, то да.
Если брать $p$ быстро вычислимым, а $n$ полиномиальным, то нет. (Все задачи такого вида лежат в coNP).
Вот, скажем, выполнимость ($\exists x (f(x) = 1)$)- NP-полная задача. Если бы она лежала в coNP, то NP=coNP. Это не доказано, и специалисты считают, что скорее всего неверно.

-- Пн май 17, 2010 22:38:18 --

Вы попробуйте получше формализовать Вашу задачу про вероятностные оценки, а мб тоже что-нибудь подскажу.

Что-то я плохо это понял. Я ведь недозагружен теорией.
И не помню что такое "coNP". Но это я найду в интернете.

Что такое "арность", и к чему относятся "да", "нет"?

Разве ($\exists x (f(x) = 1)$) не то же самое, что проверить на тавтологию?

Арность, местность - количество аргументов функции.

Тавтология - это $\forall x (f(x) = 1)$, а $\exists x (f(x) = 1)$ - это выполнимость.

"Да" и "нет" относится к следующему - любое свойство булевой функции $f\colon\mathbb{B}^k \to\mathbb{B}$ можно представить в виде $(\forall x_i) p(x_1,\dots,x_n,f(x_1),\dots,f(x_n)) = 1$, но $n$ здесь может быть очень большим, а $p$ - очень сложной. Например, $\exists x (f(x) = 1) \equiv \bigvee\limits_{x_i\in \mathbb{B}^k} f(x_i)$, т.е. здесь $n = 2^k$ и не очень понятно, можно ли его уменьшить.

Если поставить условие, что $n = \mathrm{poly}(k)$ (не больше некоторого полинома), а функция $p$ вычисляется полиномиальным алгоритмом, то в виде $$\begin{equation}(\forall x_i) p(x_1,\dots,x_n,f(x_1),\dots,f(x_n)) = 1\end{equation}$$ представляются только coNP-свойства.

Ну и про NP и coNP я все-таки напишу. NP - это класс свойств, для которых существует сертификат принадлежжности, то есть мы можем быстро проверить, удовлетворяет ли объект NP-свойству, если задана некоторая доп. информация. А coNP - это те, для которых существует сертификат отвергающий, т.е. можно быстро проверить, что функция классу не принадлежит. Разумеется, если задача проверки некоторого свойства S лежит в NP, то задача проверки того, что объект не обладает этим свойством, лежит в coNP.

Например, в случае тавтологии можно легко проверить, что функция не тавтология, если задан набор, где она равна 0. А в случае выполнимости можно легко проверить, что функция выполнима, если задан набор, где она 1. Значит, тавтология - задача из coNP, а выполнимость - NP. Считается более правдоподобным, что NP не равно coNP, поэтому NP-полные свойства вряд ли можно представить в виде (1)

В принципе, можно проверить и более сложные свойства, которые, скорее всего, не будут лежать ни в NP, ни в coNP.

 Профиль  
                  
 
 Re: Определение свойств программы (функции) по коду (формуле)
Сообщение17.05.2010, 23:19 


20/12/09
1527
Xaositect в сообщении #320858 писал(а):

Тавтология - это $\forall x (f(x) = 1)$, а $\exists x (f(x) = 1)$ - это выполнимость.


Я имел в виду проверку $\forall x (f(x) = 0)$ или то же самое $ \lnot f(x) \equiv 1$, разве это не эквивалентно проверке $\exists x (f(x) = 1)$. Если есть быстрый алгоритм проверяющий первое (да или нет), то он же дает ответ на второе и наоборот.
Или не так? Что я понимаю не верно?

 Профиль  
                  
 
 Re: Определение свойств программы (функции) по коду (формуле)
Сообщение17.05.2010, 23:22 
Заслуженный участник
Аватара пользователя


06/10/08
6422
Ales в сообщении #320863 писал(а):
Или не так? Что я понимаю не верно?
Все так. Но сейчас считается более правдоподобным вариант, что такого быстрого алгоритма не существует.

 Профиль  
                  
 
 Re: Определение свойств программы (функции) по коду (формуле)
Сообщение17.05.2010, 23:26 


20/12/09
1527
Xaositect в сообщении #320864 писал(а):
Ales в сообщении #320863 писал(а):
Или не так? Что я понимаю не верно?
Все так. Но сейчас считается более правдоподобным вариант, что такого быстрого алгоритма не существует.


Я запутался: проверка на тавтологию coNP, проверка существования решения NP.
Это одно и тоже, но почему то разное. :|

 Профиль  
                  
 
 Re: Определение свойств программы (функции) по коду (формуле)
Сообщение17.05.2010, 23:26 
Заслуженный участник
Аватара пользователя


06/10/08
6422
Я, наверное, несколько сумбурно написал. Мб завтра напишу подробнее.

Это все было по поводу Вашего вопроса о представлении свойств в определенном виде. Вот строгий ответ на него: если NP не равно coNP, то не любое свойство булевой функции $f\colon\mathbb{B}^k\to\mathbb{B}$ может быть представлено в виде $p(x_1,\dots,x_n,f(x_1),\dots,f(x_n)) = 1$, где $n = k^{O(1)}$, а $p$ вычисляется полиномиальным алгоритмом по формуле для функции $f$ и наборам $x_i$.

-- Пн май 17, 2010 23:29:14 --

Ales в сообщении #320865 писал(а):
Xaositect в сообщении #320864 писал(а):
Ales в сообщении #320863 писал(а):
Или не так? Что я понимаю не верно?
Все так. Но сейчас считается более правдоподобным вариант, что такого быстрого алгоритма не существует.


Я запутался: проверка на тавтологию coNP, проверка существования решения NP.
Это одно и тоже, но почему то разное. :|

Так.
Сейчас считается, что ни одна из этих задач не может быть решена быстро.
Но зато если нам дали подсказку, то мы можем быстро проверить существование решения.
А для тавтологии такой подсказки быть не может. (напомню, это не доказано, но считается правдоподобным)

 Профиль  
                  
 
 Re: Определение свойств программы (функции) по коду (формуле)
Сообщение17.05.2010, 23:37 


20/12/09
1527
Xaositect в сообщении #320858 писал(а):
любое свойство булевой функции можно представить в виде

Я имел в виду любые свойства, которые можно внятно изложить на бумаге, например математический текст на 5 страницах книги. Потому и написал "разумное" свойство.
Для таких разве тоже нужна очень сложная функция?

-- Пн май 17, 2010 23:40:15 --

Xaositect в сообщении #320866 писал(а):
Но зато если нам дали подсказку, то мы можем быстро проверить существование решения.

А если решения нет, то что? Какую подсказку дают?

 Профиль  
                  
 
 Re: Определение свойств программы (функции) по коду (формуле)
Сообщение17.05.2010, 23:49 
Заслуженный участник
Аватара пользователя


06/10/08
6422
Ales в сообщении #320868 писал(а):
Для таких разве тоже нужна очень сложная функция?

Ну можно придумать достаточно простые свойства, которые, скорее всего, ни в NP, ни в coNP не лежат.
Вот например, дана функция от $2k$ переменных. Проверить, что для любых $y_i$ найдется такие $z_i$, что $f(y_1,\dots,y_k,z_1,\dots,z_k) = 1$.
Если писать это свойство в виде $p(x_1,\dots,x_n,f(x_1),\dots,f(x_n)) = 1$, то получится $n = 2^k$ и свойство $p$ будет выглядеть как "если все $x_i$ начинаются с одинаковых $k$ бит, то дизъюнкция $\bigvee\limits_{i = 1}^{n} f(x_i) = 1$"

-- Пн май 17, 2010 23:50:48 --

Ales в сообщении #320868 писал(а):
А если решения нет, то что? Какую подсказку дают?

Подсказка - это собственно набор, на котором функция равна 1.
А вот если решения нет, то и подсказки нет.

 Профиль  
                  
 
 Re: Определение свойств программы (функции) по коду (формуле)
Сообщение18.05.2010, 00:03 


20/12/09
1527
Xaositect в сообщении #320873 писал(а):
А вот если решения нет, то и подсказки нет.

А разве тогда из факта отсутствия подсказки нельзя вывести, что решения нет?
Или это будет не по правилам?

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 36 ]  На страницу Пред.  1, 2, 3  След.

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group