решай.ai · шпаргалка

Задание 9: Анализирование информации, представленной в виде схем

ОГЭ Информатика

Как выглядит

Типичная формулировка: «На рисунке — схема дорог, связывающих города А, Б, В, ... По каждой дороге можно двигаться только в одном направлении, указанном стрелкой. Сколько существует различных путей из города А в город К (Л)?»

Возможны усложнения: спрашивают число путей, проходящих через определённый город, или путей, не проходящих через него. Задание оценивается в 1 балл, требует только числового ответа (без развёрнутого решения), но ошибка в подсчёте хотя бы на одном участке обычно ведёт к неверному итоговому числу.

Что нужно знать

  • Граф — совокупность вершин (городов) и рёбер (дорог) между ними.
  • Ориентированный граф — граф, в котором рёбра имеют направление (можно двигаться только по стрелке, в обратную сторону — нельзя).
  • Путь из вершины AA в вершину BB — последовательность рёбер, ведущая от AA к BB по направлению стрелок, без повторения вершин (циклы в схемах ОГЭ обычно не встречаются).
  • Правило суммы: если в вершину XX можно попасть только из вершин P1,P2,…,PkP_1, P_2, \dots, P_k, то количество путей до XX из начальной точки равно сумме количеств путей до каждой из этих вершин: N(X)=N(P1)+N(P2)+⋯+N(Pk)N(X) = N(P_1) + N(P_2) + \dots + N(P_k)
  • Начальной вершине присваивается значение N(A)=1N(A) = 1 (существует ровно один "путь" — остаться на месте / начать движение).
  • Если в вершину нет входящих рёбер (кроме старта), она недостижима, и N=0N = 0.
  • Вершины нужно обрабатывать в порядке топологической сортировки — то есть только после того, как посчитаны значения для всех вершин, из которых в неё ведут стрелки.
  • Для подсчёта путей, проходящих через определённый пункт CC, используется умножение: число путей из AA в BB через CC равно произведению числа путей из AA в CC и числа путей из CC в BB: N(A→B через C)=N(A→C)⋅N(C→B)N(A \to B \text{ через } C) = N(A \to C) \cdot N(C \to B)
  • Число путей, не проходящих через CC, находится как разность общего числа путей и числа путей, проходящих через CC: N(A→B мимо C)=N(A→B)−N(A→B через C)N(A \to B \text{ мимо } C) = N(A \to B) - N(A \to B \text{ через } C)

Алгоритм

  1. Внимательно рассмотреть схему, выписать все вершины (города) и все рёбра со стрелками направления.
  2. Определить стартовую и конечную вершину задачи.
  3. Присвоить стартовой вершине число путей, равное 1.
  4. Определить порядок обработки остальных вершин: вершина обрабатывается только тогда, когда обработаны все вершины, из которых в неё есть стрелка (топологический порядок, обычно совпадает с порядком "слева направо" на схеме).
  5. Для каждой вершины найти все входящие в неё стрелки, определить вершины-источники, сложить их значения — это и есть число путей до текущей вершины.
  6. Дойти до конечной вершины и записать итоговое число — это ответ на вопрос "сколько всего путей". …

Ловушки

  • Пропуск одной из входящих стрелок. Самая частая ошибка — забыть, что в вершину ведёт не одна, а две или три дороги, и просуммировать не всё.
  • Нарушение порядка обработки вершин. Если посчитать значение вершины раньше, чем посчитаны значения всех её источников, результат окажется неверным (в сумму попадёт не всё, что нужно).
  • Путаница направления стрелки. Легко перепутать, куда идёт дорога — из А в Б или из Б в А. Перед расчётом стоит явно выписать список рёбер с указанием направления.
  • Учёт "обратного" движения. Поскольку дороги односторонние, нельзя использовать дорогу в обратном направлении, даже если визуально это выглядит как короткий путь.
  • Ошибка при задачах "через" или "мимо" пункта. Часто путают, что нужно умножать (путь через пункт), а что вычитать (путь мимо пункта). Нужно чётко разделять эти две ситуации. …
reshay.ai/oge/informatika/zadanie-9 — задачи с разборами и тренажёр

Полный гайд и задачи задания 9 →