PageRank
Важность = голоса входящих ссылок с затуханием: ядро Google.
1function pageRank(2 edges: Array<[from: string, to: string]>,3 d = 0.85, // затухание: 15% веса телепорт4 iters = 20,5) {6 const pages = uniquePages(edges)7 let rank = new Map(pages.map((p) => [p, 1 / pages.length]))8 9 for (let it = 0; it < iters; it++) {10 const next = new Map(pages.map((p) => [p, (1 - d) / pages.length]))11 for (const [from, to] of edges) {12 const out = edges.filter(([f]) => f === from).length13 next.set(to, next.get(to)! + d * rank.get(from)! / out)14 // голос = доля своей важности, делённая на число ссылок15 }16 rank = next17 }18 19 return rank20}Проблема
Важность = голоса входящих ссылок с затуханием: ядро Google.
Что вы видите
Страница отдаёт долю своего веса каждой исходящей; телепорт 15%.
Как это работает
Собственный вектор матрицы переходов, найденный степенным методом. Сходится за десятки итераций; d=0.85 балансирует ссылочный вес и телепорт.
Пошаговый разбор
- 01
Инициализация
Всем поровну.
- 02
Голосование
Вес/число ссылок.
- 03
Сходимость
Веса стабилизируются.
Complexity и ограничения
Сложность см. в шапке страницы.
Edge cases
- Пустой вход
Корректная тривиальная обработка.
- Вырожденный случай
Минимум работы — сразу ответ.
Где встречается в реальности
Ранжирование (основа).
Рекомендации
Важность товаров.
Анализ графов
Инфлюенсеры, цитирования.
Связанные алгоритмы
«1998: два студента перевернули поиск»
Тот же сценарий StepSequence в вертикальной композиции — с safe zones и записью WebM ниже на странице.
Shorts 9:16
Вертикальная композиция строится той же последовательностью шагов, что и страница: safe zones отмечены пунктиром (там живёт UI платформ), биты сценария подсвечиваются по прогрессу. Кнопка записи сохраняет WebM — детерминированная StepSequence даёт воспроизводимый ролик без монтажа.