Вопрос 24

СКНФ (Совершенная Конъюнктивная Нормальная Форма) — это такая КНФ, которая удовлетворяет трём условиям:

Карта Карно́ — графический способ минимизации переключательных (булевых) функций, обеспечивающий относительную простоту работы с большими выражениями и устранение потенциальных гонок. Представляет собой операции попарного неполного склеивания и элементарного поглощения. Карты Карно рассматриваются как перестроенная соответствующим образом таблица истинности функции. Карты Карно можно рассматривать как определенную плоскую развертку n-мерного булева куба.
Карты Карно были изобретены в 1952 Эдвардом В. Вейчем и усовершенствованы в 1953 Морисом Карно, физиком из «Bell Labs», и были призваны помочь упростить цифровые электронные схемы.
В карту Карно булевы переменные передаются из таблицы истинности и упорядочиваются с помощью кода Грея, в котором каждое следующее число отличается от предыдущего только одним разрядом.
Принципы минимизации
Основным методом минимизации логических функций, представленных в виде СДНФ или СКНФ, является операция попарного неполного склеивания и элементарного поглощения. Операция попарного склеивания осуществляется между двумя термами (членами), содержащими одинаковые переменные, вхождения которых (прямые и инверсные) совпадают для всех переменных, кроме одной. В этом случае все переменные, кроме одной, можно вынести за скобки, а оставшиеся в скобках прямое и инверсное вхождение одной переменной подвергнуть склейке. Например:
Описание: \overline {X}_1X_2X_3X_4  \vee \overline{X}_1X_2\overline{X}_3X_4 = \overline {X}_1X_2X_4 (X_3 \vee \overline{X}_3) = \overline {X}_1X_2X_4.
Аналогично для КНФ:
Описание: (\overline {X}_1\vee X_2\vee X_3\vee X_4) (\overline {X}_1\vee X_2\vee \overline{X}_3\vee X_4) = \overline {X}_1\vee X_2\vee X_4\vee X_3\overline {X}_3 =  \overline {X}_1\vee X_2\vee X_4.
Возможность поглощения следует из очевидных равенств
Описание: A \vee \overline{A} = 1; A\overline{A} = 0.
Таким образом, главной задачей при минимизации СДНФ и СКНФ является поиск термов, пригодных к склейке с последующим поглощением, что для больших форм может оказаться достаточно сложной задачей. Карты Карно предоставляют наглядный способ отыскания таких термов.
Как известно, булевы функции N переменных, представленные в виде СДНФ или СКНФ, могут иметь в своём составе 2N различных термов. Все эти члены составляют некоторую структуру, топологически эквивалентную N–мерному кубу, причём любые два терма, соединённые ребром, пригодны для склейки и поглощения.
На рисунке изображена простая таблица истинности для функции из двух переменных, соответствующий этой таблице 2-мерный куб (квадрат), а также 2-мерный куб с обозначением членов СДНФ и эквивалентная таблица для группировки термов:
Описание: Karnaugh map 01.gif
В случае функции трёх переменных приходится иметь дело с трёхмерным кубом. Это сложнее и менее наглядно, но технически возможно. На рисунке в качестве примера показана таблица истинности для булевой функции трёх переменных и соответствующий ей куб.
Описание: Karnaugh map 02.gif
Как видно из рисунка, для трёхмерного случая возможны более сложные конфигурации термов. Например, четыре терма, принадлежащие одной грани куба, объединяются в один терм с поглощением двух переменных:
Описание: \overline {X}_1\overline {X}_2\overline {X}_3 \vee X_1\overline {X}_2\overline {X}_3 \vee \overline {X}_1\overline {X}_2X_3 \vee X_1\overline {X}_2X_3 =Описание: \overline {X}_2 (\overline {X}_1\overline{X}_3 \vee \overline {X}_1X_3 \vee X_1\overline {X}_3 \vee X_1X_3) = \overline {X}_2 (\overline {X}_1 \vee X_1)(\overline {X}_3 \vee X_3) = \overline {X}_2
В общем случае можно сказать, что 2K термов, принадлежащие одной K–мерной грани гиперкуба, склеиваются в один терм, при этом поглощаются K переменных.
Для упрощения работы с булевыми функциями большого числа переменных был предложен следующий удобный приём. Куб, представляющий собой структуру термов, разворачивается на плоскость как показано на рисунке. Таким образом появляется возможность представлять булевы функции с числом переменных больше двух в виде плоской таблицы. При этом следует помнить, что порядок кодов термов в таблице (00 01 11 10) не соответствует порядку следования двоичных чисел, а клетки, находящиеся в крайних столбцах таблицы, соседствуют между собой.
Описание: Karnaugh map 03.gif
Аналогичным образом можно работать с функциями четырёх, пяти и более переменных. Примеры таблиц для N=4 и N=5 приведены на рисунке. Для этих таблиц следует помнить, что соседними являются клетки, находящиеся в соответственных клетках крайних столбцов и соответственных клетках верхней и нижней строки. Для таблиц 5 и более переменных нужно учитывать также, что квадраты 4х4 виртуально находятся друг над другом в третьем измерении, поэтому соответственные клетки двух соседних квадратов 4х4 являются сосоедними, и соответствующие им термы можно склеивать.
Описание: Karnaugh map 04.gif
Описание
Карта Карно может быть составлена для любого количества переменных, однако удобно работать при количестве переменных не более пяти. По сути Карта Карно — это таблица истинности составленная в 2-х мерном виде. Благодаря использованию кода Грея в ней верхняя строка является соседней с нижней, а правый столбец соседний с левым, т.о. вся Карта Карно сворачивается в фигуру тор (бублик). На пересечении строки и столбца проставляется соответствующее значение из таблицы истинности. После того как Карта заполнена, можно приступать к минимизации.
Если необходимо получить минимальную ДНФ, то в Карте рассматриваем только те клетки которые содержат единицы, если нужна КНФ, то рассматриваем те клетки, которые содержат нули. Сама минимизация производится по следующим правилам (на примере ДНФ):

  1. объединяем смежных клеток, содержащих единицы, в область так, чтобы одна область содержала 2n (n целое число = 0…Описание: \infty) клеток(помним про то, что крайние строки и столбцы являются соседними между собой), в области не должно находиться клеток, содержащих нули;
  2. область должна располагаться симметрично оси(ей) (оси располагаются через каждые четыре клетки);
  3. не смежные области, расположенные симметрично оси(ей), могут объединяться в одну;
  4. область должна быть как можно больше, а количество областей как можно меньше;
  5. области могут пересекаться;
  6. возможно несколько вариантов накрытия.

Далее берём первую область и смотрим какие переменные не меняются в пределах этой области, выписываем конъюнкцию этих переменных, если неменяющаяся переменная нулевая, проставляем над ней инверсию. Берём следующую область, выполняем то же самое что и для первой, и т. д. для всех областей. Конъюнкции областей объединяем дизъюнкцией.
Например(для Карт на 2-ве переменные):


Описание: Karnough map 2 1 1.PNG

Описание: Karnough map 2 1 2.PNG

Описание: Karnough map 2 1 3.PNG

Описание: Karnough map 2 1 4.PNG

Описание: Karnough map 2 1 5.PNG

Описание: Karnough map 2 1 6.PNG

Описание: Karnough map 2 1 7.PNG

Описание: Karnough map 2 1 8.PNG

Описание: \overline{X1}\ \overline{X2}

Описание: \overline{X1}\ X2

Описание: X1\ X2\

Описание: X1\ \overline{X2}

Описание: \overline{X2}

Описание: \overline{X1}

Описание: {X2}\

Описание: {X1}\

Описание: Karnough map 2 1 9.PNG

Описание: Karnough map 2 1 10.PNG

Описание: Karnough map 2 1 11.PNG

Описание: Karnough map 2 1 12.PNG

Описание: Karnough map 2 1 13.PNG

Описание: Karnough map 2 1 14.PNG

Описание: S1\vee S2 =

Описание: S1\vee S2 =

Описание: S1\vee S2 =

Описание: S1\vee S2 =

Описание: S1\vee S2 =

Описание: S1\vee S2 =

Описание: =X1X2\vee

Описание: =X1\overline{X2}\vee

Описание: =X2\vee X1

Описание: =X1\vee\overline{X2}

Описание: =\overline{X1}\vee\overline{X2}

Описание: =X2\vee \overline{X1}

Описание: \vee\overline{X1}\ \overline{X2}

Описание: \vee\overline{X1}X2

Для КНФ всё то же самое, только рассматриваем клетки с нулями, не меняющиеся переменные в пределах одной области объединяем в дизъюнкции (инверсии проставляем над единичными переменными), а дизъюнкции областей объединяем в конъюнкцию. На этом минимизация считается законченной. Так для Карты Карно на рис.1 выражение в формате ДНФ будет иметь вид: Описание: f(X1,X2,X3,X4)=S1\vee S2\vee S3=\overline{X1}\ \overline{X4}\vee X1X2X4\vee \overline{X2}\ \overline{X4}
В формате КНФ:
Описание: f(X1,X2,X3,X4)=(S1)(S2)(S3)=(X1\vee \overline{X4})(X2\vee \overline{X4})(\overline{X1}\vee \overline{X2} \vee X4)
Так же из ДНФ в КНФ и обратно можно перейти использовав Законы де Моргана.


На Главную

Hosted by uCoz