Top.Mail.Ru
Ответы

Программирование на языке python

Как решить эту задачу ?

Только авторизированные пользователи могут оставлять свои ответы
Дата
Популярность
Аватар пользователя
Новичок

Сначала нормализовать выражение, приведя его к ДНФ:

123456789
 ¬(y → ¬(z → w)) = ¬(¬y ∨ ¬(¬z ∨ w)) = y ∧ (¬z ∨ w) = (y ∧ ¬z) ∨ (y ∧ w)
¬z → (¬w ≡ x) = z ∨ (¬w ∧ x) ∨ (w ∧ ¬x)

((y ∧ ¬z) ∨ (y ∧ w)) ∧ (z ∨ (¬w ∧ x) ∨ (w ∧ ¬x)) =
  = (y ∧ ¬z ∧ z) ∨ (y ∧ w ∧ z) ∨ (y ∧ ¬z ∧ ¬w ∧ x) ∨ (y ∧ w ∧ ¬w ∧ x) ∨
    ∨ (y ∧ ¬z ∧ w ∧ ¬x) ∨ (y ∧ w ∧ w ∧ ¬x) =
  = 0 ∨ (y ∧ w ∧ z) ∨ (y ∧ ¬z ∧ ¬w ∧ x) ∨ 0 ∨
    ∨ (y ∧ ¬z ∧ w ∧ ¬x) ∨ (y ∧ w ∧ ¬x) =
  = (w ∧ y ∧ z) ∨ (¬w ∧ x ∧ y ∧ ¬z) ∨ (w ∧ ¬x ∧ y) 

Конъюнкция переменной с её отрицанием равна нулю.
Нули делают произведение нулевым.
Нули не влияют на сумму, поэтому вычёркиваем их из неё.
Последнее ненулевое слагаемое поглощает предпоследнее.

Из трёх оставшихся слагаемых ДНФ получаем строки таблицы, в которых значение функции равно 1 (во всех остальных случаях F = 0):

1234
 w  x  y  z
1  -  1  1
0  1  1  0
1  0  1  - 

(прочерк означает, что при любом значении переменной F = 1)
Можно это раскрыть:

12345
 w  x  y  z
1  0  1  1
1  1  1  1
0  1  1  0
1  0  1  0 

(строка 1 0 1 1 при раскрытии переменной повторяется дважды, поэтому исключаем дубликат, и строк остаётся 4)

Видим, что только 3-я и 4-я строки содержат по 2 нуля, они соответствуют 2-й и 3-й строкам исходной таблице, причём, 3-я колонка исходной таблицы 0 - это z (т.к. она дважды с нулём). Колонка исходной таблицы без нуля (1-я) - это y.

Теперь, какая из остальных w, а какая x? Мы видим, что эти переменные не равны (для F = 1 нет строк с тремя нулями).
2-я колонка не может быть x, т.к. при y = z = w = 1 F = 1 независимо от значения x.
Отсюда заключаем, что 2-я колонка - это w, а для x остаётся 4-я колонка.

Ответ:

1
 y w z x 


И никакого программирования на Питон тут не понадобилось.