Драгоценности бесконечного пляжа

Хотя в голосовании по теме мартовского лонгрида выиграл мой безусловный (нисколько не стесняюсь в этом признаться) любимчик — Eco, радость моя была усугублена ещё и тем фактом, что на втором месте оказалась «Процедурная генерация», про которую я тоже с удовольствием бы почитал. Но даже, если она и выиграет в следующий раз — а это пока ещё вилами по воде, ждать сего прекрасного момента очень уж долго.

И, чтобы как-то скрасить многонедельное томление духа, я решил хотя бы немножечко прикоснуться к тому, что составляет самую-пресамую низкоуровневую суть вообще всего в интернете — ММО, одиночных игр, процедурной генерации, заметок на этом и любом другом сайте, котиков с Ютуба…

Вы уже наверняка догадались, что речь пойдёт… нет, не о монетизации! Ну что вы, в самом деле?

Речь пойдёт о цифрах… нет, не доходов от монетизации! Ну хватит уже, не смешно. Давайте-ка посерьёзнее.

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

Говоря о процедурной генерации, пока мы не забыли, с чего начали — тоже совершенно невозможно избавиться от цифр. Хотя бы потому, что, если мы, используя некий алгоритм (об этом нам наверняка обстоятельно расскажут в лонгриде, а может и нет) для генерации карты мира, или подземелья, или ландшафта — да чего угодно, захотим повторить процесс, получив на выходе тот же самый результат (а мы безусловно захотим), то придётся добавлять в этот самый алгоритм сущность, называемую зерном, или seed — переменную, на основе которой и разворачивается всё последующее богатство и разнообразие.

По сравнению с объёмом сгенерированной алгоритмом информации зерно может быть относительно невелико — скажем, десятки цифр. Но изменение одного-единственного бита в этом числе приводит к кардинальным изменениям в получившемся мире или ландшафте — как запятая в «казнить нельзя помиловать», только в стотыщмиллионном размере.

В бесконечном космическом пространстве чисел, как и в 18 квинтиллионах созданных с помощью той самой процедурной генерации планет из No Man`s Sky, можно обнаружить абсолютно разные, и зачастую весьма интересные находки. Ещё это похоже на пляж из гальки — большинство камней на котором, конечно — не произведения искусства, а обычные серые булыжники. Так же и с числами — подавляющее большинство из них «обыкновенные», ничем не выделяющиеся.

Нужно сказать, что человечество, хоть и достигло в последнее время некоторого прогресса, но по этому пляжу прошло всего ничего. Так, поковырялось немного рядом со спуском, ведущим от парковки, и уселось в тенёчек под тент. Похоже, пора заканчивать с многочисленными эвфемизмами, пока я сам не запутался.

Короче говоря, в отношении больших чисел мы, человеки, пока ещё полные профаны.

Хоть 18 квинтиллионов Шона Мюррея и звучат внушительно, да и выглядят, в общем-то, неплохо — 18 446 744 073 709 551 616, но фактически, всё это богатство представляет собой, вы будете смеяться — всего лишь 264. Для записи количества всех этих планет в памяти компьютера достаточно нескольких байт.

Перейдём от «несерьёзной компьютерной игрушки», как могут сказать какие-нибудь старые ворчуны, к более глобальным вопросам. Что скажете насчёт абсолютно всего в не нарисованном на мониторе, а самом настоящем, реальном мире. Все до единой звёзды — Солнце, Бетельгейзе, Тау Кита. Вся материя, находящаяся внутри всех сверхмассивных чёрных дыр, масса каждой из которых — миллионы Солнц. Сколько же атомов содержит в себе всё это?! Наверное, какое-то непредставимо огромное число, скажете вы — и, разумеется, будете неправы.

Мы ушли не так уж далеко от Шона с его планетами, умещающимися в несколько байт. Потому что, по последним прикидкам учёных, атомов во вселенной где-то 1080.

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

Как-то странно получается — начал я с восторгов, направленных на Числа, а потом почему-то занялся ровно противоположным, пренебрежительно рассказывая об их мнимой внушительности. Пора исправляться.

Дело в том, что и 18 дофиглионов планет в NMS, и количество атомов во Вселенной, обладают (помимо своей микроскопичности, хе-хе) фатальным недостатком.

Это самые обыкновенные серые булыжники, коих целый бесконечный пляж.

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

Какой ты, Кио, привередливый — скажете вы, и будете совершенно правы. Давай, расскажи нам, о великий эстет, что в твоём мире считается достойным внимания числом?

Наконец-то вы задали этот вопрос — отвечу я, и с хитрой улыбкой, вполне достойной Старого Опоссума, перейду к моей любимой части.

Итак, занудным тоном лектора по какой-нибудь теоретической физике, начну я — для начала постараемся понять, как распознать алмаз среди булыжников. Очевидно, это должно быть нечто редкое, согласны? Далее, это должно быть нечто, обладающее конкретными, легко выразимыми свойствами. Ну и, раз уж мы начали двигаться в сторону увеличения числа цифр — это, очевидно, должно быть что-то большое.

Кто там бубнит с «Камчатки»?! Молча поднимите руку и я вас вызову. Вот, так гораздо лучше. Что вы говорите? Ну, громче, громче — думаете, я не слышал, как вы на перерыве между парами вопите с другого конца корпуса, что аж штукатурка сыпется? Простые числа? Уверены? Может быть, возьмёте подсказку зала? Ииии… это правильный ответ!

Простые числа — настоящие алмазы среди прочих булыжников.

Во-первых — они редкие. Во-вторых — их особенность легко выразима — они ни на что не делятся, кроме себя и единицы. А как у нас с величиной? Что вы говорите, тоже всё хорошо?

Ну, ладно, не буду больше мучать вас жалкими имитациями ВУЗовских диалогов, перейдя к сути.

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

Слава богу, что в конце XVI — начале XVII века французский монах-францисканец Марен Мерсенн, по совместительству бывший разносторонне развитым учёным, в том числе и математиком, обнаружил занятную закономерность. Он заметил, что среди чисел вида 2n-1 иногда встречаются простые, и при этом n, то есть степень двойки — всегда является простым числом. Поначалу кажется, что ничего такого в этом открытии нет — но только на первый взгляд.

Потому что спустя два века другой французский математик, по фамилии Люка, сформулировал способ проверки на простоту чисел Мерсенна, алгоритмическая сложность которого — полиномиальная. Не углубляясь в математические дебри, просто замечу, что этот факт означает существование возможности относительно быстро вычислить результат даже для довольно больших n.

Как только этот алгоритм был опробован на первых ЭВМ — судьба пьедестала почёта самого большого известного человечеству простого числа была предрешена. Достаточно сказать, что на текущий момент 9 из 10 мест там занимают именно простые числа Мерсенна.

Уже в середине прошлого века количество цифр в наибольшем известном простом числе перевалило за тысячу (простите, атомы Вселенной — и прощайте), а сейчас, в начале 2020 года — оно находится на отметке в 24 862 048. Двадцать мегабайт — чтобы записать это, не делящееся ни на кого, кроме себя, число 282589933-1. Тут стикером уже не обойдёшься…

Окей, скажете вы — у нас есть ужасно редкое, обладающее особыми свойствами здоровенное число. Да, это круто и всё такое — но какой от него практический смысл?

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

Люди, тратящие мощь своих процессоров и видеокарт на то, чтобы найти эти числа — делают это из чистой любви к искусству. Да, Electronic Frontier Foundation назначила призы за нахождение простых чисел со 100 миллионами и 1 миллиардом цифр, но вероятность получить их, работая в одиночку — микроскопическая. Глупо было бы скрывать, что ваш покорный слуга также относится к числу этих сумасшедших — но тоже исключительно из абстрактной любви к математике.

Да, существуют, например, ГПСЧ, использующие столь огромные числа, но фактически — ни в шифровании, ни в прикладной математике широко они пока что не используются. И это лишь увеличивает сходство простых чисел с драгоценными камнями, жемчугом и янтарём — которые ценны, но в повседневной жизни довольно бесполезны.

Наиболее импонирующим мне вариантом применения простых чисел Мерсенна является ни что иное, как мерянье. Да-да, вы не ослышались — именно мерянье. Прогрессом цивилизации.

Представьте, что завтра куда-нибудь на орбиту Сатурна прилетит космический корабль с инопланетянами, столь чуждыми нам, что быстро установить контакт и общение не удастся, как в "Прибытии". Да и, откровенно говоря, не очень понятно, чем мы можем заинтересовать расу, настолько опережающую нас в развитии технологий. Непонятно даже, как дать им понять, что мы не какие-то там прямоходящие лысые обезьяны, а разумная (ну, хотя бы иногда) форма жизни.

Тут-то и пригодится универсальная в своей абстрактности штука — математика. А как можно быстрее всего сообщить о том, насколько далеко мы зашли в её освоении? Мне кажется, здоровенное простое число тут — то, что надо. Быстренько обменялись ими — и сразу понятно, кто круче.