Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций ОЛУ Часть1.doc
Скачиваний:
41
Добавлен:
09.11.2019
Размер:
978.94 Кб
Скачать

3. Методы минимизации булевых функций.

Методов минимизации существует достаточно много, но суть их сводится к построению различных алгоритмов, применяющих закон склеивания.

Рассмотрим два из подобных методов:

  1. Метод Квайна – Мак-Класки;

  2. Метод минимизации по картам Карно – Вейча.

3.1. Метод Квайна – Мак-Класки

Предназначен для получения тупиковых форм из совершенных. Реализуется в два этапа:

I Получение сокращенной формы их совершенной:

Совершенная

ДНФ

состоит из

конституент «1»

Сокращенная

ДНФ

состоит из

простых импликант

Совершенная

КНФ

состоит из

конституент «0»

Сокращенная

КНФ

состоит из

простых имплицент

Получаем простые импликанты (имплиценты) путем поэтапного понижения ранга (склеивания) исходных конъюнкций (дизъюнкций).

II Получение тупиковых форм из сокращенной:

Тупиковые формы определяем с помощью импликантной (или имплицентной для КНФ) таблицы как покрытие столбцов строками, где столбцы – конституенты 0 или 1, а строки – простые импликанты (или имплиценты).

Среди тупиковых форм определяем минимальную и кратчайшую.

Этот метод является хорошо формализованным, предназначенным для автоматизированной обработки и используется для функций с любым количеством переменных. Исходной формой для начала минимизации является совершенная форма.

Существуют модификации метода Квайна – Мак-Класки, в которых в качестве исходной формы может быть выбрана вместо совершенной произвольная нормальная форма. Тогда законы склеивания и меняют на полные законы склеивания

и

.

Такой модификацией рассмотренного метода является, например, метод Бейля. В остальном существенных различий нет.

3.2. Минимизация по картам Карно-Вейча

Другим известным методом минимизации считается метод минимизирующих карт Карно-Вейча, позволяющий сразу получать тупиковые формы.

Метод основан на представлении булевой функции в виде карты (таблицы), в которой каждой ячейке соответствует один входной набор переменных, причем любые две соседние ячейки имеют коды, отличающиеся значением только одного разряда, т.е. склеиваемые коды.

Покажем принцип построения минимизирующих карт.

x2

1 0

0 00

1 01

x1

0 1

x1

1 10

1 11

a) карта для булевой функции б) карта для булевой функции

от одной переменной от двух переменных

x2

x1

0

1

x1

x2

x3

f3

0

000

101

0

0

0

1

1

110

111

0

0

1

1

0

1

0

1

в) карта для булевой функции от двух переменных

0

1

1

0

1

0

0

1

1

0

1

0

1

1

0

1

1

1

1

0

x2x3

x1

x3

x2

00

01

11

10

0

1

0

0

1

x1

1

1

0

1

1

г) таблица истинности и карта для функции от трех переменных

Рис. 5

Для всех карт каждой ячейке соответствует входной набор переменных и значение функции на данном наборе. На рис.5 а и 5б значения переменных входных наборов показаны через покрытие ячеек переменными; в покрытой области xi=1, в непокрытой xi=0. На рисунке в указаны коды строк и столбцов, на рисунке г – обоими способами.

Вместо указания в каждой ячейка ее двоичного кода, можно указать его десятичное значение. Переменные, кодирующие строки карты можно использовать в качестве кодов столбцов и наоборот как на рис. 6.

х3х4

х1х2

00

01

11

10

х1х2

х3х4

00

01

11

10

00

0

1

3

2

00

0

4

12

8

01

4

5

7

6

01

1

5

13

9

11

12

13

15

14

11

3

7

15

11

10

8

9

11

10

10

2

6

14

10

Рис. 6. Карты с различным кодированием строк и столбцов.

Отличие этих двух карт в построчной или постолбцовой нумерации ячеек не меняет их основного принципа – соседнего кодирования ячеек.

Покажем применение карт для минимизации функции :

0

0

0

0

0

0

1

1

0

1

0

1

0

1

1

1

1

0

0

1

1

0

1

1

1

1

0

1

1

1

1

1

00

01

11

10

0

1

1

1

1

1

0

1

0

0

Рис. 7. Таблица истинности и карта Карно-Вейча для функции

Соседние ячейки, содержащие 1 (или 0)в количестве 2К, объединяются контурами прямоугольной или квадратной формы и описываются отдельными простыми импликантами для получения ТДНФ (или имплицентами – для ТКНФ).

Каждый контур должен охватывать максимально возможное количество ячеек с 1 (или 0). Контурами должны быть покрыты все 1 (или 0). При правильном выборе контуров тупиковая форма функции

Функция может быть задана перечислением десятичных эквивалентов ее значений. Для полностью определенных функций достаточно задать множество входных наборов, на которых функция равна только 1 или только 0.

или

1

1

1

0

1

1

0

0

задана конституентами 1, которыми и заполняется карта для . Все остальные наборы в полностью определенной функции можно не указывать, так как все они равны 0. После оклеивания по карте Карно-Вейча по 1 наборам получаем в форме ТДНФ. Те же рассуждения справедливы при получении ТКНФ для . и являются при этом одной и той же функцией = , заданной разными конституентами.

Пример 4. Минимизировать функцию .

Определим количество переменных функции . Так как – количество входных наборов функции от n – переменных, то , где К – самый большой десятичный эквивалент двоичного входного набора.

n=4, карта содержит ячеек.

1

1

1

1

1

1

1

1

ТДНФ:

При использовании метода Квайна-Мак-Класки возникает еще один промежуточный этап между совершенной и тупиковой формами. Это этап получения сокращенной формы. При автоматизированном способе минимизации он неизбежен. Покажем для последнего примера этот промежуточный этап на минимизирующей карте штриховыми контурами.

1

1

1

1

1

1

1

1

ДСНФ:

Как видно, эти контуры не являются обязательными для обеспечения покрытия всех 1 функции и при использовании метода Квайна-Мак-Класки удаляются посредством импликантной таблицы.