Трюк, позволяющий ускорить процесс, называется алгоритм Флажоле – Мартена. Я не стану вдаваться в детали его действия, а расскажу упрощенную версию. Facebook♦
не скажет вам, сколько у вас друзей друзей, но позволит искать среди них людей, например по имени Констанс. У меня таких 25. Констанс не особо распространенное имя: в тех возрастных группах, куда входит бАлгоритм Флажоле – Мартена не совсем такой, но работает по тому же принципу. Он напоминает просмотр списка друзей всех ваших друзей с отслеживанием самого редкого имени. Каждый раз, встречая имя, более редкое, чем нынешний рекордсмен, вы отбрасываете старое имя и заменяете его новым. Не требуется большого хранилища! В конце процесса у вас будет предположительно самое редкое имя, и чем длиннее ваш список, тем более редким оно будет. Теперь можно вернуться и по степени редкости самого редкого имени прикинуть, сколько различных людей есть среди друзей ваших друзей!
Это срабатывает не всегда. Например, у меня есть друг по имени Кардим (Kardyhm). Родители назвали его так, сложив инициалы семи лучших друзей в удобном для произношения порядке. Я считаю, что он – единственный Кардим в мире. Поэтому построенная вышеописанным способом оценка для любого из друзей друзей Кардима будет неоправданно завышена из-за крайней редкости его имени. Настоящий алгоритм Флажоле – Мартена использует не имена, а другой вид идентификатора – хеш, которым можно управлять во избежание таких проблем, как с Кардимом.
Одно небольшое предупреждение насчет подобных вычислений. Если вы ими займетесь, то, скорее всего, столкнетесь с обидным для вашего эго фактом, что у ваших друзей в среднем больше друзей, чем у вас. Я вовсе не пытаюсь этим унизить коммуникабельность своего читателя. Крупномасштабный анализ[563]
сети Facebook♦, проведенный в 2011 году, показал, что 92,7 % пользователей имеют меньше друзей, чем их средний друг. Совершенно нормально, что у ваших друзей больше друзей, чем у вас, потому что ваши друзья (в реальной жизни или на экране) – не случайная выборка из всего населения. В силу того, что они оказались в числе ваших друзей, они с большей вероятность являются теми, у кого много друзей.Для большинства людей удивительно, что такую колоссальную сеть, как Facebook♦
, можно пересечь всего за несколько шагов. Но теперь мы знаем, что сети типа маленького мира сегодня обычное явление. Математические основы заложили в своей фундаментальной работе 1998 года Дункан Уоттс и Стивен Строгац[564]. Уоттс и Строгац просят вас поразмышлять о следующем виде сети. Вы начинаете с нескольких точек, расположенных по кругу, причем каждая соединена только с несколькими ближайшими соседями. Такая сеть похожа на блуждание комара: вы не можете перемещаться быстро, и если на окружности стоят тысячи точек, то для полного обхода вам потребуется много времени. А если добавить несколько связей между далекими точками, чтобы имитировать случайные связи между удаленными людьми?Уоттс и Строгац обнаружили, что достаточно небольшого числа таких новых связей, чтобы превратить сеть в маленький мир, где люди соединены друг с другом коротким путем. Они пишут (и этот фрагмент теперь кажется тревожно нострадамусовским): «Можно предсказать, что инфекционные заболевания в маленький мире будут распространяться легче и быстрее; настораживающий и менее очевидный факт – насколько мало нужно сделать спрямляющих путей, чтобы сделать мир маленьким». Разработка математического описания маленьких миров показывает, что изначально удивительное явление, обнаруженное Милгрэмом, вовсе не должно удивлять. Такова природа хорошей прикладной математики: она превращает «Как такое может быть?» в «А разве может быть иначе?».