Найти в Дзене
МОЙ РЕПЕТИТОР

Работа с логическими формулами в Python на примере задания №2 ЕГЭ (Часть 2)

🎓 Работа с логическими формулами является базовым навыком как для ЕГЭ по информатике, так и для любого программиста. Задание № 2 ЕГЭ позволяет эффективно отработать этот навык на практике. ❗ПЕРЕД ПРОЧТЕНИЕМ НАСТОЯТЕЛЬНО РЕКОМЕНДУЮ ОЗНАКОМИТЬСЯ С ПЕРВОЙ ЧАСТЬЮ МАТЕРИАЛА ⤵ Если вы уже хорошо знакомы с этим материалом или уверенно разбираетесь в логических выражениях, то можете приступить к разбору задания №2 ЕГЭ ⤵ 📥 Условие задачи → → Решение будет состоять из 5 основных этапов: 🚨 LET'S GO → Работа с условием задачи 📍Для успешного решения важно внимательно изучить условие, перечитать его и зафиксировать все ключевые моменты → → Жёлтым маркером выделены важные моменты, которые понадобятся для дальнейшего решения задачи: БОЛЕЕ ПОДРОБНО О КЛЮЧЕВЫХ МОМЕНТАХ ИЗ УСЛОВИЯ ЗАДАЧИ: → F = (¬x ∧ y ∧ z) ∨ (¬x ∧ ¬y ∧ z) ∨ (¬x ∧ ¬y ∧ ¬z) → Ответ: 1. Так как в таблице истинности (F) во всех трёх стоит значение 1 → В каком порядке будут расположены переменные (x, y, z) в исходной таблице истиннос
Оглавление

🎓 Работа с логическими формулами является базовым навыком как для ЕГЭ по информатике, так и для любого программиста. Задание № 2 ЕГЭ позволяет эффективно отработать этот навык на практике.

❗ПЕРЕД ПРОЧТЕНИЕМ НАСТОЯТЕЛЬНО РЕКОМЕНДУЮ ОЗНАКОМИТЬСЯ С ПЕРВОЙ ЧАСТЬЮ МАТЕРИАЛА ⤵

Если вы уже хорошо знакомы с этим материалом или уверенно разбираетесь в логических выражениях, то можете приступить к разбору задания №2 ЕГЭ ⤵

📥 Условие задачи →

Условие задачи ЕГЭ задание №2 Монотонные функции.
Условие задачи ЕГЭ задание №2 Монотонные функции.

→ Решение будет состоять из 5 основных этапов:

-3

🚨 LET'S GO →

I ЭТАП

Работа с условием задачи

📍Для успешного решения важно внимательно изучить условие, перечитать его и зафиксировать все ключевые моменты →

→ Жёлтым маркером выделены важные моменты, которые понадобятся для дальнейшего решения задачи:

Важные моменты в условии задачи.
Важные моменты в условии задачи.

БОЛЕЕ ПОДРОБНО О КЛЮЧЕВЫХ МОМЕНТАХ ИЗ УСЛОВИЯ ЗАДАЧИ:

  • Какая логическая функция указана в условии задачи?

F = (¬x ∧ y ∧ z) ∨ (¬x ∧ ¬y ∧ z) ∨ (¬x ∧ ¬y ∧ ¬z)

-5

  • Чему равна функция (F) по таблице из условия?

→ Ответ: 1. Так как в таблице истинности (F) во всех трёх стоит значение 1

-6

  • Что необходимо найти?

→ В каком порядке будут расположены переменные (x, y, z) в исходной таблице истинности

  • В каком виде нужно записать ответ?

→ В ответе напишите буквы x, y, z в том порядке, в котором идут соответствующие им столбцы

Работа с условием задачи завершена. Переходим к следующему этапу →

II ЭТАП

Построение таблицы истинности в Python

📍Построение таблицы истинности можно выполнить без использования Python. Например, в Paint, Excel или на листке бумаги. В данном случае, Python эффективнее справляется с поставленной задачей.

-8

→ Прежде чем построить таблицу истинности, попробуем ответить на несколько важных вопросов:

  • Зачем строить таблицу истинности в Python?

— Таблица истинности позволяет получить наборы значений для переменных (x, y, z)

  • Зачем нужны наборы значений для переменных?

— Сопоставив получившиеся наборы в Python с наборами из таблицы истинности в условии, можно определить в каком порядке расположены переменные

-9

Как построить таблицу истинности в Python?

Пошаговый алгоритм ⤵

1. Определить количество переменных

Из условия задачи следует, что в ней используются три переменные: x, y и z.

→ Когда количество переменных известно, можно добавить команду print('x y z') в код программы. Данная команда нужна для удобства работы с таблицей истинности, чтобы в консоли (IDLE, PyCharm CE) были показаны названия всех столбцов

Дополнительная команда print() для удобства работы с таблицей истинности.
Дополнительная команда print() для удобства работы с таблицей истинности.

2. Запустить столько циклов (for), сколько переменных в условии

В данном примере 3 переменные (x, y, z) ⇒ Необходимо запустить 3 цикла (for)

→ Каждая переменная (x, y, z) может принимать только два значения: 1 и 0. Поэтому необходимо использовать для каждой переменной отдельный цикл (for) с диапазоном значений от 0 до 2, чтобы перебрать эти значения (0, 1)

❕Циклы (for) должны быть вложенными - то есть один внутри другого

Запуск трёх вложенных циклов для трёх переменных.
Запуск трёх вложенных циклов для трёх переменных.

✂ Вместо конструкции range(0, 2) можно использовать список [0, 1]. Запись получается чуть короче, смысл остаётся прежним

Запуск трёх вложенных циклов для трёх переменных. Вместо функции range() используются списки [0, 1].
Запуск трёх вложенных циклов для трёх переменных. Вместо функции range() используются списки [0, 1].

3. Вывод текущих значений переменных на экран

После всех циклов for необходимо записать функцию print()

→ В функции print() необходимо указать все переменные, которые используются при построении таблицы

Код программы на Python для создания таблицы истинности из трёх переменных (x, y, z). Вывод на экран всех возможных комбинаций.
Код программы на Python для создания таблицы истинности из трёх переменных (x, y, z). Вывод на экран всех возможных комбинаций.

🔥Отлично! Наборы значений для трёх переменных готовы!

📍На что стоит обратить внимание:

  • Дополнительная функция print() для удобства отображения
  • Вместо функции range(0, 2) можно использовать список [0, 1]
  • КОЛИЧЕСТВО ЦИКЛОВ FOR = КОЛИЧЕСТВУ ПЕРЕМЕННЫХ

✅ Наборы возможных значений для трёх переменных получены. Переходим к следующему этапу →

III ЭТАП

Запись функции F на язык Python

На данном этапе требуется реализовать функцию (F) в программном коде. Для этого исходную логическую формулу ↓ следует аккуратно перевести в соответствующее выражение на Python →

-14

→ Чтобы правильно записать формулу необходимо каждый логический оператор перевести на язык Python ⤵

-15

Внимательно смотрим на исходную формулу (F) и определяем какие операторы нужно взять:

-16
  • ¬ - инверсия (отрицание)
  • V - дизъюнкция (логическое сложение)
  • Ʌ - конъюнкция (логическое умножение)

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

-17

→ Переписываем функцию (F) на язык Python и добавляем в исходный код ⤵

Код программы для составления таблицы истинности исходной функции (F) на языке Python.
Код программы для составления таблицы истинности исходной функции (F) на языке Python.

✅ Отлично! Таблица истинности для функции (F) построена!

📍На что стоит обратить внимание:

  • Функция print('x y z f') в начале программы

В программе вводится новая переменная (f). Она используется для обозначения нового столбца в таблице истинности.

print('x y z') ⇢ print('x y z f')

-19
  • Внешние скобки для записи функции (f)

Такие скобки нужны, чтобы оформить длинное выражение в несколько строк и сделать код более читаемым.

-20
  • Итоговая таблица истинности для функции (f)

В результате выполнения программы на экране появится полностью сформированная таблица истинности логической функции (f).

-21

  • Таблица истинности построена. Что делать дальше?

— Важно выбрать те наборы переменных (x, y, z), которые будут задействованы для дальнейшего решения

IV ЭТАП

Фильтрация комбинаций

После получения таблицы истинности по функции (f) возникает вопрос:

«Как работать с таблицей истинности и какие комбинации переменных выбрать для дальнейшего решения?»

Для ответа на данный вопрос необходимо вернуться к I ЭТАПУ (Работа с условием задачи) и обратить внимание на данный пункт ⤵

Важный момент. I ЭТАП (Работа с условием задачи)
Важный момент. I ЭТАП (Работа с условием задачи)

📌 На основе этого пункта можно сделать следующий вывод:

ЗНАЧЕНИЯ, ЗАДАННЫЕ В ИСХОДНОЙ ТАБЛИЦЕ ИСТИННОСТИ, ДОЛЖНЫ БЫТЬ СОПОСТАВЛЕНЫ С ТАКИМИ ЖЕ ЗНАЧЕНИЯМИ В ТАБЛИЦЕ ИСТИННОСТИ, ПОСТРОЕННОЙ В PYTHON

  • Другими словами:
Нужно отставить только те значения в Python, которые тоже равны 1, как и в условии задачи

-23

  • Как оставить только нужные значения в таблице истинности?

— Добавить в программу условие (if)

Для решения задачи необходимо отобрать только те комбинации, при которых функция (f) принимает значение 1 (True). Поэтому в код добавляется условие, проверяющее значение функции (f) →

Код программы для получения таблицы истинности в Python, по заданной функции (f).
Код программы для получения таблицы истинности в Python, по заданной функции (f).

→ Отлично ✊ Таблица истинности в Python успешно построена, а необходимые комбинации переменных (x, y, z) получены. Можно переходить к следующему этапу →

V ЭТАП

Работа с таблицами

На предыдущем этапе была построена таблица истинности по функции (f) в Python. Теперь необходимо сопоставить данные в обоих таблицах (из условия и из Python)

❕Для работы с таблицами истинности можно использовать Excel (Р7 - офис) или Paint. Необходимо перенести данные из Python и условия в Excel (Paint). Перенести можно ручным способом, сделать скриншот или сочетанием клавиш Ctrl + C → Ctrl + V.

Пример использования офиса P7 для переноса данных из Python и условия.
Пример использования офиса P7 для переноса данных из Python и условия.

→ Для более комфортной работы с данными таблицы истинности будут представлены в таком виде ⤵

Таблица истинности из условия VS Таблица истинности из Python.
Таблица истинности из условия VS Таблица истинности из Python.
  • TABLE FROM CONDITION - таблица истинности из условия
  • TABLER FROM PYTHON - таблица истинности из Python

Прежде чем приступить к сравнению таблиц, необходимо ознакомится с данным материалом ⤵

📌 КЛЮЧЕВЫЕ ПРИНЦИПЫ, ИСПОЛЬЗУЕМЫЕ ПРИ СРАВНЕНИИ ТАБЛИЦ ИСТИННОСТИ:

  • Поиск закономерностей

🔎 Необходимо тщательно проанализировать каждую таблицу истинности и выявить совпадения — это могут быть одинаковые значения в ячейках или одинаковые наборы значений для отдельной переменной

→ Для определения правильного порядка переменных необходимо анализировать как строки, так и столбцы в таблицах истинности ⤵

  • Работа по строкам

Сравнение комбинаций переменных в строке из условия со строкой таблицы истинности, построенной в Python:

-27
  • Работа по столбам

Сравнение комбинаций переменных в столбце из условия со столбцом таблицы истинности, построенной в Python:

-28

Теперь можно приступать к нахождению правильного ответа в данной задаче

Определение верного порядка переменных

с помощью логических рассуждений и поиска закономерностей

Внимательно анализируем таблицу истинности, полученную в Python, и замечаем, что переменная (x) во всех строках (то есть во всём первом столбце) принимает значение 0 ⤵

Переменная (x) в первом столбце (Python) принимает значение 0.
Переменная (x) в первом столбце (Python) принимает значение 0.

→ Далее обращаемся к таблице истинности из условия и замечаем, что в ней присутствует столбец, где все значения также равны 0 ⤵

Второй столбец (Условие) принимает во всех строках значение 0.
Второй столбец (Условие) принимает во всех строках значение 0.

Делаем логический вывод:

→ Следовательно, данный столбец является переменной (х)

-31

☑ Первая переменная найдена, двигаемся дальше →

И вновь внимательно смотрим на оставшиеся два столбика из таблицы истинности в Python. Замечаем, что переменная (z) принимает значение 0 1 1 ⤵

-32

→ Далее обращаемся к таблице истинности из условия и замечаем, что в ней также присутствует столбец, со значениями равными 0 1 1 ⤵

-33

Делаем логический вывод:

→ Следовательно, данный столбец является переменной (z)

-34

☑ Вторая переменная найдена, двигаемся дальше →

И вновь внимательно смотрим на оставшийся столбика из таблицы истинности в Python. Замечаем, что переменная (y) принимает значение 0 0 1 →

→ Далее обращаемся к таблице истинности из условия и замечаем, что в ней также присутствует столбец, со значениями равными 0 1 1 ⤵

→ Следовательно, данный столбец является переменной (y)

-35
  • Альтернативный способ нахождения переменной (y):

2 из 3 переменных уже определены. Поэтому, методом исключения остаётся единственный незанятый столбец — z

Ура! 😎 Все переменные найдены!

-36

📍На что стоит обратить внимание:

Для корректной записи ответа необходимо вновь вернуться к I ЭТАПУ (Работа с условием задачи)

  • В каком виде нужно записать ответ?

→ В ответе напишите буквы x, y, z в том порядке, в котором идут соответствующие им столбцы

Следовательно →

Ответ: zxy

😉 Good job! Keep it up! Good luck!

ПРОДОЛЖЕНИЕ СЛЕДУЕТ ...

-37

📌 Полезные материалы для изучения Python ⤵