Задача
Миша заполнял таблицу истинности функции
но успел заполнить лишь фрагмент из трёх различных её строк, даже не указав, какому столбцу таблицы соответствует каждая из переменных w, x, y, z.
Определите, какому столбцу таблицы соответствует каждая из переменных w, x, y, z.
Аналитическое решение
Поскольку составное логическое выражение представлено из трех частей, соединенных конъюнкцией — логическое умножение — то результат 1 может быть только тогда, когда все части выражения истинны:
Построим таблицы истинности для всех трех частей выражения и выделим те строки, в которых функция действительно равны 1:
1. (x ∨ y) = 1
2. ¬(x≡z) = 1
3. ¬w = 1
1. (x ∨ y) = 1
x | y | F |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
2. ¬(y≡z) = 1
x | z | (y≡z) | F |
0 | 0 | 1 | 0 |
0 | 1 | 0 | 1 |
1 | 0 | 0 | 1 |
1 | 1 | 1 | 0 |
3. ¬w = 1
w | ¬w |
0 | 1 |
1 | 0 |
Учитывая соотношение значений переменных, объединим три таблицы, выбрав только подходящие строки.
x | y | z | w | F |
1 | 0 | 1 | 0 | 1 |
0 | 1 | 0 | 0 | 1 |
1 | 1 | 0 | 0 | 1 |
Во 2 строке исходной таблицы одна единица и все остальные - нули. В нашей таблице строка с одной единицей также вторая. Таким образом, столбец №2 соответствует y.
В исходной таблице по две единицы в столбцах соответствуют x и y. В нашей таблице y уже определен, значит оставшиеся - это x. Таким образом, столбец №3 соответствует x.
После подстановки значений, упомянутые выше, очевидно, что столбец №1 - z, а столбец №4 - w.
Ответ: zyxw
Программа, Python
Напишем программу, которая будет последовательно перебирать возможные значения x, y, z и w. В тот момент, когда составное выражение будет истинно - программа выведет соответствующие значения x, y, z и w.
print ('x y z w')
for x in (0,1):
for y in (0,1):
for z in (0,1):
for w in (0,1):
if (x or y) and not(x == z) and not(w):
print(x, y, z, w)
В результате программа выдаст следующий результат:
x y z w
0 1 1 0
1 0 0 0
1 1 0 0
Сопоставив полученную таблицу с той, что представлена в условии (см. аналитическое решение), получим ответ: zyxw.
Ответ: zyxw.