П
Поступашки - Информатика
@postupashki_prog2.0K подп.
4.5Kпросмотров
18 октября 2025 г.
Score: 5.0K
Здравствуйте, Товарищи!!!😎😎😎 Сегодня разбираем один из фундаментальных разделов теории графов — нахождение кратчайших путей. Определение Кратчайшим путём между вершинами a и b в неориентированном графе называется путь между ними, содержащий наименьшее количество рёбер. В зависимости от контекста под длиной пути могут понимать как число рёбер k, так и число промежуточных вершин (k−1), либо общее число вершин в пути (k+1), включая начало и конец. Кратчайший путь между парой вершин не всегда уникален. Как искать кратчайшие пути Если граф не содержит циклов, задачу можно решить в духе динамического программирования. Кратчайшее расстояние до вершины v выражается через минимальное расстояние до всех возможных предыдущих вершин u: d[v] = min(d[u] + w_uv), где (u, v) — ребро графа. Чтобы посчитать эту формулу, нужно уметь для каждой вершины проходиться по всем входящим рёбрам и выбирать порядок обхода так, чтобы значения d[u] уже были вычислены. Поиск в ширину Если граф невзвешенный, то все кратчайшие пути можно найти с помощью поиска в ширину (Breadth-First Search, или просто BFS). Алгоритм можно представить как процесс «поджигания» графа: сначала «горит» стартовая вершина s, а на каждом следующем шаге огонь перекидывается на всех соседей уже горящих вершин. Номер шага, на котором вершина v загорелась, в точности равен длине кратчайшего пути от s до v. Алгоритм Дейкстры Если рёбра имеют неотрицательные веса, применяется алгоритм Дейкстры. Он находит кратчайшие пути от заданной вершины s до всех остальных. Пусть d[v] — текущее известное расстояние от s до v. Изначально d[s] = 0, а для остальных вершин расстояние считается бесконечным. На каждой итерации выбирается вершина v с минимальным d[v] среди ещё не отмеченных. После этого для всех исходящих рёбер (v, u) выполняется операция релаксации: d[u] = min(d[u], d[v] + w), где w — длина ребра (v, u). Когда все вершины обработаны, массив d содержит длины кратчайших путей. Время работы ВFS: O(n + m), где n - кол-во вершин, m - количество рёбер Дейкстра: O(n ^ 2 log n) Практика (Codeforces) Алгоритм Дейкстры? Кратчайший путь Тренировка СПбГУ Встреча Мариан и Робина Итоги Поиск в ширину юзаем для невзвешенных графов, а алгоритм Дейкстры — для графов с неотрицательными весами. Оба метода лежат в основе многих олимпиадных и прикладных задач, в основном это построение маршрутов и компьютерные сети А если хотите более подробно изучить олимпиадные темы, записывайтесь на наш курс по олимпиадному программированию, который уже стартует завтра. @postupashki_prog
4.5K
просмотров
2543
символов
Да
эмодзи
Нет
медиа

Другие посты @postupashki_prog

Все посты канала →
Здравствуйте, Товарищи!!!😎😎😎 Сегодня разбираем один из фу — @postupashki_prog | PostSniper