Случайность случайности
Jan. 22nd, 2014 02:46 am![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Все, кто изучал теорию вероятности, наверное, помнят, что такое случайная величина. Однако, вряд ли они сходу могут ответить, что такое случайное значение (более строго -- случайный элемент вероятностного пространства). Чтобы понять в чем разница, приведу пару простых примеров. Последовательность выпадений "орла" и "решки" 0001011101 случайна или нет? А 000000? Другой пример. Все программисты знают генераторы случайных (на самом деле -- псевдо-случайных) чисел. Обычно, эти генераторы дают значения, распределенные равномерно или нормально. Однако, они не случайно называются "псевдо-случайными". Несмотря на сходство основных параметров с "модельными" распределениями, последовательности значений не случайны, так как генерируются вполне детерминированными алгоритмами. Их можно "запускать" с одного и того же места и т.д. Обычно они все имеют цикл, большего или меньшего размера.
Меня этот вопрос интересовал довольно давно чисто с практической стороны, так как в свое время я намучался с "плохими" генераторами случайных чисел, и мне было интересно, есть ли надежный критерий "хорошести". Однако, интерес был не настолько глубоким, чтобы этот вопрос как-то изучить. И вот на днях совершенно случайно наткнулся на большую статью-обзор "Может ли (индивидуальная) последовательность нулей и единиц быть случайной?", одним из авторов которой выступает уважаемый и бывающий здесь
a_shen (второго автора -- его научного руководителя В.А. Успенского я тоже, конечно, знаю, читал его воспоминания о Колмогорове и какие-то книжки по теории вероятности). Эта статья все расставляет на свои места. Оказывается, что вопрос о случайности конкретной последовательности отнюдь не тривиален, существует три подхода к этой проблеме, один из которых был предложен Колмогоровым в 1965г. Он основан на понятии колмогоровской сложности. Причем, я бы мог и раньше догадаться об этой идее, так как колмогоровской сложностью интересовался.
Я назову только сами подходы и основные идеи. В статье все очень подробно написано, рассмотрено с разных сторон и доказано.
1. Стохастический или частотный. Он основан на свойстве устойчивости частот. Идея я том, у случайных последовательностей "неслучайные" подпоследовательности (например, только четные элементы) "ведут себя" так же, как и сама последовательность. Исторически, это первая попытка предпринятая Рихардом фон Мизесом.
2. Сложностный (Колмогоровский) подход. Отождествляет случайность с хаотичностью или сложностью. Т.е. длина программы, генерирующей случайную последовательность, растет максимально быстро (по отношению ко всем последовательностям) в зависимости от длины самой последовательности.
3. Подход типичности. Типичность в интуитивном смысле "типичный представитель". Оказывается, можно дать строгое вероятностное построение такого объекта, что было сделано шведским математиком Мартин-Лёфом. Учеником Колмогорова, кстати.
Примечательно, что построения Колмогорова и Мартина-Лёфа очень разные, но эквивалентные. То есть хаотичные (по Колмогорову) последовательности типичны по (Мартину-Лёфу) и наоборот. Это утверждает теорема Левина-Шнорра.
P.S. Печально, что хотя я все еще в состоянии понять и проследить логику математических статей и построений, в голове ничего не задерживается. Я неплохо, как мне кажется, разобрался с Колмогоровской сложностью и вычислимостью несколько лет назад, но практически все забыл :(
Меня этот вопрос интересовал довольно давно чисто с практической стороны, так как в свое время я намучался с "плохими" генераторами случайных чисел, и мне было интересно, есть ли надежный критерий "хорошести". Однако, интерес был не настолько глубоким, чтобы этот вопрос как-то изучить. И вот на днях совершенно случайно наткнулся на большую статью-обзор "Может ли (индивидуальная) последовательность нулей и единиц быть случайной?", одним из авторов которой выступает уважаемый и бывающий здесь
![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)
Я назову только сами подходы и основные идеи. В статье все очень подробно написано, рассмотрено с разных сторон и доказано.
1. Стохастический или частотный. Он основан на свойстве устойчивости частот. Идея я том, у случайных последовательностей "неслучайные" подпоследовательности (например, только четные элементы) "ведут себя" так же, как и сама последовательность. Исторически, это первая попытка предпринятая Рихардом фон Мизесом.
2. Сложностный (Колмогоровский) подход. Отождествляет случайность с хаотичностью или сложностью. Т.е. длина программы, генерирующей случайную последовательность, растет максимально быстро (по отношению ко всем последовательностям) в зависимости от длины самой последовательности.
3. Подход типичности. Типичность в интуитивном смысле "типичный представитель". Оказывается, можно дать строгое вероятностное построение такого объекта, что было сделано шведским математиком Мартин-Лёфом. Учеником Колмогорова, кстати.
Примечательно, что построения Колмогорова и Мартина-Лёфа очень разные, но эквивалентные. То есть хаотичные (по Колмогорову) последовательности типичны по (Мартину-Лёфу) и наоборот. Это утверждает теорема Левина-Шнорра.
P.S. Печально, что хотя я все еще в состоянии понять и проследить логику математических статей и построений, в голове ничего не задерживается. Я неплохо, как мне кажется, разобрался с Колмогоровской сложностью и вычислимостью несколько лет назад, но практически все забыл :(
no subject
Date: 2014-01-21 10:49 pm (UTC)no subject
Date: 2014-01-21 10:55 pm (UTC)no subject
Date: 2014-01-21 11:06 pm (UTC)no subject
Date: 2014-01-21 11:00 pm (UTC)no subject
Date: 2014-01-21 11:26 pm (UTC)почему-то мне казалось, что нет способа отличить число пи, для которого есть достаточно простая конечная порождающая программа, от случайных бросков монетки, для которых программы короче чем сама последовательность нету,
no subject
Date: 2014-01-22 12:14 am (UTC)no subject
Date: 2014-01-22 12:33 am (UTC)не знаю, мне видимо не оценить полезность такого сравнения.
например вроде бы из него сразу следует, что криптография толком не работает... мне кажется утверждения с настолько сильными следствиями на практике применять не получается.
no subject
Date: 2014-01-22 07:36 am (UTC)no subject
Date: 2014-01-22 09:36 am (UTC)из этого следует, что любое алгоритмическое преобразование, например шифрование алгоритмом AES, меняет сложность строки на фиксированную константу.
а вся криптография строится на том, что противник с ограниченными вычислительными возможностями не может отличить строчку от истинно случайной.
no subject
Date: 2014-01-22 12:41 pm (UTC)no subject
Date: 2014-01-22 01:00 pm (UTC)Если конкретно на твой вопрос, то идея в том, что любую обнаруженную закономерность противник сможет использовать против тебя.
А если уже совсем конкретно, то, если он может отличить зашифрованную строку от случайной, становится невозможным режим шифрования CTR, допустим, и поточное шифрование вообще.
no subject
Date: 2014-01-22 09:36 pm (UTC)Насчет AES. Сложность возрастает на сложность ключа плюс константа. Так что все зависит от "хороших" ключей, и нет никакого противоречия.
Насчет возможности отличить зашифрованную от случайной -- вроде бы нигде не утверждалось, что это просто. Колмогоровская сложность все же невычислима.
Так что все хорошо с криптографией.
no subject
Date: 2014-01-22 09:45 pm (UTC)Так в том и дело! Эта получается оценка, которую использовать невозможно. Такая, очень теоретическая, с точки зрения субъекта с бесконечными вычислительными возможностями. Но таких субъектов нету и что тогда с этой оценкой делать не понятно...
no subject
Date: 2014-01-23 12:52 am (UTC)Но для энтропии есть простые способы оценки сверху, схватывающие некоторые типичные случаи избыточности обычных текстов и дающие результат "полностью случайная" для зашифрованной последовательности.
no subject
Date: 2014-01-28 05:04 pm (UTC)no subject
Date: 2014-01-28 07:24 pm (UTC)тут же вопрос в том, что такое "сложность" :)
ты, кажется, смешиваешь два разных словоупотребления, в одном случае речь идёт о сложности задачи (и к этому относится P, NP и т.п.), и это понятно что такое. А в другом случае речь идет о сложности строки символов. И это очень нетривиальное понятие, которое по можно разными способами искусственно вводить.
no subject
Date: 2014-02-16 11:44 am (UTC)no subject
Date: 2014-01-22 08:15 pm (UTC)no subject
Date: 2014-01-22 09:10 pm (UTC)no subject
Date: 2014-01-24 06:37 pm (UTC)http://www.gnu.org/software/gsl/manual/html_node/Random-number-generator-algorithms.html
и там ссылочки
no subject
Date: 2014-01-24 11:38 am (UTC)Ну так-то есть и аппаратная поддержка чипсетов, который генерируют реально случайные числа. Но это редкость.
no subject
Date: 2014-01-24 11:54 am (UTC)no subject
Date: 2014-01-26 05:55 am (UTC)