Дискретная математика: Математическая логика Лекция 7 Булевы функции Значение формулы алгебры высказываний полностью зависит от значения входящих в нее высказываний, ее значение вычисляется однозначно. Поэтому формула алгебры высказываний является функцией входящих в нее элементарных высказываний. В математической логике мы будем использовать только логические переменные, которые принимают значения либо 0 (ложь), либо 1 (истина). Функции, которые определены на этих переменных и принимают значения 0 или 1 также называются логическими или булевыми. Очевидно, что тождественно истинные или тождественно ложные формулы алгебры логики представляют собой функции-константы 1 или 0 соответственно, две равносильные формулы выражают одну и ту же функцию. Наборы, на которых задана функция, могут быть представлены в виде конституэнтов (двоичных эквивалентов). Конституэнтой называется логическое произведение переменных или их отрицаний в n виде & xii , где i 1 Двоичные xi если i 1 xii xi если i 0 эквиваленты формируются из i. значений Например, конституэнте x1 x2 x3 соответствует двоичный набор 001, а конституэнте x1 x2 x3 – 101. Если количество переменных равно n, то количество двоичных эквивалентов равно 2 n , а n количество различных функций от n переменных равно 22 . Для функций с двумя переменными известны шестнадцать логических функций. Функция константа нуля Логическое умножение или конъюнкция &. Логическое сложение + или дизъюнкция . Отрицание (по первой переменной) a. Отрицание (по второй переменной) b. Импликация или функция следования (левая и правая) . Сложение по модулю два или сложение Жегалкина . Функция Шеффера . Стрелка Пирса или функция Вебба . 1 Дискретная математика: Математическая логика Обратная импликация или ко-импликация (левая и правая) . Функция тождества или эквивалентность . Функция константы единицы. Функция сохранения первой переменной a. Функция сохранения второй переменной b. Значение каждой логической функции описывается следующей таблицей истинности. x1 x2 Константа 0 Логическое умножение x1 x2 Левая ко-импликация x1 x2 Сохранения первой переменной x1 Правая ко-импликация x1 x2 Сохранения второй переменной x2 Сложение по модулю два x1 x2 Логическое сложение x1 + x2 Функция Вебба x1 x2 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 1 1 1 0 0 0 1 0 0 0 1 1 0 0 1 1 0 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 Импликация (левая) x1 x2 Отрицание первой переменной x1 1 1 0 1 1 0 1 0 Импликация (правая) x1 x2 Функция Шеффера x1 x2 Константа 1 1 1 1 1 1 1 0 1 1 1 0 1 Эквивалентность x1 x2 Отрицание второй переменной x2 Формы представления логических функций Для задания логических функций кроме табличного способа используют и задание их в виде формул алгебры логики (аналитическое представление). Нужно отметить, что одну и туже функции можно задать различными формулами алгебры логики. Среди различных формул для удобства представления выделяют различные формы: дизъюнктивнуюя нормальную форму (ДНФ); конъюнктивную нормальную форму (КНФ). Дизъюнктивная нормальная форма ДНФ – это сумма произведений, образованных из переменных и их отрицаний. ДНФ не содержит скобок. 2 Дискретная математика: Математическая логика Например, формы a bc , abc bc , a, b – дизъюнктивные нормальные формы, a d (b c ) – нет. Конъюнктивная нормальная форма КНФ – это произведение сумм, состоящих из переменных и их отрицаний. Например, формы (a b)c , ab(c b) , c , a, c b –конъюнктивные нормальные формы, a a (bd c) – нет. Теорема о ДНФ Всякая логическая функция, отличная от константы 0, может быть сведена к ДНФ. Для получения ДНФ необходимо: 1. Записать булеву функцию в виде {+, , -}; 2. С помощью законов де Моргана освободиться от общих отрицаний и по закону двойного отрицания снять двойные черточки; 3. С помощью первого закона дистрибутивности раскрываются все скобки и проводится поглощение. Полученная форма удовлетворяет определению ДНФ. Если ДНФ функции f1(x1, x2, . . . ,xn) от n переменных в каждой своей конъюнкции содержит все n переменных либо их отрицания, то это совершенная дизъюнктивная нормальная форма (СДНФ). Каждая функция имеет одну единственную СДНФ, и она может быть получена из таблицы истинности этой функции путем записи через знак логического сложения всех наборов переменных, на которых эта функция определена, как истинная. Каждый такой набор переменных соответствует конъюнкции, причем если переменная xi =1, то xi входит в нее без отрицания, если xi =0, то xi входит в нее с отрицанием xi . x 1 x2 2 ... xn n f 1 1 , где x i x при 1 и x i x при 0 i i i i i i Например, для функции F(x1, x2, x3) = (x1 x2 ) x3 СДНФ по таблице истинности может быть построена, как x1 x2 x3 (x1 x2 ) x3 000 001 010 1 0 1 3 Дискретная математика: Математическая логика 011 0 100 1 101 1 110 1 111 0 СДНФ(F) = 000 + 010 + 100 + 101 +110 = x1 x2 x3 + x1 x2 x3 + x1 x2 x3 + x1 x2 x3 + x1 x2 x3 Аналитический вывод для СовДНФ состоит из четырех шагов: 1. привести функцию к виду ДНФ, 2. каждую конъюнкцию, где меньше, чем n переменных умножить на 1= ( xi xi ) , 3. раскрыть скобки с помощью закона дистрибутивности, 4. по закону идемпотентности убрать лишнее. Для функции F(x1, x2, x3) = (x1 x2 ) x3 аналитический вывод выглядит следующим образом. ( x1 x2 ) x3 ( x1 x2 ) x3 x1 x2 x3 x1 x2 x3 x1 x2 1 1 1 x3 x1 x2 ( x3 x3 ) ( x1 x1 ) ( x2 x2 ) x3 x1 x2 x3 x1 x2 x3 x1 x2 x3 x1 x2 x3 x1 x2 x3 x1 x2 x3 x1 x2 x3 x1 x2 x3 x1 x2 x3 x1 x2 x3 x1 x2 x3 Обратите внимание, для константы 0 не существует СДНФ, т.к. нет ни одного набора переменных, на котором она была бы определена, как истинная! Теорема о КНФ Всякая логическая функция, отличная от константы единицы, может быть сведена к КНФ. Для того чтобы сделать это, необходимо: 1. Записать булеву функцию в виде {+, , -}; 2. С помощью законов де Моргана спустить черту отрицания до отдельных букв и по закону двойного отрицания уничтожить двойные черточки; 3. С помощью второго закона дистрибутивности уничтожим все суммы произведений и проведем поглощение. Полученная форма удовлетворяет определению КНФ. 4 Дискретная математика: Математическая логика Если КНФ функции f1(x1, x2, . . . ,xn) от n переменных в каждой своей дизъюнкции содержит все n переменных либо их отрицания, то это совершенная конъюнктивная нормальная форма (СКНФ). Каждая функция имеет одну единственную СКНФ, и она может быть получена из таблицы истинности этой функции путем записи через знак логического умножения всех наборов переменных, на которых эта функция определена, как ложная. Каждый такой набор переменных соответствует дизъюнкции, причем если переменная xi =1, то xi входит в нее с отрицанием xi, , если xi =0, то xi входит в нее без отрицания xi. & ( x 1 1 x 2 2 ... x n n ) , где x i i xi при i 0 и x i i xi при i 1 f 0 Например, для функции F(x1, x2, x3) = (x1 x2 ) x3 СКНФ по таблице истинности может быть построена, как x1 x2 x3 (x1 x2 ) x3 000 1 001 0 010 1 011 0 100 1 101 1 110 1 111 0 СДНФ(F) = 001 011111 = ( x1 x 2 x3) ( x1 x 2 x3) ( x1 x 2 x3) Аналитический вывод для СовКНФ состоит из четырех шагов: 1. привести функцию к виду ДНФ, 2. все конъюнкции через второй закон дистрибутивности преобразовать к виду КНФ, 3. к каждой дизъюнкции, где меньше, чем n переменных прибавить 0= xi xi , 4. преобразовать скобки с помощью второго закона дистрибутивности, 5. по закону идемпотентности убрать лишнее. 5 Дискретная математика: Математическая логика Для функции F(x1, x2, x3) = (x1 x2 ) x3 аналитический вывод СовКНФ выглядит следующим образом. ( x1 x2 ) x3 ( x1 x2 ) x3 x1 x2 x3 x1 x2 x3 ( x1 x3 ) ( x2 x3 ) ( x1 0 x3 ) (0 x2 x3 ) ( x1 x2 x2 x3 ) ( x1 x1 x2 x3 ) ( x1 x2 x3 ) ( x1 x2 x3 ) ( x1 x2 x3 ) ( x1 x2 x3 ) ( x1 x2 x3 ) ( x1 x2 x3 ) ( x1 x2 x3 ) Обратите внимание, для константы 1 не существует СКНФ, т.к. нет ни одного набора переменных, на котором она была бы определена, как ложная! Задачи. Построить СДНФ и СКНФ для следующих функций: 1. (a b) c Таблица истинности данной функции выглядит следующим образом: abc 000 001 010 011 100 101 110 111 ( a b) c 1 0 1 0 1 0 1 1 СДНФ = a b c + a b c + a b c + a b c + a b c СКНФ = (a + b + c) (a + b + c) ( a + b + c) 2. (a b) c Таблица истинности данной функции выглядит следующим образом: abc 000 001 010 011 100 101 ( a b) c 0 0 1 0 1 0 6 Дискретная математика: Математическая логика 110 111 1 0 СДНФ = a b c + a b c + a b c СКНФ = (a + b + c) (a + b + c) (a + b + c) ( a + b + c) ( a + b + c) 3. (a b) c Таблица истинности данной функции выглядит следующим образом: abc 000 001 010 011 100 101 110 111 ( a b) c 0 1 0 0 0 0 0 1 СДНФ = a b c + a b c СКНФ = (a + b + c) (a + b + c) (a + b + c) ( a + b + c) ( a + b + c) ( a + b + c) 4. ( a b) c Таблица истинности данной функции выглядит следующим образом: abc 000 001 010 011 100 101 110 111 ( a b) c 0 1 0 1 1 1 1 1 СДНФ = a b c + a b c + a b c + a b c + a b c + a b c СКНФ = (a + b + c) (a + b + c) 7 Дискретная математика: Математическая логика 5. a b a b Таблица истинности данной функции выглядит следующим образом: abc a b a b 000 001 010 011 100 101 110 111 1 1 0 0 0 0 1 1 СДНФ = a b c + a b c + a b c + a b c СКНФ = (a + b + c) (a + b + c) ( a + b + c) ( a + b + c) ЛИТЕРАТУРА 1. Гусева А.И. Учимся информатике: задачи и методы их решения.- М.: ДИАЛОГМИФИ, 2003. 2. Горбатов В.А. Фундаментальные основы дискретной математики. - М.: Наука. Физматлит, 1999.-544с 8