Найти тему

Информатика ЕГЭ №2 — решение задач алгебры логики с помощью языка программирования Python

Оглавление

Данное задание в ЕГЭ по информатике включает в себя знания темы “Алгебра логики”. Для успешного решения необходимо хорошо знать логические операторы. Без этих знаний задание приобретает вид “иероглифов”. Так как неясно, что делать с этими “непонятными” символами.

Для начала необходимо повторить логические операции. В данном задании существует пять разновидностей логических знаков. Среди них дизъюнкция (логическое сложение), конъюнкция (логическое умножение), инверсия (логическое отрицание), импликация (логическое суждение) и эквиваленция (логическое равенство).

Логические операторы

У каждого логического оператора существует своя таблица истинности. Там показаны все возможные комбинации переменных и результата (после применения знака).

Дизъюнкция | Логическое сложение | Логическое ИЛИ

Обозначается знаком — V

Истина тогда, когда хоть одна из переменных истина.

Таблица истинности для дизъюнкции
Таблица истинности для дизъюнкции

Конъюнкция | Логическое умножение | Логическое И

Обозначается знаком — ^

Истина тогда, когда обе переменных истины.

Таблица истинности для конъюнкции
Таблица истинности для конъюнкции

Инверсия | Логическое отрицание

Обозначается знаком — ¬

Меняет значение на противоположное.

Таблица истинности для инверсии
Таблица истинности для инверсии

Импликация

Обозначается знаком —

Ложно тогда, когда из единицы идёт ноль.

Таблица истинности для импликации
Таблица истинности для импликации

Эквиваленция | Логическое равенство

Обозначается знаком —

Истинно тогда, когда обе переменные одинаковые (равны).

Таблица истинности для эквиваленции
Таблица истинности для эквиваленции

Текущее задание ЕГЭ по информатике можно делать разнообразными способами. Можно посчитать его вручную, можно сделать его в Excel (или аналогичном редакторе электронных таблиц). Также можно составить программу на любом удобном языке программирования.

Исходя из вышесказанного есть два варианта решения: ручной расчёт, автоматизированный расчёт. Поскольку с 2021 года ЕГЭ по информатике проводится в компьютерной форме, то и логичнее будет использовать автоматизацию расчётов. Это сэкономит время на экзамене и понизит вероятность ошибки, по сравнению с ручным методом решения данной задачи.

Из автоматизированного метода решения выберем язык программированияPython. Он очень удобен при набросках, расчётах, да и в решении задач в целом. Теперь разберёмся на практике с решением задач.

Задача №1

Задание:

Дан фрагмент частично заполненной таблицы, необходимо определить, какому столбцу соответствует каждая из переменных: x, y, z (строки в таблице не повторяются).

Логическое выражение — (x ∨ y) → (z ≡ x)

Частично заполненная таблица
Частично заполненная таблица

Решение:

Хоть и таблица не заполнена это не страшно. Найдём все возможные комбинации для данного логического выражения. Для начала необходимо прописать функции для эквиваленции и импликации (можно также произвести преобразование к базовым логическим операторам).

Функции для импликации и эквиваленции
Функции для импликации и эквиваленции

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

Основной блок кода
Основной блок кода

Здесь содержится три цикла, которые перебирают все возможные комбинации для трёх переменных (x, y, z). Присутствует счётчик строки (необязательный компонент, просто для наглядности), сама результирующая функция и вывод на экран.

Вывод будет выглядеть следующим образом:

Результат перебора всех возможных значений
Результат перебора всех возможных значений

Выводит целых восемь строк, но нам для решения нужно лишь те, в которых результирующая функция равна нулю. Поэтому отбросим лишние строки, которые равны единице. Для этого применим условие. Также уберём счётчик строк (он не особо нам нужен).

Исправления основного блока кода
Исправления основного блока кода

Теперь вывод информации будет выглядеть несколько иначе:

Вывод программы
Вывод программы

Методом логического мышления определяем, смотря на таблицу, расположение переменных по столбцам. Понимаем, что первая строка в таблице, это вторая получившееся у нас. Следовательно, пропущено значение — единица. И первый столбец — X.

Дальше пробуем заполнить вторую строку в таблице. Смотрим на получившийся результат и понимаем, что наша первая строка не подходит, т.к. X уже определён, а Y и Z там равны единице. Следовательно, подходит наша третья строка под вторую в таблице.

После внимательного заполнения получаем ответ — XZY.

Задача №2

Задание:

Дан фрагмент частично заполненной таблицы, необходимо определить, какому столбцу соответствует каждая из переменных: x, y, w, z (строки в таблице не повторяются).

Логическое выражение — (x ≡ ( w ∨ y)) ∨ ((w→ z) ∧ (y → w))

Частично заполненная таблица
Частично заполненная таблица

Решение:

В данном задании на одну переменную больше, но это никак не повлияет на алгоритм решения. Делаем абсолютно аналогично. Создаём также функции для импликации и эквиваленции. А после уже пишем основной код и результирующую функцию.

Листинг программы
Листинг программы

Здесь уже четыре цикла (из-за количества переменных) и другая результирующая функция. Теперь посмотрим, что выведет программа.

Вывод программы
Вывод программы

Исходя из полученных данных и анализа таблицы, найдём пропущенные значения. В первом и в четвёртом столбцах таблицы есть две единицы, следовательно, там могут быть Y и W. От сюда следует, что в третьем столбце будет Z (потому что в полученном фрагменте у X одни нули). Оставшийся столбец — X.

Итого наша таблица приобретает следующий вид (старайтесь фиксировать найденные фрагменты):

Добавление записей в таблицу
Добавление записей в таблицу

Тут видим, что третью и четвёртую строку из нашего фрагмента определили как первую и третью в таблице. Дальше очень внимательно смотрим на фрагмент и на новую таблицу и понимаем, что подходит первая строка. После получаем ответ — YXZW. Главное — найти соответствие, чтобы "пазл" совпал.

Понравилась статья? Хочешь разбираться в информатике, программировании и уметь работать в разных программах? Тогда ставь лайк, подпишись на канал и поделись статьей с друзьями! Остались или появились вопросы — спроси в комментариях!