Анализ таблиц истинности логических выражений
Скачать 2.43 Mb.
|
Ещё пример задания:Р-19. Логическая функция F задаётся выражением ((w y) x) ((w z) (y w)). На рисунке приведён частично заполненный фрагмент таблицы истинности функции F, содержащий неповторяющиеся строки. Определите, какому столбцу таблицы истинности функции F соответствует каждая из переменных x, y, z, w.
В ответе напишите буквы x, y, z, w в том порядке, в котором идут соответствующие им столбцы. Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно. Решение: запишем выражение в более понятной форме: попробуем найти все сочетания переменных, при которых функция равна 0 (их должно быть не очень много) выберем для начальной подстановки переменную, которая чаще всего встречается в выражении и поэтому подстановка её значения даст наибольшую информацию; у нас это переменная w подставим сначала w = 0, а затем w = 1, и таким образом построим все строки таблицы истинности, где функция равна нулю при w = 0 получаем поскольку при всех z, имеем для того, чтобы сумма была равна 0, оба слагаемых должны быть равны 0, так что таким образом, при w = 0 получаем y = 1, x = 0, а значение z может быть любое; это даёт две строки в таблице истинности:
теперь рассмотрим случай, когда w = 1: получаем поскольку при всех y, имеем для того, чтобы сумма была равна 0, оба слагаемых должны быть равны 0, так что таким образом, при w = 1 получаем x = 0, z = 0, а значение y может быть любое; добавляем ещё две строки в таблицу истинности:
сравниваем эту таблицу с таблицей в задании:
две единицы могут быть только в столбцах y и w, поэтому это столбцы 1 и 4 кроме этих столбцов единственная единица может быть в столбце z, поэтому столбец 3 – это z при z = 1 должно быть y = 1, поэтому столбец 1 – это y, а столбец 4 – это w остаётся столбец 2 – это x Ответ: yxzw. Решение (разбиение на два слагаемых, А.Н. Носкин): запишем выражение в более понятной форме: Каждое из слагаемых скобок должна быть равна 0, поэтому составим для каждой таблицу истинности. Рассмотрим ((w z) (y w)), а именно первую скобку (w z), она равна 0 при ситуации 1 0, тогда y во второй скобке может быть любым
Теперь рассмотрим вторую скобку (y w), она равна 0 при ситуации 1 0, тогда zво первой скобке может быть любым. Добавим эти значения в таблицу истинности, которая приведена выше.
Теперь рассмотрим ((w y) x). Эта скобка будет равна 0 при ((w y) ≠ x). Составим таблицу истинности
Анализ этой таблицы показывает, что набора 001 (выделено цветом) быть не может иначе система будет равна 1 по скобке ((w z) (y w)). Сравним полученные таблицы истинности с исходной таблицей в задании:
x в таблице истинности во всех строках равен 0, тогда он соответствует второму столбцу, так как там нет ни одной единицы. Сразу заполним нулями.
w и y в таблице истинности имеют 2 и более единицы, а z всего 1, тогда z - это столбец 3. Заполним сразу 0.
Так как строки не повторяются, то в первой ячейке второй строки может быть только 0. Заполним ее.
Теперь проанализируем последнюю ячейку третьей строки. Ее значения могут быть 0 и 1. Предположим, что там 0, а в первом столбце w, тогда выражение примет вид ((1 0) 0) ((1 1) (0 1)) – этого быть не может, так как выражение равно 1. Предположим, что там 1 и в первом столбце w, тогда выражение примет вид ((1 1) 0) ((1 1) (1 1)) – этого быть не может, так как выражение равно 1. Таким образом в первом столбце w не может быть ни при каком случае. Там только y, ну а w отправляется в 4-й столбец. Ответ: yxzw. Решение (построение таблицы с помощью программы, Б.С, Михлин) print('x y z w') # заголовок таблицы k = 0, 1 # k - кортеж констант (0 - False, 1 - True) for x in k: for y in k: for z in k: for w in k: if not (((w or y) == x ) or (not w or z) and \ (not y or w) ) : # можно так: # if ( ( ( w or y ) == x ) or ( not w or z) \ # * (not y or w) ) == 0: # '*' вместо ‘and’ print( x, y, z, w ) # если F = 0 |