Задание №2.
Знание на умение строить таблицы истинности и логические схемы. Уровень сложности задания - базовый, максимальный балл за выполнение - 1, примерное время выполнения задания - 3 минуты.
Знать: основные логические операции и законы алгебры логики.
Уметь: применять законы алгебры логики для упрощения логических выражений.

 

Пример задания (Статград от 17.03.2021 г.)Логическая функция F задаётся выражением:

(yz) /\ ¬((y \/ w) → (z /\ x))

Дан  частично  заполненный  фрагмент,  содержащий  неповторяющиеся строки таблицы истинности функции F. Определите,  какому  столбцу  таблицы  истинности  соответствует  каждая из переменных w, x, y, z.


В  ответе  напишите  буквы  wxyz  в  том  порядке,  в  котором  идут соответствующие  им  столбцы  (сначала  буква,  соответствующая  первому столбцу;  затем  буква,  соответствующая  второму  столбцу,  и  т. д.).  Буквы в ответе  пишите  подряд,  никаких  разделителей  между  буквами  ставить не нужно.

Разбор задания 2_1. Конечно, такое задание можно решить, немного подумав логически, но, на мой взгляд, это не совсем эффективно. В данном задании сложно определить расположение хотя бы одной из переменных в таблице, необходимо построить сначала таблицу истинности для данной функции. Сделать это можно и на листке бумаги, но эффективнее с этой задачей справиться программа на любом из языков программирования. Я предложу решение на Python (просто код короче).

Код программы:

print('x y z w')

for x in range(2):

    for y in range(2):

        for z in range(2):

            for w in range(2):

                if (y <= z) and not((y or w) <= (z and x)):

                    print(x, y, z, w)   

 

Результат работы программы:

Обратим внимание на то, что в задании в таблице нет ни одной строки с тремя нулями. Вычеркнем её в таблице истинности:

У нас в таблице истинности есть  строка с тремя единицами и одним нулём, из которой следует, что ноль соответствует столбу переменной x:

Одну переменную определили:

Далее, анализируя таблицу истинности, можно заметить, что в единственной строке, где переменная x равна единице, ещё одна переменная равна единице и эта переменная – w.

Отметим столбец с переменной w и заполним таблицу недостающими значениями:

Переменная w, исходя из условия, всегда равна единице, следовательно, удалим ещё одну строку из таблицы истинности:

Теперь видно из второй строки таблицы истинности, что кроме переменной w, значение единица есть у переменной z. Отметим её в таблице с условием в первом столбце, а в последнем столбце поместим недостающую переменную y.

Ответ: zwxy.

 

Разбор кода программы построчно.

print('x y z w') – вывод на экран строки    x y z w

for x in range(2):  – организуем перебор значений переменной x, а значений таких только два – ноль и единица

for y in range(2):   – цикл в цикле: для всех значений переменной x перебираем все значения переменной y

for z in range(2):   – цикл в цикле: для всех значений переменной y перебираем все значения переменной z

for w in range(2):   – цикл в цикле: для всех значений переменной z перебираем все значения переменной w

if (y <= z) and not((y or w) <= (z and x)):   – каждый раз при переборе значений переменных x, y, z , w проверяется условие истинности(ложности) логического выражения. В нашем задании значение функции F всегда равно единице, в противном случае, если в условии задания значение функции F равно нулю, в строке проверки условия необходимо добавить значение False.

if (y <= z) and not((y or w) <= (z and x)) == False:

print(x, y, z, w)  – каждый раз, когда значение логического выражения будет истинно, будут выводиться значения переменных x, y, z, w.

 

 

 

 

 

 

Добавить комментарий


Защитный код
Обновить

© 2019 Информатика и ИКТ. Все права защищены

^ Наверх