22 задание. Многопроцессорные системы
22 задание. Многопроцессорные системы Это задание посвящено анализу параллельных вычислительных процессов, определению их длительности, времени начала и окончания с использованием электронных таблиц (LibreOffice Calc) или языка программирования (Python). В задании дают файл с таблицей, где указан ID каждого процесса, его время (длительность) выполнения в миллисекундах и ID процессов-предшественников, от которых зависит данный процесс. Процессы могут выполняться одновременно, если для них уже завершены все зависимые процессы - поставщики данных. Требуется найти общее время выполнения всех процессов, время завершения конкретного процесса или количество процессов, завершившихся к определенному моменту времени. Когда процессов немного, можно и вручную посчитать. Но учитывая тот факт, что с каждым годом задания на ЕГЭ только усложняются (и не только в информатике), вряд ли такие дадут. Поэтому решаем с помощью электронных таблиц: Используются формулы с функцией МАКС и поиск данных (ВПР, о которой было рассказано в описании к 3-му заданию, или ПРЕДПРОСМОТР), чтобы рассчитать точное время старта и финиша каждого процесса. Полученные значения времени окончания часто сортируют по возрастанию, чтобы найти ответ на вопрос задачи (например, время завершения N-го процесса). Задание несложное, хоть и помещено среди последних заданий. Можно решать его и с помощью программирования, используя загрузку файла в программу, как в 17-м задании. И с теми, кто легко осваивает программы, можно решить и с помощью кода. Однако, на мой взгляд здесь легче решать прямо в таблице. 23 задание. Оператор присваивания и ветвления. Перебор вариантов, построение дерева Вручную это задание можно сделать только при малых количествах переборов. Вероятнее всего будут задания, которые вручную не решить. Поэтому это задание решаем в Питоне, используя динамическое программирование и рекурсивный перебор вариантов. Суть задания в том, что дан учебный исполнитель, который умеет выполнять определенные команды (например, «прибавить 1», «умножить на 2»), требуется узнать, сколько есть разных путей (программ), чтобы превратить стартовое число в целевое. При этом есть определенные условия. Основные типы условий: 1. Обязательные точки, то есть траектория вычислений должна обязательно проходить через одно число (или несколько) 2. Запрещенные точки, когда, наоборот, траектория вычислений не должна содержать определенные числа. В последнее время стали добавлять дополнительные ограничения: условие на применение команды только при определенных свойствах текущего числа (например, четности) или запрет на повтор одинаковых ходов. В этом году это задание было усложнено командой замены цифр и условиями на разряды. Были добавлены условия с перестановкой или сравнением цифр числа (например, поменять местами десятки и единицы, если единицы больше десятков). Без этих условий задание получалось очень простым, что не оправдывало заявлений организаторов, что это задание повышенного уровня. Вот они его и усложнили. (Ещё бы и баллов бы давали за повышенный уровень побольше. Но увы!) Задачи этого типа проще и быстрее всего решать на языке Python с помощью функции. Раньше при подготовке к ЕГЭ в этом задании достаточно было рассмотреть несколько задач. Теперь придется разбираться с условиями.