🎓 Работа с логическими формулами является базовым навыком как для ЕГЭ по информатике, так и для любого программиста. Задание № 2 ЕГЭ позволяет эффективно отработать этот навык на практике.
❗ПЕРЕД ПРОЧТЕНИЕМ НАСТОЯТЕЛЬНО РЕКОМЕНДУЮ ОЗНАКОМИТЬСЯ С ПЕРВОЙ ЧАСТЬЮ МАТЕРИАЛА ⤵
Если вы уже хорошо знакомы с этим материалом или уверенно разбираетесь в логических выражениях, то можете приступить к разбору задания №2 ЕГЭ ⤵
📥 Условие задачи →
→ Решение будет состоять из 5 основных этапов:
🚨 LET'S GO →
I ЭТАП
Работа с условием задачи
📍Для успешного решения важно внимательно изучить условие, перечитать его и зафиксировать все ключевые моменты →
→ Жёлтым маркером выделены важные моменты, которые понадобятся для дальнейшего решения задачи:
БОЛЕЕ ПОДРОБНО О КЛЮЧЕВЫХ МОМЕНТАХ ИЗ УСЛОВИЯ ЗАДАЧИ:
- Какая логическая функция указана в условии задачи?
→ F = (¬x ∧ y ∧ z) ∨ (¬x ∧ ¬y ∧ z) ∨ (¬x ∧ ¬y ∧ ¬z)
- Чему равна функция (F) по таблице из условия?
→ Ответ: 1. Так как в таблице истинности (F) во всех трёх стоит значение 1
- Что необходимо найти?
→ В каком порядке будут расположены переменные (x, y, z) в исходной таблице истинности
- В каком виде нужно записать ответ?
→ В ответе напишите буквы x, y, z в том порядке, в котором идут соответствующие им столбцы
✅ Работа с условием задачи завершена. Переходим к следующему этапу →
II ЭТАП
Построение таблицы истинности в Python
📍Построение таблицы истинности можно выполнить без использования Python. Например, в Paint, Excel или на листке бумаги. В данном случае, Python эффективнее справляется с поставленной задачей.
→ Прежде чем построить таблицу истинности, попробуем ответить на несколько важных вопросов:
- Зачем строить таблицу истинности в Python?
— Таблица истинности позволяет получить наборы значений для переменных (x, y, z)
- Зачем нужны наборы значений для переменных?
— Сопоставив получившиеся наборы в Python с наборами из таблицы истинности в условии, можно определить в каком порядке расположены переменные ⤵
Как построить таблицу истинности в Python?
Пошаговый алгоритм ⤵
1. Определить количество переменных
Из условия задачи следует, что в ней используются три переменные: x, y и z.
→ Когда количество переменных известно, можно добавить команду print('x y z') в код программы. Данная команда нужна для удобства работы с таблицей истинности, чтобы в консоли (IDLE, PyCharm CE) были показаны названия всех столбцов ⤵
2. Запустить столько циклов (for), сколько переменных в условии
В данном примере 3 переменные (x, y, z) ⇒ Необходимо запустить 3 цикла (for)
→ Каждая переменная (x, y, z) может принимать только два значения: 1 и 0. Поэтому необходимо использовать для каждой переменной отдельный цикл (for) с диапазоном значений от 0 до 2, чтобы перебрать эти значения (0, 1) ⤵
❕Циклы (for) должны быть вложенными - то есть один внутри другого
✂ Вместо конструкции range(0, 2) можно использовать список [0, 1]. Запись получается чуть короче, смысл остаётся прежним ⤵
3. Вывод текущих значений переменных на экран
После всех циклов for необходимо записать функцию print()
→ В функции print() необходимо указать все переменные, которые используются при построении таблицы ⤵
🔥Отлично! Наборы значений ⇪ для трёх переменных готовы!
📍На что стоит обратить внимание:
- Дополнительная функция print() для удобства отображения
- Вместо функции range(0, 2) можно использовать список [0, 1]
- КОЛИЧЕСТВО ЦИКЛОВ FOR = КОЛИЧЕСТВУ ПЕРЕМЕННЫХ
✅ Наборы возможных значений для трёх переменных получены. Переходим к следующему этапу →
III ЭТАП
Запись функции F на язык Python
На данном этапе требуется реализовать функцию (F) в программном коде. Для этого исходную логическую формулу ↓ следует аккуратно перевести в соответствующее выражение на Python →
→ Чтобы правильно записать формулу необходимо каждый логический оператор перевести на язык Python ⤵
→ Внимательно смотрим на исходную формулу (F) и определяем какие операторы нужно взять:
- ¬ - инверсия (отрицание)
- V - дизъюнкция (логическое сложение)
- Ʌ - конъюнкция (логическое умножение)
→ Теперь смотрим на таблицу для преобразования логических выражений ⤵
→ Переписываем функцию (F) на язык Python и добавляем в исходный код ⤵
✅ Отлично! Таблица истинности для функции (F) построена!
📍На что стоит обратить внимание:
- Функция print('x y z f') в начале программы
— В программе вводится новая переменная (f). Она используется для обозначения нового столбца в таблице истинности.
print('x y z') ⇢ print('x y z f')
- Внешние скобки для записи функции (f)
— Такие скобки нужны, чтобы оформить длинное выражение в несколько строк и сделать код более читаемым.
- Итоговая таблица истинности для функции (f)
— В результате выполнения программы на экране появится полностью сформированная таблица истинности логической функции (f).
- Таблица истинности построена. Что делать дальше?
— Важно выбрать те наборы переменных (x, y, z), которые будут задействованы для дальнейшего решения
IV ЭТАП
Фильтрация комбинаций
После получения таблицы истинности по функции (f) возникает вопрос:
«Как работать с таблицей истинности и какие комбинации переменных выбрать для дальнейшего решения?»
Для ответа на данный вопрос необходимо вернуться к I ЭТАПУ (Работа с условием задачи) и обратить внимание на данный пункт ⤵
📌 На основе этого пункта можно сделать следующий вывод:
ЗНАЧЕНИЯ, ЗАДАННЫЕ В ИСХОДНОЙ ТАБЛИЦЕ ИСТИННОСТИ, ДОЛЖНЫ БЫТЬ СОПОСТАВЛЕНЫ С ТАКИМИ ЖЕ ЗНАЧЕНИЯМИ В ТАБЛИЦЕ ИСТИННОСТИ, ПОСТРОЕННОЙ В PYTHON
- Другими словами:
Нужно отставить только те значения в Python, которые тоже равны 1, как и в условии задачи
- Как оставить только нужные значения в таблице истинности?
— Добавить в программу условие (if)
Для решения задачи необходимо отобрать только те комбинации, при которых функция (f) принимает значение 1 (True). Поэтому в код добавляется условие, проверяющее значение функции (f) →
→ Отлично ✊ Таблица истинности в Python успешно построена, а необходимые комбинации переменных (x, y, z) получены. Можно переходить к следующему этапу →
V ЭТАП
Работа с таблицами
На предыдущем этапе была построена таблица истинности по функции (f) в Python. Теперь необходимо сопоставить данные в обоих таблицах (из условия и из Python) →
❕Для работы с таблицами истинности можно использовать Excel (Р7 - офис) или Paint. Необходимо перенести данные из Python и условия в Excel (Paint). Перенести можно ручным способом, сделать скриншот или сочетанием клавиш Ctrl + C → Ctrl + V.
→ Для более комфортной работы с данными таблицы истинности будут представлены в таком виде ⤵
- TABLE FROM CONDITION - таблица истинности из условия
- TABLER FROM PYTHON - таблица истинности из Python
Прежде чем приступить к сравнению таблиц, необходимо ознакомится с данным материалом ⤵
📌 КЛЮЧЕВЫЕ ПРИНЦИПЫ, ИСПОЛЬЗУЕМЫЕ ПРИ СРАВНЕНИИ ТАБЛИЦ ИСТИННОСТИ:
- Поиск закономерностей
🔎 Необходимо тщательно проанализировать каждую таблицу истинности и выявить совпадения — это могут быть одинаковые значения в ячейках или одинаковые наборы значений для отдельной переменной
→ Для определения правильного порядка переменных необходимо анализировать как строки, так и столбцы в таблицах истинности ⤵
- Работа по строкам
Сравнение комбинаций переменных в строке из условия со строкой таблицы истинности, построенной в Python:
- Работа по столбам
Сравнение комбинаций переменных в столбце из условия со столбцом таблицы истинности, построенной в Python:
Теперь можно приступать к нахождению правильного ответа в данной задаче →
Определение верного порядка переменных
с помощью логических рассуждений и поиска закономерностей
Внимательно анализируем таблицу истинности, полученную в Python, и замечаем, что переменная (x) во всех строках (то есть во всём первом столбце) принимает значение 0 ⤵
→ Далее обращаемся к таблице истинности из условия и замечаем, что в ней присутствует столбец, где все значения также равны 0 ⤵
Делаем логический вывод:
→ Следовательно, данный столбец является переменной (х)
☑ Первая переменная найдена, двигаемся дальше →
И вновь внимательно смотрим на оставшиеся два столбика из таблицы истинности в Python. Замечаем, что переменная (z) принимает значение 0 1 1 ⤵
→ Далее обращаемся к таблице истинности из условия и замечаем, что в ней также присутствует столбец, со значениями равными 0 1 1 ⤵
Делаем логический вывод:
→ Следовательно, данный столбец является переменной (z)
☑ Вторая переменная найдена, двигаемся дальше →
И вновь внимательно смотрим на оставшийся столбика из таблицы истинности в Python. Замечаем, что переменная (y) принимает значение 0 0 1 →
→ Далее обращаемся к таблице истинности из условия и замечаем, что в ней также присутствует столбец, со значениями равными 0 1 1 ⤵
→ Следовательно, данный столбец является переменной (y)
- Альтернативный способ нахождения переменной (y):
2 из 3 переменных уже определены. Поэтому, методом исключения остаётся единственный незанятый столбец — z
Ура! 😎 Все переменные найдены!
📍На что стоит обратить внимание:
Для корректной записи ответа необходимо вновь вернуться к I ЭТАПУ (Работа с условием задачи) ⤵
- В каком виде нужно записать ответ?
→ В ответе напишите буквы x, y, z в том порядке, в котором идут соответствующие им столбцы
Следовательно →
Ответ: zxy
😉 Good job! Keep it up! Good luck!
→ ПРОДОЛЖЕНИЕ СЛЕДУЕТ ...