33) Заданы логические функции: F1=0 на наборах 2,4 и
34) Заданы логические функции:
и35) Заданы логические функции:
и36) Заданы логические функции:
и37) Заданы логические функции:
и5.3 Вопросы для самопроверки
1) Какие формы представления логических функций Вы знаете?
2) В каких случаях, на Ваш взгляд, какие формы представления логических функций являются наиболее предпочтительными?
3) Изобразите общую схему таблицы истинности функции 4‑х переменных.
4) Каков приоритет выполнения логических операций?
5) Какие логические функции есть в алгоритмическом языке Object Pascal?
6) Дайте определение логической функции многих переменных.
7) Приведите пример тождественно ложной логической функции. Можно ли для этой функции построить СДНФ?
8) Приведите пример тождественно истинной логической функции. Можно ли для этой функции построить СКНФ?
9) На основании каких замен можно построить арифметическую модель логической функции?
10) Перечислите законы алгебры логики.
11) Какие следствия из законов алгебры логики Вы знаете?
12) Назовите учёных, которые считаются основателями алгебры логики.
Практическая работа № 6. Изучение методов минимизации логических функций
Цель работы: применение изученных методов минимизации логических функций для решения конкретных задач.
6.1 Краткие теоретические сведения
Общая задача минимизации логических функций сводится к построению в базисе Буля функции, содержащей минимально возможное число двоичных переменных. Исходное выражение логической функции может быть представлено формулой в любом базисе. Поэтому на первом этапе осуществляется переход к нормальной форме формулы булевой функции, как правило, совершенной дизъюнктивной нормальной форме.
F 0={×;Ú; – ;Å;«;®;½;¯} – сигнатура алгебры логики;
F 1={×;Ú;–} – базис Буля;
F 2={×;–} – базис конъюнктивный;
F 3={Ú;–} – базис дизъюнктивный;
F 4={×;Å; 1} – базис Жегалкина;
F 5={¯} – базис Вебба;
F 6={½} – базис Шеффера;
F 7={®;–} – базис импликативный и т. д.
В таблицах 6.1–4 приведены формулы в некоторых базисах и для некоторых значений функции f (x1, x2).
Таблица 6.1 – Формулы, описывающие функции в базисах F0 и F5
fi | Формулы в базисах F 0 и F 5 |
f1 | (x1×x2)=(x1¯x2)¯(x1¯x2) |
f6 | (x1Åx2)=[(x1¯x1)¯(x2¯x2)]¯(x1¯x2) |
f7 | (x1Úx2)=(x1¯x2)¯(x1¯x2) |
f9 | (x1«x2)=[x1¯(x2¯x2)]¯[x2¯(x1¯x1)] |
f13 | (x1®x2)=[x2¯(x1¯x1)]¯[x2¯(x1¯x1)] |
f14 | (x1÷x2)=[(x1¯x1)¯(x2¯x2)]¯ [(x1¯x1)¯(x2¯x2)] |
Таблица 6.2 – Формулы, описывающие функции в базисах F0 и F2
Fi | Формулы в базисах F 0 и F2 |
f6 | (x1Åx2)=ù(`x1×`x2)×ù(x1×x2) |
f7 | (x1Úx2)=ù(`x1×`x2) |
f8 | (x1¯x2)=(`x1×`x2) |
f9 | (x1«x2)=ù(x1×`x2)×ù(`x1×x2) |
f13 | (x1®x2)=ù(x1×`x2) |
f14 | (x1÷x2)=ù(x1×x2) |
Таблица 6.3 – Формулы, описывающие функции в базисах F0 и F3
Fi | Формулы в базисах F 0 и F3 |
f6 | (x1×x2)=ù(`x1Ú`x2) |
f7 | (x1Åx2)=ù(`x1Úx2)Úù(x1Ú`x2) |
f8 | (x1¯x2)=ù(x1Úx2) |
f9 | (x1«x2)=(x1Úx2)Úù(`x1Ú`x2) |
f13 | (x1®x2)=(`x1Úx2) |
f14 | (x1½x2)=(`x1Ú`x2) |
Таблица 6.4 – Формулы, описывающие функции в базисах F0 и F6
Fi | Формулы в базисах F 0 и F 6 |
f1 | (x1×x2)=(x1½x2)½(x1½x2) |
f6 | (x1Åx2)=[x1½(x2½x2)]½[x2½ (x1½x1)] |
f7 | (x1Úx2)=(x1½x2)½(x1½x2) |
f8 | (x1¯x2)=[(x1½x1)½(x2½x2)½ (x2½x2)] |
f9 | (x1«x2)=[(x1½x1)½(x2½x2)]½ (x1½x2)] |
f13 | (x1®x2)=(x1½(x2½x2). |
6.2.1 Задание к работе
1. Минимизировать функции с помощью карт Карно или таблицы Куайна.
2. Используя средства Excel и Delphi, построить таблицы истинности заданных логических функций.
3. Сделать выводы.
6.2.2 Примеры выполнения
Пример 1.
Задание:
1. Минимизировать функции с помощью таблицы Куайна.
2. Используя программные средства Delphi, построить таблицы истинности заданных логических функций.
1 Минимизация с помощью таблицы Куайна:
Пусть функция F представлена в виде СДНФ
F1СДНФ =
Таблица 6.5 – таблица Куайна
х1x2x3 | 001 | 101 | 110 | 111 |
0011–111 – | 1 | 1 | 1 | 1 |
Упростим F1СДНФ, получим:
F1МДНФ=
Как мы видим, результат, полученный по таблице Куайна, совпадает с F1МДНФ.
Рисунок 6.1 – Графический интерфейс
2 Процедура основного обработчика
procedure TForm1. BitBtn1Click (Sender: TObject);
Var i:byte;
x1, x2, x3:boolean;
begin
for i:=1 to 8 do begin
StringGrid1. Cells [0, i]:=IntToStr (i‑1);
If i<=4 then StringGrid1. Cells [1, i]:='0' else StringGrid1. Cells [1, i]:='1';
If (i<=2) or ((i>=5) and (i<7)) then StringGrid1. Cells [2, i]:='0' else StringGrid1. Cells [2, i]:='1';
If (i mod 2>0) then StringGrid1. Cells [3, i]:='0' else StringGrid1. Cells [3, i]:='1';
If i<=4 then StringGrid1. Cells [4, i]:='1' else StringGrid1. Cells [4, i]:='0';
If (i<=2) or ((i>=5) and (i<7)) then StringGrid1. Cells [5, i]:='1' else StringGrid1. Cells [5, i]:='0';
x1:=StrToBool (StringGrid1. Cells [1, i]);
x2:=StrToBool (StringGrid1. Cells [2, i]);
x3:=StrToBool (StringGrid1. Cells [3, i]);
if (not (x1) and not (x2) and x3) or (x1 and x3) or (x1 and x2)
then StringGrid1. Cells [6, i]:='1'
else StringGrid1. Cells [6, i]:='0';
end; end;
Пример 2. Пусть будут заданы номера наборов четырех переменных, на которых логическая функция принимает единичное значение: f (2,5,6,7,10,12,13,14)=1.
Выразим эту логическую функцию в СДНФ (символ конъюнкции писать не будем):
f(0010,0101, 0110, 0111, 1010, 1100, 1101, 1110) =
.Таблица 6.6 – карта Карно для функции 4‑х переменных
1100 | 1110 | 0110 | 0100 | ||
1101 | 1111 | 0111 | 0101 | ||
1001 | 1011 | 0011 | 0001 | ||
1000 | 1010 | 0010 | 0000 | ||
Таблица 6.7 – заполненная карта
Карта Карно для четырех переменных представлена в виде таблицы 6.6. Каждая клетка карты соответствует конституенте. Заполненная карта представлена таблицы 6.7. Согласно закону склеивания, две смежные конституенты с единичными значениями всегда можно объединить для получения соответствующей импликанты. Причем смежными считаются и те, которые лежат на границах карты. Какие именно единицы требуется объединить для получения подходящей импликанты, легко определить визуально [5]. В соответствии с законом идемпотентности одна и та же единица таблицы 6.7 может склеиваться с двумя или тремя смежными единицами.