PageRank — ранжирование на графе
Задача
Интернет — огромный направленный граф: страницы — вершины, гиперссылки — рёбра. Как автоматически оценить, какие страницы важнее, если «важность» должна учитывать не только число ссылок на страницу, но и авторитет тех, кто ссылается?
PageRank (Ларри Пейдж, Сергей Брин, конец 1990-х) стал основой ранжирования в раннем Google. Идея проста для объяснения и опирается на линейную алгебру в инженерном, а не академическом, виде.
Модель «блуждающего пользователя»
Представьте пользователя, который:
- Случайно открывает любую страницу (или переходит по случайной ссылке с текущей).
- С вероятностью
β(например, 0,85) переходит по одной из исходящих ссылок на равных правах. - С вероятностью
1 − β«телепортируется» на случайную страницу (иначе застрянет на странице без исходящих ссылок).
Долгая доля времени, проведённая на каждой странице, и есть её рейтинг. Страница, на которую ведут ссылки с авторитетных страниц, получает больший рейтинг.
| Ситуация | Название |
|---|---|
| Страница только с входящими ссылками | Висячий узел (dangling) |
| Нет исходящих ссылок | Нужна телепортация или нормализация |
Матрица переходов (интуиция)
Строят матрицу гиперссылок H: строка i — с каких страниц можно перейти на страницу i, с весами, обратно пропорциональными числу исходящих ссылок у донора.
Добавляют «случайный прыжок» ко всем страницам — получают матрицу Google G. Вектор рейтингов r (сумма компонент = 1) удовлетворяет:
r = G × r
То есть r — стационарное распределение цепи Маркова: после многих шагов блуждания доли времени на страницах стабилизируются.
В линейной алгебре такой вектор связан с собственным вектором матрицы с собственным значением 1. На практике его не вычисляют формулами — используют итерацию.
Степенной метод
Степенной метод — многократно умножать начальный вектор на G, пока значения не перестанут заметно меняться:
АЛГОРИТМ PAGERANK_ИТЕРАЦИЯ(G, β, ε)
n := число страниц
r[0..n−1] := 1/n // равномерный старт
повторять
r_новый := β · (G × r) + (1−β)/n · 1 // 1 — вектор из единиц
если max |r_новый − r| < ε
вернуть r_новый
r := r_новый
до бесконечности
КОНЕЦ
Число итераций обычно логарифмично по точности, а не линейно по размеру веба — поэтому алгоритм масштабируется на миллиарды страниц (с распределёнными вычислениями).
Почему это алгоритм, а не «магия»
| Принцип | В PageRank |
|---|---|
| Модель задачи | Веб как граф |
| Подходящий инструмент | Итерация, а не полный перебор |
| Эффективность | Полиномиальное время на разреженной матрице |
| Ограничения | Нужна связность / телепортация; рейтинг — лишь один сигнал в поиске |
Современный поиск учитывает сотни факторов; PageRank остаётся классическим примером связи структуры данных (граф) и ранжирования.
Где ещё встречается идея
- Рекомендации и соцсети — распространение влияния по связям.
- Анализ цитирований — «важность» статей по ссылкам.
- ML — сходство с обновлением весов в итеративных методах (подробнее — машинное обучение, нейросети).
Нейросети и глубокое обучение разобраны в разделе ИИ — машинное обучение, нейросети. PageRank — пример классического алгоритма на графе без обучения по градиенту.
Связанные материалы
- Графы, Дейкстра
- Нотация Большое O — оценка итераций
- Алгоритмы — о разделе
См. также
Другие статьи этого же раздела в боковом меню (как на странице "О разделе"). Последовательности действий для решения задач. Введение в алгоритмы. Примеры из реальной жизни для понимания, как на самом деле выглядят алгоритмы в программировании. Регулярные выражения — шаблон для поиска и проверки текста. Введение, лаборатория и маршрут обучения для новичков. Как читать шаблон слева направо — литералы, точка, классы символов, квантификаторы, якоря. Разбор логина, даты, пути и времени по частям. Круглые скобки, захват частей строки, обратные ссылки, альтернатива, поиск и замена в редакторе и коде. Опережающие и ретроспективные проверки (lookahead, lookbehind), несколько условий для пароля, цена после знака доллара. Флаги i, m, g, s и аналоги в .NET; жадные, ленивые и жадные квантификаторы; почему .* захватывает слишком много. Готовые шаблоны для логов, email, URL, IP; grep, ripgrep, sed; типичные ошибки и различия движков. Универсальный алгоритм обработки - инициализация, загрузка, реакция, логика. Если вы начнёте какой-нибудь курс изучать, вероятнее всего как раз затронете в одной из первых тем алгоритмы сортировки и поиска. Оценка времени и памяти. Алгоритмическая сложность и анализ эффективности программ. Нотация Большое O — язык оценки масштабируемости: O(1)…O(n!), примеры на структурах данных, сортировке, поиске и типичных ловушках в коде.Алгоритмы
Тренировка алгоритмического мышления
Регулярные выражения
Регулярные выражения — синтаксис с нуля
Регулярные выражения — группы и замена
Регулярные выражения — проверки вокруг совпадения
Регулярные выражения — флаги и жадность
Регулярные выражения — рецепты и командная строка
Алгоритм обработки
Алгоритмы сортировки и поиска
Анализ эффективности алгоритмов
Нотация Большое O