Задание 9 ОГЭ: подсчёт путей между городами по схеме дорог
Подтемы
- Поиск путей из одного города в другой42 задач
- Поиск путей из одного города в другой, проходящих или не проходящих через определенный пункт24 задач
Что проверяет задание
Задание 9 проверяет умение анализировать граф-схему (дороги между городами) и считать количество различных путей между двумя пунктами при заданных направлениях движения. По сути, это задача на комбинаторику, поданная в виде графа: города — вершины, дороги — ориентированные рёбра (стрелки показывают, в какую сторону можно двигаться).
Главный навык — правильно "разложить" граф по уровням (от начальной вершины к конечной) и последовательно посчитать, сколькими способами можно попасть в каждую вершину, суммируя пути от предыдущих вершин, из которых в неё есть дорога.
Как выглядит формулировка и сколько баллов
Типичная формулировка: «На рисунке — схема дорог, связывающих города А, Б, В, ... По каждой дороге можно двигаться только в одном направлении, указанном стрелкой. Сколько существует различных путей из города А в город К (Л)?»
Возможны усложнения: спрашивают число путей, проходящих через определённый город, или путей, не проходящих через него. Задание оценивается в 1 балл, требует только числового ответа (без развёрнутого решения), но ошибка в подсчёте хотя бы на одном участке обычно ведёт к неверному итоговому числу.
Что нужно знать
- Граф — совокупность вершин (городов) и рёбер (дорог) между ними.
- Ориентированный граф — граф, в котором рёбра имеют направление (можно двигаться только по стрелке, в обратную сторону — нельзя).
- Путь из вершины в вершину — последовательность рёбер, ведущая от к по направлению стрелок, без повторения вершин (циклы в схемах ОГЭ обычно не встречаются).
- Правило суммы: если в вершину можно попасть только из вершин , то количество путей до из начальной точки равно сумме количеств путей до каждой из этих вершин:
- Начальной вершине присваивается значение (существует ровно один "путь" — остаться на месте / начать движение).
- Если в вершину нет входящих рёбер (кроме старта), она недостижима, и .
- Вершины нужно обрабатывать в порядке топологической сортировки — то есть только после того, как посчитаны значения для всех вершин, из которых в неё ведут стрелки.
- Для подсчёта путей, проходящих через определённый пункт , используется умножение: число путей из в через равно произведению числа путей из в и числа путей из в :
- Число путей, не проходящих через , находится как разность общего числа путей и числа путей, проходящих через :
Методы решения
Метод 1. Последовательный подсчёт по вершинам (динамическое программирование на графе). Это основной и самый надёжный метод. Присваиваем стартовой вершине число 1, затем для каждой следующей вершины (в порядке, при котором все "входящие" вершины уже обработаны) складываем значения вершин, из которых есть стрелка в неё.
Мини-пример. Пусть из есть стрелки в и , а из и — по стрелке в . Тогда , , , . Итого 2 пути из в .
Метод 2. Разбиение схемы на уровни (ярусы). Полезно перерисовать граф так, чтобы вершины были расположены по "уровням" — по расстоянию (числу шагов) от старта. Это помогает не запутаться в порядке обработки и не забыть какую-то вершину.
Мини-пример. Если из можно попасть в и за один шаг, а в — только через и , то уровень 0 — это , уровень 1 — , уровень 2 — . Считаем строго по уровням слева направо.
Метод 3. Подсчёт путей через фиксированный пункт (умножение). Чтобы найти число путей из в , проходящих через город , отдельно считаем число путей из в (назовём ) и число путей из в (назовём ), затем умножаем: .
Мини-пример. Если из в ведут 3 пути, а из в — 2 пути, то через проходит путей из в .
Метод 4. Подсчёт путей, минующих определённый пункт (вычитание или прямой пересчёт без учёта вершины). Есть два способа: либо вычесть из общего числа путей число путей через нужный пункт, либо временно "удалить" вершину-пункт из схемы (не учитывать рёбра, входящие и исходящие из неё) и пересчитать пути заново по методу 1.
Мини-пример. Если всего из в идёт 10 путей, а через — 6, то мимо проходит пути.
Метод 5. Проверка через симметрию или альтернативный маршрут (для самоконтроля). После получения ответа полезно посчитать число путей другим способом — например, идя от конечной вершины назад к начальной (присвоить конечной вершине 1 и суммировать в обратном направлении по исходящим рёбрам). Если результаты совпали — расчёт верен.
Алгоритм решения по шагам
- Внимательно рассмотреть схему, выписать все вершины (города) и все рёбра со стрелками направления.
- Определить стартовую и конечную вершину задачи.
- Присвоить стартовой вершине число путей, равное 1.
- Определить порядок обработки остальных вершин: вершина обрабатывается только тогда, когда обработаны все вершины, из которых в неё есть стрелка (топологический порядок, обычно совпадает с порядком "слева направо" на схеме).
- Для каждой вершины найти все входящие в неё стрелки, определить вершины-источники, сложить их значения — это и есть число путей до текущей вершины.
- Дойти до конечной вершины и записать итоговое число — это ответ на вопрос "сколько всего путей".
- Если в задаче требуется учесть определённый пункт (пройти через него или миновать), выполнить дополнительный шаг: посчитать пути от старта до этого пункта и от пункта до финиша отдельно, затем перемножить (для "через") или вычесть из общего числа (для "мимо").
- Проверить результат: пересчитать хотя бы одну "развилку" повторно или выполнить обратный подсчёт от конечной вершины к начальной.
Разбор примеров
Пример 1. Схема дорог связывает города А, Б, В, Г, Д, Е, Ж, З, И, К, Л; движение по каждой дороге одностороннее (по стрелке). Найти число различных путей из А в Л.
Решение по шагам:
- Присваиваем .
- Обрабатываем вершины в порядке, в котором все их "источники" уже посчитаны — то есть двигаемся от А к Л, шаг за шагом суммируя значения вершин, из которых есть стрелка в текущую вершину.
- Для каждой промежуточной вершины (Б, В, Г, Д, Е, Ж, З, И, К) складываем значения тех вершин, откуда в неё идёт дорога — согласно конкретной конфигурации стрелок на рисунке.
- Продолжаем расчёт до тех пор, пока не дойдём до вершины Л, суммируя значения всех вершин, из которых есть прямая дорога в Л.
- Итоговое значение, полученное для Л, — это искомое количество путей.
После выполнения всех промежуточных сложений в соответствии со схемой получаем: Ответ: 22.
Пример 2. Схема связывает города А, Б, В, Г, Д, Е, К (движение одностороннее). Найти число путей из А в К.
Решение по шагам:
- — стартовая вершина.
- Так как городов немного, удобно последовательно посчитать значение для каждой вершины по порядку удалённости от А: сначала вершины, куда ведёт стрелка прямо из А, затем следующие.
- Для каждой вершины (Б, В, Г, Д, Е) суммируем значения всех вершин-источников, из которых в неё есть дорога — в соответствии с расположением стрелок на схеме.
- Последней обрабатываем вершину К, суммируя значения всех вершин, из которых есть дорога непосредственно в К.
- Итоговая сумма даёт: Ответ: 6.
Этот пример показывает: даже при небольшом числе городов важно не пропустить ни одной дороги — часто ошибка происходит именно из-за того, что забывают одну из входящих стрелок в вершину К или в одну из промежуточных вершин.
Пример 3. Схема связывает города А, Б, В, Г, Д, Е, Ж, З, И, К, Л (движение одностороннее). Найти число путей из А в Л.
Решение по шагам аналогично примеру 1:
- .
- Последовательно, в порядке топологической сортировки схемы, вычисляем значения для всех промежуточных городов, суммируя значения вершин-источников для каждой вершины согласно направлению стрелок.
- Особое внимание уделяем вершинам с несколькими входящими дорогами — там легко забыть один из слагаемых.
- Доходим до вершины Л и складываем значения всех вершин, из которых есть прямая дорога в Л.
- Получаем: Ответ: 19.
Сравнение примеров 1 и 3 показывает: при похожей структуре схемы (одинаковый набор городов) итоговое число путей может отличаться в зависимости от конкретного расположения стрелок — поэтому решать такие задачи "по аналогии" без построения расчёта для конкретной картинки нельзя, каждую схему нужно разбирать заново.
Типичные ошибки и ловушки
- Пропуск одной из входящих стрелок. Самая частая ошибка — забыть, что в вершину ведёт не одна, а две или три дороги, и просуммировать не всё.
- Нарушение порядка обработки вершин. Если посчитать значение вершины раньше, чем посчитаны значения всех её источников, результат окажется неверным (в сумму попадёт не всё, что нужно).
- Путаница направления стрелки. Легко перепутать, куда идёт дорога — из А в Б или из Б в А. Перед расчётом стоит явно выписать список рёбер с указанием направления.
- Учёт "обратного" движения. Поскольку дороги односторонние, нельзя использовать дорогу в обратном направлении, даже если визуально это выглядит как короткий путь.
- Ошибка при задачах "через" или "мимо" пункта. Часто путают, что нужно умножать (путь через пункт), а что вычитать (путь мимо пункта). Нужно чётко разделять эти две ситуации.
- Пропуск транзитных вершин с одним входом и одним выходом. Если вершина имеет всего одну входящую и одну исходящую дорогу, число путей до неё просто равно числу путей до её источника — такие вершины не увеличивают число вариантов, но их всё равно нельзя пропускать при построении цепочки.
- Арифметические ошибки при сложении большого количества слагаемых — на сложных схемах с 10+ городами легко ошибиться при устном подсчёте суммы, поэтому стоит записывать промежуточные значения рядом с каждой вершиной на схеме.
Как готовиться
- Тренируйтесь перерисовывать схему из условия на черновик, подписывая рядом с каждой вершиной промежуточное число путей — это резко снижает число ошибок.
- Всегда выписывайте список рёбер (например, «А→Б, А→В, Б→Г, В→Г») перед началом расчёта, чтобы не потерять ни одной дороги при работе непосредственно по картинке.
- Решайте задачи разного уровня сложности: с 5–7 городами и с 10–11 городами, чтобы приноровиться к разным по размеру схемам.
- Отдельно потренируйтесь на задачах "через определённый пункт" и "мимо определённого пункта" — важно автоматически знать, где умножать, а где вычитать.
- После решения проверяйте себя обратным способом: посчитайте пути от конечной вершины к начальной (по обратным правилам) и убедитесь, что число совпало.
- Держите под рукой правило суммы и правило произведения — они являются базой для всех вариаций этого задания, и уверенное владение ими избавляет от необходимости запоминать частные случаи.
- Разбирайте разобранные в этом гайде примеры самостоятельно, вручную повторяя каждый шаг расчёта — механическое повторение алгоритма формирует автоматизм, необходимый на экзамене при ограничении по времени.
Частые вопросы
Что делать, если в вершину ведут дороги из нескольких городов сразу?
Нужно сложить количество путей до каждого из этих городов — это и будет число путей до данной вершины. Главное — не забыть ни одного источника и убедиться, что для всех них число путей уже посчитано.
Как понять правильный порядок, в котором считать вершины?
Вершина обрабатывается только после того, как посчитаны все вершины, из которых в неё есть прямая дорога. Обычно это совпадает с порядком расположения городов на схеме слева направо, от старта к финишу.
Как считать пути, которые обязательно проходят через определённый город?
Нужно отдельно посчитать число путей от старта до этого города и от этого города до финиша, а затем умножить полученные числа друг на друга.
Как считать пути, которые не должны проходить через определённый город?
Есть два способа: вычесть из общего числа путей число путей, проходящих через этот город, либо временно исключить этот город из схемы (не использовать связанные с ним дороги) и пересчитать пути заново.
Можно ли двигаться по дороге в обратном направлении, если это короче?
Нет, в задании 9 все дороги односторонние, движение возможно только в направлении, указанном стрелкой на схеме.
Как проверить правильность полученного ответа?
Можно пересчитать число путей в обратном порядке — от конечного города к начальному, присвоив финишной вершине значение 1 и суммируя по исходящим (в обратную сторону) дорогам. Совпадение результатов подтверждает верность расчёта.
Почему в похожих на вид схемах может получаться разное количество путей?
Потому что итоговый результат зависит не от набора городов, а от конкретного расположения стрелок между ними — даже небольшое изменение в направлении одной дороги меняет весь расчёт.