Родная страна — страница 27 из 69

Папа опустил глаза и ничего не ответил.

— Энджи, пойдем, — позвал я. Ужин все равно, считай, закончился, а нам предстоит еще долго копаться в даркнетовских файлах.

Глава 9

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

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

3,141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273724587006606315588174881520920962829254091715364367892590360011330530548820466521384146951941511609…

И так далее. С помощью короткой компьютерной программы вы можете вычислять число пи хоть целый день. Да даже хоть до тепловой смерти Вселенной.

Возьмите любую тысячу знаков числа пи, и примерно сотня из них будет единицами, еще сотня — двойками, и так далее. Но в расположении этих цифр нет никакой закономерности. Выберите любую цифру числа пи — например, ту, что стоит 2670-й от начала. Это будет 0. Следующей цифрой окажется 4, потом 7, еще раз 7, затем две пятерки. Если вы, бросая десятигранный кубик, получите такой результат, то сможете назвать его случайным. Но если вам известно, что число 047755 представляет собой цифры числа пи с 2670-й по 2675-ю, то вы догадаетесь, что при следующем броске кости выпадет 5 (снова!) Затем 1. Затем 3. Затем 2.

Это уже не случайное число. Оно предсказуемо. Может, вы и не совсем отчетливо представляете себе, что такое случайность (лично я, например, понятия не имею!), однако она уж точно не подразумевает предсказуемости.

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

А как же с другими числами? Предположим, вы задали компьютеру какой-то псевдослучайный алгоритм, и он выдал вам вот такое число: 2,718281828459045235360287471352662497757. Оно случайное?

А вот и нет. Это, оказывается, число е, называемое также константой Непера. Не вникайте в его математический смысл, это очень сложно. Главное — число е похоже на число пи в том, что каждая его цифра предсказуема.

Ну а если ваш генератор случайных чисел выдаст вот такое число: 2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222.

Оно случайное?

Ничего подобного.

А почему? Потому что если я спрошу: «Какая будет сотая цифра в числе, состоящем из тысячи двоек?», ответ будет вам известен. Никаких неожиданностей.

Оказывается, люди давно ломают головы, пытаясь придумать точное определение случайности. И одно из лучших предложенных определений звучит так: «Число является случайным, если самый простой способ представить его — записать».

Ничего не поняли? Без паники, все нормально. Сейчас объясню. Возьмем опять наше старое доброе число пи. Вы можете придумать программу для расчета числа пи, и она будет состоять примерно из двухсот знаков. А само число пи бесконечно, в нем уж точно больше, чем двести символов. Поэтому самый простой способ записать число пи — составить программу, и пусть она выводит на принтер все его бесконечные цифры.

И если уж с числом пи все более-менее легко, то уж с числом 222222222222222222222222222222222222222222 будет совсем просто. На языке Python программа для его записи будет выглядеть так: «print.join([‘2’]*42).» Язык Perl еще компактнее: «print 2×42.» Но даже на велеречивом «бейсике», который по цветистости и многословности может тягаться с языком Шекспира, программа будет не такой уж длинной:

10 PRINT «2» 20 GOTO 10 30 END

В этой программе тридцать символов, то есть гораздо меньше, чем в числе от 222222222222222222222222222222222222222222 до бесконечности. Намного меньше. Поэтому, если случайное число в самом деле непредсказуемо, если оно не имеет легко описываемой структуры или упорядоченности, то можно сказать так: «Число является случайным, если самая короткая программа для вывода его на печать будет длиннее, чем само это число».

Это определение обладает всеми признаками хорошего правила: оно короткое, внятное и строгое. Автором этого четкого правила является математик Грегори Хайтин. Однако впоследствии он сам же накрутил на него множество всяких уточнений. Он так гордился своим достижением, что послал свою статью безумному гению от математики Карлу Гёделю, а в конце добавил еще больше неразберихи, задав вопрос: «Как мы можем узнать, что придуманная нами программа для записи числа является кратчайшей?»

И ведь замечание действительно верное. Программисты то и дело предлагают новые способы решения задач. И, возможно, в якобы случайном числе скрыта некая закономерность, о которой вы даже не догадываетесь. Например, я попросил вас написать программу для записи вот такого числа: 6464126002437968454377733902647251281941632007684873625176406596754069362175887930785591647877727473927200291034294956244766130820072925073452917076422662104767303786316995423745511745652202278332409680352466766319086101120674585628731741351116229207886513294124481547162818207987716834634132236223411778823102765982510935889235916205510876329808799316517252893800123781743489683215159056249334737020683223210011863739577056747386710217321237522432524162635803437625360680866916357159455152781780392177432282343663377281118639051189307590166665074295275838400854463541931719053136365972490515840910658220181473479902235906713814690511605192230126948231611341743994471483304086248426913950233671341242512386402665725813094396762193965540738652422989787978219863791829970955792474732030323911641044590690797786231551834959303530592378981751589145765040802510947912342175848284188195013854616568030175503558005494489488487135160537559340234574897951660244233832140603009593710558845705251570426628460035.

Вглядывайтесь сколько хотите, вряд ли вы найдете в нем хоть какую-то закономерность (а если найдете, то она — плод вашего воображения). Значит, это число случайное? Ничего подобного. Оно — часть числа пи, его цифры со 100 000-й по 101 000-ю. Теперь вы можете написать очень короткую программу для записи этого числа: надо всего лишь попросить компьютер напечатать число пи и добавить фразу: «начать со 100 000-й цифры и закончить через 1000 цифр».

Идея Хайтина заключается вот в чем: невозможно с уверенностью утверждать, может ли некое длинное число быть напечатано с помощью программы более короткой, чем это число. То есть ни о каком большом числе нельзя сказать, является ли оно случайным. Может быть, случайных чисел вообще не существует. Он назвал эту особенность «неполнотой» и выразил примерно так: «Вы не можете быть полностью уверены, знаете ли вы, что некое число является случайным».

К тому времени Гёдель уже сформулировал собственную идею о неполноте, утверждая, что любая математическая теория содержит проблемы, которые не могут быть решены в рамках самой теории. Хайтин же вдобавок нашел неполноту в наших рассуждениях о случайных числах.

Насколько нам известно, Хайтин оказался прав. Мы не в силах понять, является ли число случайным или оно полностью предсказуемо. Потому его и считают одним из величайших гениев математики.

Печальный факт: в старости Гёдель страдал от психического расстройства и твердо верил, что его пытаются отравить. Он отказался принимать пищу и сам себя заморил голодом до смерти. Неизвестно, что именно довело его до безумия, но мне иногда думается, что он слишком много размышлял о всяческих неопределенностях.

* * *

Я никуда не сливал документы с описанием «ноут-лока». Энджи тоже этого не делала. И Джолу тоже. Если верить регистрационным журналам, к документам прикасались только мы трое и больше никто.

Но тем не менее они просочились в сеть.

Разумеется, Лиам узнал об этом даже раньше меня. Едва прочитав публикацию на «Реддите», чуть ли не вприпрыжку примчался к моему столу.

— Ты ведь учился в школе имени Чавеса?

— Да, а что?

— Знал там этого мерзавца Фреда Бенсона?

Он мог бы и не продолжать. Я мгновенно понял, о чем пойдет речь. Но дело обстояло еще хуже. Все выложенные копии из массива о «ноут-локе» были озаглавлены «DARKNET DOC −» с номером документа. Самым большим номером документа о «ноут-локе» был 745 120, многие читатели уже подметили это и пришли к выводу, что где-то есть сайт под названием «Даркнет-докс» и на нем выложено не меньше чем 745 120 документов.

Нас раскрыли.

— Потрясающе, правда? Даже не верится! Интересно, что еще у них есть?

— Гм, — буркнул я. — Угу. Ого.

Лиам подтащил стул к моему столу, склонился ближе. От него пахло туалетной водой «Акс», самым противным запахом, какой известен человечеству.

— Маркус, — вполголоса проговорил он. — Помнишь, вчера ты рассказывал о корневых сертификатах и тому подобном? Сдается мне, ты знаешь больше, чем рассказываешь.

— Да неужели.

— Ну, ты же не кто-нибудь, а Маркус Яллоу. Если на свете есть такая штука, как даркнет, ты, небось, его вдоль и поперек знаешь, йоу. Серьезно, чел! — Казалось, он от меня чего-то ждет. Не умею разговаривать с людьми, которые в конце каждой фразы говорят «йоу». Они словно разыгрывают сценарий какой-то броманс-комедии, которую я не успел посмотреть. Но Лиам был так взволнован, что его даже слегка потряхивало. — Старик, ну просвети, возьми меня в дело.