Решение логических задач В MS EXCEL

advertisement
РЕШЕНИЕ ЛОГИЧЕСКИХ ЗАДАЧ В MS EXCEL
Пчельник В.К., Ревчук И.Н.
Государственный университет имени Я.Купалы, г. Гродно
Рассмотрим решение стандартных задач из курса «Прикладная
математика» на построение таблиц истинности, проверку равносильности
логических функций, построение СДНФ и СКНФ в MS EXCEL. Реализация
основных логических операций может быть осуществлена так, как на
рисунке 1, если считать, что 1 соответствует значению «ИСТИНА», а 0 –
значению «ЛОЖЬ».
Такую таблицу можно получить, используя логические функции ИЛИ, И,
НЕ. Операция в столбце Е заменена дизъюнкцией в соответствии с формулой
x
y x y.
Рис. 1. Реализация основных логических операций
Такая же таблица получится, если в ячейки С2, D2, E2, F2 и G2 ввести
формулы без явного использования логических функций (рис. 2). Эти
формулы затем распространяются на диапазон С3:G5.
Рис. 2. Реализация основных логических операций без явного использования
логических функций
Для проверки равносильности выражений (x y) (z y) и (x z) y
построим таблицы истинности для этих формул (рис. 3). В результате
получится таблица, приведенная на рисунке 4.
Из таблицы видно, что для функций (x y)/\(z y) и (x z) y значения
на всех наборах переменных совпадают. Следовательно, эти формулы
равносильны.
Приведем алгоритм получения СДНФ и СКНФ по таблице
истинности в MS EXCEL в соответствии с определениями СДНФ и СКНФ [1]
.
Рис. 3. Формулы для построения таблицы истинности
Рис. 4. Полученная таблица истинности
Пусть требуется
__
x
(y
(x
найти СДНФ и СКНФ для булевой функции
z )) . В соответствии с определениями СДНФ и СКНФ
воспользуемся таблицей истинности для этой функции. Введем в ячейки
F636:I636 формулы (1) − (4) (рис. 5). Формулу (4) распространим на диапазон
G636:K636. Формула (5) вводится в ячейку L636, (6) − в ячейку M636.
Формула (6) распространяется на диапазон N636:O636. Формула (7) вводится
в ячейку Р636. Выделяем диапазон F636:P636 и распространяем их на
диапазон F637:Р643. Формулы (8) и (9), введенные в ячейки L644 и Р644,
дают СДНФ и СКНФ соответственно.
=(C636=E636)*1
=(F636>=D636)*1
=(G636-(1-C636)>=0)*1
=ЕСЛИ($H636=1;ЕСЛИ(C636=1;C$635;I$635);"")
=ЕСЛИ(I636<>"";I636&J636&K636&"+";"")
=ЕСЛИ($H636=0;ЕСЛИ(B636=0;C$635;$I635);"")
=ЕСЛИ(M636<>"";"("&M636&"+"&N636&"+"&O636&")";"")
=ЛЕВСИМВ(СЦЕПИТЬ(L636;L637;L638;L639;L640;L641;L642;L643);ДЛ
СТР(СЦЕПИТЬ(L636;L637;L638;L639;L640;L641;L642;L643))-1)
=СЦЕПИТЬ(P636;P637;P638;P639;P640;P641;P642;P643)
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
Рис. 5
Функция СЦЕПИТЬ не позволяет указать диапазон, в котором
располагаются сцепляемые символы. С другой стороны, можно присвоить
формуле (9) имя, выполнив команду ВСТАВКА/ИМЯ/ПРИСВОИТЬ. Тогда
формулы (8) и (9) примут более компактный вид (8’) и (9’).
=ЛЕВСИМВ(w;ДЛСТР(w)-1)
=w
(8’)
(9’)
Литература
1.
Яблонский, С.В. Введение в дискретную математику / С.В. Яблонский. – М.: Наука, 1986. 384 с.
Download