Логическая функция F задаётся выражением (¬x ≡ z) → (y ≡ (w ∨ x)).
Дан частично заполненный фрагмент, содержащий неповторяющиеся строки таблицы истинности функции F.
Определите, какому столбцу таблицы истинности соответствует каждая из переменных x, y, z, w.
| Переменная 1 | Переменная 2 | Переменная 3 | Переменная 4 | Функция |
|---|---|---|---|---|
| ??? | ??? | ??? | ??? | F |
| 0 | 0 | 0 | ||
| 0 | 0 | 0 | ||
| 0 | 0 | 0 | 0 |
В ответе напишите буквы x, y, z, w в том порядке, в котором идут соответствующие им столбцы (сначала — буква, соответствующая первому столбцу; затем — буква, соответствующая второму столбцу, и т. д.). Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно.
Пример. Пусть задано выражение x → y, зависящее от двух переменных x и y, и фрагмент таблицы истинности:
| Переменная 1 | Переменная 1 | Функция |
|---|---|---|
| ??? | ??? | F |
| 0 | 1 | 0 |
Тогда первому столбцу соответствует переменная y, а второму столбцу соответствует переменная x. В ответе нужно написать: yx.
Рассмотрим данное выражение. Преобразуем логическое выражение (¬x ≡ z) → (y ≡ (w ∨ x)) и получим систему, при которой оно ложно:
Заметим, что второй и четвёртый столбцы таблицы истинности — это x и z. Из условия следует, что первому столбцу таблицы истинности соответствует переменная y. Следовательно, третьему столбцу таблицы истинности соответствует w.
Приведем другое решение.
Составим таблицу истинности для выражения (¬x ≡ z) → (y ≡ (w ∨ x)) вручную или при помощи языка 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 not((not(x) == z) <= (y == (w or x))):
print(x, y, z, w)
Далее выпишем те наборы переменных, при которых данное выражение равно 0. В наборах переменные запишем в порядке х, y, z, w.
Получим следующие наборы:
(0, 0, 1, 1),
(0, 1, 1, 0),
(1, 0, 0, 0),
(1, 0, 0, 1).
Сопоставим эти наборы с приведенным в задании фрагментом таблицы истинности.
Третья строка таблицы (как минимум три нуля) может соответствовать только набору (1, 0, 0, 0), тогда второй столбец соответствует переменной х.
Заметим, что первый столбец таблицы может соответствовать только переменной у, поскольку переменные z и w принимают нулевые значения только в двух наборах.
В первой строке таблицы x = 0, y = 0. Следовательно, она соответствует набору (0, 0, 1, 1), тогда вторая строка таблицы соответствует набору (1, 0, 0, 1). В этом наборе переменная w = 1, z = 0. Следовательно, третий столбец таблицы соответствует переменной w, а четвертый столбец — переменной z.
Ответ: yxwz.
Приведем построение таблицы истинности Ивана Новикова на языке С++.
#include < iostream>
using namespace std;
int main() {
int x , y , w , z;
for(x=0;x<=1;x++)
{for(y=0;y<=1;y++)
{for(w=0;w<=1;w++)
{for(z=0;z<=1;z++)
{if(( (not(x)==z)<=(y==(w or x)))==0)
{ cout<< x<< y<< w<< z <<"\n"; } }
}}}
return 0;
}

