Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций ДМ.doc
Скачиваний:
25
Добавлен:
16.11.2019
Размер:
3.29 Mб
Скачать

2.3.6 Методы минимизации логических функций

Большинство методов минимизации состоит из двух этапов:

1. получение сокращенных ДНФ, т.е. дизъюнкции простых импликант;

2. исключение лишних простых импликант, т.е. получение минимальных ДНФ.

Метод Квайна

Поиск сокращенной ДНФ основан на операциях:

  1. неполного склеивания: А хАх = А хАхА,

где А – любая элементарная конъюнкция;

2. поглощения: А A = A, где  {x,  x}.

Теорема Квайна: если в СДНФ логической функции произвести все операции неполного склеивания, а затем все операции поглощения, то получим сокращенную ДНФ.

{ Пример: минимизировать булевую функцию, заданную номерами конституент 1 – F (x1, x2,, x3, x4) =  (1, 3, 5, 7, 14, 15).

Первый этап.

Записываем СДНФ функции и одновременно нумеруем конституенты:

F = х1 х2 х3 х4   х1 х2 х3 х4   х1 х2 х3 х4   х1 х2 х3 х4

1 2 3 4

х1 х2 х3 х4 х1 х2 х3 х4

5 6

Проверяем склейки между конституентами и записываем то, что остается после склеек (импликанты):

1 – 2 :  х1 х2 х4 ; 2 – 3 : не клеятся; 3 – 5 : не клеятся;

1 – 3 :  х1 х3 х4 ; 2 – 4 :  х1 х3 х4 ; 3 – 6 : не клеятся;

1 – 4 : не клеятся; 2 – 5 : не клеятся; 4 – 5 : не клеятся;

1 – 5 : не клеятся; 2 – 6 : не клеятся; 4 – 6 : х2 х3 х4 ;

1 – 6 : не клеятся; 3 – 4 :  х1 х2 х4 ; 5 – 6 : х1 х2 х3.

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

F = х1 х2 х4   х1 х3 х4   х1 х3 х4   х1 х2 х4 х2 х3 х4 х1 х2 х3.

1 2 3 4 5 6

Проверяем склейки между импликантами:

1 – 2 : не клеятся; 2 – 3 :  х1 х4; 3 – 5 : не клеятся;

1 – 3 : не клеятся; 2 – 4 : не клеятся; 3 – 6 : не клеятся;

1 – 4 :  х1 х4; 2 – 5 : не клеятся; 4 – 5 : не клеятся;

1 – 5 : не клеятся; 2 – 6 : не клеятся; 4 – 6 : не клеятся ;

1 – 6 : не клеятся; 3 – 4 : не клеятся ; 5 – 6 : не клеятся.

Отсюда сокращенная ДНФ:

F = х1 х4 х2 х3 х4 х1 х2 х3.

Второй этап.

Производится по импликантной матрице Квайна. В строках ее - простые импликанты – составляющие сокращенной ДНФ, а в столбцах - конституенты единицы из СДНФ.

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

Таблица 2.12 – Импликантная матрица Квайна

простые

импликанты

конституенты единицы

х1 х2 х3 х4

х1 х2 х3 х4

х1 х2 х3 х4

х1 х2 х3 х4

х1 х2 х3 х4

х1 х2 х3 х4

х1 х4

х2 х3 х4

х1 х2 х3

На пересечении строки импликанты, которая поглощает данную конститенту, с соответствующим конституенте столбцом, ставим .

Число крестиков в каждой строке определяется по соотношению:

2 nk, где:

n – количество аргументов в конституенте единицы,

k – количество аргументов в простой импликанте.

Импликанты, которые в единственном числе поглощают конституенту единицы, являются базисными импликантами. Они образуют ядро булевой функции и должны обязательно войти в минимальную ДНФ.

Отсюда наша минимальная ДНФ выглядит таким образом:

F = х1 х4 х1 х2 х3. }

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

Мак-Класки формализовал метод минимизации Квайна на первом этапе – этапе нахождения простых импликант. Алгоритм метода следующий:

  1. Все конституенты единицы из СДНФ булевой функции записываются их двоичными номерами.

  2. Эти номера разбиваются на непересекающиеся группы по числу единиц, имеющихся в их двоичной записи: в i – й группе будут номера i – м числом единиц.

  3. Производится склеивание между номерами по следующим правилам:

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

  • склеиваемые номера отмечаются (зачеркиваются);

  • каждый номер может участвовать в склейке произвольное число раз;

  • выпадающие разряды заменяются прочерками.

  1. Со всех групп выбираем импликанты, оставшиеся после склейки. Они и образуют сокращенную ДНФ.

Второй этап – нахождение минимальной ДНФ производится по импликантной матрице Квайна.

{ Пример: минимизировать следующую логическую функцию:

F (x1, x2,, x3, x4) =  (1, 4, 5, 6, 7, 8, 9, 12, 13).

Первый этап

  1. Записываем номера конституент единицы: 0001, 0100, 0101, 0110, 0111, 1000, 1001, 1100, 1101.

  2. Группируем их по числу единиц:

Таблица 2.13 – Группы номеров по числу единиц

0001, 0100, 1000

0101, 0110, 1001, 1100

0111, 1101

3. Производим склейки номеров. Результат заносим в новую таблицу:

Таблица 2.14 – Первая склейка номеров

0001, 0100, 1000

0101, 0110, 1001, 1100

0111, 1101

Таблица 2.15 – Результаты первой склейки

0_01, _001, 100_, 1_00, 010_, 01_0, _100

1_10, _101, 011_, 1_01, 110_

4. Склеиваем номера соседних групп в таблице II.13.4. Результат заносим в новую таблицу. Склейке подлежат номера, в которых имеется прочерк в одном и том же разряде.

Таблица 2.16 – Вторая склейка

0_01, _001, 100_, 1_00, 010_, 01_0, _100

1_10, _101, 011_, 1_01, 110_

Таблица 2.17 – Результаты второй склейки

_ _ 01, _ _ 01, 1_0_, 1_0_, 01_ _, 01_ _ , _10_, _10_

5. Со всех таблиц выбираем импликанты, которые не участвовали в склейках и все, что осталось после склеек. Убираем повторяющиеся импликанты.

6. Записываем сокращенную ДНФ:

F = х3 х4 х1 х3   х1 х2 х2 х3 .

Второй этап

Нахождение минимальной ДНФ производим по импликантной матрице Квайна.

Таблица 2.18 – Импликантная матрица Квайна

0001

0100

0101

0110

0111

1000

1 001

1100

1101

_ _01

1_0_

01_ _

_10_

Т.о. простая импликанта х2 х3 - лишняя.

Отсюда минимальная ДНФ нашей функции:

F = х3 х4 х1 х3   х1 х2. }

Метод Петрика

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

Алгоритм метода:

  1. Все простые импликанты обозначаются буквами.

  2. Для каждого i – го столбца матрицы строится дизъюнкция всех букв, обозначающих строки матрицы, пересечение которых с i – м столбцом отмечено .

  3. Конъюнкция построенных дизъюнкций для всех столбцов матрицы и есть конъюнктивное представление импликантной матрицы.

  4. К данному выражению можно применять все законы булевой алгебры с целью его упрощения. После раскрытия скобок и всех возможных поглощений получаем дизъюнкцию конъюнкций, каждая из которых содержит все импликанты тупиковой ДНФ.

{ Пример: Имеем после первого этапа минимизации следующую импликантную матрицу (смотри метод Квайна – Мак-Класки):

Таблица 2.19 – Импликантная матрица

х1 х2 х3 х4

х1 х2 х3 х4

х1 х2 х3 х4

х1 х2 х3 х4

х1 х2 х3 х4

х1 х2 х3 х4

х1 х2 х3 х4

х1 х2 х3 х4

х1 х2 х3 х4

х3 х4 = A

х1 х3 = B

х1 х2 = C

х2 х3 = D

F

A

C D

A C D

C

C

B

A B

B D

A B D

Отсюда конъюнктивное представление импликантной матрицы:

F = A (C D) (A C D) C C B (A B) (B D) (A B D).

После раскрытия скобок и поглощений получаем минимальную ДНФ:

F = A C B = х3 х4   х1 х2 х1 х3 }

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

Алгоритм минимизации следующий:

  1. Строится множество элементарных конъюнкций минимизируемой системы функций с приписыванием каждой конституенте единицы признака (номера) вхождения в i – ю функцию.

  2. Составляется новая СДНФ из этих конъюнкций.

  3. Производится ее минимизация с учетом признаков вхождения. Строится импликантная матрица функции с признаками вхождения: для каждой конституенты единицы отводится столько столбцов, сколько различных номеров функций содержит признак вхождения конституенты. Заполнение матрицы аналогично методу Квайна.

  4. Выделяем для функции Fi импликанты с признаками i. Получаем минимальную ДНФ системы логических функций.

{Пример: Имеем функцию, заданную таблицей истинности:

Таблица 2.20 – Таблица истинности системы двух функций трех переменных

x1

x2

x3

F1

F2

0

0

0

1

1

0

0

1

0

0

0

1

0

0

1

0

1

1

0

1

1

0

0

0

0

1

0

1

1

1

1

1

0

1

0

1

1

1

1

0

СДНФ функций:

F1 = x1 x2 x3 x1 x2 x3 x1 x2 x3 x1 x2 x3 ,

F2 = x1 x2 x3   x1 x2 x3   x1 x2 x3 x1 x2 x3 .

1. Множество элементарных конъюнкций с их признаками вхождения:

x1 x2 x3 (1, 2); x1 x2 x3 (1, 2); x1 x2 x3 (1);

x1 x2 x3 (1);  x1 x2 x3 (2);  x1 x2 x3 (2).

2. Составляем новую СДНФ и проверяем склейки:

1 2 3 4

= x1 x2 x3 (1, 2)  x1 x2 x3 (1, 2)  x1 x2 x3 (1)  x1 x2 x3 (1) 

5 6

  x1 x2 x3 (2)   x1 x2 x3 (2).

1 – 2 : не клеятся; 2 – 3 : не клеятся; 3 – 5 : не клеятся;

1 – 3 : не клеятся; 2 – 4 : х1 х3 (1) ; 3 – 6 : не клеятся;

1 – 4 : не клеятся; 2 – 5 : не клеятся; 4 – 5 : не клеятся;

1 – 5 :  х1 х3 (2); 2 – 6 : не клеятся; 4 – 6 : не клеятся ;

1 – 6 : не клеятся; 3 – 4 : х1 х2 (1) ; 5 – 6 :  х1 х2 (2).

Сокращенная ДНФ системы функций будет:

= x1 x2 x3 (1, 2)  x1 x2 x3 (1, 2)  x1 x2 (1)  x1 x3 (1) 

  • x1 x3 (2)   x1 x2 (2).

3. Импликантная матрица будет слудующей:

Таблица 2.21 – Импликантная матрица системы двух функций

x1 x2 x3

x1 x2 x3

x1 x2 x3

x1 x2 x3

x1 x2 x3

x1 x2 x3

1

2

2

2

1

2

1

1

x1 x3 (2)

x1 x3 (1)

x1 x2 (1)

x1 x2 (2)

x1 x2 x3 (1, 2)

x1 x2 x3 (1, 2)

Таким образом минимальная ДНФ:

= x1 x2 x3 (1, 2)  x1 x2 x3 (1, 2)  x1 x2 (1)   x1 x2 (2).

  1. Минимальные ДНФ системы функций:

F 1 = x1 x2 x3 x1 x2 x3 x1 x2 ,

F2 = x1 x2 x3   x1 x2 x1 x2 x3 .

Метод карт Карно (диаграммы Вейча)

Карта Карно – матричная форма представления булевых функций, заданной в СДНФ или СКНФ. Выглядят как развертка куба на площади. Аргументы записываются в таком порядке, чтобы соседние отличались не более, чем в одном разряде. В этом случае склейке подлежат наборы, для которых единицы (нули) располагаются в соседних клетках матрицы. Причем это должны быть прямоугольные конфигурации единиц (нулей), содержащие число клеток, равное целой степени 2.

Получающееся элементарное произведение (дизъюнкции для СКНФ) определяется как произведение переменных, не меняющих своего значения на всех склеиваемых наборах.

Минимизация функции трех переменных

Таблица 2.22 – Карта Карно для трех переменных

x 1 \ x2 x3

00

01

11

10

0

1

1

1

1

1

x2 x3 x1 x3

Таким образом минимальная ДНФ: F = x2 x3   x1 x3.

Минимизация функции четырех переменных

Таблица 2.23 – Карта Карно 1 для четырех переменных

x1 x2\ x3 x4

00

01

11

10

00

1

1

01

1

1

11

1

1

1 0

1

1

x1 x2 x4 x2 x4

x1 x3 x4 х2 x3 x4

Таблица 2.24 – Карта Карно 2 для четырех переменных

x 1 x2\ x3 x4

00

01

1 1

10

0 0

1

1

01

1

1

11

1

1

10

1

1

x2 x4 x2 x4

Т аблица 10.15. – Карта Карно 3 для четырех переменных

x1 x2\ x3 x4

0 0

01

11

10

00

1

1

1

01

1

1

1

11

1

1

1

10

1

1

1

x1 x4

Минимизация функции пяти переменных

Строятся две карты Карно для четырех переменных: одна для х5 = 0, а вторая для х5 = 1. Используется метод наложения: по пятой переменной производится склейка в том случае, если при наложении одной карты на другую группы единиц совпадают.

Пример: дана логическая функция пяти переменных.

Таблица 2.26 – Карта Карно для пяти переменных

x1 x2\ x3 x4

00

01

11

10

x1 x2\ x3 x4

00

01

11

10

00

00

01

1

01

1

11

1

1

1

11

1

10

1

1

10

х5 = 0 х5 = 1

х1х3 х5 х2 х3 х4

Получили минимальную ДНФ: F = х1х3 х5 х2 х3 х4.

Минимизация КНФ

По аналогии с ДНФ производится в два этапа:

  • нахождение сокращенной КНФ – конъюнкции всех простых имплициент;

  • нахождение минимальной КНФ – удаление лишних простых имплициент.

Поиск сокращенной КНФ основан на операциях:

  1. неполного склеивания: (Ах ) (А   х ) = (Ах ) (А   х ) А,

где А – любая элементарная дизъюнкция;

2. поглощения: (А ) A = A, где  {x,  x}.

Пример: Дана функция трех переменных:

Таблица 2.27 – Логическая функция трех переменных

х1

х2

х3

F

0

0

0

0

0

0

1

1

0

1

0

0

0

1

1

0

1

0

0

1

1

0

1

1

1

1

0

1

1

1

1

1

СКНФ: F = (x1 x2 x3) (x1   x2 x3) (x1   x2   x3).

После склеек и поглощений имеем: F = (x1x3) (x1   x2 ).

То же по картам Карно:

Таблица 2.28 – Минимизация КНФ по карте Карно

x 1 \ x2 x3

00

01

11

10

0

0

0

0

1

x1   x2 x1x3

Возможен другой подход к минимизации КНФ. Записывают как бы СДНФ для нулевых значений функции и получают инверсную функцию:

F = x1 x2 x3   x1 x2 x3   x1 x2 x3.

После склеек и поглощений получаем:

F = x1 x3   x1 x2 .

Откуда: F = ( x1 x3   x1 x2) = ( x1 x3)  ( x1 x2) = (x1x3) (x1   x2 ).