МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ТОМСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ» ЮРГИНСКИЙ ТЕХНОЛОГИЧЕСКИЙ ИНСТИТУТ Утверждаю Зам. директора ЮТИ ТПУ по УР _____________ В.Л. Бибик «_____» ______________ 2012г. БУЛЕВА АЛГЕБРА Методические указания по дискретной математике для студентов очной, очно-заочной и заочной формы обучения всех направлений Издательство Юргинского технологического института (филиал) Томского политехнического университета 2012 1 УДК 519.1 Булева алгебра: методические указания по дискретной математике для студентов очной, очно-заочной и заочной формы обучения всех направлений / Сост. О.Б. Березовская. – Юрга: Изд-во Юргинского технологического института (филиала) Томского политехнического университета, 2012. – 44с. Рецензент кандидат физико-математических наук доцент Е.П. Теслева Методические указания рассмотрены и рекомендованы к изданию методическим семинаром кафедры ЕНО ЮТИ ТПУ «20» марта 2012г. Зав. кафедрой ЕНО канд. пед. наук, доцент Е.В. Полицинский 2 СОДЕРЖАНИЕ Предисловие………………………………….….…………...…………..4 1. Введение в булеву алгебру ………………….……..………….….….5 2. Булевы функции….………...………………..………..…………........6 3. Существенные и фиктивные переменные…….……………....16 Определение формулы……………………………….…………...…17 Тождества булевой алгебры………………………….……...…...…19 Получение эквивалентных формул………………….………......…20 Дизъюнктивные и конъюнктивные нормальные формы….....……21 Совершенная дизъюнктивная и совершенная конъюнктивная нормальная формы……………………………………………....…..22 9. Минимизация булёвых функций с помощью карты Вейча…....…26 10. Функциональная полнота системы булевых функций……….…..29 10.1. Полные системы…………………………………………….…….29 10.2. Понятие функциональной полноты……………..………….……29 10.3. Замкнутые классы булевых функций……………………………30 10.4. Пять замкнутых классов…………….……………..…..…….…….31 Список литературы……………………………………...……...………43 4. 5. 6. 7. 8. 3 ПРЕДИСЛОВИЕ Предлагаемые методические указания охватывают традиционный курс по одному из основных разделов дискретной математики – “Булеву алгебру ”. С помощью булевой алгебры решаются многие вопросы, в том числе и прикладные задачи связанные с теорией конечных автоматов, двоичной арифметикой, математической логикой и т.д. Теоретическая часть содержит достаточно подробное описание основных понятий, важнейших определений и формул которые позволят студентам подготовиться и успешно выполнить предложенные задания. Методические указания можно использовать как для самообразования, так и для активной работы с преподавателем на практических занятиях. Предназначены для студентов очной, очнозаочной и заочной формы обучения всех специальностей. 4 1. Введение в булеву алгебру Теоретической базой при проектировании современных цифровых устройств, предназначенных для целей числовых вычислений, решения логических задач и задач управления, являются булева алгебра, двоичная арифметика и теория конечных автоматов. Логика - это наука о законах и формах мышления, математическая же логика занимается применением формальных математических методов для решения логических задач. Базовым понятием булевой алгебры является понятие высказывания, под которым понимается любое утверждение, рассматриваемое только с точки зрения его истинности или ложности. В булевой алгебре не существует истинно-ложных или ложно-истинных высказываний. Высказывание можно рассматривать как логическую переменную, которая может принимать различные значения, например, высказывание “сегодня понедельник” будет истинным в понедельник и ложным во все остальные дни недели. Исчисление высказываний как раз и основано на том, что их можно рассматривать как двоичные переменные, которые могут принимать одно из двух своих значений. Примерами двоичных логических переменных являются разряды чисел, представленных в двоичной системе счисления; замкнутый или разомкнутый контакт; наличие или отсутствие тока в цепи; высокий или низкий потенциал в какой-либо точке схемы и т.п. Высказывание называется простым, если значение его истинности не зависит от значений истинности других высказываний, и сложным, если значение его истинности зависит от других высказываний. Сложное высказывание можно рассматривать логической функцией, зависящей от простых высказываний и принимающей также два значения (истина, ложь). В свою очередь сложные высказывания могут служить переменными (аргументами) более сложных функций, т.е. при построении логических функций справедлив принцип суперпозиции. Огромное значение для развития современной вычислительной техники сыграли работы английского ученого Джорджа Буля. Его теоретическая работа и введенные им операции над двоичными данными (логическое сложение, умножение и отрицание) стали теперь называться булевской (булевой) алгеброй. Современные микросхемы, использующиеся в компьютерах, выполняют с данными именно такие операции. 5 2. Булевы функции В дискретной математике в качестве области определения и в качестве области значения функции будет выступать одно множество Е2. Двоечка снизу обозначает размерность данного множества. В этом множестве будет всего два элемента 0 и 1. Итак дискретное множество Е2={0,1}. Определение. Функция F(х1,х2,…,хn)- называется булевой, если значение её аргументов определены на множестве Е2, и значение самой функции определено на Е2. Способы задания булевых функций Способы задания булевых функций не отличаются от способов задания обычных функций анализа. К таковым способам задания стандартно относятся: 1)табличный; 2)графический; 3) аналитический. Табличный способ задания Пусть w f ( x1 , x2 ,..., xn ) – булева функция n аргументов. Область определения данной функции можно рассматривать и как множество упорядоченных наборов (или векторов, или двоичных наборов) D {x1 , x2 ,..., xn / xi 0,1, i 1,2,..., n} , на каждом из которых функция принимает одно из двух значений: w 0,1. Количество таких наборов (x1,x2,…,xn), согласно правилу прямого произведения, равно D 0,1 0,1 ... 0,1 2 2 ... 2 2 n n Нетрудно определить и количество всех функций U f ( x1 , x2 ,..., xn ) . Отдельная функция U f ( x1 , x2 ,..., xn ) задана, если определены ее значения (u1 , u2 ,..., u2 n ) на всех наборах ( x1 , x2 ,..., xn ) D , где u j 0,1- значение функции U f ( x1 , x2 ,..., xn ) на j-м наборе ( x1 , x2 ,..., xn ) 01...1 D, j 1,2,...,2n . Итак, количество булевых функций U f ( x1 , x2 ,..., xn ) совпадает с числом двоичных наборов (u1 , u2 ,..., u2 n ) , где u j 0,1. Согласно правилу прямого произведения, число последних равно 6 0,1 0,1 ... 0,1 2 2 ... 2 2 n n Таблица 1 № x y z 1 1 2 3 000 001 010 011 4 100 5 6 101 110 7 111 w=f(x,y,z) f 0 1 f (0,0,0) f1 1 f (0,0,1) f 2 0 f (0,1,0) f 3 1 f (0,1,1) f 4 0 f (1,0,0) f 5 0 f (1,0,1) f 6 0 f (1,1,0) f 7 1 f (1,1,1) В качестве примера рассмотрим табличное представление булевой функции трех аргументов w f ( x, y , z ) где w, x, y, z {0,1}. Область определения функции – это множество двоичных наборов 3 D={(x,y,z), | x,y,z {0,1}}. Их число есть |D|= 2 =8, а количество таких функций равно 2 D 3 22 256 . Значения функции f ( x, y, z ) удобно представить в виде табл. 1.3, где перечислены всевозможные наборы из нулей и единиц длины 3 и для каждого набора указано f значение функции {0,1} на этом наборе. В таблицах, аналогичных табл. 1 обычно употребляется расположение наборов, соответствующих порядку естественного роста n 1 двоичных чисел 0,1,… 2 ,в примере n=3. Определение. Таблицы значений булевых функций, подобные табл. 1, называются таблицами истинности булевых функций. Название таблиц происходит от интерпретации значений 1 – истина (TRUE), 0 – ложь (FALSE). Графический способ задания Рассмотрим графическое представление булевой функции трех аргументов w f ( x, y , z ) , заданной таблично (табл. 1). Заметим, что множество наборов области определения функции D={(x,y,z) , | x,y,z 7 {0,1}} является множеством координат точек вершин единичного трехмерного куба (рис. 1.2). Очевидный способ графического представления булевой функции – это отметить каким-то образом вершины куба, в которых функция принимает значение 1. Именно так на рис. 1.2 и сделано. В соответствии с таблицей значений (табл. 1) отмечены вершины, в которых булева функция равна 1. Замечание. Очевидно, что область определения булевой функции n аргументов w f ( x1 , x2 ,..., xn ) составляется из наборов координат точек вершин единичного n-мерного куба. Аналитический способ задания В обычной математике у нас были операции сложения, умножения, вычитания и деления из которых мы строили более сложные выражения. Аналогично в дискретной математике существуют элементарные булевы функции. Функции одной переменной – функции, зависящие только от одного аргумента. Первая функция const 1 (читается "константа один" или "тождественная единица"). В первом столбце мы указываем значения, которые может принимать переменная х, таких значений всего два 0 и 1. Во втором столбце указывается значение самой функции. Когда х=0, f(х)=1, когда x=1, f(x) также равно 1. Определение. Тождественной единицей - называется, функция которая принимает значение единицы при любых значениях аргументов. Функция обозначается «1». x 1 0 1 1 1 8 Определение. Тождественной нулем - называется функция, которая принимает значение нуля при любых значениях аргументов. Функция обозначается «0». x 0 0 0 1 0 Определение. Тождественной функцией - называется функция, которая принимает значения равные значению аргумента. Функция обозначается «х». x х 0 0 1 1 Определение. Инверсия - функция принимающая значения противоположные значениям аргумента. Читается “инверсия икс” или “не икс”. Обозначается « x ». x x 0 1 0 1 Функции двух переменных - функции, зависящие от двух аргументов. В первом столбике таблицы 2 записаны всевозможные наборы или комбинации 0 и 1. В первом наборе оба аргумента равны 0, но тором х1=0, а х2=1, в третьем наоборот х1 = 1, а х2=0 и в четвертом х1=х2=1. В последующих столбцах нарисован значок функции и ее значение на каждом из наборов. Таблица 2. или комбинации 0 и 1 х1 х2 → ~ / 0 0 0 0 0 1 1 1 1 0 1 1 0 1 1 0 1 0 1 0 1 0 1 0 0 1 0 1 1 1 1 0 1 1 0 0 1. - дизъюнкция х1 х2; 2. - конъюнкция х1 х2; 3. - сумма по модулю два х1 х2; 4.→ - импликация х1→х2; 9 5. функция эквивалентности х1~х2; 6. функция штрих Шеффера х1/х2 или х1 7. функция стрелка Пирса х1 х2. х2; Рассмотрим каждую из функций отдельно на языке высказываний. Под высказыванием мы понимаем предложение русского языка, о котором можно сказать, истинно оно или ложно. Если высказывание х истинно, мы будем писать х=1; если высказывание х ложно, мы будем писать х=0. Нашу обычную речь мы строим из ряда последовательных высказываний или утверждений: строгих и не строгих. Например, вы можете сказать: «Меня зовут Виктор. Я учусь в ЮТИ ТПУ. У меня есть брат, который любит шоколад и не любит мороженое». Этот отрывок состоит из высказываний: 1. Меня зовут Виктор; 2. Я учусь в ЮТИ ТПУ; 3. У меня есть брат; 4. Брат любит шоколад; 5. Брат не любит мороженое. Каждое из этих высказываний может быть истинным или ложным. Если тебя действительно зовут Виктор, а не Петя, Ваня и т.д., то первое высказывание будет истинным, в противном случае ложным. Если ты учишься в ЮТИ ТПУ, а это значит, что второе высказывание будет истинным. Если ты один в семье или у тебя есть только сестры, то третье высказывание для тебя также окажется ложным. Если у тебя все-таки есть брат, который любит и мороженое и шоколад тоже, то третье и четвертое высказывания будут истинными, а пятое ложным. Любое высказывание может быть либо истинным либо ложным. Каждому из высказываний мы можем сопоставить переменную. Обозначим через х высказывание "Меня зовут Виктор", через у - "Я учусь в ЮТИ ТПУ ", через z - "У меня есть брат", через и - "Брат любит шоколад" и v - "Брат любит мороженое". Обратите внимание на последнее высказывание, если v - "Брат любит мороженое", то утверждению, что «Брат не любит мороженое» в соответствие будет поставлена переменная v . Еще несколько примеров использования инверсии: пусть х -«У меня есть собака», тогда х «У меня нет собаки», у -«Волк поймает зайца», тогда y «Волк не поймает зайца». 10 Двойной знак инверсии над переменной можно убирать х = х. Двойная инверсия, будет соответствовать высказыванию: « Неверно, что у меня нет собаки», это высказывание говорит о том, что «у меня есть собака». Чтобы соединить два высказывания мы используем разные союзы И, ИЛИ. ЕСЛИ ...ТО, ЛИБО...ЛИБО, и тд. Теперь подробнее обсудим смысловое значение функций двух переменных. Конъюнкция Операция конъюнкции в дискретной математике соответствует союзу "И ". Пусть х - "Я студент", у - "Я учусь в ЮТИ ТПУ ", тогда х у соответствует высказывание «Я студент И я учусь в ЮТИ ТПУ». Если «Я студент» истинное высказывание , то х=1 Если «Я учусь в ЮТИ ТПУ» истинное высказывание , тоу=1 А теперь получим результат нашего высказывания «Я не студент (х =0) и я не учусь в ЮТИ ТПУ (у-0)». Результатом будет явная ложь - 0, «Я не студент (х =0) и я учусь в ЮТИ ТПУ (у=1)». Результатом будет также ложь - 0. «Я студент (х=1) и я не учусь в ЮТИ ТПУ (у=0)». Результатом будет также ложь - 0. «Я студент {х =1) и я учусь в ЮТИ ТПУ (y=1)». Это истина - 1. Дизъюнкция Операция дизъюнкция в дискретной математике соответствует союзу ИЛИ. Пусть х - "У моего дяди есть собака". у - " У моего дяди есть кошка", тогда x y соответствует высказывание «У моего дяди есть собака ИЛИ кошка». Импликация Операция импликация х→y в соответствует связке ЕСЛИ ТО. Пусть х-«У меня есть билет» x=1, y- "Меня не оштрафуют" y=1, дискретной математике тогда х→у соответствует высказывание; «Если у меня есть билет, то меня не оштрафуют». 11 Это высказывание будет ложно лишь в том случае, когда у тебя есть билет, а тебя все-таки оштрафовали. Ты вправе возмутиться таким беззаконием. Это несправедливо! Да несправедливо, именно по этой причине, в таблице импликации в строке, где х - 1 , а у-0 значение функции также равно нулю. Допустим, что ты будешь не против проехать зайцем, не покупая билет и при этом если тебя не оштрафуют. Поэтому высказывание "Если у меня нет билета, то меня не оштрафуют" считается истинным. Х1 Х2 → о «У меня нет 0 "Меня 1 "Если у меня нет меня билета» оштрафую оштрафуют т""Меня не 0 «У меня нет 1 1 "Если у меня нет меня не билета» оштрафую оштрафуют 1 «У меня есть 0 0 "Если у меня ее меня т" "Меня билет» оштрафую оштрафуют 1 «У меня есть 1 1 "Если у меня есть меня не т""Меня не билет» оштрафую оштрафуют Функция эквивалентности x1~x2 в дискретной математике т" соответствует смысловой связке тогда и только тогда или если : если. Пусть х — "Я выучил все билеты", у-" Я точно сдам экзамен на 5", тогда х~у соответствует высказывание «Я точно сдам экзамен если и только если я выучу все билеты». Другими словами, эквивалентность подразумевает под равенство. Функция -сумма по модулю два x1 x2 в дискретной математике соответствует связке либо... либо. Пусть х - "Эта фигура квадрат", у - " Эта фигура окружность", тогда х у соответствует высказывание «Эта фигура либо, либо окружность», при условии что нарисованная фигура являет квадратом, либо окружностью. Быть одновременно и окружностью квадратом невозможно. Функция штрих Шеффера x1 /х2 это отрицание конъюнкции Пусть х - "Я студент ", у- "Я учусь в ЮТИ ТПУ ". Тогда х / y соответствует высказывание «неверно, что я студент и учусь в ЮТИ ТПУ». 12 Функция стрелка Пирса X1↙x2,- это отрицание дизъюнкции Пусть х - "У моего дяди есть собака", у - " У моего дяди есть кошка", тогда х ↙ y соответствует высказывание «неверно, что у моего дяди есть собака или кошка». Упражнение №1: Пусть х-«Идет дождь», у-«Дует ветер». Запишите в виде формулы следующие высказывания: 1. Если идет дождь, то дует ветер; 2. Если дует ветер, то идет дождь; 3. Ветер дует тогда и только тогда, когда идет дождь; 4. Если дует ветер, то дождя нет; 5. Неверно, что ветер дует тогда и только тогда. когда пет дождя; 6. Неверно, что дует ветер или вдет дождь; 7. Неверно, что дует ветер и идет дождь. Упражнение №2: Пусть х-«Идет дождь», у-«Дует ветер», z-«Светит солнце».Запишите словами следующие высказывания представленные формулами: Например, (х у)→ z Словами запишется так: «Если идет дождь и дует ветер, то солнце не светит». 1. z ~ x y ; 2. z y x ; 3. ( z y ) x ; 4. z / y . Упражнение №3: Запишите в виде формул, заменив союзы на значки логические операций: Например: (если с то r) и (если r то с) и не (s или y). ответ c r r c s y . 1. если с, то не (r или s) ; 2. если r или s, то не c; 3. у тогда и только тогда, когда r или с; 4. если r то с, и если с то у; 5. y и (с или г); 13 Задание булевых функций с помощью таблицы истинности Любую булеву функцию можно задать помощью таблицы истинности. Для этого необходимо указать значение функции на всех наборах. Пользуясь таблицами истинности элементарных функций, будем строить таблицы для более сложных функций. Элементарные функции будут выступать у нас в роли кирпичиков, из которых мы будем строить формулы. Например, из конъюнкции и дизъюнкции, используя скобки можем построить функцию (x v y) (х y y) x y. Запомните! Операция конъюнкции сильнее всех остальных опер если нет скобок, то ее выполняем самой первой. Конъюнкция по своим свойствам похожа на операцию умножения в обычной алгебре, а дизъюнкция на операцию сложения. Построение таблицы истинности покажем на примере(табл. 3). Пусть f ( x, y ) ( x y ) x . Функция зависит от двух аргументов, следовательно в таблице истинности будет 22=4 строк. Таблица 3. Пример x y (x y) x 00 0 01 1 10 0 11 0 Перепишем нашу формулу, подставив вместо х и у их значения из первой строки. Тогда получим: (0 0) 0 . Первой будет выполняться операция в скобках, то есть дизъюнкция, ищем по таблице истинности (№4) значение дизъюнкции на наборе 00, оно равно (0 0)=0. Чему равен ноль с инверсией? Ответ 0=1. А инверсия единицы? 1 =0 . Теперь мы должны найтив таблице истинности (табл. №4) значение конъюнкции на наборе 01. Оно равно (0 1)=0. Записываем получений ноль в строке 00, в столбец значений функций. Проделываем аналогичные действия для второй строки: (0 l) 0 = 1/\1=1; для третьей строки: (1 0) 1 =1/\0= 0; для четвертой строки: (1 1) 1 = 1 /\0=0. Есть другой способ построения таблиц истинности. Рассмотрим еще один пример в котором функция зависит от трех аргументов (следовательно будет 23=8 строк). Таблица 6 14 построена для функции f(x1,x2,x3)=(x1→x3) (x2/x1) ( x1 x 2) . Мы разобьем всю формулу на подформулы, соответственно разобьем таблицу на дополнительные столбцы. Пронумеруем их в порядке выполнения операций. Пятый столбец будет результирующим. В первом столбце работаем с первой и третьей переменной и используем таблицу истинности для импликации. Во втором столбце работаем с первой и второй переменной и используем таблицу истинности для функции штрих Шеффера. Третий столбец особенный. Мы применяем операцию дизъюнкции к переменным х 1 и х 2 . а затем должны записать инверсию (или отрицание) результата. Например, на наборе 110 мы получим (1 0) это равно 1 и теперь берем инверсию и получаем 0. В четвертом столбце мы выполняем операцию конъюнкции между значениями из первого и второго столбца. Таким образом, в первой строке получим l/\1=1. В пятом столбце мы выполняем операцию дизъюнкции между значениями из четвертого и третьего столбца. Этот столбец и будет значением нашей функции. Таблица 4. Для функции f(x1,x2,x3)=(x1→x3) (x2/x1) ( x1 x 2) 1 4 2 5 3 x1 x2 x3 x1 x3 (x2/x1) ( x1 x 2) 0 0 0 1 1 1 1 1 0 0 1 1 1 1 1 1 0 1 0 1 1 1 1 0 0 1 1 1 1 1 1 0 1 0 0 0 0 1 0 0 1 0 1 1 1 1 1 0 1 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 Теперь попробуйте построить таблицы истинности сами. Упражнение №1: Постройте таблицы истинности для функций. 1. x y 5. ( x y ) ( y x) 10.(x↙y)\z 2. x y 6. ( x \ y ) ( y x) 11. (xy xz) yz 3. x y 7. x y y 12. x1 x2 x 15 4. ( x y ) x 8. ( x / y ) / x / y 9. x / y /( x / y) . 3. Существенные и фиктивные переменные Определение: Набором α (альфа) длины n назовём последовательность α1,α2,…,αi , где αi – называется i-ым разрядом и равно 0 или 1. Например, в наборе α =11010 α1 =1 α2 =1 α3 =0 α4 =1 α5 =0. Определение: Наборы, которые отличаются значением лишь одного разряда называются соседними. Определение: Говорят, что функция f(x1,x2,…,xn) существенно зависит от переменной xi, если существует набор значений α1, α2,…, αi-1, αi+1,…, αn для переменных x1,x2,…,xi-1,xi+1,…,xn, такой что f(α1, α2,…, αi-1,0, αi+1,…, αn ) f(α1, α2,…, αi-1,1, αi+1,…, αn). В определении в наборе α намеренно пропущен разряд αi. Определение: Если функция существенно не зависит от переменной xi, то эта переменная называется фиктивной. Фиктивные переменные не влияют на значение функции, и мы научимся избавляться от таких переменных, а в некоторых случаях наоборот специально вводить их в функцию. Фиктивный значит несущественный, ненастоящий. Перед нами стоит задача определить, какие переменные являются существенными, а какие фиктивными (чаще всего все будут существенными). Рассмотрим это на примере функции f, заданной вектором значений f(x,y,z)=(1,0,1,0,0,1,0,1). Этот вектор записываем по вертикали в столбец значений функции f. Начнем с переменной х, ищем соседние наборы у которых различие лишь в разряде соответствующем переменной х. Набору 000 соответствует набор 100 (найдите их в таблице истинности, эти наборы помечены звездочками), значение функции этих наборах отличается f(0,0,0)=1, f(1,0,0)=0. Можно сказать, повезло, так как мы сразу нашли наборы, на которых значение функции изменяется с изменением значения переменной х,при условии, что у и z остаются неизменными. Следовательно определению функция f(x,y,z) существенно зависит от переменной х. Рассмотрим переменную у. Ищем соседние наборы у которых различие лишь в разряде соответствующем переменной у. Набору xyz 000 001 010 011 100 101 110 111 f 1* 0 1 0 0* 1 0 1 16 соответствует набор 010. Значения функции f(0,0,0)= 1 и f(0,1,0)=1 этих наборах совпадают. Мы еще не имеем права делать никаких выводов. Проверяем следующие наборы. Набору 001 соответствует набор 011, значения функции f(0,0,1)=0 и f(0,1,1)=0 совпадают, проверили уже первые четыре набора, движемся дальше. Значение функции f(1,0,0)=0 и f(1,1,0)=0 совпадают. Проверяем последние набора 101 и 111, f(1,0,1)=1 и f(1,1,1)=1. Подведем итог. Мы не нашли ни одной пары соседних наборов по переменной у, таких, что бы значение функции отличалось. Следовательно, переменная у фиктивная. Аналогичная проверка показывает, что переменная z существенная. Теперь мы можем сократить нашу таблицу следующему правилу. Вычеркиваем либо все строки, содержащие 1, либо все строки содержащие 0 в столбце соответствующем фиктивной переменной. Вычеркиваем столбец, соответствующий этой переменой. В результате наша таблица примет вид (в данном примере мы вычеркивали строки, в которых переменная у =0). Определение. Функции называются равными, если одна из них может бы получена из другой путём добавления или исключения несущественных переменных. Упражнение №1: Найдите в предложенных функциях фиктивные переменные и сократите таблицы истинности. a) f(x,y)=(1,0,1,0); b) f(x,y)=(1,1,0,0); c) f(x,y,z)=(0,1,0,0,0,1,0,0); d) f(x,y,z)=(1,1,0,01,1,1,1); e) f(x1,x2,x3,x4)=(1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1); f) f(x1,x2,x3,x4)=(0,0,1,0,1,0,1,0,0,0,1,0,1,0,1,0); g) f(x1,x2,x3,x4)=(0,1,0,1,0,1,0,1,1,1,1,1,1,1,1,1); h) f(x1,x2,x3,x4)=(1,1,1,1,0,1,0,1,0,0,0,0,1,0,1,0). 4. Определение формулы Обозначим буквой D множество, состоящее из элементарных функций, то есть элементами множества D будут функции. D={0,1,x, ,x y,x y,x y,x→y,x~y,x↙y,x/y} 1. Любая из элементарных функций, логическая переменная x, а также константы 0 и 1 являются формулами над множеством функций D. 17 2. Тогда любое выражение вида X*Y, где X и Y формулы, а символ звёздочка заменяет одну из логических связок { , ,,→,~,↙ ,/} также является формулой. Разберем несколько примеров. Дано выражение x1 ~ x2 x3 x2 x4 . Используя наше определение убедимся, что оно представляет собой формулу. Для этого разобьем выражение X и Y. X x1 ~ x2 x3 , Y x2 x4 , операция Положим дизъюнкции соответствует * в определении. Получили X*Y. Всё выражение формулой, если мы сможем доказать, что X и Y – формула. Рассмотрим сначала Y. Это выражение является формулой, так как представляет собой элементарную функцию «сложение по модулю два». Выражение x1 ~ x2 x3 необходимо разбить на две части. Переобозначим X=(x1~x2) и Y=x3, в качестве * - логическая связка конъюнкции. Выражение X=(x1~x2) является формулой так как представляет собой элементарную функцию «эквиваленция», которая входит во множество Y=x3 является формулой, так как представляет собой логическую переменную и согласно пункту 1 является формулой. Всякая формула представляет собой булеву функцию. Теперь мы знаемдва способа задания булевых функций: первый с помощью таблицы истинности, второй с помощью формулы. Чтобы ещё лучше вникнуть в понятие формулы приведем несколько примеров выражений не являющихся формулами. x y x это не формула так как в множестве D нет функции x , сумма по модулю два это функция всегда зависящая от двух аргументов. Скобки играют очень важную роль при построении формул. В зависимости от расстановки скобок в формуле мы будем получать различные функции. Пусть дано выражение A x y x z (это ещё не формула). Попробуем получить всевозможные формулы, расставляя скобки. A (( x y ) ( x z )) A ((( x y ) x) z ) A (( x ( y x)) z ) A ( x (( y x) z )) A ( x ( y ( x z ))) . Получи ли пять различных формул. Напомним, что первыми 18 выполняются действия во внутренних скобках. Внешние скобки мы можем опускать. И ещё вспомним, что операция конъюнкции, если нет скобок, выполняется раньше всех, более того мы можем совсем опускать значок конъюнкции (так же как мы опускаем значок умножения). Тогда формулы примут вид: 1. A ( x y ) xz 2. A (( x y ) x) z 3. A ( x ( y x)) z 4. A x (( y x) z ) . Упражнение №1: Получить все возможные формулы, расставляя скобки в выражении A x y z x. Упражнение №2: Получить все возможные формулы, расставляя скобки в выражении B x/ y ~ x z y . 5. Тождества булевой алгебры В этом разделе будут приведены тождества, или законы, позволяющие упрощать формулы. Формулы называются эквивалентными, если они представляют равные функции. Для получения эквивалентных формул используют тождества булевой алгебры: 1. Ассоциативный закон. ( x1 x2 ) x3 x1 ( x2 x3 ) ( x1 x2 ) x3 x1 ( x2 x3 ) ( x1 x2 ) x3 x1 ( x2 x3 ) 2. Коммутативный закон. x1 x2 x2 x1 x1 x2 x2 x1 x1 x2 x2 x1 x1 / x2 x2 / x1 x1 x2 x2 3. Дистрибутивный закон. (( x1 x2 ) x3 ) (( x1 x3 ) ( x2 x3 )) (( x1 x2 ) x3 ) (( x1 x3 ) ( x2 x3 )) 4.Правила де Моргана. ( x1 x2 ) x1 x2 ( x1 x2 ) x1 x2 5. Свойства дизъюнкции и конъюнкции: 19 x1 x1 ~ x2 x2 ~ x1 1. x 1 1 4. x 0 0 2. x 1 x 5. x x x 3. x 0 x 6. x x x 6. Операция поглощения: 1. 7. x x 0 8. x x 1 x1 x2 x1 x1 ( x1 x2 ) x1 x1 2. 7. Простое склеивание: x1x2 x1x2 x2 8. Обобщенное склеивание: x1 x2 x1 x3 x1 x2 x1 x3 x2 x3 10. x1 x2 x1 x2 x1 x2 x1x2 x1x2 11. x1 ~ x2 x1x2 x1 x2 12. x1 / x2 x1 x2 x1 x2 13. x1 x2 x1 x2 x1 x2 . 9. 6. Получение эквивалентных формул Определение. Любое подвыражение формулы представляющее собой формулу будем называть подформулой. Например, в выражении ( x1 x2 ) ( x3 x4 ) есть две подформулы ( x1 x2 ) и ( x3 x4 ) . Пусть в формуле А содержится подформула В, заменим всякое вхождение формулы В на эквивалентную ей формулу В 1 , тогда новая формула А1, будет эквивалентна формуле А. Для получения эквивалентных формул будем использовать вышеперечисленные тождества. Пример. Требуется доказать, что формула А = x y xy эквивалентна формуле B x y . x y xy (по свойству = x y xy x y xy xy xy x y xy x y xy = А = x y xy = (теперь используем дистрибутивный закон для раскрытия скобок)= 20 10) xyx xyx xyy xyy xy xy xy xyx 0, xyy 0, xyx xy, xyy xy xy xy x y x y xy xy xy xy yxxy xy xy xyxy yxxy xy xy xy xy xy xy ( по закону простого склеивания) = x y x ( по закону поглощения x x xy ) xy x xy ( x x) y x 1y x 1 y x y x x y B Эквивалентные формулы представляют равные функции. Упражнение : Докажите, что формула А эквивалентна формуле В. 1. A=(x/y)/x; B=x→y 2. A=(x/y)/(x/y); B=x y 3. A=x y xy; B=x y. 7. Дизъюнктивные и конъюнктивные нормальные формы Конъюктивным одночленом от переменных x1 , x2 ,...., xn называется конъюнкция этих переменных или их отрицаний. Дизъюктивным одночленом от переменных x1 , x2 ,...., xn называется дизъюнкция этих переменных или их отрицаний. Формула, равносильная данной формуле алгебре высказываний и являющаяся дизъюнкцией элементарных конъюнктивных одночленов, называется дизъюнктивной нормальной формой (ДНФ) данной формулы. Например: ( x1 x2 x3 ) ( x1 x2 ) ( x3 x2 ) x3 - ДНФ. Формула, равносильная данной формуле алгебре высказываний и являющаяся конъюнкцией элементарных дизъюнктивных одночленов, называется конъюнктивной нормальной формой (КНФ) данной формулы. Например: ( x1 x2 x3 ) ( x1 x3 ) x2 - КНФ. Для каждой формулы алгебры высказываний (булевых формул) можно найти множество дизъюнктивных и конъюнктивных нормальных форм. Например, выражения 21 АВ С D ; А B СD E ; А В С D представлены в ДНФ, а формула А В(С D ) к ДНФ не относится, так как второе слагаемое не является ни отдельным аргументом, ни конъюнкцией переменных. Например, выражения (А B )(С A D); АВ(С D E ) записаны в КНФ, а формула (А B С)(D Е) КНФ не является, поскольку первый сомножитель (в скобках) содержит конъюнкцию B С. Выражение, представленное отдельным аргументом или его инверсией, одновременно входит в класс ДНФ и КНФ. Любую булеву функцию, можно представить в виде суперпозиции дизъюнкции, конъюнкции и инверсии. Для этого можно использовать тождества булевой алгебры. 8. Совершенная дизъюнктивная и совершенная конъюнктивная нормальная формы Любая булева функция может иметь много представлений в виде ДНФ и КНФ. Особое место среди этих представлений занимает совершенные ДНФ(СДНФ) и совершенные КНФ(СКНФ). Совершенная Дизъюнктивная Нормальная Форма(СДНФ) – это ДНФ, в которой в каждый конъюктивный одночлен каждая переменная xi из набора f ( x1 , x2 ,...., xn ) входит ровно один раз, причем входит либо сама xi , либо ее отрицание xi . Совершенной дизъюнктивной нормальной формой (СДНФ) формулы алгебры высказываний называется ее ДНФ, обладающая следующими свойствами: 1. ДНФ не содержит двух одинаковых коньюнкций. 2. Ни одна конъюнкция не содержит одновременно двух одинаковых переменных. 3. Ни одна конъюнкция не содержит одновременно некоторую переменную и ее отрицание. 22 4. Каждая конъюнкция содержит либо переменную xi , либо ее отрицание xi для всех переменных, входящих в формулу. Построение СДНФ по таблице истинности. Для этого мы выбираем наборы на которых функция принимает значение 1 и строим дизъюнкцию из конъюнкции аргументов взятую соответственно с инверсией или без. Построим таблицу истинности для f ( x, y, z ) xy x z функции xyz 000 001 010 011 100 101 110 111 f 0 1 0 1 0 0 1 1 * * * * Правило конъюнкции: если переменной соответствует 0,то переменная берётся с инверсией, если 1 то без. Первому отмеченному набору 001 соответствует конъюнкция 0 01 ↓ ↓↓ x yz . x yz Набору 011 соответствует конъюнкция x yz , Набору 110 соответствует конъюнкция xyz , Набору 111 соответствует конъюнкция xyz . Теперь соединяем все полученные конъюнкции с помощью дизъюнкции x yz xyz xyz xyz - получили СДНФ. Приведем ещё один пример построения СДНФ для функции от четырёх переменных. Функция задана вектором значений f ( x, y, z, u ) (1,0,0,0,1,0,1,1,0,0,0,0,1,0,1,0) Строим таблицу истинности. 23 x y z u 0 0 0 0 f 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 1 0 1 1 1 1 1 1 1 1 1 0 1 0 1 0 * xyzu * xyzu * * xyzu x yzu 0 0 0 0 1 * xyz u 1 1 0 1 1 1 1 0 0 1 * xyzu 1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 1 0 1 1 0 0 1 0 0 1 1 0 СДНФ примет вид x yz u x yz u xyzu xyzu xyzu xyzu . Количество конъюнкций в СДНФ всегда должно равняться количеству единичек в векторе значений функции (в данном примере их 6). Теорема: Любая булева функция, зависящая от заданного числа аргумента может быть представлена в виде СДНФ, причём единственным образом. Совершенная Конъюнктивная Нормальная Форма (СКНФ) СКНФ это еще один способ представления булевых функций. Совершенной конъюнктивной нормальной формой (СКНФ) данной формулы алгебры высказываний называется такая ее КНФ, которая удовлетворяет следующим свойствам: 1. КНФ не содержит двух одинаковых дизьюнкций. 2. Ни одна дизъюнкция не содержит одновременно двух одинаковых переменных. 3. Ни одна кдизъюнкция не содержит одновременно некоторую переменную и ее отрицание. 4. Каждая дизъюнкция СКНФ содержит либо переменную xi , 24 либо ее отрицание xi для всех переменных, входящих в формулу. СКНФ для любой функции может быть получена также как и СДНФ с помощь таблицы истинности. Все действия которые мы совершали для построена СДНФ нам надо выполнить наоборот. Для построения СКНФ нас будут интересовать наборы на которых функция принимает значение равное 0. Далее, если переменной соответствует 0, то переменная берется без инверсии, если 1 то с инверсией. Из переменных строим не конъюнкция, а дизъюнкции. Полученные дизъюнкции соединяем знаком конъюнкции. Все это будет легче понять па примере. Возьмем первую функцию для которой мы строили СДНФ: f ( x, y, z ) xy x z . Таблица истинности для нее уже построена. xyz f 000 0 * x y z 001 1 010 0 * x y z 011 1 100 0 * x y z 101 0 * x y z 110 1 111 1 В результате СКНФ будет выглядеть так: ( x y z) ( x y z) ( x y z) ( x y z ) Теорема: Любая булева функция зависящая от заданного числа аргументов может быть представлена в виде СКНФ, причём единственным образом. Упражнение №1: Постройте СДНФ и СКНФ для функций: f(0,1,0,0,1,1,0,1); f(1,1,0,1,0,1,1,0); f(0,1,0,1,1,0,1,0); f(1,0,1,0,0,0,0,1); f(0,1,1,1,0,1,0,0); f(1,1,0,0,0,1,0,1). Упражнение №2: 25 Постройте СДНФ и СКНФ. f(x,y)=(0,1,0,1); f(x,y)=(1,0,0,1); f(x,y,z,u)=(1,1,0,0,1,1,0,0,0,0,1,1,0,0,1,1); f(x,y,z,u)=(1,0,1,1,0,0,1,0,1,0,0,0,0,1,0,1). Упражнение №3: Постройте СДНФ и СКНФ. Для функций а), b), c), d), e) постройте СДНФ. f(x,y)=x y; g)f(x,y,z,u)=xyu f(x,y)= ; h)f(x,y,z,u)=xz . f(x,y,z)=xy ; f(x,y,z)=xy ; f(x,y,z)=xz x ; f(x,y,z)=x ; 9. Минимизация булёвых функций с помощью карты Вейча Этот метод используется для функций с малым числом переменных. Две соседние ячейки отличаются значением только одной переменной. На рисунке 2. представлены карты Вейча для функций, зависящих от двух, трех и четырех переменных. Рис.2 Карты Вейча Все ячейки отмеченные скобкой хi (по строке и столбцу), представляют наборы с хi = 1, а в неотмеченных строках и столбцах ячейки соответствуют наборам с хi =0. Булева функция может быть представлена на карте Вейча выделением на карте ячеек, соответствующих наборам, на которых функция принимает значение 1. В этих ячейках будем писать 1. Незаполненные ячейки соответствуют нулям функции. Для нанесения функции на карту Вейча ее необходимо представить в виде СДНФ. Пример 1. Построим карту Вейча для функции ƒ(x1,x2,x3,) = X 1 X 2 X 3 X 1 X 2 x3 X 1 x2 X 3 x1 x2 x3. 26 Пример 2. Построим карту Вейча для функции ƒ(x1,x2)= x1 x2 Представим ее в виде СДНФ: ƒ(x1,x2) = X 1 X 2 x1 X 2 С помощью карты Вейча можно находить простые импликанты. Для этого будем строить покрытия ячеек карты по следующим правилам. 1. Две ячейки, содержащие единицы “склеиваются”, если они являются соседними, то есть расположены рядом (но не на диагонали). При этом считается, что ячейки на противоположных концах строки или столбца являются соседними, как будто карта расположена на торе (Рис. 4.5.2.). 2. Четыре ячейки, содержащие единицы “склеиваются”, если они расположены в одной строке или в столбце, или квадратом (Рис. 4.5.3.). 27 3. Восемь ячеек, содержащих единицы “склеиваются” если все они лежат в зоне, относящейся к какой-либо переменной или ее инверсии (Рис. 4.5.4.). Соединение соседних ячеек, соответствует операции склеивания конъюнкций. В результирующую конъюнкцию, входят переменные, в зоне которых полностью лежат объединенные ячейки. Рассмотрим рисунок 4.5.2. В левом верхнем углу карты объединены две ячейки, соответствующие конъюнкциям x1x2 X 3 X 4 и x1x2 x3 X 4 в результате склеивания этих конъюнкций по переменной x3 получается конъюнкция x1x2 X 4. На этой же карте в левом нижнем углу склеивание ячеек определяет конъюнкцию x1 X 2 X 3, ячейки, помеченные единицами в правом верхнем и правом нижнем углах определяют конъюнкцию. На карте Вейча на рисунке 4.5.3. представлены конъюнкции x1x2 (ячейки, образующие квадрат), x1 X 3 и X 1 X 4. На карте Вейча на рисунке 4.5.4. представлены конъюнкции X 3(пунктиром) и X 4. Для построения минимальной ДНФ по карте Вейча следуют двум правилам. 28 1. Выбирают интервалы наибольшего размера, содержащие ячейки, которые не могут быть ни в каком другом интервале. 2. Для оставшихся ячеек выбирают интервал наибольшего размера. Пример Найдем минимальную ДНФ для функции ƒ(x1,x2,x3,x4) = (0,3,4,6,7,9,14,15). Выпишем двоичные номера всех соответствующих наборов: 0000, 0011, 0100, 0110, 0111, 1001, 1110, 1111. Построим карту Вейча. Простые импликанты образуют минимальную ДНФ, которая имеет вид: x1 X 2 X 3 x4 x2x3 X 1 x3 x4 X 1 X 3 X 4. 10.Функциональная полнота системы булевых функций 10.1. Полные системы В типичной современной цифровой вычислительной машине цифрами являются 0 и 1. Следовательно, команды, которые выполняет процессор, суть булевой функции. Любая булева функция реализуется через конъюнкцию, дизъюнкцию и отрицание. Следовательно, можно построить нужный процессор, имея в распоряжении элементы, реализующие конъюнкцию, дизъюнкцию и отрицание. Вопрос состоит в том, существуют ли иные системы булевых функций, обладающих тем свойств, что с их помощью можно выразить все другие функции. 10.2. Понятие функциональной полноты Рассмотрим множество булевых функций M f1 , f 2 ,..., f n , назовем его системой функций. Определение 1. Множество M f1 , f 2 ,..., f n является полной системой, если любую булеву функцию можно представить формулой над М. Другими словами, система будет полной, если любую функцию можно представить суперпозицией функций f1 , f 2 ,…, f n . Пример из обычной математики. Функцию возведения в степень f ( x) x k можно представить через функцию умножения f ( x) x k xx...x , проделав операцию умножения k раз. Аналогично булевы функции представимы через другие булевы функции. Примеры: { , ,⌉} конъюнкция, дизъюнкция и инверсия образуют полную систему; 29 { ,⌉} конъюнкция и инверсия также образуют полную систему; {/}| полная система может содержать всего одну функцию, например Штрих Шеффера. Еще одно определение полной системы. 10.3. Замкнутые классы булевых функций Замыкание Определение. Замыканием множества М называется множество , обозначаемое [M], которое состоит из функций множества М и функций, которые могут быть получены из функций множества М путем отождествления переменных и суперпозиций (конечным их числом) Изобразим множество и его замыкание на диаграмме Вена (рис.1). Как видно из диаграммы само множество М является подмножеством замыкания [М]. Функции из замыкания представимы формулами составленными из функций множества М. Например, функция g1 xy y z представлена формулой составленной из f1 , f 2 , f 3 , где f1 x y , f2 x y , f3 x y . g g1 2 gk [M] f1 f2 fi fn gr M P2 рис.2 Определение. Множество функций М называется замкнутым, если его замыкание совпадает с самим множеством [M]=M. Определение 2. Система М называется полной, если её замыкание есть множество всех булевых функций ([М]=P2). Например 0,1 замкнуто и неполно, P2 замкнуто и полно, ,, незамкнуто и полно. Другими словами, если функция представима формулой над множеством М, где М - замкнутый класс, то эта функция также принадлежит классу М. 30 Свойства замыкания 1. Обозначим Р2 множество всех булевых функций. Замыкание множества всех булевых функций есть само множество Р2. [P2]=P2. 2. Замыкание замыкания М равно замыканию множества М. [[M]]=[M] 3. Если N⊂M (N подмножество множества M), то [N]⊂[M]. 4. [M]⋃[N]⊂[M⋃N]. Для полной системы диаграмма Венна будет выглядеть следующим образом (рис.3). Как видите [P2]=[M]. g 2gk gr [M] рис.3 f1 f2 fi fn М Р 10.4. Пять замкнутых классов. 1. Класс функций, сохраняющих нуль (То) Определение. Булева функция сохраняет нуль, если на нулевом наборе принимает нулевое значение (нулевой набор состоит из п нулей, где п число аргументов булевой функции). Все остальные наборы, кроме нулевого, нас не интересуют. Множество всех функций сохраняющих нуль образуют замкнутый класс T0 . Пример. Функция x y сохраняет нуль, так как она равна нулю наборе 00 ( 0 0 )=0. Функция х/у не сохраняет нуль, поскольку на нулевом наборе она принимает единичное значение. Функция, представленная дизъюнкцией конъюнкций (ДНФ) или СДНФ, сохраняет нуль, если в неё не входит конъюнкция, в которой все переменные взяты со знаком инверсии. Например, f ( x, y ) xy x y сохраняет 0, а функция f ( x, y ) x y x y не сохраняет 0. Функция f ( x, y, z ) ( x z ) yx zy сохраняет нуль, так как f (0,0,0) (0 0) 00 00 0 0 0 0 . Класс T0 замкнут, это означает, что любая функция может быть представлена формулой над множеством функций сохраняющих 31 нуль будет также сохранять нуль, то есть будет принадлежать классу T0 . 2. Класс функций, сохраняющих единицу ( T1 ) Определение. Булева функция сохраняет единицу, если на единичном наборе она принимает значение единицы (единичный набор состоит из п единиц, где п - число аргументов булевой функции). Множество всех функций сохраняющих единицу образуют замкнутый класс T1 . Пример, функция x y не сохраняет единицу, так как она равна нулю на наборе 11 ( 1 1 )=0, функция х\/у сохраняет единицу, поскольку на единичном наборе она принимает единичное значение 1 1 1. Проверим функцию f ( x, y, z, u ) xy ( z x) u . f (1,1,1,1) 1 1 (1 1) 1 0 1 1 1 , отсюда следует что f T1 . Функция, представленная дизъюнкцией конъюнкций или СДНФ, сохраняет единицу, если в нее входит конъюнкция в которой все переменные взяты без знака инверсии. Например, f ( x, y ) xy x y сохраняет 1, так как есть конъюнкция ху, а функция f ( x, y ) x y x y не сохраняет 1. Класс T1 замкнут, это означает, что любая функция, которая может быть представлена формулой над множеством функций сохраняющих единицу, будет также сохранять единицу, то есть будет принадлежать классу T1 . Упражнение №1: 1.Какие из элементарных функций двух аргументов принадлежат классу T0 ? 2. Какие из элементарных функций двух аргументов принадлежат классу T1 ? Упражнение №2: Определить принадлежит ли функция классу T0 ; классу T1 . f(x,y)=(0,1,1,1); f(x,y)= (1,1,1,1); f(x,y)= (0,1,1,0); f(x,y)= (0,0,1,0,1,0,1,1,1); f(x,y)= (1,0,1,0,1,0,1,1,1); f(x,y)= (0,0,1,0,1,0,1,1,0). 32 3. Класс монотонных функций (М) В математическом анализе исследовались многие функции на возрастание и убывание. Например, функция y x 3 всегда возрастает, причем возрастает на всей области определения, поэтому ее можно назвать монотонной. Функция y x 2 вначале убывает на промежутке ;0 , а затем возрастает на промежутке 0; . Эта функция не монотонна. Монотонная функция ведет себя одинаково на всей области определения. Посмотрим, какая функция называется монотонной в дискретной математике. Определение. Булева функция зависящая от n аргументов является монотонной, если при любом возрастании наборов значения функции не убывают. Пусть даны два набора а и b: a a1 , a2, ..., an1 , an ; b b1 , b2, ..., bn1 , bn , где ai и bi , i 1,2,3,..., n - двоичные значения отдельных разрядов наборов а и b. Если одновременно выполняются условия: b1 a1 , b2 a2 ,..., bn an , то пишут b a и говорят, что набор b не меньше набора а. Такие наборы называются сравнимыми. Все остальные наборы являются несравнимыми. Например, относительно наборов a 010010 и b 100011 нельзя сказать, что b a , либо a b , так как для первых разрядов имеем: b1 a1 (1 >0), а для вторых a2 b2 (0>1). В вышеприведенном определении монотонной функции говорится только о сравнимых наборах. На несравнимых наборах значения монотонной функции могут и убывать, т. е. переходить с единичного значения на нулевое. Такой случай монотонной функции приведен в таблице 5. Таблица 5 xyz f 000 0 001 0 010 0 011 1 100 0 101 1 110 1 111 1 33 При переходе с набора 010 на сравнимый с ним набор 011 функция возрастает, а при переходе с набора 011 на несравнимы с ним набор 100 - убывает. На несравнимых наборах функция может не только убывать, но и оставаться неизменной. Утверждение: если функция представлена в виде дизъюнкции конъюнкций (ДНФ) и в ней отсутствуют инверсные аргументы, то функция является монотонной. Это утверждение можно использовать в качестве критерия для распознавания монотонных функций. Например, функция f ( x, y, z ) xy xz xyz точно является монотонной. Если же распознавание осуществляется при помощи таблицы истинности, то и общем случае следует проверить все пары сравнимых наборов. Все монотонные функции образуют функционально замкнутый М. Это значит, что любая булева функция, которая может быть представлена суперпозицией монотонных функций, обязательно будет принадлежать классу М, то есть тоже будет монотонной. Упражнение №1: Укажите нары, содержащие сравнимые наборы: 1. 00001 и 00011 2. 1001 и 1001 3. 10001 и 01110 4. 0010 и 1100 5. 10001 и 11101 Упражнение №2: Укажите номера наборов, которые не меньше набора 10001: 1)11100 4)10000 7)10001 2)01101 5)10011 8)11110 3)11001 6)11111 9)11011. Упражнение №3: Определите какие из функций являются монотонными. 1. f ( x, y ) x y 2. f ( x, y ) x y 3. f ( x, y ) x / y 4. f ( x, y ) x y 5. f ( x, y, z ) x y xz ; 6. f ( x) x x ; 34 Упражнение №4: Определите по таблице истинности, какие из функций являются монотонными. 1. f ( x, y ) ( 0,1,1,1); 2. f ( x, y ) (0,0,0,0); 3. f ( x, y, z ) (0,1,1,1,0,1,1,1); 4. f ( x, y, z ) (1,0,1,1,1,0,1,1); 5. f ( x, y, z ) (0,0,0,0,1,1,1,1); Двойственные функции Функция f(x,y)= ( x y ) является суперпозицией функций инверсий и конъюнкций. Функция g(x,y)=x→(x y) является суперпозицией функций импликации и суммы по модулю два . Функция h(x,y,z)=(x y)~z является суперпозицией функций и ~. Определение. Функция = f ( x1, x2 ,...xn ) называется g ( x1 , x 2 ,...xn ) двойственной функцией к функции f и обозначается f*. Например если f= ( x1 x2 ) x3 , то f * ( x1 x2 ) x3 , то есть мы ставим значок инверсии для каждой из переменной и берём инверсию от всей функции. Если функция f задана с помощью таблицы, то двойственная ей функция f* получается инвертированием столбца значений (заменой нулей на единицы) и последующим его переворачиванием (вверх ногами). Пример: Запомните!(0)*=1 35 (1)*=1 (x)*= ( x) x Рассмотрим функции двойственные к элементарным. Функция двойственная к дизъюнкции есть конъюнкция. Докажем это: ( x y)* ( x y) x y (по правилу де Моргана). ( x y )* ( x y ) ( x ~y)*= x y ( x y )*= x ~y (x/y)*= x ↙y ( x ↙y)*=x/y Рассмотрим ещё один пример получения двойственной функций по определению. f ( x z ) ( xy z ) , тогда f * ( x z ) ( xy z ) ( x z ) ( xy z ) ( x z ) (( x y ) z ) x z ( xz yz ) x z xz yz x yz Это не самый удобный способ получении двойственной функции. Такой способ получения двойственной функции использует суперпозицию функций. Теорема (принципа двойственности): Функция двойственная суперпозиции функций, равна суперпозиции двойственных функций. Точнее ( f0 ( f1,... f m ))* f0 * ( f1*,... f m *) Пример нахождения двойственных функций по принципу двойственности: f * xy ~(z↙(x y) x . f ( x y ) ( z / xy) x ; Упражнение №1: Найти двойственную функцию по определению: a. \/yz; d. f=x\/ \/ ; b. \/ ; e. f= /\ /\c; c. \/ ; f. f=x\/yz ; Упражнение №2: Найти функцию двойственную к данной по таблице истинности: a) f(1,1,0,1); b) f(1,0,0,1); c) f(0,1,1,1,0,1,1,1); 36 d) e) f) g) f(0,1,1,1,1,0,0,0); f(1,1,0,1,0,1,1,0); f(1,1,1,1,0,1,0,1,0,0,0,0,1,0,1,0); f(1,0,0,1,0,0,0,1,0,0,1,1,0,0,1,1). Упражнение №3: Найдите двойственную функцию по принципу двойственности: a) f=(x\/y) (z\/(x~y)); b) f=(xz\/y)/((z⊕x)\/y); c) f=x\/((y~xz)⊕xy/\(z↙x)); d) f=x⊕(xz/\( ~z/\(y/ ); e) f=z~((x\/y)/(z/\( f) f=((xy⊕yz)\/xz)↙ ))); . 4. Класс самодвойственных функций (S) Определение. Функция называется самодвойственной, если двойственная ей функция равна самой функции, f*=f. Следовательно, имеет место равенство: f ( x1 ,..., xn ) f ( x1 , x2 ,..., xn ) . Все самодвойственные функции образуют замкнутый класс S. Самодвойственная функция обладает очень важным свойством: на противоположных наборах значений аргументов принимает противоположные значения. По заданному набору найти набор противоположный ему очень легко: достаточно в заданной двоичной последовательности нули заменить единицами, а единицы - нулями. Например, если 01100 заданный набор, то противоположный ему - 10011. В таблице 1 перечислены все четырехзначные наборы значений аргументов x1 , x2 x3 , x4 . Таблица 6. Самодвойственной функции Таблица 6 x1 x 2 x3 x 4 f f* 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 1 0 1 0 1 37 11 11 00 00 11 00 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 11 11 00 00 11 00 11 11 00 00 В таблице наблюдается своеобразная симметрия: наборы, расположенные на одинаковых расстояниях от начала и конца таблицы являются противоположными. Это значит, что в диапазоне наборов 0000 - 0111 в колонке, где записываются значения функции, единицы и нули можно располагать произвольным образом. При этом всякий раз будет получаться самодвойственная функция, если на противоположных наборах всю записывать противоположные значения функции. В таблице 1 приведен пример самодвойственной функции. Чтобы определить является ли функция самодвойственной, есть несколько способов. 1) Во-первых, можно найти по определению функцию двойственную к данной, и проверить совпадет ли двойственная функции самой функцией. Пример Пусть f ( x, y ) xy x y , тогда f * x y xy ( x y )( x y ) xy y xy xy xy . 2) Во-вторых, можно построить таблицу истинности для заданной функции и по таблице получить двойственную функцию. 3) В-третьих, можно воспользоваться свойствами и проверить значения функции. На противоположных наборах они должны быть различны. Из свойства также следует, что количество нулей и количество единиц в столбце значений самодвойственной функции должно быть одинаковое. Поэтому проверку на самодвойственность начинайте с подсчета количества нулей и единиц, если оно окажется разным, то функция точно 38 несамодвойственная. Если количество нулей и единиц совпадает, то необходима дальнейшая проверка на самодвойственность. Примеры: 1) f(x,y,z)=(0,1,0,1,0,1,0,0) вектор значений функции содержит три единицы и пять нулей, следовательно, эта функция не самодвойственная. 2) f(х,у)=(0,1,0,1,0,1,0,1) заменяем значения в векторе на обратные (1,0,1,0,1,0,1,0) и переворачиваем весь вектор f*(x,y,z)=(0,1,0,1,0,1,0,1) эта функция самодвойственная. Класс самодвойственных функций S функционально замкнут. Упражнение №1: Какие из элементарных функций двух аргументов принадлежат классу S? Упражнение №2: Определить принадлежит ли функция классу S? f ( x, y, z ) xy xz ; f ( x, y, z ) xz xyz x z ; f ( x, y ) ( x ~ y ) ( x y ) ; f ( x, y , z ) x y z ; f ( x, y, z ) xy yz xz ; f ( x) x . Упражнение №3: Определить какие из функций самодвойственные: f ( x, y ) ( 0,1,1,1); f ( x, y ) (0,1,1,0); f ( x, y, z ) (0,0,1,0,1,0,1,1); f ( x, y, z ) (1,0,1,0,1,0,1,1); f ( x, y, z, u ) (0,0,1,0,1,0,1,1,0,1,0,0,1,0,1,1). 5. Класс линейных функций (L) Полином Жегалкина Определение. Полиномом Жегалкина назовем выражение, в котором нет знаков инверсий, а конъюнкции переменных соединяются операцией суммой по модулю два. Несколько примеров полиномов Жегалкина f ( x1 , x2 , x3 , x4 , x5 , x6 ) x1 x2 x3 x1 x4 x2 x3 x1 x4 x5 x6 1 39 f ( x1 , x2 , x3 ) x1 x2 x3 x1 x3 x2 x3 x1 f ( x, y, z ) 1 x xz xy Рассмотрим ряд тождеств, которые нам понадобятся в дальнейшем. 1. x 1 x 2. x y x y xy 3. x x x x 0 , если количество слагаемых четное. x x x x x , если количество слагаемых нечетное. 4. x( y z ) xy xz – дистрибутивный закон. Теорем а: Любую булеву функцию можно представить в виде полинома Жегалкина. Пусть дана функция f x y z преобразуем ее и полином Жегалкина. f x y z =[пpименяем тождество 1 к x y ]= (1 x y ) z =[применяем тождество 2 к ( x y )]= (1 ( x y xy)) z = (1 x y xy) z =[применяем тождество 4] z xz yz xyz . Определение. Линейным полиномом Жегалкина назовем выражение вида: c0 c1 x1 c2 x2 cn xn , где c0 , c1 , c2 cn - коэффициенты, принимающие значение либо нуля либо единицы, x1 , x2 , , xn - переменные. Если ci 0 , то переменной xi в полиноме не будет. Линейный полином отличается от других полиномов Жегалкина отсутствием конъюнкции. В каждом из слагаемых только одна переменная. Примеры линейных полиномов: f ( x1 , x2 ) x1 x2 1 f ( x1 , x2 , x3 , x4 ) x1 x3 здесь коэффициенты c0 , c2 , c4 0, c1 , c3 1 . Линейные функции Любую функцию можно представить полиномом Жегалкина, но не любую можно представить лишь полиномом Жегалкина. Определение. Булева функция называется линейной, если ее можно представить линейным полиномом Жегалкина. Множество линейных функций образуют замкнутый класс линейных функций зависящих от n аргументов. 40 Как определить является ли функция линейной? 1) Необходимо представить функцию в виде полинома, 2) проверить является ли линейным. Например: х~у x y 1 x y - линейна; х→у x y x y x y 1 x y (1 x) y 1 x y y xy 1 x xy - не линейная, так как в полиноме есть конъюнкция. Все линейные функции образуют функционально замкнутый класс. Это значит, что любая булева функция, которая может быть представлена суперпозицией линейных функций, обязательно будет принадлежать классу L, то есть тоже может быть представлена линейным полиномом. Упражнение №1: Представьте в виде полинома Жегалкина функции 1. x y 4. xy xy 2. x/y 5. x y z 3. xy yz 6. xyz Упражнение №2: Какие из элементарных функций являются линейными? Какие из функций упражнения № 1 принадлежат классу L? Теорема Поста о функциональной полноте В предыдущих подразделах рассмотрено пять замечательных классов булевых функций, главная особенность которых состоит в том, что в результате применения операции суперпозиции к функциям того или иного класса получаются функции только того же класса. Кроме этих пяти классов существуют и другие функционально замкнутые классы, однако, для проверки полноты системы функций вполне достаточно вышерассмотренных классов самодвойственных, линейных, монотонных, сохраняющих единицу и сохраняющих нуль функций. Критерий полноты системы дает теорема Поста: Система булевых функций является функционально полной, если она содержит хотя бы одну нелинейную функцию, хотя бы одну немонотонную, хотя бы одну несамодвойственную, хотя бы одну, не сохраняющую единицу, и хоти бы одну, не сохраняющую нуль. На первый взгляд может показаться, что функционально полная система должна содержать не менее пяти функций. На самом деле это не так. Существуют функции, обладающие одновременно несколькими 41 свойствами из перечисленных в теореме Поста. Например, f xy zu одновременно является нелинейной и функция несамодвойственной. Как пользоваться теоремой Поста? Пусть дана система функций f1 , f 2 , f 3 , где f1 xyz , f 2 x y z , f3 1 . Система будет полной, если она содержит хотя бы одну нелинейную функцию, хотя бы одну немонотонную, хотя бы одну не самодвойственную, хотя бы одну, не сохраняющую единицу, и хотя бы одну, не сохраняющую нуль. Начинаем проверку с класса T0 . f1 xyz принадлежит T0 , f 2 x y z тоже сохраняет нуль, f 3 1 на нулевом наборе равна 1, так мы нашли функцию не сохраняющую нуль. Проверяем класс T1 . Все три функции сохраняют единицу. Дальнейшие проверки нам не нужны, так как в системе нет ни одной функции не сохраняющей единицу. Следовательно, эта система не полная. Теперь пример полной системы содержащей всего одну x y x/y функцию {х/у}. Функция штрих Шеффера не сохраняет 0 0 1 нуль и не сохранят единицу, по таблице истинности 0 1 1 видно, что она не является самодвойственной и не является монотонной. 1 0 1 Покажем, что эта функция не линейная 1 1 0 х/у x y 1 xy (нелинейный полином). Функционально полные системы позволяют представить любую булеву функцию, через функции этой системы. На практике это означает, достаточно сделать лишь несколько логических элементов (для электронных схем), комбинация которых позволит выполнять самые сложные логические операции. Упражнение: Какие из приведенных ниже систем функций являются полными {0, 1, x y , x y z }; {х,х/\у}; { x y , x ~ y , xy }; {х/\у, 0 , х→у}; { x y z , x }. 42 СПИСОК ЛИТЕРАТУРЫ Гаврилов Г. П., Сапоженко А. А. Сборник задач по дискретной математике./Г.П. Гаврилов. – М.: Наука, 1977. – 368 с. 2. Горбатов В. А. Основы дискретной математики./ В.А. Горбатов. – М.: Высшая школа, 1986. – 311 с. 3. Корниенко А. В. Дискретная математика./А.В. Корниенко. – Томск: ТПУ, 1996. – 95с. 4. Лавров И.А., Максимова Л.Л. Задачи по теории множеств, математической логике и теории алгоритмов./И.А. Лавров. – М.: Физматлит, 2002. – 256 с. 5. Мендельсон Э. Введение в математическую логику./Э. Мендельсон. – М.: Наука, 1971.– 320 с. 6. Нефедов В. Н., Осипова В. А. Курс дискретной математики./В.Н. Нефедов. – М.:Изд-во МАИ, 1992. – 264 с. 7. Смыслова З. А. Математическая логика и ее приложения./З.А. Смыслова. – Томск: ТАСУР, 1994. – 111с. 8. Фор Р. и др. Современная математика./Р. Фор. – М.: Мир, 1966. – 271 с. 9. Фрейденталь Г. Математика в науке и вокруг нас./Г. Фрейденталь. – М.: Мир, 1977. – 261 с. 10. Шевелев Ю. П. Высшая математика. Дискретная математика. Ч. 1: Теория множеств. Булева алгебра (для автоматизированной технологии обучения): Уч. пособие./Ю.П. Шевелев. Томск: ТАСУР, 1998. – 114 с. 11. Новиков Ф.А. Дискретная математика для программистов. Учебник для вузов. 2-е изд./Ф.А. Новиков. – СПб.: Питер, 2005. – 364 с. 1. 43 БУЛЕВА АЛГЕБРА Методические указания по дискретной математике для студентов очной, очно-заочной и заочной формы обучения всех направлений Составитель Березовская Ольга Борисовна Печатается в редакции составителя Подписано к печати 31.05.12 Формат 60х84/16. Бумага офсетная. Плоская печать. Усл. печ. л.2,56. Уч-изд.л.2,32 Тираж 20 экз. Заказ 1531. Цена свободная. ИПЛ ЮТИ ТПУ. Ризограф ЮТИ ТПУ. 652000, Юрга, ул. Московская, 17. 44