Национальный исследовательский ядерный университет «МИФИ»
Опубликован: 30.03.2005 | Доступ: свободный | Студентов: 6882 / 1893 | Оценка: 4.17 / 4.05 | Длительность: 09:46:00
ISBN: 978-5-9556-0040-6
Специальности: Разработчик аппаратуры
Лекция 3:

Совершенные дизъюнктивные и конъюнктивные нормальные формы ФАЛ

< Лекция 2 || Лекция 3: 123 || Лекция 4 >
Аннотация: В лекции дано определение совершенной дизъюнктивной и конъюнктивной нормальных форм. Представлены правила записи функции по нулям и единицам. Дано понятие функциональной полноты, поставлена задача минимизации функции. Сформулирована теорема Квайна.

Введем понятие степени:

Х^{\alpha }
\\
=Х, если \ \alpha =1; 
\\
=\overline Х, если \ \alpha = 0.

Рассмотрим конъюнкцию вида:

Х_{1}^{\alpha 1} * Х_{2}^{\alpha 2} * Х_{3}^{\alpha 3} \dots  Х_{n} ^{\alpha n}

Существует 2n наборов вида < \alpha _{1}, \alpha _{2}, \dots  \alpha _{n}   >. Поставим в соответствие каждой конъюнкции (*) номер набора i и образуем дизъюнкцию всех конъюнкций:

\vee _{i\in A}(Х_{1}^{\alpha 1} * Х_{2}^{\alpha 2} * Х_{3}^{\alpha 3} \dots  Х_{n}^{\alpha n} )

Теорема (без доказательства):

Любая ФАЛ, зависящая от ' n ' аргументов, может быть представлена в форме:

F(Х_{1}, Х_{2},\dots  Х_{i}\dots  Х_{n})=  \vee  Х_{1}^{\alpha 1} * Х_{2}^{\alpha 2}\dots  Х_{i}^{\alpha i}  F(\alpha _{1}, \alpha _{2}, \dots  \alpha _{i}, X_{i+1},\dots X_{n})

Из этой теоремы вытекает ряд важных следствий:

  1. Она дает возможность перейти от табличного задания функции к аналитической форме и сделать обратный переход.
  2. Устанавливает так называемую функциональную полноту связок (базиса) " \vee, \wedge, -", т.к. позволит построить в этом базисе произвольную ФАЛ от произвольного числа аргументов.

Примечание:

  1. Если i\ne n, то соответствующая форма функции называется дизъюнктивной нормальной (ДНФ).
  2. Если i=n, то каноническая форма функции носит название совершенной ДНФ (СДНФ). Дизъюнкции берутся по тем наборам, на которых функция f(X_{1},X_{2},...,X_{n})=1

Пример: ДНФ

f(Х_{1}, Х_{2}, Х_{3})= Х_{1} \vee  \overline Х_{2} Х_{3}  \vee \overline  Х_{1}Х_{2} Х_{3}

Пример: СДНФ

f(Х_{1}, Х_{2}, Х_{3})= \overline Х_{1}Х_{2} \overline Х_{3} \vee  Х_{1}Х_{2} Х_{3}

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

Аналогичная теорема справедлива и для представления функции в конъюнктивной нормальной форме (КНФ):

f(Х_{1}, Х_{2},\dots , Х_{n})=&( Х_{1}^{\alpha 1} \vee  Х_{2}^{\alpha 2} \vee \dots  \vee Х_{i}^{\alpha i}) f(\alpha _{1}, \alpha _{2}, \dots  \alpha _{i}, X_{i+1}\dots X_{n})

или при представлении в совершенной КНФ (СКНФ):

f(Х_{1}, Х_{2},…, Х_{n})=&( Х_{1}^{\alpha 1} \vee  Х_{2}^{\alpha 2} \vee   Х_{3}^{\alpha 3}\vee  \dots  \vee Х_{n}^{\alpha n})

где: & означает, что конъюнкции берутся по тем наборам, на которых

f(Х_{1}, Х_{2}, ... Х_{n})=0.

Дадим на основании этих теорем правило перехода от табличной формы функции к СДНФ и СКНФ.

Переход от табличной формы функции к СДНФ или правило записи функции по единицам:

  1. Выбрать те наборы аргументов, на которых f(Х_{1}, Х_{2}, ... Х_{n})=1.
  2. Выписать все конъюнкции для этих наборов. Если при этом Х_{i} имеет значение ' 1 ', то этот множитель пишется в прямом виде, если ' 0 ', то с отрицанием.
  3. Все конъюнктивные члены соединить знаком дизъюнкции \vee.

Пример:

f(Х_{1}, Х_{2})= \overline Х_{1}Х_{2} \vee  Х_{1} \overline Х_{2}\vee  Х_{1}Х_{2}

X_{1} Х_{2} f(Х_{1}, Х_{2})
0 0 0
0 1 1
1 0 1
1 1 1

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

  1. Выбрать те наборы аргументов, на которых f(Х_{1}, Х_{2}, ... Х_{n})=0.
  2. Если при этом Х_{i} имеет значение ' 0 ', то остается без изменений. Если ' 1 ', то с отрицанием.
  3. Все дизъюнктивные члены соединить знаком конъюнкции \wedge.

Пример:

f(Х_{1}, Х_{2})= (Х_{1} \vee  \overline Х_{2}) (\overline Х_{1} \vee  \overline Х\_{2} )

X_{1} Х_{2} f(Х_{1}, Х_{2})
0 0 1
0 1 0
1 0 1
1 1 0

Пример:

X_{1} Х_{2} Х_{3} f(Х_{1}, Х_{2}, Х_{3})
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 1
1 0 0 1
1 0 1 0
1 1 0 1
1 1 1 1

СДНФ f(Х_{1}, Х_{2}, Х_{3})= \overline Х_{1} \overline Х_{2}Х_{3} \vee \overline Х_{1}Х_{2}Х_{3} \vee  Х_{1}\overline Х_{2}\overline Х_{3} \vee  Х_{1}Х_{2}\overline Х_{3} \vee  Х_{1}Х_{2}Х_{3}

СКНФ f(Х_{1}, Х_{2}, Х_{3})= (Х_{1} \vee  Х_{2} \vee  Х_{3}) & (Х_{1} \vee  \overline Х_{2} \vee  Х_{3}) & (\overline Х_{1} \vee  Х_{2} \vee  \overline Х_{3})

Рассмотрим способ получения СДНФ из СКНФ и обратно.

Из таблицы 2.1 с помощью способа записи функции по нулям следует, что СКНФ той же функции дизъюнкции будет иметь вид:

f(Х_{1}, Х_{2})= Х_{1}\vee  Х_{2}

X_{1} Х_{2} f(Х_{1}, Х_{2})
0 0 0
0 1 1
1 0 1
1 1 1

Итак, имеем две формы одной и той же функции:

f(Х_{1}, Х_{2})= \overline Х_{1}Х_{2}\vee  Х_{1}\overline Х_{2}\vee  Х_{1}Х_{2} =Х_{1}\vee Х_{2}

Итак, видно, что общее число членов в этих двух формах равно сумме нулей и единиц функции, то есть равно 2n.

Если в исходной форме функции, записанной в СКНФ или СДНФ, содержится z членов, то в другой ее форме (т.е. СДНФ или СКНФ ) их будет (2n- z).

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

f(Х_{1}, Х_{2})= Х_{1}\vee  Х_{2}

f(Х_{1}, Х_{2})_{СДНФ}= \overline Х_{1}Х_{2}\vee  Х_{1}\overline Х_{2}\vee  Х_{1}Х_{2}

т.е. получили СДНФ.

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

< Лекция 2 || Лекция 3: 123 || Лекция 4 >
Людмила Долгих
Людмила Долгих

Здравствуйте. В первой лекции курса "Логические и арифметические основы и принципы работы ЭВМу вас приведена классическая структурная схема ЭВМ. Если можно уточните, а как в классической архитектуре могла реализоваться прямая работа устройств ввода-вывода с оперативной памятью?  Если я правильно понимаю - это режим прямого доступа к памяти, в классической архитектуре он не предусмотрен.

Анастасия Зыкина
Анастасия Зыкина

Примерно в апреле этого года в разделе "Зачетка" проходила курсы "Логические и арифметические основы и принципы работы ЭВМ", со спокойной душой отправилась на сессию и оказалось, что результатов не нашли! Как такое возможно? Можно ли найти результаты. Конечный экзамен был сдан на "4"!

Андрей Белов
Андрей Белов
Россия, г. Москва