Как же это происходит? Неужели где-то стоит компьютер, который по моему запросу считывает все содержимое Интернета и за долю секунды выбирает из него нужные мне страницы?
Вообще-то, нет. «Гугл» действует гораздо умнее, хотя и не менее поразительно. Он постоянно, по мере создания новых интернет-сайтов, собирает их и добавляет в свою базу данных. Всякий раз, запрашивая ту или иную страницу, он создает список всех слов на этой странице и добавляет эти слова в алфавитный указатель, присвоив каждому слову уникальный адрес, в котором помечена страница, где находится слово. То есть, проще говоря, слово «type» в этом указателе закреплено за 2 780 000 000 или около того страниц. Список этих страниц существовал еще до того, как вы вбили запрос в строку поисковика, так что 0,16 секунды — это время, которое требуется компьютеру, чтобы сообщить вам то, что он и так уже «знал». Выше в этом алфавитном указателе будет и слово «movable» с примерно 25 миллионами ссылок на страницы. Если ввести в поисковик слова «movable» и «type» отдельно друг от друга, то есть без общих кавычек, «Гугл» сравнит два отдельных списка (2 780 000 000 и 25 000 000 адресов страниц) и составит новый список, где будут только страницы, присутствующие в обоих списках, то есть лишь те страницы, на которых содержатся оба слова. Но вот, скажем, я решил набрать слова «movable type» в кавычках, означающих, что мне нужны только те страницы, где эти два слова встречаются вместе, причем «type» следует сразу за «movable». Здесь начинает работать другой тип информации, собранной при составлении указателя. Помимо того факта, что слово «movable» содержится, скажем, в документе 12, указатель также знает, на какой позиции в этом документе находится искомое слово, — допустим, на позиции 31. Теперь вообразите себе, что в указателе содержится серия строк вида (Д12,31), соответствующих слову «movable» и содержащих номер документа и позицию слова. Строки, относящиеся к слову «type», тоже находятся в указателе и имеют несколько иной вид — допустим, (Д 12,32). Сравнивая строки в списках, «Гугл» определяет, что словосочетание «movable type» встречается в документе Д12, где искомые слова находятся на позициях 31 и 32, и включает адрес документа Д12 в список найденных по запросу страниц.
Люди с избытком свободного времени придумали целую игру с использованием поисковой системы «Гугл» — «гугл-вэкинг»[24]. Цель игры — найти комбинацию из двух слов, которая встречается в громадном архиве «Гугла» всего на одной странице. Найдя такую комбинацию, гугл-вэкеры сообщают о своем открытии на специальном гугл-вэкерском сайте. «Но в таком случае эта комбинация слов сразу перестанет быть уникальной, — возразите вы. — Ведь теперь она встречается уже на двух сайтах — изначальном и гугл-вэкерском». Однако «Гугл» милостиво исключил сайт гугл-вэкеров из своего поискового процесса, так что парадокса удалось избежать.
Моя бесконечность больше твоей!
Многим из нас не так-то просто свыкнуться с понятием бесконечности и особенно с мыслью о том, что бесконечности бывают разных размеров. Но факт остается фактом: математики имеют дело с бесконечностями нескольких размеров, каждая из которых «бесконечно» больше, чем предыдущая. Многим «бесконечность» представляется в виде числа, к которому стремишься, когда считаешь от единицы и дальше, — и так вечно. В таком ракурсе идея о существовании чисел, превышающих эту бесконечность, кажется абсурдной (разве что считать придется больше, чем вечно). Пытаясь продемонстрировать, что такие числа все-таки есть, математики использовали так называемую биекцию, то есть взаимно-однозначное соответствие.
Предположим, вы выстроили все числа в ряд (1,2,3…) и так до «бесконечности» (в дальнейшем я не буду пользоваться кавычками, но имейте в виду: даже если из моих слов покажется, что бесконечность являет собой некое конкретное число, на самом деле это не так). Если бы у вас был другой ряд чисел, скажем дробей, и вы бы могли соотнести эти два ряда так, чтобы каждому числу соответствовала парная ему дробь, а у каждой дроби была пара в виде целого числа, и так до бесконечности, то можно было бы сказать, что оба ряда содержат одинаковое количество чисел, следовательно, их бесконечности равны.
И напротив, если бы у вас был ряд чисел, которые нельзя попарно соотнести с целыми числами так, чтобы не осталось неохваченных, лишенных пары чисел, вы могли бы сказать, что бесконечность данного ряда чисел больше бесконечности целых чисел.
Рассмотрим для начала дроби. На первый взгляд не похоже, чтобы дробей существовало столько же, сколько целых чисел, а не больше. Ведь между каждыми двумя соседними целыми числами — скажем, 1 и 2 — окажется куча дробей: 3/2, 4/3, 6/5 и т. п. Но если можно расставить все дроби в единственно возможном порядке, создав из них бесконечно долгую последовательность, то что мешает, к примеру, поставить целое число 817 в пару к дроби с 817-м порядковым номером в списке дробей? Итак, у каждой дроби окажется единственно возможное парное ей целое число, и наоборот. (Причем целые числа окажутся и в списке дробей, ведь 4 можно выразить как 4/1.)
Теперь о том, как выстроить этот список. Сложите числитель и знаменатель каждой дроби и расположите их в порядке возрастания результата сложения, который мы обозначим как 5. (Если у дроби в числителе отрицательное число, просто не обращайте на знак «минус» внимания.) Итак, у дроби 1/2 s равняется 3; у 1/3 s равен 4; у 11/17 — 28 и так далее. У некоторых дробей будут одинаковые значения s, но поскольку наша единственная цель — выстроить длинную упорядоченную последовательность, мы можем ввести какое-нибудь правило, позволяющее однозначно определить, какая дробь должна стоять первой. Правило может быть таким: если несколько дробей дают одно и то же значение в, мы будем располагать их в порядке возрастания знаменателя. Так, у семи дробей: −4/1,1/4,2/3,3/2,4/1,-3/2,-2/3 — s равняется 5. Расположим их в порядке возрастания знаменателя: 4/1, -4/1, 3/2, -3/2, 2/3, -2/3, 1/4. А теперь пронумеруем каждый элемент этого длинного списка дробей так, чтобы каждая дробь попарно соотносилась с одним из ряда целых чисел, и так до бесконечности.
Итак, каждая дробь будет представлена в списке только один раз, и ей будет соответствовать целое число, равное номеру этой дроби в списке. Ни одна дробь не останется неохваченной, и ни одно целое число не окажется без соотнесенной с ним дроби, так что в обоих рядах будет одинаковое количество чисел.
Отлично! Так, может быть, признаем, что все бесконечные множества предметов имеют равное количество составляющих их элементов, даже если кажется, что это маловероятно, как в случае с дробями? Но как тогда могут возникнуть бесконечно большие множества предметов, которые больше, чем бесконечность порядковых номеров?
Немецкий математик Георг Кантор (1845–1918) обнаружил два ряда чисел, которые нельзя взаимно-одназначно соотнести друг с другом, как мы только что проделали с порядковыми номерами и дробями. Он оттолкнулся от посылки, что соотнести их можно, и нашел противоречие. Помните? — если вы придерживаетесь гипотезы, будто все лебеди белые, достаточно найти одного черного, и вся гипотеза пойдет насмарку (см. главу «Есть ли в космосе черные лебеди?»).
В одном из рядов чисел, рассматривавшихся Кантором, были натуральные, или целые, числа — такие же, как использованные нами. Другой совокупностью были так называемые вещественные (или действительные) числа. Вещественные числа эквивалентны точкам на линии от 0 до бесконечности, таким образом, их множество включает в себя целые числа и дроби, но также оно включает и иррациональные числа, которые не могут быть выражены в виде дробей с целыми числителями и знаменателями (см. главу «π = 3»), а могут выражаться лишь в виде десятичной дроби с длинным рядом знаков после запятой. Простые дроби тоже можно перевести в десятичные, но у них через несколько знаков после запятой начнутся сплошные нули. Так, 5/8 — это то же самое, что 0,62 500 000 000, тогда как в иррациональном числе 17,38279462900962835687648… знаки после запятой можно перечислять вечно.
Чтобы доказать, что вещественные числа нельзя взаимно-однозначно соотнести с целыми числами, Кантор продемонстрировал: как бы вы ни пытались выстроить вещественные числа в организованную последовательность, как мы проделывали с дробями, всегда есть шанс, что всплывет какое-нибудь вещественное число, которого в этой последовательности нет.
И вот как он это обосновал. Допустим, у нас есть совокупность всех вещественных чисел (которых бесконечное количество), и мы ввели некое правило, позволяющее выстроить их по порядку. Полученная нами в результате последовательность может выглядеть, например, так:
Целое число Вещественное число 1 7,2728654901088… 2 2,0709903829756… 3 18,696243576675… 4 0,8717454638892… 5 3,8342020203020… 6 0,6766682920082… 7 3,1416269873562…
Какова бы ни была закономерность расположения чисел, она не очевидна, но речь сейчас не об этом. До тех пор, пока мы пребываем в уверенности, что можем соотнести любое вещественное число с привычным и милым нашему сердцу миром целых чисел, мы неизменно будем получать такую вот странноватую последовательность.