Задание 9. Подсчёт путей по схеме дорог — теория и разбор
Совет: выделите текст, чтобы спросить у ИИ, или наведите (на телефоне — тапните) на подчёркнутое слово — увидите подсказку.
Задание 9. Подсчёт путей по схеме дорог — теория и разбор
Схема с городами и стрелками-дорогами выглядит устрашающе, но задача решается без перебора всех путей руками — достаточно один раз пройти по схеме и в каждом городе записать одно число.
Что нужно знать
Схема дорог — это граф: города — точки (вершины), дороги — стрелки между ними (рёбра). Все дороги односторонние — двигаться можно только по направлению стрелки, и в схемах этого задания нет способа вернуться туда, откуда пришёл (нет циклов).
Способ решения — последовательный подсчёт: в каждом городе записываем, сколько РАЗНЫХ путей ведёт туда из города-старта. Начинаем со старта (там всегда 1 — «стоять на месте»), а дальше для каждого следующего города складываем числа всех городов, из которых в него ведёт прямая дорога.
Число путей до города — это сумма чисел всех городов, откуда в него ведёт прямая дорога, а не единица за каждую дорогу: если в город ведут две дороги из городов с числами 3 и 2, то в него ведёт 3 + 2 = 5 путей, а не 2.
Правило порядка подсчёта: обрабатывать города можно только после того, как посчитаны ВСЕ города, из которых в него ведут дороги — иначе сумма будет неполной. Обычно достаточно идти слева направо по схеме.
Разбор примера
Схема дорог связывает города A, B, C, D, E, F. Все дороги — одностороннее движение, в направлении, указанном стрелками:
A→B, A→C, B→D, B→E, C→D, C→F, D→F, E→F.
Сколько существует различных путей из города A в город F?
Как думать. Идём по схеме от A и в каждом городе подписываем число путей до него — сумму чисел городов, из которых есть прямая дорога сюда.
Показать решение и ответ
Считаем по порядку (каждый следующий город обрабатываем, только когда посчитаны все его «входящие» города):
- A = 1 (старт).
- B = A = 1 (дорога A→B).
- C = A = 1 (дорога A→C).
- D = B + C = 1 + 1 = 2 (дороги B→D и C→D).
- E = B = 1 (дорога B→E).
- F = C + D + E = 1 + 2 + 1 = 4 (дороги C→F, D→F, E→F).
Ответ: 4
Как решить в Python
Тот же процесс — обычная динамика на графе: идём по городам в порядке, где источники уже посчитаны, и складываем:
edges = {
'A': ['B', 'C'],
'B': ['D', 'E'],
'C': ['D', 'F'],
'D': ['F'],
'E': ['F'],
'F': [],
}
order = ['A', 'B', 'C', 'D', 'E', 'F'] # топологический порядок — источники раньше целей
count = {v: 0 for v in order}
count['A'] = 1
for v in order[1:]:
count[v] = sum(count[u] for u in order if v in edges[u])
print(count['F']) # 4
Такой код особенно полезен, когда городов много и держать в голове порядок подсчёта становится сложно — важно только один раз правильно переписать схему в список рёбер.
Похожие материалы
Задание 9. Пути с условием: через город и в обход города — теория и разбор
Пути с условием
Как считать пути на графе, проходящие через заданный город или избегающие его — разбор примера и проверка в Python.
Подсчёт путей на графе: тренажёр
Шесть листов с задачами на подсчёт количества путей на схеме дорог (графе) для задания 9 ОГЭ по информатике. Материалы: ФИПИ, открытый банк заданий.
Анализ схемы дорог: сборник задач
Шесть листов с задачами на анализ схемы дорог и подсчёт различных путей для задания 9 ОГЭ по информатике. Материалы: ФИПИ, открытый банк заданий.
Графы дорог: практикум
Шесть листов с задачами на определение количества путей в графе дорог для задания 9 ОГЭ по информатике. Материалы: ФИПИ, открытый банк заданий.
Задание 16. Программирование на языке программирования — теория и разбор
Типовой шаблон решения: цикл + условие делимости + счётчик — разбор примера на Python и Паскале.
Задание 15. Алгоритм для исполнителя Робот — теория и разбор
Команды Робота, циклы «пока свободно» и алгоритм, работающий для поля любого размера — разбор примера и проверка в Python.