Лабораторная работа № 2
.docФедеральное агентство по образованию РФ
Санкт-Петербургский государственный электротехнический университет
Кафедра МО ЭВМ
Минимизация логических функций методом Квайна-МакКласки.
Преподаватель: Красюк В.И.
Студент гр. 4351 Кузьменко А.
Санкт-Петербург
2007
Часть 2. Минимизация логических функций методом Квайна-МакКласки.
В части 1 было рассмотрено представление логических функций в виде формул и введено понятие минимальных нормальных форм. Неформально можно определить минимальную форму как формулу, содержащую не большее число символов, чем любая другая формула для рассматриваемой функции.
Для формального определения введем понятие импликант и конституэнт. При этом в их качестве будем рассматривать только простые конъюнкции, то есть конъюнкции входных параметров или их отрицаний (например).
Конституэнта единицы – это функция, принимающая значение 1 только на одном наборе входных данных. Таким образом, СДНФ – это дизъюнкция конституэнт единицы, на которых функция принимает единичные значения. Пусть х – конституэнта единицы. Тогда модуль |x| - это десятичное представление двоичного числа, соответствующего x (младший разряд – слева), а индекс ind(x) – это количество единиц в наборе параметров, при котором x=1. Например, для конституэнты единицы , |x|=12, ind(x)=2.
Импликанта функции f – это функция g, имеющая единичные значения только на тех наборах входных параметров, на которых значение функции f тоже 1. Если Тf – множество наборов входных параметров, при которых функция равна 1, то g – импликанта f по единицам, если Тg Тf .
Собственная часть элементарной конъюнкции f – это конъюнкция части параметров, входящих в f, при чем отрицания сохраняются. Например, собственные части : .
Импликанта g – простая импликанта функции f, если никакие сообственные части g не являются импликантами f. Система простых импликант не избыточна, если ее импликанты покрывают все конституэнты единицы функции (импликанта g покрывает конституэнту x, если Тx Тg) и при удалении любой импликанты это условии нарушается (появляются непокрытые конституэнты).
Теперь можно дать формальное определение МДНФ: минимальная форма функции – это неизбыточная дизъюнкция ее простых импликант.
Таким образом, задача минимизации любой функции сводится к нахождению простых импликант для этой функции и удалению из этого множества избыточных импликант.
Для решения этой задачи введем операции склеивания и поглощения. Пусть a и b – простые конъюнкции, тогда верны следующие утверждения:
- поглощение,
- склеивание.
С помощью операции склеивания можно построить простые импликанты функции, а с помощью операции поглощения – удалить избыточные.
При выполнении этих действий будем опираться на следующие теоремы:
-
Теорема МакКласки. Необходимым и достаточным условием склеивания двух конституэнт единицы xl и xk является:
-
|ind(xl) - ind(xk)|=1;
-
| |xl| - |xk| | = 2m, где m – целое;
-
|xl| > |xk| => ind(xl) > ind(xk).
-
Две склеенные конституэнты единицы будем называть импликантами второго уровня, две склеенные импликанты второго уровня – импликантами третьего уровня и т.д.
Импликанты второго уровня будем обозначать парой конституэнт единицы (xl, xk) , представленных их модулями и числом 1=| |xl| - |xk| |. Так, например при склеивании конституэнт импликанту второго уровня обозначим (2, 6) - (4). Импликанту 3-го уровня будем обозначать четверкой чисел – объединением пар, соответствующих склеенным импликантам 2-го уровня, а также парой (1, 2), где 2==| |xl| - |xk| |, xl, xk – первые элементы пар импликант 2-го уровня. Например, при склеивании пары (0, 2) - (2) и (8, 10) - (2) получим (0, 2, 8, 10) - (2, 8). Аналогично производится склеивание импликант более высокого уровня.
-
Для склеивания двух импликант n-го уровня (n>1) необходимо и достаточно, чтобы у них:
-
совпадали последовательности (1, 2 ,…, n-1)
-
младшие конституэнты единицы в обозначении импликант склеивались по первой теореме.
-
Для минимизации функции f необходимо производить склеивание импликант, пока оно возможно. Для этого разбивают конституэнты на группы по индексам, склеивать можно только конституэнты из разных групп. Затем строят таблицу, выделяя эти группы и уровни импликант и заполняют ее.
При этом если новый импликант совпадает с полученным ранее, он не фиксируется. В ходе склеиваний отмечаются простые импликанты, не участвовавшие в склеивании импликант более высокого уровня. Таким образом, получим систему простых импликант.
Для удаления избыточных импликант просмотрим список простых импликант, начиная с самого высокого уровня. Будем вычеркивать импликанту, если все конституэнты, входящие в нее были покрыты ранее. Затем из оставшихся выберем импликанты, включающие наибольшее количество непокрытых конституэнт и включим в систему, удалив вновь образовавшиеся избыточные ее элементы, продолжив таким образом, составим неизбыточную систему простых импликант.
Затем надо перейти от принятых обозначений импликанты к формуле. Для этого сначала надо просмотреть список (1, 2 ,…, n-1). В импликанту не входят параметры с индексами (log2i)+1. Остальные параметры или их отрицания входят. Можно выбрать любую конституэнту и, построив ее формулу, расставить отрицания для параметров полученной импликанты. Например, восстановим формулу для импликанты (0, 8, 16, 24) - (8, 16). Так как (log28)+1=4, (log216)+1=5, а 0=00000, то искомая формула - .
Восстановив таким образом формулы простых импликант, составим их дизъюнкцию и получим минимальную форму логической функции.
Минимизируем описанным методом функцию T = {0, 4, 8, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 24, 25, 26, 27, 28}. Выделены простые импликанты.
-
гр
1
ур-нь 2
уровень 3
уровень 4
0
0
0, 4
0, 8
0, 16
4
8
16
0, 4, 8, 12
0, 4, 16, 20
0, 8, 16, 24
4, 8
4, 16
8, 16
0, 4, 8, 12, 16, 20, 24, 28
4, 8, 16
1
4
8
16
8, 10
8, 12
16, 17
16, 18
16, 20
16, 24
2
4
1
2
4
8
8, 10, 12, 14
8, 10, 24, 26
8, 12, 24, 28
16, 17, 18, 19
16, 17, 24, 25
16, 18, 24, 26
16, 20, 24, 28
2, 4
2, 16
4, 16
1, 2
1, 8
2, 8
4, 8
16, 17, 18, 19, 24, 25, 26, 27
1, 2, 8
2
10
12
17
18
20
24
10, 11
10, 14
12, 14
17, 19
18, 19
17, 25
24, 25
10, 26
18, 26
24, 26
12, 28
20, 28
24, 28
1
4
2
2
1
8
1
16
8
2
16
8
4
10, 11, 14, 15
10, 11, 26, 27
17, 19, 25, 27
18, 19, 26, 27
24, 25, 26, 27
1, 4
1, 16
2, 8
1, 8
1, 2
3
11
14
19
25
26
28
11, 15
14, 15
11, 27
19, 27
25, 27
26, 27
4
1
16
8
2
1
4
15
27
Неизбыточная система простых импликант:
-
(0, 4, 8, 12, 16, 20, 24, 28) – (4, 8, 16)
(16, 17, 18, 19, 24, 25, 26, 27) – (1, 2, 8)
(10, 11, 14, 15) – (1, 4)
Таким образом, получим МДНФ заданной функции:
f=.