Что изменилось в ЕГЭ по информатике 2027
В новой модели ЕГЭ тема прежнего задания №23 изменилась.
Теперь задание проверяет умение решать алгоритмические задачи, связанные с анализом графов. В частности, речь может идти о:
- поиске оптимального пути между вершинами графа;
- определении количества различных путей в ориентированном ациклическом графе.
В демонстрационном варианте дан именно первый тип: поиск кратчайшего пути.
Что дано в задании №23
В текстовом файле находится описание графа.
Каждая строка имеет вид:
L M Wгде:
L— начальная вершина;M— конечная вершина;W— вес ребра между ними.
Например:
1 7 5.5означает:
из вершины 1 можно перейти в вершину 7 по ребру весом 5,5.
Важно, что граф ориентированный.
Поэтому запись
1 7 5.5означает переход:
1 → 7но совсем не обязательно означает существование перехода:
7 → 1Граф состоит из:
- вершин;
- рёбер — связей между вершинами.
Если каждому ребру дополнительно соответствует число, граф называется взвешенным.
Например:
1 ──5.5──→ 7Число 5.5 — вес ребра.
Это может быть:
- расстояние;
- время;
- стоимость;
- расход топлива;
- любой другой числовой параметр.
В задании №23 нас интересует сумма весов всех рёбер маршрута.
Задание №23 из демоверсии ЕГЭ 2027

Необязательно, чтобы строки шли в каком-то удобном порядке.
Например, ребро из вершины 1 может находиться:
- в начале файла;
- в середине;
- в конце.
Поэтому программа должна сначала прочитать весь граф, а затем искать путь.
Как представить граф в Python
Один из самых удобных вариантов — список смежности.
Создадим словарь:
graph = {}
graph[1] = [(7, 5.5), (100, 12.0), (4, 2.5)]
Это означает:
из вершины 1 существуют рёбра:
1 → 7 вес 5.5
1 → 100 вес 12
1 → 4 вес 2.5Алгоритм Дейкстры простыми словами
Представим, что мы начинаем в вершине 1.
До неё расстояние = 0
До всех остальных вершин сначала считаем расстояние бесконечным:
1 → 0
остальные → ∞
Теперь смотрим, куда можно попасть из 1.
Допустим:
1 → 7 5.5
1 → 4 2.5
1 → 100 12Получаем:
до 7 = 5.5
до 4 = 2.5
до 100 = 12
Теперь выбираем вершину с наименьшим найденным расстоянием.
Это вершина:
4потому что:
2.5 < 5.5 < 12Из неё можно попасть в 100 с весом 8.
Получаем новый путь:
1 → 4 → 100длиной:
2.5 + 8 = 10.5Это лучше прежних 12, поэтому расстояние до 100 обновляем:
12 → 10.5
Следующая ближайшая вершина 7
Расстояние до неё = 5.5
Из неё ведёт ребро:
7 → 100весом 2
Получаем:
5.5 + 2 = 7.5Это ещё лучше:
10.5 → 7.5Так постепенно алгоритм находит минимальное расстояние.
Решение нового задания №23 на Python
graph = {}with open("23.txt") as file:for line in file:L, M, W = line.split()L = int(L)M = int(M)W = float(W)if L not in graph:graph[L] = []graph[L].append((M, W))
Алгоритм Дейкстры
dist = {1: 0}used = set()while True:v = Nonefor x in dist:if x not in used:if v is None or dist[x] < dist[v]:v = xif v is None:breakif v == 100:breakused.add(v)for to, w in graph.get(v, []):new_dist = dist[v] + wif to not in dist or new_dist < dist[to]:dist[to] = new_distprint(int(dist[100]))
Перебор путей рекурсией
def way(x, total):if x == 100:ans.append(total)returnif x not in graph:returnfor y, w in graph[x]:way(y, total + w)ans = []way(1, 0)print(int(min(ans)))
Что выбрать, рекурсию или алгоритм Дейкстры?
Она наглядно показывает, как программа перебирает все возможные пути от стартовой вершины до конечной.
Для учебного примера это самый простой и короткий вариант решения.
Она перебирает все возможные маршруты, даже если многие из них заранее невыгодны.
Он не перебирает все маршруты целиком, а постепенно сохраняет лучшие найденные расстояния до вершин.
Рекурсия помогает разобраться в логике графа, а Дейкстра — получить более универсальное и эффективное решение.
Ошибка в сложной реализации Дейкстры хуже, чем простая и правильно работающая рекурсия.
рекурсия — для понимания и небольших графов, Дейкстра — для надёжного поиска кратчайшего пути.
FAQ
Что появилось в задании №23 ЕГЭ по информатике 2027?
В новой версии задания №23 нужно решать алгоритмические задачи на графах. В демоверсии требуется найти кратчайший путь в ориентированном взвешенном графе.
Какой алгоритм нужен для задания №23?
Для демонстрационного задания удобно использовать алгоритм Дейкстры.
Можно ли решить задание без Дейкстры?
Да. Поскольку граф ациклический, существуют другие способы, в том числе перебор путей или динамическое программирование. Но полный перебор может оказаться значительно менее эффективным.
Почему используется float?
Потому что веса рёбер в файле могут быть вещественными, например 5.5.
Что выводить, если кратчайший путь равен 7.5?
Ответ 7 потому что в задании требуется целая часть длины.