logo
0
читателей
Информатика с Натальей Массальской  Трюки и читы информатики от преподавателя и программиста. Excel, Python, дискретная математика, ЕГЭ, ОГЭ. Информатика — это круто!
О проекте Просмотр Уровни подписки Фильтры Статистика Обновления проекта Контакты Поделиться Метки
Все проекты
О проекте

ЧТО ЗДЕСЬ?

Здесь я выкладываю общедоступные материалы по информатике и программированию. Вы можете смотреть и читать их совершенно свободно. Без рекламы и прочих уловок. Весь опыт нескольких десятилетий моей работы.
Если вы оформите подписку, с вашей карты будет ежемесячно списываться выбранная сумма. Все материалы здесь открыты для чтения и просмотра. Подписка не даст вам никаких привилегий, кроме содействия в развитии и моей большой благодарности 💗 Выберите посильную для себя степень двойки. Это поможет мне продолжать и развивать проект.

⭐ КТО Я?

Прежде я работала программистом «широкого профиля» в НПО «Энергомаш», затем много лет разрабатывала веб-сайты. Была выпускающим редактором газеты «Компьютерная Россия». Естественно, готовила к ЕГЭ — со времени его введения. Преподавала на кафедре прикладной и вычислительной математики в МАИ, на курсах дополнительного образования, вела занятия по компьютерной грамотности для специалистов из разных областей. Кое-кто из моих бывших студентов сейчас руководит отделами и собственными софтверными компаниями.
Сейчас я преподаю информатику в «Химкинском лицее». Под моим началом каждый год постигает азы IT примерно 250 человек в 8-11 классах. Старшие — в профильных группах.

⭐ БУДЕТ ИНТЕРЕСНО?

Непременно! И полезно, особенно если вы:
🔹 Школьник, который интересуется информатикой и программированием или собирается сдавать ОГЭ-ЕГЭ.
🔹 Студент, которому грозит курс программирования на Python или просто нужно посчитать курсовую / диплом.
🔹 Специалист в любой области, если вы не очень уверенный пользователь: Excel сейчас нужен буквально везде, а «по-быстрому вычислить» что угодно можно в Python, и некоторые приёмы здорово облегчают жизнь.
🔹 Родитель школьника, которому интересно, над чем это ребёнок часами зависает после уроков информатики.
____________________
Вы также можете подписаться на мои каналы «Информатика с Натальей Массальской»:
💥 в Telegram: IT и жизнь, компьютерные лайфхаки, инфобез, мемы;
💥 на Rutube: учебные видео.

Публикации, доступные бесплатно
Уровни подписки
Единоразовый платёж

💗 Спасибо за вашу поддержку! Всё в этом проекте публикуется свободно, но ваша помощь обеспечит появление новых материалов.

Помочь проекту
Два в седьмой 128₽ месяц
Доступны сообщения

💗 Спасибо за вашу поддержку на постоянной основе! Этот уровень подписки (как и прочие) не даёт вам никаких привилегий. Все материалы этого проекта публикуются свободно.

Оформить подписку
Два в восьмой 256₽ месяц
Доступны сообщения

💗 Спасибо за вашу поддержку на постоянной основе! Этот уровень подписки (как и прочие) не даёт вам никаких привилегий. Все материалы этого проекта публикуются свободно.

Оформить подписку
Два в девятой 512₽ месяц
Доступны сообщения

💗 Большое спасибо за вашу поддержку на постоянной основе! Этот уровень подписки (как и прочие) не даёт вам никаких привилегий. Все материалы этого проекта публикуются свободно.

Оформить подписку
Два в десятой 1 024₽ месяц
Доступны сообщения

💗 Большое спасибо за вашу поддержку на постоянной основе! Этот уровень подписки (как и прочие) не даёт вам никаких привилегий. Все материалы этого проекта публикуются свободно.

Оформить подписку
Два в одиннадцатой 2 048₽ месяц
Доступны сообщения

💗 Огромное спасибо за вашу поддержку на постоянной основе! Этот уровень подписки (как и прочие) не даёт вам никаких привилегий. Все материалы этого проекта публикуются свободно.

Оформить подписку
Два в двенадцатой 4 096₽ месяц
Доступны сообщения

💗 Огромное спасибо за вашу поддержку на постоянной основе! Этот уровень подписки (как и прочие) не даёт вам никаких привилегий. Все материалы этого проекта публикуются свободно.

Оформить подписку
Два в тринадцатой 8 192₽ месяц
Доступны сообщения

💗 Огромное спасибо за вашу поддержку на постоянной основе и серьёзный вклад в развитие проекта!

Этот уровень подписки (как и прочие) не даёт вам никаких привилегий. Все материалы этого проекта публикуются свободно.

Оформить подписку
Два в четырнадцатой 16 384₽ месяц
Доступны сообщения

💗 Огромное спасибо за вашу поддержку на постоянной основе и весомый вклад в развитие проекта!

Этот уровень подписки (как и прочие) не даёт вам никаких привилегий. Все материалы этого проекта публикуются свободно.

Оформить подписку
Два в пятнадцатой 32 768₽ месяц
Доступны сообщения

💗 Огромное спасибо за вашу поддержку на постоянной основе и исключительный вклад в развитие проекта!

Этот уровень подписки (как и прочие) не даёт вам никаких привилегий. Все материалы этого проекта публикуются свободно.

Оформить подписку
Фильтры
Статистика
Обновления проекта
Поделиться
Читать: 6+ мин
logo Информатика с Натальей Массальской

Количество разных путей между вершинами графа

Задача ‎№‏ ‎9 ‎ОГЭ ‎по ‎информатике

В ‎этой‏ ‎задаче ‎нам‏ ‎дан‏ ‎направленный ‎ненагруженный ‎граф.‏ ‎Направленный ‎граф‏ ‎ещё ‎называется ‎ориентированным ‎или‏ ‎орграфом. А‏ ‎ненагруженный ‎или‏ ‎невзвешенный ‎—‏ ‎значит, ‎что ‎его ‎связям ‎не‏ ‎назначены‏ ‎числа ‎—‏ ‎веса.

От ‎нас‏ ‎требуется ‎подсчитать ‎количество ‎всевозможных ‎путей‏ ‎между‏ ‎заданными‏ ‎вершинами ‎этого‏ ‎графа. ‎Иногда‏ ‎дают ‎ещё‏ ‎дополнительные‏ ‎условия: ‎нам‏ ‎либо ‎нельзя ‎проходить ‎по ‎пути‏ ‎через ‎заданную‏ ‎вершину,‏ ‎либо ‎мы ‎обязаны‏ ‎пройти ‎через‏ ‎неё.

Граф ‎может ‎выглядеть, ‎например,‏ ‎так:

Для‏ ‎решения ‎будем‏ ‎использовать ‎приём,‏ ‎который ‎называется ‎динамическим ‎программированием. На ‎самом‏ ‎деле,‏ ‎он ‎не‏ ‎имеет ‎прямого‏ ‎отношения ‎к ‎программированию ‎— ‎это‏ ‎математический‏ ‎метод.

Суть‏ ‎динамического ‎программирования‏ ‎в ‎том,‏ ‎что ‎для‏ ‎вычисления‏ ‎значений ‎на‏ ‎каждом ‎следующем ‎этапе ‎мы ‎используем‏ ‎значения, ‎сохранённые‏ ‎на‏ ‎предыдущем.

Например, ‎для ‎вычисления‏ ‎факториала ‎числа‏ ‎n ‎этим ‎методом ‎мы‏ ‎могли‏ ‎бы ‎заполнить‏ ‎таблицу:

1

Напомню, ‎что‏ ‎факториал ‎n! ‎= ‎1 ‎*‏ ‎2‏ ‎* ‎3‏ ‎*… ‎*‏ ‎n. ‎Видно, ‎что ‎для ‎получения‏ ‎каждого‏ ‎следующего‏ ‎результата ‎мы‏ ‎умножаем ‎текущее‏ ‎n ‎(сиреневое)‏ ‎на‏ ‎результат ‎n!‏ ‎предыдущего ‎шага ‎(это ‎показано ‎синими‏ ‎стрелками).

Давайте ‎посмотрим,‏ ‎как‏ ‎мы ‎можем ‎использовать‏ ‎динамическое ‎программирование‏ ‎для ‎поиска ‎количества ‎путей‏ ‎в‏ ‎графе. ‎Найдём‏ ‎количество ‎разных‏ ‎путей ‎между ‎вершинами ‎А ‎и‏ ‎F.

1) В‏ ‎начальную ‎вершину‏ ‎А ‎мы‏ ‎можем ‎попасть ‎единственным ‎путём: ‎просто‏ ‎оказаться‏ ‎там.‏ ‎Значит ‎в‏ ‎А ‎ведёт‏ ‎один ‎возможный‏ ‎путь.‏ ‎Отметим ‎его‏ ‎возле ‎начальной ‎вершины.

2) Теперь ‎на ‎каждой‏ ‎связи, ‎выходящей‏ ‎из‏ ‎А, ‎запишем ‎число,‏ ‎равное ‎сумме‏ ‎чисел, ‎входящих ‎в ‎А‏ ‎(то‏ ‎есть ‎везде‏ ‎единицы).

3) То ‎же‏ ‎самое ‎повторим ‎для ‎всех ‎следующих‏ ‎вершин:‏ ‎на ‎связях,‏ ‎выходящих ‎из‏ ‎вершины, ‎будем ‎писать ‎число, ‎равное‏ ‎сумме‏ ‎чисел‏ ‎на ‎связях,‏ ‎входящих ‎в‏ ‎эту ‎вершину.

Например, в‏ ‎D‏ ‎входит ‎одна‏ ‎единица, ‎значит ‎у ‎связи ‎D-E‏ ‎ставим ‎тоже‏ ‎единицу.‏ ‎А ‎вот ‎в‏ ‎Е ‎теперь‏ ‎входят ‎две ‎связи ‎с‏ ‎единицами,‏ ‎значит ‎на‏ ‎связях ‎Е-G‏ ‎и ‎E-H ‎поставим ‎двойки.

И ‎так‏ ‎до‏ ‎конца. ‎Главное:‏ ‎для ‎каждой‏ ‎вершины ‎нам ‎уже ‎должны ‎быть‏ ‎известны‏ ‎числа‏ ‎входящих ‎в‏ ‎неё ‎связей.

4) А‏ ‎теперь ‎самое‏ ‎вкусное.‏ ‎Посчитаем ‎сумму‏ ‎чисел ‎всех ‎связей, ‎входящих ‎в‏ ‎последнюю ‎вершину‏ ‎F‏ ‎и ‎— ‎вуаля!‏ ‎Мы ‎получили‏ ‎готовый ‎ответ:


ДОПОЛНИТЕЛЬНЫЕ ‎УСЛОВИЯ

Пусть ‎теперь‏ ‎в‏ ‎этой ‎задаче‏ ‎нам ‎нельзя‏ ‎проходить через ‎вершину ‎D. ‎Тогда ‎в‏ ‎начало‏ ‎добавим ‎ещё‏ ‎один ‎этап:‏ ‎нужно ‎вычеркнуть ‎все ‎участки ‎маршрута,‏ ‎проходящие‏ ‎через‏ ‎D.

В ‎нашем‏ ‎случае ‎пропадут‏ ‎связи ‎А-D,‏ ‎D-E‏ ‎и ‎D-G.‏ ‎Все ‎остальные ‎останутся ‎«рабочими».

Осталось ‎расставить‏ ‎числа, ‎как‏ ‎мы‏ ‎это ‎делали ‎раньше:

Видите?‏ ‎Теперь ‎из‏ ‎Е ‎выходит ‎сумма ‎1,‏ ‎потому‏ ‎что ‎связь‏ ‎D-E ‎нерабочая.‏ ‎А ‎в ‎G ‎суммируются ‎три‏ ‎связи,‏ ‎а ‎не‏ ‎четыре. ‎И‏ ‎результат ‎получился ‎5.

Для ‎задач ‎с‏ ‎дополнительными‏ ‎условиями‏ ‎результат ‎всегда‏ ‎получится ‎меньше,‏ ‎чем ‎для‏ ‎простой‏ ‎задачи ‎на‏ ‎том ‎же ‎графе.


Теперь ‎пусть ‎мы,‏ ‎наоборот, ‎обязаны‏ ‎пройти через‏ ‎вершину ‎D. ‎Значит,‏ ‎нам ‎нужно‏ ‎вычеркнуть ‎все ‎связи, ‎пройдя‏ ‎через‏ ‎которые ‎мы‏ ‎в ‎D‏ ‎не ‎попадаем.

Например, ‎A-C ‎и ‎следующая‏ ‎C-G:‏ ‎из ‎вершины‏ ‎С ‎нам‏ ‎уже ‎никак ‎не ‎вернуться ‎в‏ ‎D.‏ ‎То‏ ‎же ‎для‏ ‎A-B ‎и‏ ‎затем ‎B-F.

A-E‏ ‎вычёркиваем,‏ ‎но ‎сама‏ ‎вершина ‎Е ‎будет ‎работать, ‎ведь‏ ‎мы ‎можем‏ ‎попасть‏ ‎в ‎неё ‎из‏ ‎D ‎и‏ ‎пойти ‎дальше ‎— ‎в‏ ‎Н‏ ‎и ‎G.

1

Расставим‏ ‎числа-суммы ‎как‏ ‎раньше.

Получилось ‎ещё ‎меньше ‎— ‎4. Логично:‏ ‎чем‏ ‎меньше ‎связей‏ ‎участвует ‎в‏ ‎расчёте, ‎тем ‎меньшим ‎количеством ‎разных‏ ‎путей‏ ‎мы‏ ‎можем ‎добраться‏ ‎из ‎начальной‏ ‎вершины ‎до‏ ‎конечной.

Теперь‏ ‎вы ‎точно‏ ‎знаете, ‎как ‎решать ‎задачу ‎№‏ ‎9 ‎из‏ ‎ОГЭ‏ ‎по ‎информатике. ‎Осталось‏ ‎потренироваться!


Подарить подписку

Будет создан код, который позволит адресату получить бесплатный для него доступ на определённый уровень подписки.

Оплата за этого пользователя будет списываться с вашей карты вплоть до отмены подписки. Код может быть показан на экране или отправлен по почте вместе с инструкцией.

Будет создан код, который позволит адресату получить сумму на баланс.

Разово будет списана указанная сумма и зачислена на баланс пользователя, воспользовавшегося данным промокодом.

Добавить карту
0/2048