Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Diskretka.doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
1.91 Mб
Скачать

1.2. Разложение логических (булевых) функций по переменным. Дизъюнктивная и конъюнктивная нормальные формы.

Как мы уже видели, истинностное значение логического выражения (логической формулы) зависит от значений переменных. Но не всегда. Бывают случаи, когда формула принимает на всех наборах значение true (1). Если обратиться к смыслу, заключенном в таком сложном высказывании, то получается, что факт, к которому мы пришли в результате рассуждений, является неопровержимой истиной. Напротив, если сложное высказывание, построенное нами из простых высказываний, всегда ложно, это означает, что наше рассуждение привело к противоречию.

Логическая формула, принимающая значение true на всех наборах логических переменных, называется тождеством или тавтологией. Соответственно, логическая формула, принимающая на всех наборах значение false, называется противоречием.

Если же логическая формула не тождество и не противоречие, то ее называют логической функцией.

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

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

Логическую формулу, содержащую только операцию конъюнкции, будем называть элементарной конъюнкцией. Соответственно, формулу, содержащую только операции дизъюнкции – элементарной дизъюнкцией.

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

Теорема(Шеннона). Каждую булеву функцию f(x1,x2,…,xn) при любом 1mn можно представить в виде:

f(x1,x2,…,xn)= .

Для доказательства достаточно проверить эквивалентность правой и левой части.

Давайте посмотрим для одной переменной. Получим следующее.

Если f(x1,x2,…,xn)=0 при значении x1=1, то первая элементарная конъюнкция равна нулю. Если же функция принимает значение 1 при x1=0, то мы умножаем ее на отрицание x1, то есть на 1. Поскольку дизъюнкция принимает значение 0 (false) только если оба операнда ложны, а во всех остальных случаях она истинна, в логической сумме можно оставить один операнд, при котором f(x1,x2,…,xn)=1. Отсюда получаем: Проделав такое разложение последовательно для всех остальных переменных, получим выражение

Таким образом, при m=n мы приходим к представлению, у которого в правой части стоят значения функции на конкретных двоичных наборах, а именно тех, которые соответствуют значениям f(1,2,…,n)=1. Тогда мы можем в элементарных конъюнкциях полученного разложения опустить операнд f(1,2,…,n) и оставить только :

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

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

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

a

b

ab

0

0

0

1

1

1

0

1

0

1

0

1

1

0

0

0

1

1

1

1

1

0

0

0

Из таблицы видно, что на наборах «антипеременных» , мы получаем значения , соответствующие дизъюнкции этих «антипеременных». То есть = является так называемой двойственной функцией по отношению к ab. Заметим сразу, что понятие двойственной функции в общем случае не равносильно введенному раньше понятию «антиоперации».

Функция, двойственная к некоторой функции f, получается заменой всех переменных на их отрицания и самой функции f на ее отрицание. Двойственную функцию для f будем обозначать f*. То есть и . Функция, у которой двойственная функция на одинаковых наборах переменных принимает те же самые значения, называется самодвойственной. Пример самодвойственной функции: abbcac.

Итак, мы выяснили, что . Можно показать точно так же, что . Забегая вперед, заметим, что эти соотношения, вытекающие из принципа двойственности, называются законами де Моргана. А чтобы получить СКНФ из СДНФ, надо поменять местами дизъюнкции и конъюнкции и все переменные заменить на их отрицания. Это правило выполняется для всех «невырожденных» случаев, когда СДНФ содержит хотя бы одну операцию дизъюнкции. Если же СДНФ для некоторой функции f(a,b,c) состоит из одной элементарной конъюнкции abc, то по законам де Моргана мы получим: Чтобы избавиться от отрицания над этим выражением, нам придется взять конъюнкцию от элементарных дизъюнкций по всем наборам, на которых f(a,b,c)=0, и заменить переменные на их отрицания.

В качестве примера получим СДНФ и СКНФ для логической функции, таблицу истинности которой мы строили в предыдущем разделе. Эта функция принимает значение 1 на двух наборах: {a=1,b=0,c=0} и {a=0,b=1,c=0}. Отсюда получаем следующее представление для функции в совершенной дизъюнктивной нормальной форме.

Заменим в СДНФ все операнды из элементарных конъюнкций на их отрицания и, поменяв местами все конъюнкции и дизъюнкции, получаем СКНФ.

Упражнения.

Получить СДНФ и СКНФ для следующих логических выражений.

  1. .

  2. .

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]