ОГЭ · Информатика · Графы, схемы и анализ таблиц (задания 4, 9, 14)
Задание 9: подсчёт путей в схеме
В задании 9 движение по дорогам одностороннее. Считать пути перебором долго и легко сбиться, поэтому используют правило суммирования: число путей в вершину равно сумме чисел путей во все вершины, откуда в неё ведут стрелки.
- ⚠Пытаются перечислить все пути вручную и сбиваются со счёта
- ⚠Учитывают дороги в обе стороны, хотя движение одностороннее
- ⚠Забывают, что число путей в вершину — это сумма путей во все предшествующие ей вершины
Ориентированные графы
Определение
Ориентированный граф — граф, у которого рёбра имеют направление (стрелки). Двигаться можно только по стрелке
Определение
Правило суммирования путей — число путей в вершину = сумма чисел путей во все вершины, из которых в неё ведёт прямая стрелка
Динамический подсчёт путей
• У начальной вершины напиши число путей 1.
• Обрабатывай вершины по порядку (так, чтобы все предшественники уже посчитаны).
• Число путей вершины = сумма чисел вершин-предшественников.
• Ответ — число путей у конечной вершины.
Почему работает правило суммирования
Любой путь из A в некоторую вершину X заканчивается последним ребром, ведущим в X. Это ребро выходит из какой-то вершины-предшественника. Значит все пути в X естественно делятся на группы по тому, откуда сделан последний шаг, а внутри каждой группы путей ровно столько, сколько путей ведёт в соответствующего предшественника. Отсюда и получается сложение. У стартовой вершины путь ровно один — пустой путь «остаться на месте», поэтому ей приписывают 1, а не 0. Важен порядок обработки: считать вершину можно только тогда, когда все её предшественники уже посчитаны. На практике вершины удобно расставить слева направо так, чтобы все стрелки шли вперёд, и идти по ним по очереди. Если какая-то вершина не имеет входящих стрелок и при этом не является стартом, в неё ноль путей, и она не даёт вклада никуда дальше.
Ловушка: считай пути только по направлению стрелок. Если дорога A→B, обратно из B в A идти нельзя.
| Считать в обе стороны | движение одностороннее: запись A→B не разрешает ехать из B в A |
|---|---|
| Считать вершину раньше времени | если у вершины два предшественника, а посчитан только один, число выйдет заниженным |
| Перечислять пути вручную | в графе из семи вершин путей бывает больше двадцати; сбиться почти неизбежно |
| Забыть про «прямое» ребро | стрелка вроде C→F в обход всех промежуточных вершин легко теряется, а она даёт отдельное слагаемое |
Разбор примера
Разбор с подсчётом по каждой вершине
Дороги с односторонним движением: A→B, A→C, B→C, B→D, C→D, C→E, D→E, D→F, E→F. Сколько существует различных путей из города A в город F?
Показать решение по шагам
- 1. Стартовая вершина: A = 1.
- 2. В B ведёт только стрелка из A, значит B = 1.
- 3. В C ведут стрелки из A и из B: C = A + B = 1 + 1 = 2.
- 4. В D ведут стрелки из B и из C: D = B + C = 1 + 2 = 3.
- 5. В E ведут стрелки из C и из D: E = C + D = 2 + 3 = 5.
- 6. В F ведут стрелки из D и из E: F = D + E = 3 + 5 = 8.
- 7. Ответ: 8. Заметь, что числа пошли как 1, 1, 2, 3, 5, 8 — так и должно быть, потому что каждая следующая вершина суммирует две предыдущие.
Ответ: Ответ: 8
Разбор примера
Разбор, где порядок обработки решает всё
Дороги: A→B, A→C, B→D, B→E, C→D, C→E, D→F, E→F, C→F. Сколько путей из A в F?
Показать решение по шагам
- 1. A = 1. Из A выходят стрелки в B и C, поэтому B = 1 и C = 1.
- 2. В D ведут стрелки из B и C: D = 1 + 1 = 2.
- 3. В E ведут стрелки из B и C: E = 1 + 1 = 2.
- 4. В F ведут три стрелки: из D, из E и напрямую из C. Значит F = D + E + C = 2 + 2 + 1 = 5.
- 5. Ответ: 5. Если пропустить прямую стрелку C→F, получится 4 — это самая частая ошибка в таких схемах.
- 6. Полезная проверка: перечисли пути вручную — A→B→D→F, A→B→E→F, A→C→D→F, A→C→E→F, A→C→F. Ровно пять, всё сходится.
Ответ: Ответ: 5
Вопрос на проверку
В вершину X ведут стрелки из вершин P и Q. Известно, что в P ведёт 3 пути, а в Q — 4 пути. Сколько путей ведёт в X?
Ответить и проверить себя — после бесплатной регистрации.
Вопрос на проверку
Какое число путей приписывают стартовой вершине перед началом подсчёта?
Ответить и проверить себя — после бесплатной регистрации.
Перед подсчётом перерисуй схему, расположив вершины так, чтобы все стрелки шли слева направо. Тогда обрабатывать их можно просто по порядку и ни один предшественник не окажется недосчитанным. И обязательно проверь, что учтены все стрелки из условия: пересчитай их количество в списке и на своей схеме — числа должны совпасть.
Разбор примера
Задание 9: подсчёт путей по схеме дорог
На рисунке схема дорог, связывающих города A, B, C, D, E, F, G, H. Двигаться можно только по стрелкам: A→B, A→C, B→D, C→D, C→E, D→F, E→F, F→H, C→H. Сколько существует различных путей из A в H?
Показать решение по шагам
- 1. Приём один: идём по городам в порядке, когда все входящие стрелки уже посчитаны, и для каждого пишем число путей из A в него.
- 2. A = 1 (сам в себя, пустой путь). B: приходит только из A → 1. C: только из A → 1.
- 3. D: приходит из B и C → 1 + 1 = 2. E: только из C → 1.
- 4. F: приходит из D и E → 2 + 1 = 3.
- 5. H: приходит из F и из C → 3 + 1 = 4.
- 6. Ответ 4. Правило подсчёта: число путей в город равно сумме чисел во всех городах, откуда в него ведут стрелки. Считать можно только тогда, когда все такие города уже посчитаны, — поэтому порядок обработки решает всё.
Ответ: 4
Разбор примера
Задание 9: схема с двумя развилками
Стрелки: A→B, A→C, A→D, B→E, C→E, C→F, D→F, E→G, F→G. Сколько путей из A в G?
Показать решение по шагам
- 1. A = 1. B = 1 (из A). C = 1 (из A). D = 1 (из A).
- 2. E: приходит из B и C → 1 + 1 = 2.
- 3. F: приходит из C и D → 1 + 1 = 2.
- 4. G: приходит из E и F → 2 + 2 = 4.
- 5. Ответ 4. Обрати внимание: город C раздваивает свой единственный путь, отдавая единицу и в E, и в F, — число путей при этом не теряется и не удваивается, оно просто распределяется.
- 6. Самопроверка: сумма чисел во всех «конечных» городах (куда стрелки только входят) обязана совпасть с ответом, если конечный город один.
Ответ: 4
Разбор примера
Задание 9: город, который нельзя считать сразу
Стрелки: A→B, A→C, B→C, B→D, C→D, D→E, C→E. Сколько путей из A в E?
Показать решение по шагам
- 1. Порядок важен: C нельзя считать раньше B, потому что в C ведёт стрелка из B.
- 2. A = 1. B = 1 (из A).
- 3. C: приходит из A и B → 1 + 1 = 2.
- 4. D: приходит из B и C → 1 + 2 = 3.
- 5. E: приходит из D и C → 3 + 2 = 5.
- 6. Ответ 5. Главная ошибка линии 9 — посчитать город, у которого ещё не все входящие стрелки обработаны: если бы C взяли равным 1 (только из A), в ответе вышло бы 3 вместо 5.
- 7. Практический совет: перед подсчётом выпиши города в таком порядке, чтобы у каждого все «поставщики» стояли левее.
Ответ: 5
Разбор примера
Файл-ответ count_paths.py (формат задания 16): программа подсчёта путей
Соберите программу, которая по списку стрелок считает число путей из первого города в последний. Файл сохраняется как countpaths.py.
Показать решение по шагам
- 1. Замысел: тот же приём, что вручную — обходим города в правильном порядке и суммируем. Порядок задаём сами, перечислив города так, чтобы каждый шёл после всех, откуда в него ведут стрелки.
- 2. Код целиком (Python):
arrows = [('A','B'), ('A','C'), ('A','D'), ('B','E'), ('C','E'), ('C','F'), ('D','F'), ('E','G'), ('F','G')]/order = ['A','B','C','D','E','F','G']/ways = {v: 0 for v in order}/ways['A'] = 1/for v in order:/for a, b in arrows:/if a == v:/ways[b] = ways[b] + ways[v]/print(ways['G']). - 3. Трассировка: после A — ways[B] = ways[C] = ways[D] = 1. После B — ways[E] = 1. После C — ways[E] = 2, ways[F] = 1. После D — ways[F] = 2. После E — ways[G] = 2. После F — ways[G] = 4. Печатается 4 — совпало со вторым разбором.
- 4. Что проверить перед сдачей: список
orderобязан быть правильным. Если поставить C раньше B, программа посчитает неверно — ровно так же, как ошибается человек. Это хорошая иллюстрация того, что в задании 16 эксперт проверяет алгоритм, а не синтаксис. - 5. Как сохранять: текстовый файл с расширением .py.
Ответ: countpaths.py: суммирование по порядку городов, печатает 4
ℹ️ Спецификация КИМ ОГЭ-2026 по информатике: «Решением каждого задания части 2 является отдельный файл, подготовленный в соответствующей программе (текстовом редакторе или электронной таблице)». Линия 14 — 3 балла и 30 минут, самое дорогое задание работы.
Задание №9 в формате экзамена
Ответить и проверить себя — после бесплатной регистрации.
Задание №9 в формате экзамена
Ответить и проверить себя — после бесплатной регистрации.
Задание №9 в формате экзамена
Ответить и проверить себя — после бесплатной регистрации.
Задание №9 в формате экзамена
Ответить и проверить себя — после бесплатной регистрации.
Задание №9 в формате экзамена
Ответить и проверить себя — после бесплатной регистрации.