Логические функции играют ключевую роль в математике, информатике и инженерии, позволяя моделировать и анализировать сложные системы с помощью простых логических операций. В этой статье мы рассмотрим основные формы представления логических функций, такие как дизъюнктивная нормальная форма (ДНФ), конъюнктивная нормальная форма (КНФ), совершенная дизъюнктивная нормальная форма (СДНФ) и совершенная конъюнктивная нормальная форма (СКНФ). Эти формы позволяют не только упростить анализ логических выражений, но и оптимизировать их для практического применения. Мы подробно разберем, как привести логические функции к этим формам, используя законы алгебры логики и таблицы истинности. Понимание этих методов поможет вам эффективно работать с логическими выражениями и применять их в различных областях, от разработки алгоритмов до проектирования цифровых схем.
Введение в формы представления логических функций
Формула алгебры логики — это выражение, составленное из переменных и логических операций, применённых к ним. Эти переменные могут принимать различные истинностные значения (1 или 0), что влияет на истинностное значение всей формулы. Таким образом, значение формулы зависит от значений её составных переменных и от выбранной логической структуры, определяемой применяемыми операциями.
Пусть
— булева переменная. Введем обозначение:
![Rendered by QuickLaTeX.com \[ x^{\sigma} = \begin{cases} x, & \text{если } \sigma = 1, \\ \overline{x}, & \text{если } \sigma = 0, \end{cases} \]](https://ischanow.com/wp-content/ql-cache/quicklatex.com-555bc52d7370b3386360ed384bdb1b61_l3.png)
где параметр
.
Пусть
— булевы переменные, тогда формулы алгебры логики
![]()
где
,
называются соответственно элементарной конъюнкцией и элементарной дизъюнкцией на множестве булевых переменных
.
Число логических множителей в элементарной конъюнкции и логических слагаемых в элементарной дизъюнкции называется рангом элементарной конъюнкции и элементарной дизъюнкции соответственно. Считается, что константа 1 — элементарная конъюнкция нулевого ранга, константа 0 — элементарная дизъюнкция нулевого ранга.
Для удобства визуального восприятия можно заменить значок конъюнкции на логическое умножение: «
».
Например,
— элементарная конъюнкция 3-го ранга;
— элементарная дизъюнкция 2-го ранга.
Формы представления логических функций
Логические функции могут быть представлены в различных формах, которые обеспечивают различные способы анализа и использования. Ниже представлены основные формы представления логических функций:
- дизъюнктивная нормальная форма (ДНФ);
- конъюнктивная нормальная форма (КНФ);
- совершенная дизъюнктивная нормальная форма (СДНФ);
- совершенная конъюнктивная нормальная форма (СКНФ).
Для однозначного представления булевых функций используются ДНФ и КНФ.
Дизъюнктивная нормальная форма (ДНФ)
Дизъюнктивная нормальная форма (ДНФ) — это форма представления логической функции, в которой функция представлена в виде дизъюнкции конъюнкций переменных или их отрицаний; это произвольная дизъюнкция различных элементарных конъюнкций.
ДНФ для логической функции
— это логическое выражение вида:
![]()
где каждый
представляет собой конъюнкцию переменных
или их отрицаний.
Например, формы
,
,
,
— дизъюнктивные нормальные формы, а
— нет.
Всякая логическая функция, отличная от константы 0, может быть сведена к ДНФ.
Для получения ДНФ необходимо:
- записать булеву функцию в виде
; - с помощью законов де Моргана
;
освободиться от общих отрицаний (знак отрицания должен стоять над отдельными переменными), если есть необходимость, то воспользоваться законом двойного отрицания
; - с помощью закона дистрибутивности
раскрываются все скобки и проводится поглощение.
Полученная форма удовлетворяет определению ДНФ.
Пример. С помощью эквивалентных преобразований привести к ДНФ формулу
.
Решение.
![]()
Представление булевой функции в виде ДНФ неоднозначно. Например, для функции
, кроме представленной выше, будут равносильные между собой следующие ДНФ:
;
.
Совершенная дизъюнктивная нормальная форма (СДНФ)
Если ДНФ функции
от
переменных в каждой своей конъюнкции содержит все
переменных или их отрицания, то это совершенная дизъюнктивная нормальная форма (СДНФ).
Каждая функция имеет одну единственную СДНФ, которая может быть получена двумя способами: с помощью аналитического вывода, основанного на анализе структуры функции и поиске оптимальных способов представления её в виде дизъюнкций или путем составления таблицы истинности и последующего выведения СДНФ из неё.
Для получения СДНФ из таблицы истинности данной функции необходимо записать дизъюнкцию (логическое сложение) всех наборов переменных, на которых эта функция определена как истинная.
Каждый такой набор переменных соответствует конъюнкции, причем если переменная
, то
входит в нее без отрицания, если
, то
входит в нее с отрицанием
:
![]()
где дизъюнктивная сумма берется по всем наборам
, для которых
;
при
и
при
;
.
Построим СДНФ для функции
по таблице истинности.
| 0 | 0 | 0 | 1 | 1 |
| 0 | 0 | 1 | 1 | 1 |
| 0 | 1 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 | 1 |
| 1 | 0 | 0 | 0 | 0 |
| 1 | 0 | 1 | 0 | 1 |
| 1 | 1 | 0 | 0 | 0 |
| 1 | 1 | 1 | 0 | 1 |
СДНФ(F) =
=
![]()
Аналитический вывод для СДНФ состоит из четырех шагов:
- привести функцию к виду ДНФ;
- каждую конъюнкцию, где меньше чем
переменных, умножить на
; - раскрыть скобки с помощью закона дистрибутивности;
- по закону идемпотентности убрать лишнее.
Для функции
аналитический вывод выглядит следующим образом:
![]()
![]()
![]()
![]()
![]()
Обратите внимание: для константы 0 не существует СДНФ, так как нет ни одного набора переменных, на котором она была бы определена, как истинная.
Конъюнктивная нормальная форма (КНФ)
Конъюнктивная нормальная форма (КНФ) — это форма представления логической функции, в которой функция представлена в виде конъюнкции дизъюнкций переменных или их отрицаний; это произвольная конъюнкция различных элементарных дизъюнкций.
КНФ для логической функции
— это логическое выражение вида:
![]()
где каждый
представляет собой дизъюнкцию переменных
или их отрицаний.
Например, формы
,
,
,
,
— конъюнктивные нормальные формы, а
— нет.
Всякая логическая функция, отличная от константы единицы, может быть сведена к КНФ.
Для получения КНФ необходимо:
- записать булеву функцию в виде
; - с помощью законов де Моргана
;
освободиться от общих отрицаний (знак отрицания должен стоять над отдельными переменными), если есть необходимость, то воспользоваться законом двойного отрицания
; - с помощью закона дистрибутивности
раскрываются все скобки, и проводится поглощение.
Полученная форма удовлетворяет определению КНФ.
Пример. С помощью эквивалентных преобразований привести к КНФ формулу
.
Решение.
![]()
Представление булевой функции в виде КНФ неоднозначно. Например, для функции
, кроме представленной выше, будут равносильные между собой следующие КНФ:
;
.
Совершенная конъюнктивная нормальная форма (СКНФ)
Если КНФ функции
от
переменных в каждой своей дизъюнкции содержит все
переменных либо их отрицания, то это совершенная конъюнктивная нормальная форма (СКНФ).
Каждая функция имеет одну единственную СКНФ, которая может быть получена двумя способами: с помощью аналитического вывода, основанного на анализе структуры функции или путем составления таблицы истинности и последующего выведения СКНФ из неё.
Для получения СКНФ из таблицы истинности данной функции необходимо записать конъюнкцию (логическое умножение) всех наборов переменных, на которых эта функция определена, как ложная.
Каждый такой набор переменных соответствует дизъюнкции, причем если переменная
, то
входит в нее с отрицанием
, если
, то
входит в нее без отрицания
:
![]()
где конъюнктивное произведение берется по всем наборам
, для которых
;
при
и
при
;
.
Построим СКНФ для функции
по таблице истинности.
| 0 | 0 | 0 | 1 | 1 |
| 0 | 0 | 1 | 1 | 1 |
| 0 | 1 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 | 1 |
| 1 | 0 | 0 | 0 | 0 |
| 1 | 0 | 1 | 0 | 1 |
| 1 | 1 | 0 | 0 | 0 |
| 1 | 1 | 1 | 0 | 1 |
СКНФ(F) =
=
![]()
Аналитический вывод для СКНФ состоит из пяти шагов:
- привести функцию к виду КНФ;
- все конъюнкции через второй закон дистрибутивности преобразовать к виду КНФ;
- к каждой дизъюнкции, где меньше, чем
переменных, прибавить
; - убрать скобки с помощью второго закона дистрибутивности;
- по закону идемпотентности убрать лишнее.
Для функции
, аналитический вывод СКНФ выглядит следующим образом:
![]()
![]()
![]()
Обратите внимание: для константы 1 не существует СКНФ, так как нет ни одного набора переменных, на котором она была бы определена, как ложная.
Задания для самостоятельной работы
2.6.1. С помощью эквивалентных преобразований привести формулу
к ДНФ, КНФ; построить СДНФ и СКНФ используя аналитический вывод и таблицу истинности.
2.6.2. С помощью эквивалентных преобразований привести формулу
к ДНФ, КНФ; построить СДНФ и СКНФ используя аналитический вывод и таблицу истинности.
2.6.3. С помощью эквивалентных преобразований привести формулу
к ДНФ, КНФ; построить СДНФ и СКНФ используя аналитический вывод и таблицу истинности.
2.7.52. С помощью эквивалентных преобразований привести формулу
к ДНФ, КНФ; построить СДНФ и СКНФ используя аналитический вывод и таблицу истинности.
2.7.53. С помощью эквивалентных преобразований привести формулу
к ДНФ, КНФ; построить СДНФ и СКНФ используя аналитический вывод и таблицу истинности.
2.7.54. С помощью эквивалентных преобразований привести формулу
к ДНФ, КНФ; построить СДНФ и СКНФ используя аналитический вывод и таблицу истинности.