Умение строить таблицы истинности и логические схемы · 48 заданий
- Задание №2№2
Миша заполнял таблицу истинности логической функции F (x → z) (y ≡ w) y, но успел заполнить лишь фрагмент из трёх различных её строк, даже не указав,…
Алгебра логики
- Задание №2№2
Миша заполнял таблицу истинности логической функции F (y → x) \/ (z → w) \/ z, но успел заполнить лишь фрагмент из трёх различных её строк, даже не ук…
Алгебра логики
- Задание №2№2
Миша заполнял таблицу истинности функции (x y) (x ≡ z) w, но успел заполнить лишь фрагмент из трёх различных её строк, даже не указав, какому столбцу…
Алгебра логики
- Задание №2№2
Миша заполнял таблицу истинности логической функции F (y → (x ≡ w)) (z → x), но успел заполнить лишь фрагмент из трёх различных её строк, даже не указ…
Алгебра логики
- Задание №2№2
Миша заполнял таблицу истинности функции (x y) (y ≡ z) w, но успел заполнить лишь фрагмент из трёх различных её строк, даже не указав, какому столбцу…
Алгебра логики
- Задание №2№2
Миша заполнял таблицу истинности логической функции F ((y ≡ w) z) (w x), но успел заполнить лишь фрагмент из трёх различных её строк, даже не указав,…
Алгебра логики
- Задание №2№2
Миша заполнял таблицу истинности логической функции F (y → (w ≡ z)) (w → x), но успел заполнить лишь фрагмент из трёх различных её строк, даже не указ…
Алгебра логики
- Задание №2№2
Миша заполнял таблицу истинности логической функции F (x → y) z w, но успел заполнить лишь фрагмент из трёх различных её строк, даже не указав, какому…
Алгебра логики
- Задание №2№2
Миша заполнял таблицу истинности логической функции F (x → w) (y → (z ≡ w)), но успел заполнить лишь фрагмент из трёх различных её строк, даже не указ…
Алгебра логики
- Задание №2№2
Миша заполнял таблицу истинности логической функции F (x ≡ w) (z w) y, но успел заполнить лишь фрагмент из трёх различных её строк, даже не указав, ка…
Алгебра логики
- Задание №2№2
Миша заполнял таблицу истинности логической функции F (x y) (y ≡ z) w, но успел заполнить лишь фрагмент из трёх различных её строк, даже не указав, ка…
Алгебра логики
- Задание №2№2
Миша заполнял таблицу истинности логической функции F (x → (y ≡ z)) (w → y), но успел заполнить лишь фрагмент из трёх различных её строк, даже не указ…
Алгебра логики
Миша заполнял таблицу истинности логической функции F
z∧¬w∧(y→x),
но успел заполнить лишь фрагмент из трёх различных её строк, даже не указав, какому столбцу таблицы соответствует каждая из переменных w, x, y, z.
| F | ||||
| 1 | 0 | 1 | ||
| 1 | 1 | 1 | ||
| 1 | 1 | 1 |
Определите, какому столбцу таблицы соответствует каждая из переменных w, x, y, z.
Правильный ответ
zxyw
Пояснение
Решение:
Конъюнкция равна единице, только если истинны все множители: z=1, w=0 и y→x=1 (то есть сочетания y=1, x=0 быть не может).
Таких наборов ровно три: (w,x,y,z) равно (0,0,0,1), (0,1,0,1) или (0,1,1,1). Это и есть три строки фрагмента в каком-то порядке.
Во всех строках w=0, поэтому в столбце w не должно быть единиц. В первом, втором и третьем столбцах единицы есть, значит w — четвёртый столбец (он и оставлен полностью пустым).
Во второй и третьей строках второй столбец равен 1. Если бы это была переменная y, то в обеих строках y=1, а тогда из y→x следует x=1; вместе с z=1 и w=0 обе строки оказались бы одним и тем же набором (0,1,1,1), чего быть не может. Переменной z второй столбец тоже не соответствует: в первой строке там 0, а z=1 всегда. Значит второй столбец — x.
Остались y и z в первом и третьем столбцах. В первой строке первый столбец равен 1, а второй равен 0, то есть x=0. Если бы первый столбец был переменной y, получилось бы y=1 при x=0 — нарушение условия y→x. Значит первый столбец — z, а третий — y.
Тот же результат даёт перебор всех 24 расстановок переменных по столбцам:
from itertools import permutations, product
def F(w, x, y, z):
return z and not w and (not y or x)
rows = [t for t in product([0, 1], repeat=4) if F(*t)] # наборы (w, x, y, z) с F = 1
frag = [[1, 0, None, None],
[1, 1, None, None],
[None, 1, 1, None]]
for cols in permutations('wxyz'): # cols[i] — переменная в i-м столбце
for order in permutations(rows, 3): # какой набор какой строке фрагмента
val = [dict(zip('wxyz', t)) for t in order]
if all(frag[r][i] is None or frag[r][i] == val[r][cols[i]]
for r in range(3) for i in range(4)):
print(''.join(cols))
break
Ответ: zxyw