Логическая функция F задаётся выражением (w → y) ∧ (¬y ≡ x) ∧ (x ∨ z). На рисунке приведён частично заполненный фрагмент таблицы истинности функции F, содержащий неповторяющиеся строки. Определите, какому столбцу таблицы истинности функции F соответствует каждая из переменных x, y, z, w.
| ? | ? | ? | ? | F |
|---|---|---|---|---|
| 1 | 1 | 1 | 1 | |
| 1 | 1 | 1 | ||
| 1 | 1 |
В ответе напишите буквы x, y, z, w в том порядке, в котором идут соответствующие им столбцы. Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно.
Пример. Пусть задано выражение x → y, зависящее от двух переменных x и y, и фрагмент таблицы истинности:
| Переменная 1 | Переменная 1 | Функция |
|---|---|---|
| ??? | ??? | F |
| 0 | 1 | 0 |
Тогда первому столбцу соответствует переменная y, а второму столбцу соответствует переменная x. В ответе нужно написать: yx.
Заметим, что, чтобы выражение было истинным, выражения во всех скобках должны быть истинными.
Рассмотрим первую строку таблицы истинности. Для того чтобы первая скобка была истинной, переменная y должна быть равна единице. Тогда скобка (¬y ≡ x) будет принимать значение 1 только при x = 0. Значит, переменной x соответствует первый столбец таблицы истинности.
Рассмотрим вторую строку таблицы истинности. Переменная x = 1, тогда скобка (¬y ≡ x) будет принимать значение истинности только при y = 0. Чтобы скобка (w → y) принимала значение 1, w не должна равняться 1. Значит, переменной z соответствует второй столбец таблицы.
Рассмотрим третью строку таблицы истинности. Предположим, что третьему столбцу таблицы истинности соответствует переменная y, тогда, вне зависимости от того, какие значения будут стоять в остальных столбцах третьей строки (при условии, что она не совпадает с первой), выражение всегда будет ложным. Следовательно, третьему столбцу соответствует переменная w, а четвёртому — переменная y.
Приведём другое решение.
Составим таблицу истинности для выражения (w → y) ∧ (¬y ≡ x) ∧ (x ∨ z) вручную или при помощи языка Python:
print("x y z w")
for x in range(0, 2):
for y in range(0, 2):
for z in range(0, 2):
for w in range(0, 2):
if (w <= y) and (not(y) == x) and (x or z):
print(x, y, z, w)
Далее выпишем те наборы переменных, при которых данное выражение равно 1. В наборах переменные запишем в порядке х, y, z, w. Получим следующие наборы:
(0, 1, 1, 0),
(0, 1, 1, 1),
(1, 0, 0, 0),
(1, 0, 1, 0).
Сопоставим эти наборы с приведенным в задании фрагментом таблицы истинности.
Первая строка таблицы (как минимум три единицы) может соответствовать только набору (0, 1, 1, 1). Следовательно, первый столбец таблицы соответствует переменной x, и в первом столбце первой строки стоит 0.
Рассмотрим вторую строку таблицы. В ней x = 1, и еще как минимум одна переменная принимает единичное значение. Следовательно, эта строка может соответствовать только набору (1, 0, 1, 0). Тогда второй столбец таблицы соответствует переменной z.
В третьей строке таблицы единичное значение принимает одна из переменных y или w. Следовательно, эта строка может соответствовать только набору (0, 1, 1, 0). Тогда четвертый столбец — это переменная y, а третий — переменная w.
Ответ: xzwy.

