Теория шести рукопожатий. Личный опыт

в 20:23, , рубрики: Песочница, метки: , ,

Меня пару дней назад осенила идея написать парсер, который проверит теорию шести рукопожатий на одном конкретном аккаунте. Разумеется, выбор пал именно на социальную сеть ВКонтакте, а основная цель – найти Павла Дурова за кратчайший путь. Итак, поехали!

Теория шести рукопожатий. Личный опыт - 1

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


Писать свою библиотеку сбора друзей не стал, поэтому использовал уже готовый ВКонтакте API для .Net. Вытягиваем оттуда функцию Friends.Get(ID), запасаемся чашечкой кофе и пишем за один вечер полноценный парсер. Не забываем про подводные камни: не попадет ли наша программа в ловушку рекурсии (у Васи в друзьях Петя, а у Пети Вася), не обидеться ли сервер за превышение лимита количества однотипных запросов, и можно смело начинать наше исследование. Так как дело не быстрое, решил взять сервер на тестовый период – это совершенно бесплатно, ровно на 10 дней. После дня работы было примерно следующее:

Теория шести рукопожатий. Личный опыт - 2

Все работает, собран первый миллион пользователей, осталось только ждать!

Спустя пару дней скорость значительно упала, что весьма ожидаемо. Дело в том, что каждого нового пользователя надо было сравнивать с уже добавленными, так как в базе не должно быть повторов. Можно глянуть статистику обращений:

Теория шести рукопожатий. Личный опыт - 3

Что же удалось за все это время?

Всего было собрано: 5 601 348 пользователей
Среднее количество друзей: 340
Максимальное количество друзей: 9908

И самое интересное, я дошел лишь до 4 уровня связи:

1 уровень связи: 24 пользователя
2 уровень связи: 2 216 пользователей
3 уровень связи: 472 869 пользователей
4 уровень связи: свыше 5 601 348 пользователей

Теперь, каких же известных людей удалось все же найти:

Павел Дуров

id165096139 --> id35209022 --> id95640814 --> id1

Дмитрий Медведев

id165096139 --> id35209022 --> id95640814 --> id1 --> id53083705

Алексей Шевелёв (редактор группы Хабра в ВК)

id165096139 --> id23045636 --> id4197503 --> id146891

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

Заключение

Как я считаю, эксперимент все же удался – Павел Дуров найден! Для пущей уверенности можете отправить мне свой id, и я построю для Вас цепочку из знакомых. Исходники крепить не имеет смысла: зачем нервировать людей, у которых аллергия на ужасный код?

Все опечатки сделаны умышленно.

Автор: нештатный корреспондент

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js