Твиттер
Оригинал: TwitterНасколько много можно написать уникальных твитов на английском языке? Сколько времени потребуется населению нашей планеты, чтобы прочесть их всех вслух?
— Эрик Х., Хопатконг, Нью-Джерси
Далеко-далеко, на северной земле Свеи[#],↲Район древней Швеции, а также собирательное название шведов. — Прим. пер.↳ стоит камень. Его высота — сто шестьдесят километров, и ширина — сто шестьдесят километров. Раз в тысячу лет маленькая птица прилетает к этому камню, чтобы заточить свой клюв. Когда камень таким образом будет источен, тогда пройдет один день вечности.
Сообщения в Твиттере имеют ограничение в 140 символов. В английском алфавите 26 букв, если считать пробелы — 27. Если использовать такой алфавит, то максимально возможное количество записей составит $27^{140} \approx 10^{200}$.
Но Твиттер не ограничивает вас только этими символами. Вы можете поиграться со всеми символами в кодировке Юникод, благодаря чему у нас теперь будет более миллиона различных символов. Способ, которым Твиттер считает символы Юникода, непрост, но количество возможных последовательностей может достигать $10^{800}$.
Конечно, почти все из них будут бессмысленной кашей букв из дюжины разных языков. Даже если ограничиться 26-ю английскими буквами, строки будут в основном состоять из наборов букв типа «ptikobj». Вопрос Эрика был о твитах, которые, вообще-то, несут связную информацию на английском. Как много этих твитов может быть?
Это непростой вопрос. Первым вариантом будет использование только английских слов. Далее можно прийти к использованию только грамматически верных предложений.
Это не сильно облегчит нашу задачу. Например, «Привет, я Миксизпитлик» — грамматически верное предложение, если ваше имя окажется таковым. (Если задуматься, оно настолько же грамматически верно, даже если вы лжете.) Понятно, что не имеет смысла считать каждую строчку, начинающуюся со слов «Привет, я…» как отдельное предложение. Для обычного англоговорящего человека фраза «Привет, я Миксизпитлик», по существу, не отличается от «Привет, я Мксзккуклт», и они не должны учитываться. Но «Привет, я „xPoKeFaNx“» — определенно заметно отличается от первых двух, даже при том, что «xPoKeFaNx» — не станет английским словом даже при самом вольном полете фантазии.
К счастью, существует подход получше.
Давайте представим язык, в котором есть только два правильных предложения, и каждый твит должен быть одним из этих двух предложений. Вот они:
- «Лошадь в пятом крыле».
- «Мой дом полон ловушек».
Твиттер будет выглядеть примерно так:
Сообщения достаточной длины, но в каждом не слишком много информации: все они говорят тебе, решил человек послать сообщение о ловушке или сообщение о лошади. Это или 1, или 0. Хотя в сообщениях много букв, для читателя, который знает характер языка, оно несет только один бит информации на предложение.
Этот пример подсказывает очень глубокую идею, которая гласит, что информация фундаментально привязана к неосведомленности получателя о содержании сообщения и его возможности предсказать информацию заранее.
У Клода Шеннона, который практически единолично изобрел современную теорию информации, был умный метод измерения содержания информации языка. Он показывал группам людей образцы типичных записей на английском языке, которые были обрезаны в случайном месте, затем просил их угадать, какая буква шла следующей.
Основываясь на соотношениях правильных ответов и строгом математическом анализе[#],↲Страница 669. — Прим. пер.↳ Шеннон определил, что содержание информации типичной записи на английском — примерно от 1,0 до 1,2 бит на букву. Это означает, что хороший алгоритм компрессии имел бы возможность сжать английский ASCII-текст, который содержит восемь бит на букву, примерно до 1/8 от первоначального размера. В самом деле, если вы используете хороший архиватор файлов на электронной книге в .txt-формате, то примерно этого результата вы и добьетесь.
Если часть текста содержит n бит информации, в определенном смысле это означает, что он сможет передавать $2^n$ различных сообщений. Здесь немного математического жонглирования (вовлекающего в себя, кроме всего прочего, длину сообщения и концепцию расстояния единственности), и в итоге он предполагает, что на английском языке может быть порядка $2^{140\times1{,}1} \approx 2\times10^{46}$ различных твитов, а не $10^{200}$ или $10^{800}$.
Теперь подсчитаем, сколько времени потребуется миру, чтобы их все прочитать?
На чтение $2\times10^{46}$ твитов у человека уйдет около $10^{47}$ секунд. Это настолько ошеломляюще огромное количество твитов, что практически не имеет значения, будет читать их один человек или миллиард: даже такое количество людей не сможет прочитать сколько нибудь значимой части твитов за всю свою жизнь.
Вместо этого давайте вернемся обратно к птице, заостряющей свой клюв на вершине горы. Предположим, что птица выцарапывает крошечный кусок камня с горы, когда посещает ее раз в тысячу лет, и уносит с собой эти несколько дюжин частиц пыли, когда улетает. (Обычная птица, вероятнее всего, будет откладывать большую часть материала на вершине горы, а не уносить с собой в клюве, но все остальное в таком случае также ненормально, так что давайте просто смиримся с этим.)
Скажем, вы читаете твиты вслух в течение 16 часов в день, каждый день. И позади вас каждую тысячу лет прилетает птица и отскребает клювом несколько невидимых частичек пыли с вершины стошестидесятикилометровой горы.
Когда гора сравняется с землей — это будет первый день вечности.
Гора появляется обратно, и цикл начинается заново — следующий день вечности. 365 дней вечности, каждый длиной $10^{32}$ лет, дадут год вечности.
100 лет вечности, за которые птица успеет перемолоть 36 500 гор, дадут век вечности.
Но и этого века будет недостаточно. И даже тысячелетия.
Чтение всех твитов займет у вас десять тысяч лет вечности.
Этого времени достаточно, чтобы проследить развитие всей человеческой истории от изобретения письма до настоящего времени, при этом каждый день будет длиться столько, сколько понадобится птице, чтобы стереть с лица земли гору.
Сто сорок символов может показаться мало, но у нас всегда будет о чем поговорить.