Академический Документы
Профессиональный Документы
Культура Документы
ЛАБОРАТОРНАЯ РАБОТА 3
Предмет: Дискретная математика
Тема: Булевы функции. Дизъюнктивные нормальные формы.
Подготовил:
Студент группы СИБ-19-4
Горбунов Вадим
Караганда 2020
Тема: Булевы функции. Дизъюнктивные нормальные формы.
Исходные данные:
Взять карту Вейча для четырех аргументов и записать туда свою фамилию,
имя и отчество. Буквы фамилии, имени и отчества заменить единицами
(включая «М») и получить представление некоторой функции в Карте Вейча.
Задание:
1. Записать СДНФ полученной функции.
2. Минимизировать запись функции, выделяя импликанты Карты Вейча.
3. Написать программу, реализующую полученную функцию, вывести на
печать минтермы функции.
4. Функцию представить в таблице истинности.
5. Проверить совпадение номеров минтермов в Карте Вейча и в таблице
истинности.
Решение:
Создание Карты Вейча:
B
_______________
||
Г О Р Б
|
A| 12 14 10 8
| |
| У Н О В |
| |
| 13 15 11 9 | D
В А Д И |
|
|
5 7 3 1
М А Л Е
4 6 2 0
______________________________________
С
B
_______________
||
1 0 0 1
|
A| 12 14 10 8
| |
| 0 0 0 1 |
| |
| 13 15 11 9 | D
1 1 1 1 |
|
|
5 7 3 1
1 1 1 1
4 6 2 0
______________________________________
1. СДНФ функции:
f = ABCD + A BCD+ A BC D+ A B C D+ A BCD+ AB CD + ABC D+ A B CD+ A BC D+ ABC D+ ABCD
Тогда f (0,1,2,3,4,5,6,7,8,9,12)
2. Минимизированная запись
f min =¿ AB CD + A BC + A B+ AB D+ ABD
3. Программная реализация
Код программы на Python:
minterms_count = 16 # количество минтермов
minterms = [] # список минтермов
for i in range(minterms_count):
binaryNumberStr = bin(i).replace('0b', '') # преобразование двоичного числа
binaryNumberStr = '0' * (4 - len(binaryNumberStr)) + binaryNumberStr #
преобразование двоичного числа в 4-битное двоичное число
a, b, c, d = int(binaryNumberStr[0]), int(binaryNumberStr[1]),
int(binaryNumberStr[2]), int(binaryNumberStr[3]) # перевод строк в числа
f_min = a*b*(not c)*(not d) + a*(not b)*(not c) + (not a)*b + (not a)*(not b)*d + (not
a)*(not b)*(not d) # подставление данных в минимизированную функцию
minterms.append(f_min) # добавление минтерма в список
№ A B C D ABCD A BC AB AB D ABD f1
м.
0 0 0 0 0 0 0 0 0 1 1
1 0 0 0 1 0 0 0 1 0 1
2 0 0 1 0 0 0 0 0 1 1
3 0 0 1 1 0 0 0 1 0 1
4 0 1 0 0 0 0 1 0 0 1
5 0 1 0 1 0 0 1 0 0 1
6 0 1 1 0 0 0 1 0 0 1
7 0 1 1 1 0 0 1 0 0 1
8 1 0 0 0 0 1 0 0 0 1
9 1 0 0 1 0 1 0 0 0 1
10 1 0 1 0 0 0 0 0 0 0
11 1 0 1 1 0 0 0 0 0 0
12 1 1 0 0 1 0 0 0 0 1
13 1 1 0 1 0 0 0 0 0 0
14 1 1 1 0 0 0 0 0 0 0
15 1 1 1 1 0 0 0 0 0 0