Генерическая сложность и компрессия алгоритмических проблем

МАТЕМАТИКА

Вестн. Ом. ун-та. 2015. № 4. С. 10-13.

УДК 510.52

А.Н. Рыбалов

ГЕНЕРИЧЕСКАЯ СЛОЖНОСТЬ И КОМПРЕССИЯ АЛГОРИТМИЧЕСКИХ ПРОБЛЕМ*

Генерический подход к алгоритмическим проблемам был предложен в 2003 г. Мясниковым, Каповичем, Шуппом и Шпильрайном. В рамках этого подхода алгоритмическая проблема рассматривается не для всего множества входов (сложность в худшем случае), а для множества «почти всех» входов. Термин «почти все входы» уточняется при помощи введения естественной меры на множестве входных данных. В настоящей статье изучается зависимость генерической сложности алгоритмических проблем алгебры (т. е. сложности для почти всех входов) от сжатия входных данных с помощью прямолинейных программ. Доказывается, что посредством сжатия из любой неразрешимой в классическом случае алгоритмической проблемы можно получить неразрешимую проблему для почти всех входов.

Ключевые слова: генерическая сложность, компрессия, прямолинейные программы.

Введение

В [1] была развита теория генерической сложности вычислений. В рамках этого подхода алгоритмическая проблема рассматривается не на всем множестве входов, а на некотором подмножестве «почти всех» входов. Такие входы образуют так называемое генерическое множество. Понятие «почти все» формализуется введением естественной меры на множестве входных данных. С точки зрения практики, алгоритмы, решающие быстро проблему на генерическом множестве, так же хороши, как и быстрые алгоритмы для всех входов. Классическим примером такого алгоритма является симплекс-метод - он за полиномиальное время решает задачу линейного программирования для большинства входных данных, но имеет экспоненциальную сложность в худшем случае. Более того, может так оказаться, что проблема трудноразрешима или вообще неразрешима в классическом смысле, но легкоразрешима на генерическом множестве. В работах [1; 2] было доказано, что таким поведением обладают многие алгоритмические проблемы алгебры, а в [3] было построено генерическое множество, на котором разрешима классическая проблема остановки для машин Тьюринга с лентой, бесконечной в одном направлении. Для многих классических NP-полных проблем существуют полиномиальные генерические алгоритмы (см. [4]).

С 1960-х гг. в математической логике и информатике активно изучаются вопросы возможности сжатия (компрессии) информации. Прежде всего это связано с введением А.Н. Колмогоровым так называемой программной сложности, более известной сейчас как колмогоровская сложность конструктивных объектов. Кроме того, в более ранних работах К. Шеннона, Р. Фано, Д. Хаффмана были предложены конкретные алгоритмы сжатия информации. Это направление посвящено изучению теоретико-вероятностных приложений и прикладных аспектов сжатия информации. Другое направление связано с изучением зависимости сжатия входных данных и сложности алгоритмических проблем. Способ представления входов проблемы существенным образом влияет на ее вычислительную сложность в классическом случае. Например, если в проблеме разложения целых чисел на множители входы представлять в унарной записи, то проблема становится разрешимой за полиномиальное время. Если же входы представляются в двоичной (или десятичной) записи, то проблема становится трудной, для нее неизвестно существование полиномиальных алгоритмов решения.

* Работа выполнена при финансовой поддержке РФФИ (проект 13-01-00239-a).

© А.Н. Рыбалов, 2015

Генерическая сложность и компрессия алгоритмических проблем

11

В данной работе изучается зависимость генерической сложности алгоритмических проблем алгебры (т. е. сложности для почти всех входов) от сжатия входных данных. Доказывается, что с помощью сжатия из любой неразрешимой в классическом случае алгоритмической проблемы можно получить неразрешимую проблему для почти всех входов. Используются и развиваются методы из работы Мясникова и Рыбалова [5]. Для сжатия множеств слов над конечным алфавитом используются так называемые прямолинейные программы (straight-line programs). Они позволяют задавать слова более компактно, чем это делается с помощью обычного представления в виде последовательности символов. В частности, это помогает существенно оптимизировать алгоритмы. Например, используя прямолинейные программы.

М. Лори, В. Пландовский, В. Дикерт, А. Мясников, А. Ушаков получили эффективные алгоритмы для решения проблемы равенства слов в различных группах и полугруппах (см. обзор [6]). См. также работы автора [7-14].

Генерическая вычислимость и сложность

Пусть I есть множество всех входов для некоторой алгоритмической проблемы, а S -некоторое его подмножество. Рассмотрим последовательность

P

где In - множество всех входов проблемы

размера n . В данной статье мы будем иметь дело с множествами натуральных чисел, представленными двоичными строками, и под размером числа будем понимать длину его двоичной записи. Если случайно и равновероятно генерировать входы размера n , то вероятность попасть в S равна pn

/u(S) = lim Pn (S).

n——^

Если предела не существует, то считаем, что асимптотическая плотность не определена.

Множество входов S с I называется генерическим, если u(S) = 1, и пренебрежи-мым, если u(S) = 0. Непосредственно из определения следует, что S является генерическим тогда и только тогда, когда I \ S пренебрежимо. Понятие генерического множества формализует интуитивное понятие множества «почти всех» входов в том смысле, что при увеличении размера входа вероятность того, что случайно сгенерированный вход по-

падет в генерическое множество, при увеличении длины входа стремится к 1. Если последовательность pn (S) стремится к 0 экспоненциально быстро, т. е. существуют константы C>0 и 0< а< 1 такие, что для любого n

P (S) < Can,

то множество S называется строго прене-брежимым. Строго пренебрежимое множество существенно меньше просто пренебре-жимого в том смысле, что никакое (не строго) пренебрежимое множество не может содержаться в строго пренебрежимом. Множество S называется строго генерическим, если

A \ S строго пренебрежимо.

Алгоритмическая проблема S с I (строго) генерически разрешима, если существует множество G с I такое, что:

1) G - (строго) генерическое;

2) G - разрешимое;

3) S n G - разрешимое.

Генерический алгоритм, решающий проблему S, работает следующим образом. Сначала определяет, принадлежит ли вход генерическому множеству. Если да, то проверяет принадлежность входа S. Если нет, то отвечает «НЕ ЗНАЮ». Такой алгоритм правильно решает проблему S на почти всех входах.

Имеется существенное различие между генерически разрешимыми проблемами и строго генерически разрешимыми проблемами. Допустим, имеется проблема S, разрешимая на некотором разрешимом генерическом множестве G, для которого

Pn (S)=Gn^i = Hz'.

Таким образом G - генерическое, но не строго генерическое множество. Теперь проблема S хоть и разрешима для почти всех входов, тем не менее есть быстрый способ получить «плохой» вход, на котором генерический алгоритм не работает. Быстрый (полиномиальный) алгоритм для генерации плохих входов следующий:

1. Сгенерировать равномерно случайный вход x размера n.

2. Если xeG , то повторить шаг 1, иначе закончить.

Действительно, вероятность получить

2

только хорошие входы за n раундов:

n -1

1 -1

— e

Поэтому с вероятностью, очень близкой к 1, будет получен плохой вход. С другой стороны, легко видеть, что если проблема разрешима на строго генерическом множестве, то

12

А.Н. Рыбалов

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

Прямолинейные программы над свободными моноидами

Пусть A* - свободный моноид над алфавитом A = {a1,...,am} . Прямолинейная программа над A* состоит из переменных x1,...,xn и присваиваний - по одному на каж-

дую переменную x.. Присваивания могут быть следующих типов:

1) x = aj, где aj е A ,

2) x = xjxk , где j, k < i.

Прямолинейная программа естественным образом вычисляет слово над алфавитом A : если в ней последовательно, начиная с первого присваивания заменять переменные x,...,xn на их выражения через слова алфавита A , то значение последней переменной и будет кодируемым словом. Размер такой программы - это число переменных (присваиваний). Прямолинейные программы -это способ представления слов, гораздо более компактный, чем обычный способ представления в виде собственно слов. Например,

слово w = a...a (2n раз) имеет размер 2n . Его представление с помощью прямолинейной программы:

X = a, x2 = x X, x3 = x2 x2,..., xn+1 = xnxn имеет размер n + 1.

Ясно, что любое слово wе A* можно представить прямолинейными программами многими способами. Обозначим через slp

множество всех программ, которые вычисляют слово w .

Лемма 1. Пусть слово w вычисляется некоторой программой размера к . Тогда существует константа C > 0 такая, что для достаточно больших n > к имеет место

\slP(w)n\ C

P " n2

где Pn - множество всех программ размера n. В частности, множество slp(w) не строго пренебрежимо.

Доказательство. Посчитаем сначала число всех программ размера n . Для первой

переменной x1 имеем m возможных присваиваний вида x = a,, i = 1,...,m. Для второй переменной к ним добавляется возможное присваивание x2 = x1 x1. Для переменной x. добавляются (i — 1)2 присваиваний вида

X = xjxk, j,к < i. Итого, получаем

|Pn| = m(m + 1)(m + 4)...(m + (n - 1)2).

Пусть теперь П - какая-то программа размера к, вычисляющая w . Расширим П до программы п' размера n, добавив переменные xk+1,...,xn и произвольно возможные присваивания для переменных xk+1,...,xn1, а для переменной xn в точности то же присваивание, что и для переменной xk. Легко видеть, что программа П вычисляет то же слово, что и исходная программа П . Теперь аналогичным образом можно подсчитать число всевозможных таких программ П . Оно равно

R = (m + k2)...(m + (n - 2)2).

Так как все такие программы П входят в slp(w) , можно сделать оценку

\slp(w)n| > R = (m + k2)...(m + (n - 2)2) =

=_______________1______________ C_

m(m + 1)...(m + (k - 1)2)(m + (n -1)2) n2 для достаточно больших n и константы C > 0, независящей от n .

Основной результат

Пусть S - подмножество слов свободного моноида A*. Определим slp(S) = = UweSslp(w) . Теперь вместо проблемы распознавания множества S среди всех слов из

A* мы будем рассматривать проблему распознавания множества программ slp(S) среди

всех программ над A*.

Теорема 1. Если множество S алгоритмически неразрешимо, то slp(S) не является строго генерически разрешимым.

Доказательство. Допустим, что slp(S) строго генерически разрешимо. Это значит, что существует разрешимое строго генерическое множество программ G такое, что slp(S) n G разрешимо. Покажем, что тогда и S будет разрешимым. Разрешающий алгоритм для S будет работать на слове w следующим образом. Перебираем программы из множества slp(w) в возрастающем порядке

до тех пор, пока не получим программу из G.

Генерическая сложность и компрессия алгоритмических проблем

13

Это обязательно произойдет, потому что множество slp(w), по лемме 1, не строго пренебрежимо, а множество G строго генерическое. Попав в G, решаем проблему принадлежности slp(S), а тем самым и проблему

принадлежности слова w множеству S. Полученное противоречие доказывает теорему.

ЛИТЕРАТУРА

[1] Kapovich I., Myasnikov A. G., Schupp P., Shpil-rain V. Generic-case complexity, decision problems in group theory and random walks // J. Algebra. 2003. Vol. 264, Is. 2. P. 665-694.

[2] Kapovich I., Myasnikov A., Schupp P., Shpilrain V. Average-case complexity for the word and membership problems in group theory // Advances in Mathematics. 2005. Vol. 190. P. 343-359.

[3] Hamkins J. D., Miasnikov A. The halting problem is decidable on a set of asymptotic probability one // Notre Dame Journal of Formal Logic. 2006. Vol. 47. № 4. P. 515-524.

[4] Gilman R., Miasnikov A. G., Myasnikov A. D., Ushakov A. Report on generic case complexity // Вестн. Ом. ун-та. 2007. Спец. вып. : Комбинаторные методы алгебры и сложность вычислений. С. 103-110.

[5] Myasnikov A., Rybalov A. Generic complexity of undecidable problems // Journal of Symbolic Logic. 2008. Vol. 73. № 2. P. 656-673.

[6] Lohrey M. Algorithmics on SLP-compressed strings: A survey // Groups Complexity Cryptology.

2012. Vol. 4. № 2. P. 241-299.

[7] Rybalov A. Generic Complexity of Presburger Arithmetic // Theory of Computing Systems. 2010. Vol. 46. № 1. С. 2-8.

[8] Рыбалов А. Полиномиальные классы сложности над вещественными алгебрами с нильпо-тентными элементами // Вестн. Ом. ун-та. 2010. № 4. С. 37-41.

[9] Рыбалов А., Федосов В. О генерической сложности алгебры Тарского // Вестн. Ом. ун-та. 2011. № 2. С. 39-43.

[10] Рыбалов А. О генерической неразрешимости Десятой проблемы Гильберта // Вестн. Ом. унта. 2011. № 4. С. 19-22.

[11] Рыбалов А. Н. О генерической сложности булевых формул // Вестн. Ом. ун-та. 2013. № 4. С. 52-56.

[12] Рыбалов А. Н. О генерической неразрешимости проблемы остановки для нормализованной машины Тьюринга // Вестн. Ом. ун-та. 2014. № 4. С. 23-27.

[13] Рыбалов А. Н. О генерической сложности некоторых проблем криптографии // Вестн. Ом. унта. 2014. № 4. С. 23-27.

[14] Rybalov A. N. Generic complexity of the Diophan-tine problem // Groups Complexity Cryptology.

2013. Vol. 5. № 1. P. 25-30.