Задание №2 — Построение таблицы истинности
Миша заполнял таблицу истинности логической функции
но успел заполнить лишь фрагмент из трёх различных её строк, даже не указав, какому столбцу таблицы соответствует каждая из переменных w, x, y, z.
| F | ||||
| 0 | 0 | 0 | ||
| 1 | 0 | 0 | 0 | |
| 1 | 0 | 1 | 0 |
Определите, какому столбцу таблицы соответствует каждая из переменных w, x, y, z.
В ответе напишите буквы w, x, y, z в том порядке, в котором идут соответствующие им столбцы (сначала буква, соответствующая первому столбцу; затем буква, соответствующая второму столбцу, и т.д.). Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно.
Пример. Функция задана выражением зависящим от двух переменных, а фрагмент таблицы имеет следующий вид.
| 0 | 1 | 0 |
В этом случае первому столбцу соответствует переменная y, а второму столбцу – переменная x. В ответе следует написать: yx.
Правильный ответ
wzyx
Пояснение
Решение:
В задании известны только фрагменты трёх различных строк таблицы истинности, причём неизвестно, какая переменная стоит в каком столбце. Приём здесь всегда один: сначала выписываем все наборы, на которых функция принимает указанное значение, а затем прикладываем к ним строки фрагмента и смотрим, при каком порядке столбцов всё сходится.
Дизъюнкция равна нулю только тогда, когда нулём является каждое слагаемое. Из следует ; из следует ; кроме того, . При имеем , поэтому обязательно ; при конъюнкция нулевая сама собой и произвольно. Подходящих наборов ровно три:
| w | x | y | z | F |
|---|---|---|---|---|
| 1 | 0 | 0 | 1 | 0 |
| 1 | 0 | 1 | 0 | 0 |
| 1 | 1 | 1 | 0 | 0 |
Во всех трёх наборах , значит в столбце переменной не может быть нулей; в фрагменте нули встречаются во втором, третьем и четвёртом столбцах, поэтому — первый столбец. Переменная равна единице в двух наборах из трёх, то есть нулём она бывает лишь однажды, а второй и четвёртый столбцы содержат по два нуля — остаётся третий столбец, это . В первой строке фрагмента , что возможно только на наборе ; в той же строке четвёртый столбец равен нулю, а там единица, поэтому четвёртый столбец — это , а второй — .
Те же три набора нетрудно получить и перебором:
from itertools import product
def F(w, x, y, z):
return (x and not y) or (y == z) or (not w)
for w, x, y, z in product((0, 1), repeat=4):
if not F(w, x, y, z):
print(w, x, y, z)Ответ: wzyx