Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
GED / DM3.DOC
Скачиваний:
111
Добавлен:
11.05.2015
Размер:
2.46 Mб
Скачать

Минимизация булевых функций

Импликантой функции f (x1, . . . ,xn) называется такая элементарная конъюнкция К над множеством переменных { x1, . . . ,xn }, что К  f (x1, . . . ,xn) = f (x1, . . . ,xn). Импликанта называется простой, если при отбрасывании любой буквы из К получается элементарная конъюнкция , не являющаяся импликантой функции f. Дизъюнкция всех простых импликант функции f называется сокращенной ДНФ функции f.

Дизъюнктивная нормальная форма называется:

минимальной, если она имеет наименьшее число букв среди всех эквивалентных ей ДНФ;

кратчайшей, если она имеет наименьшую длину среди всех эквивалентных ей ДНФ;

тупиковой, Если отбрасывание любого слагаемого или буквы приводит к неэквивалентной ДНФ.

Тупиковая ДНФ функции f (x1, . . . ,xn) получается из сокращенной ДНФ этой функции путем отбрасывания некоторых элементарных конъюнкций. Среди тупиковых ДНФ ищется минимальная и кратчайшая ДНФ функции.

Существует несколько методов получения сокращенной ДНФ (получения простых импликант).

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

a b  a  = а , (a  b)  (a  ) = а;

1. Просматриваем поочередно пары конъюнкций, если возможно – производим склеивание и результат записываем отдельно. Пары, участвовавшие в склеивании, помечаем.

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

3. Если не было элементарных конъюнкций, которые можно было склеивать, то алгоритм закончен. В противном случае переходим к пункту1.

Пример.

Пусть задана функция F(x1,x2,x3,x4) = x1 x2 x3 x4x1 x2 ¬x3 x4x1 x2¬x3¬x4x1 ¬x2¬x3 x4¬x1¬x2 x3¬x4¬x1x2 x3¬x4x1 x2x3¬x4x1¬ x2x3¬ x4

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

F(x1,x2,x3,x4) = x1 x2 x4x1 x2 x3 x1 x2 ¬x3  x1 ¬x3 x4x1 x2 ¬ x4 ¬x1 x3¬x4¬x2 x3¬x4x2 x3¬x4x1 x3¬x4

Все конъюнкции исходной функции участвовали в склеивании.

Произведем склеивание еще раз. Конъюнкция x1 ¬x3 x4 в склеивании не участвовала, поэтому записываем ее в результат.

F(x1,x2,x3,x4) = x1 x2  x3¬x4 x1 ¬x3 x4

Метод Блейка.

Метод Блейка позволяет получить сокращенную ДНФ из произвольной ДНФ и состоит в применении правил обобщенного склеивания ( xK1  ¬xK2 = xK1  ¬xK2  K1K2 ) и поглощения (K1 K1K2 = K1).

На первом этапе производятся операции обобщенного склеивания до тех пор пока это возможно. На втором – операции поглощения.

Пример.

Получить сокращенную ДНФ для функции

F( x1,x2,x3) = x1 x2  ¬ x1x3 ¬x2 x3

После первого этапа получим:

F( x1,x2,x3) = x1 x2  ¬ x1x3 x2 x3 ¬x2 x3  x1x3 x3

После второго:

F( x1,x2,x3) = x1 x2  x3

Если функция задана в КНФ, для получения сокращенной ДНФ нужно сначала раскрыть скобки, пользуясь законом дистрибутивности, затем из полученной ДНФ вычеркнуть буквы и слагаемые, используя законы: ¬ x1x1 =0, x1x1 = x1, x1x1 = x1, K1 K1K2 = K1 .

Для небольших значений n сокращенную ДНФ функции f (x1, . . . ,xn) можно находить с помощью карт Карно. Объединяя клетки соответствующие единичным значениям функции f , в максимальные интервалы, и сопоставляя им элементарные конъюнкции, получим сокращенную ДНФ.

Рассмотрим на примере функции от четырех переменных объединение в максимальные интервалы.

Пусть функция принимает единичное значение на всех наборах переменных. Функция тождественно равна единице.

При объединении необходимо придерживаться правил:

  • в объединение включаются только клетки «зеркально» симметричные относительно какой-либо их осей;

  • количество клеток соответствует степени 2 (2,4, 8, 16, . . .).

В первом случае результат объединения равен x1 , во втором - x2

x1

x2

x3

x4

x1

x2

x3

x4


x1

x2

x3

x4

x1

x2

x3

x4


Результат - ¬ x4 ¬ x2¬x4

x1

x2

x3

x4

x1

x2

x3

x4


x2¬x4 x2¬x3

x1

x2

x3

x4

x1

x2

x3

x4


¬x1¬x2¬x3 x1x2x4

Пусть задана функция от пяти переменных.

F(x1,x2,x3,x4,x5) = x3¬x4x5  ¬x1x2¬x3¬x4  ¬x1x2¬x4¬x5  x1¬x4¬x5  x1x2 ¬x3x4  x1x2 ¬x4x5  ¬x1¬ x2x3¬x4¬ x5

x1

x2

x3

x4

x5

Заданная функция отображена на карте Карно. Получим следующие интервалы: x2¬x4 (показан заштрихованной областью).

Интервал x3¬x4 показан ниже вертикальными полосами. Ниже представлены еще два интервала x1¬x4¬x5 , x1x2¬x3 .

x1

x2

x3

x4

x5

В результате сокращенная функция эквивалентная исходной запишется: F(x1,x2,x3,x4,x5) = x2¬x4  x3¬x4  x1¬x4¬x5  x1x2¬x3

x1

x2

x3

x4

x5


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

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

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

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

Выбор осуществляется до тех пор, пока все столбцы не будут покрыты.

Пример

Пусть задана функция:

F(x1,x2,x3,x4) = x1 x3  x2x3  x1 x2  ¬x1 ¬x2x4  ¬x2 x3x4  x1 x3x4

Найдем все полные конъюнкции и перенумеруем их/

x1x3

1

¬x1x2x3x4

2

¬x1x2x3¬x4

3

¬x1¬x2x3x4

4

¬x1¬x2x3¬x4

x2x3

5

x1x2x3x4

6

x1x2x3¬x4

1

¬x1x2x3x4

2

¬x1x2x3¬x4


x1x2

5

x1x2x3x4

6

x1x2x3¬x4

7

x1x2¬x3x4

8

x1x2¬x3¬x4


¬x1¬x2x4

3

¬x1¬x2x3x4

9

¬x1¬x2¬x3x4


¬x2 x3x4

10

x1¬x2x3x4

3

¬x1¬x2x3x4

x1 x3x4

5

x1x2x3x4

10

x1¬x2x3x4


Построим булеву матрицу.

1

2

3

4

5

6

7

8

9

10

x1 x3

1

1

1

1

x2x3

1

1

1

1

x1x2

1

1

1

1

¬x1¬x2x4

1

1

¬x2 x3x4

1

1

x1 x3x4

1

1

2

2

3

1

3

2

1

1

1

2

В покрытие обязательно войдет четвертый столбец и импликанта x1 x3 . Удалим первую строку и с первого по пятый столбцы. В результате получим матрицу:

5

6

7

8

9

10

x2x3

1

1

x1x2

1

1

1

1

¬x1¬x2x4

1

¬x2 x3x4

1

x1 x3x4

1

1

3

2

1

1

1

2

В оставшейся части матрицы выберем 7 столбец и импликату x1x2 . Удалим выбранную строку и столбцы с 5 по 8. В полученной матрице выберем 9 столбец.

9

10

x2x3

¬x1¬x2x4

1

¬x2 x3x4

1

x1 x3x4

1

1

2

¬x1¬x2x4. В оставшейся части можно выбрать любую из строк.

В покрытие войдут импликанты:

x1 x3  x1x2  ¬x1¬x2x4  x1 x3x4

Полученное решение и есть минимальная ДНФ.

10

x2x3

¬x2 x3x4

1

x1 x3x4

1

2


Соседние файлы в папке GED