5 1. ЛОГИКА ВЫСКАЗЫВАНИЙ 1.1. История математической логики Логика как наука о законах человеческого мышления зародилась в давние времена. Родоначальником формальной логики считают Аристотеля (IV в. до н.э.). До сих пор мы пользуемся классификацией суждений, введенной этим древнегреческим ученым, именно он впервые обратил внимание на то, что рассуждения мы проводим, исходя из структуры утверждений, а не из их конкретного содержания. В конце семнадцатого века вопросы логики привлекли внимание немецкого ученого Г. Лейбница (1646-1716 гг.). Он считал, что логика должна стать “искусством вычисления”. Основные понятия должны быть обозначены особыми символами, должны быть выработаны правила их соединения, и тогда всякое рассуждение можно будет заменить вычислением. Эти идеи были частично реализованы в работах английского ученого Дж. Буля (1815-1864 гг.). Он создал алгебру высказываний (впоследствии ее стали называть алгеброй логики). Работа Буля стала началом развития математической логики (а аристотелеву логику называют традиционной формальной логикой). В конце XIX века логика нашла применение в обосновании основных понятий и идей математики. Для построения математической теории используется аксиоматический способ: без доказательств принимаются основные понятия этой теории (аксиомы), из которых логически выводится все ее содержание. Логическими средствами этого являются правила вывода данной теории. В начале двадцатого века математическая логика нашла применение в технике, затем была установлена тесная связь математической логики с новой наукой – кибернетикой. Как часть математической логики возникла новая математическая дисциплина – теория алгоритмов, занимающаяся проблемами обоснования существования алгоритмов решения задач. 1.2. Понятие высказывания Изучая теорию множеств, мы не давали строгого определения понятия “множество”, считая его понятием неопределяемым, первичным; однако, при этом мы опирались на интуитивное представление о понятии “множество”. Так же поступим и при изучении математической логики: не будем давать строгого определения понятия “высказывание”, считая высказыванием любое повествовательное предложение, о котором есть смысл говорить, что оно истинно или ложно. При этом высказывание не может быть одновременно и истинным, и ложным. Например, “ 2 2 3 ” – высказывание, принимающее значение “ложь” (Л), “ 2 5 7 ” – высказывание, принимающее значение “истина” (И), а “ x y 4 ” не является высказыванием. 1.3. Операции над высказываниями В естественном языке из нескольких простых предложений можно составить сложное, пользуясь союзами “и”, “или” и т.п. Так же из простых 5 6 высказываний (высказывательных переменных) будем строить составные, пользуясь логическими союзами – логическими операциями. Отрицанием (инверсией) высказывания X называется высказывание, истинное тогда и только тогда, когда X ложно (обозначается X или 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 одинаковы (обозначение: X ~ Y , X Y ). 1.4. Таблицы истинности Операнды логических операций могут принимать только два значения: И или Л. Поэтому каждую логическую операцию , &, , , легко задать с помощью таблицы, указав значение результата операции в зависимости от значений операндов. Такая таблица называется таблицей истинности (табл. 1.1). Таблица 1.1 Таблицы истинности логических операций X Y X X&Y XY XY XY И И Л Л И Л И Л Л Л И И И Л Л Л И И И Л И Л И И И Л Л И 1.5. Формулы логики высказываний В алфавит логики высказываний входят две специальные буквы И и Л, обозначающие логические константы “истина” и “ложь”, прописные буквы для обозначения высказывательных переменных, знаки логических операций и круглые скобки. С помощью этих символов мы строим формулы логики высказываний, заключая каждую операцию в скобки: F ((( A & (B)) C ) (A) . 6 7 Чтобы формулы не были громоздкими, договоримся опускать некоторые скобки, учитывая приоритет логических операций (“силу” связок). В табл. 1.1 логические операции записаны в порядке убывания приоритета. Учитывая эту договоренность, вышеприведенную формулу можно записать короче: F ( A & B C) A . В логике высказываний особую роль играют формулы, принимающие значение “истина” при любых значениях переменных. Такие формулы называются тавтологиями (или тождественно истинными формулами). Формулы, принимающие значение “истина” хотя бы при одном наборе списка переменных, называются выполнимыми. Формулы, принимающие значение “ложь” при любых значениях переменных, называются противоречиями (тождественно ложными, невыполнимыми) (табл. 1.2). Таблица 1.2 Формулы логики высказываний Выполнимые формулы Тавтологии Остальные X X И X Y Невыполнимые Противоречия X & X Л В логике высказываний всегда можно определить, является ли данная формула тавтологией – для этого достаточно построить ее таблицу истинности. Пример: Является ли тавтологией формула F ( X Y ) X ? Построим таблицу истинности для формулы F (табл. 1.3). Таблица 1.3 Таблица истинности X Y XY X (XY) X И И Л Л И Л И Л И Л И И Л Л И И Л И И И Формула принимает значение “ложь” на наборе переменных X=И, Y=Л, следовательно, не является тавтологией; это выполнимая формула. 1.6. Равносильные преобразования формул Формулы F1 и F2 называются равносильными, если они принимают одинаковые истинностные значения при любых значениях своих переменных. Пример. Покажем равносильность формул F1 X Y и F2 X Y . Для этого составим таблицу истинности (табл. 1.4). Таблица 1.4 Таблица истинности 7 8 X Y X F1 F2 И И Л Л И Л И Л Л Л И И И Л И И И Л И И Сравнивая два последних столбца таблицы, убеждаемся, что они полностью совпадают, т.е. F1 F2 . Очевидно, что равносильны любые две тождественно истинные формулы, равносильны любые две тождественно ложные формулы. Отношение равносильности на множестве формул логики высказываний является отношением эквивалентности, так как обладает свойствами рефлексивности ( F F для любой формулы F), симметричности (если F1 F2 , то F2 F1 ), транзитивности (если F1 F2 и F2 F3 , то F1 F3 ). С помощью этого отношения все множество формул логики высказываний разбивается на классы равносильных формул. Основные равносильности (табл. 1.5) – законы логики высказываний доказываются с помощью таблиц истинности. Таблица 1.5 Основные равносильности логики высказываний № 1 2 3 4 5 6 7 8 9 10 11 X X И Формула X & X Л X &Y Y & X , X Y Y X ( X & Y ) & Z X & (Y & Z ) ( X Y ) Z X (Y Z ) X & (Y Z ) ( X & Y ) ( X & Z ) X (Y & Z ) ( X Y ) & ( X Z ) X X X & X X, X X X ( X Y ) X & Y ( X & Y ) X Y X ( X &Y ) X , X & ( X Y ) X ( X & Y ) ( X & Y ) X ( X Y ) & ( X Y ) X X Y X Y 8 Название Закон исключенного третьего Закон противоречия Законы коммутативности Законы ассоциативности Законы дистрибутивности Закон двойного отрицания Закон идемпотентности Законы де Моргана Законы поглощения Законы склеивания Замена импликации 9 12 X ~ Y ( X & Y ) (X & Y ) Замена эквиваленции Обратите внимание на сходство основных равносильностей логики высказываний и законов алгебры множеств. Это объясняется тем, что алгебра множеств и алгебра высказываний изоморфны, т.е. одинаково организованы с точки зрения математики, обе они являются булевыми алгебрами. Пример. Пользуясь основными равносильностями логики высказываний (табл. 1.5), показать, что формулы F1 ( A B) ( B A) и F2 ( A & B) равносильны. Преобразуем первую формулу: 11 6,4 8 F1 (A B) (B A) (( A) & B) (B A) 9 8 3 (( A & B) B) A B A ( B & A) ( A & B) F2 . Формула F2 получена из формулы F1 цепочкой равносильных преобразований (над знаком равносильности указан номер применяемого закона из табл. 1.5), следовательно, F1 F2 . 1.7. Нормальные формы формул Назовем элементарной дизъюнкцией (ЭД) высказывательных переменных или их отрицаний k дизъюнкцию k 1 . Назовем элементарной конъюнкцией (ЭК) конъюнкцию k высказывательных переменных или их отрицаний k 1 . Например, X , X Y , X Y Z - элементарные дизъюнкции; X , X & Y , X & Y & Z - элементарные конъюнкции. Говорят, что формула записана в дизъюнктивной нормальной форме (ДНФ), если она является дизъюнкцией элементарных конъюнкций. Формула записана в конъюнктивной нормальной форме (КНФ), если она является конъюнкцией элементарных дизъюнкций. Пример 1. Дизъюнктивными нормальными формами являются следующие формулы (элементарные конъюнкции выделены подчеркиванием): X ; X X & Y X & Y & Z ; X Y ; X & Y . В следующих КНФ подчеркиванием выделены элементарные дизъюнкции: X ; X Y ; X & Y ; X & X Y & X Y Z . Теорема 2. Любую формулу логики высказываний можно привести равносильными преобразованиями к ДНФ. Теорема 3. Любую формулу логики высказываний можно привести равносильными преобразованиями к КНФ. Доказательства этих теорем дают нам способ построения ДНФ и КНФ. Рассмотрим построение ДНФ для данной формулы F . 9 10 Шаг 1. Построить F1 F такую, что F1 содержит только связки , & , . Воспользоваться равносильностями 11, 12 (табл. 1.5). Шаг 2. Преобразовать F1 к F2 F1 такой, что в F2 знак стоит только перед высказывательными переменными. Воспользоваться законом де Моргана. Шаг 3. Преобразовать F2 к F3 F2 пользуясь первым дистрибутивным законом при необходимости X & (Y Z ) ( X & Y ) ( X & Z ) ; использовать законы идемпотентности, коммутативности, ассоциативности. Формула F3 F в силу транзитивности отношения " " и записана в ДНФ. Для приведения формулы F к КНФ необходимо и достаточно выполнить шаг 1 и шаг 2 так же, как для построения ДНФ, а затем применить второй дистрибутивный закон X (Y & Z ) ( X Y ) & ( X Z ) и сгруппировать в скобки. Пример 2. Привести к ДНФ формулу F X & Y Y . Шаг 1. F X & Y Y F1 . Шаг 2. F1 X Y Y F2 . Шаг 3. F2 X Y F3 . Перечислите равносильности, использовавшиеся в преобразованиях примера 2. Нормальные формы записи формул позволяют установить, является ли данная формула тавтологией (противоречием) или нет. Теорема 4. Формула является тавтологией тогда и только тогда, когда ее можно привести к КНФ, в каждую элементарную дизъюнкцию которой одновременно входит переменная и ее отрицание. Доказательство. Пусть формула F F X1, X 2 ,..., X n тавтология. Тогда в силу определения КНФ и операции конъюнкции, каждая ЭД записанной КНФ формулы F1 F также является тавтологией. Проведем доказательство методом от противного. Предположим, что найдется элементарная дизъюнкция D , такая, что D И , но ни одна из переменных списка X1, X 2 ,..., X n не входит в D вместе со своим отрицанием. Рассмотрим оценку списка переменных, в которой положим X i И , если переменная X i входит в D со знаком отрицания, и X i Л в противном случае i 1, n . На этой оценке D Л , т.е. получили противоречие, значит наше предположение неверно. Пусть теперь у формулы F есть КНФ, в каждую ЭД которой входит некоторая переменная вместе со своим отрицанием. Докажите самостоятельно, что F - тавтология. 10 11 Практическое применение теоремы 4 очевидно: приведя формулу к КНФ, по ее виду определяют, является ли она тавтологией. ДНФ(КНФ) представляет формулу неоднозначно. Частным случаем ДНФ является совершенная ДНФ (СДНФ) – однозначное представление формул логики высказываний. Пусть формула F зависит от списка переменных X1, X 2 ,..., X n . Полной элементарной конъюнкцией (ПЭК) будем называть элементарную конъюнкцию, содержащую все высказывательные переменные этого списка (или их отрицания) ровно по одному разу, причем в том порядке, в котором они перечислены в этом списке. Например, если формула зависит от списка переменных X , Y , Z , то формула X & Y - ЭК, но не ПЭК; а формула X & Y & Z - ПЭК. Аналогично определяется понятие полной элементарной дизъюнкции (ПЭД). ДНФ называется совершенной относительно списка переменных X1, X 2 ,..., X n , если все ее ЭК полные относительно этого списка переменных и различные. Теорема 5 (о существовании СДНФ). Пусть формула F1 не является тождественно ложной и зависит от списка переменных X1, X 2 ,..., X n . Тогда существует равносильная ей формула F2 , находящаяся в СДНФ относительно этого списка переменных. Доказательство. По теореме 1 для формулы F1 существует равносильная ей F , находящаяся в ДНФ. Формула F , так же, как и F1 , зависит от списка X1, X 2 ,..., X n (в процессе приведения к ДНФ новые переменные не появляются). Рассмотрим элементарные конъюнкции формулы F. Пусть в некоторую ЭК одновременно входит переменная X i и ее отрицание X i . Если это единственная элементарная конъюнкция формулы F , то F при всех оценках списка переменных должна принимать значение «ложь», что невозможно (по условию теоремы F1 Л ). Следовательно, формула F может быть приведена к виду F X i & X i & K D , где K остальные члены элементарной конъюнкции, D - остальные члены ДНФ. Но F X i & X i & K D D , т.е. ЭК, содержащую переменную и ее отрицание можно отбросить, при этом всегда останутся неотброшенными какие-либо ЭК. Пусть в некоторой ЭК формулы F несколько раз встречается переменная X i (или ее отрицание X i ). В силу идемпотентности можно оставить только одно вхождение X i ( X i ). 11 12 В результате этих преобразований каждая ЭК будет содержать каждую переменную X i (либо ее отрицание) не более одного раза. При этом возможны следующие варианты: 1) ЭК содержит один раз X i и ни разу X i ; 2) ЭК содержит один раз X i и ни разу X i ; 3) ЭК не содержит ни X i , ни X i ; В последнем случае применим формулу расщепления (формула 10 табл.1.5): ЭК ЭК & X ЭК & X . Это преобразование будем выполнять до тех пор, пока каждая ЭК не станет полной относительно списка переменных формулы F . Теперь, используя коммутативность конъюнкции, расположим переменные в каждой ЭК в порядке возрастания индексов и сравним все ЭК между собой. Если получилось несколько одинаковых ЭК, применяя закон идемпотентности, оставим только по одному представителю каждой ЭК. Полученная формула F2 и есть СДНФ формулы F1 . Действительно: F2 F1 и является дизъюнкцией полных ЭК, причем все ЭК различные. Теорема доказана. Доказательство теоремы дает нам способ построения СДНФ для всякой формулы, не являющейся противоречием. Теорема 6. Пусть формула F1 И и зависит от списка переменных X1, X 2 ,..., X n . Тогда существует равносильная ей формула F2 , находящаяся в СКНФ относительно этого списка переменных. Докажите теорему 6 самостоятельно. Представить формулу в СДНФ (СКНФ) можно единственным образом. Теорема 7 (единственности). Если формулы F1 и F2 являются совершенными дизъюнктивными (конъюнктивными) нормальными формами формулы F относительно списка X1, X 2 ,..., X n , то они могут отличаться лишь порядком ЭК (ЭД). (Без доказательства). Теорема 8 (критерий равносильности). Две формулы F1 и F2 , зависящие от списка X1, X 2 ,..., X n , и не равные тождественно Л И , равносильны тогда и только тогда, когда они приводятся к СДНФ (СКНФ), отличающимся лишь порядком ЭК (ЭД). (Без доказательства). Пример 3. Привести к СДНФ формулу F X , Y X Y . Формула F уже находится в ДНФ, и в нее входят две ЭК: X и Y . Формула F не является тождественно ложной, следовательно, по теореме 5 , существует СДНФ формулы F . По теореме 5 имеем случай 3: в первую ЭК не входит переменная Y и не входит Y , во вторую ЭК не входит переменная X и не входит X . Применим формулу расщепления: F X , Y X Y X & Y Y Y & X X . Далее применяя равносильности табл. 1.5 получим: 12 13 X & Y Y Y & X X д X & Y X & Y Y & X Y & X к , ас,ид X & Y X & Y X & Y . 1.8. Логические рассуждения 1.8.1. Определение логически правильного рассуждения Математическая логика изучает то общее, что есть во всех доказательствах, рассуждениях, независимо от их содержания. Когда мы говорим, что одно предложение D логически следует из другого Р, то имеем в виду следующее: всякий раз, когда предложение Р истинно, то истинно и предложение D. В логике высказываний мы имеем дело с формулами P и D, зависящими от некоторых высказывательных переменных X1, X 2 , , X n . Определение. Будем говорить, что из формулы P( X1, X 2 , , X n ) логически следует формула D( X1, X 2 , , X n ) и обозначать P├─D, если для любых наборов значений X1, X 2 , , X n при условии P( X1, X 2 , , X n ) И выполняется условие D( X1, X 2 , , X n ) И . Формула P называется посылкой, а D – заключением логического рассуждения. Пример. Формула P X & Y , т.е. X & Y D X логически следует из формулы ├─ X . Убедиться в этом можно, построив таблицу истинности (табл. 1.7). Таблица 1.7 Таблица истинности X Y P X & Y D X И И Л Л И Л И Л Л Л И Л Л Л И И Действительно, если P И (при X Л, Y И ), то D И и по определению P ├─ D. Если P Л , то формула D может принимать любые истинностные значения. Обычно в логических рассуждениях используется не одна посылка P, а несколько P1, P2 , , Pn . В этом случае рассуждение будет логически правильным ( P1, P2 , , Pn ├─ D), если P1 & P2 & & Pn ├─ D – из конъюнкции посылок логически следует заключение. Пример. Покажем, что рассуждение X Y , X ├─ Y является логически правильным. Составим конъюнкцию посылок P ( X Y ) & X и проверим 13 14 правильность логического рассуждения P истинности (табл. 1.8). ├─ D (здесь D Y ) по таблице Таблица 1.8 Таблица истинности X Y X Y P D И И Л Л И Л И Л И Л И И И Л Л Л И Л И Л Определение логического рассуждения выполняется, значит, это рассуждение является логически правильным. Логически правильное рассуждение будем записывать в виде схемы рассуждения: P1, P2 , , Pn D Так, логически правильная схема рассуждений из последнего примера имеет вид: X Y X Y 1.8.2. Проверка правильности логического рассуждения Какими способами можно проверить правильность логического рассуждения? Первый способ - по определению: а) записать все посылки и заключения в виде формул логики высказываний; б)составить конъюнкцию формализованных посылок P1 & P2 & & Pn ; в) проверить по таблице истинности, следует ли заключение D из формулы P1 & P2 & & Pn . Второй способ основан на следующем признаке логического следования. Теорема 1. Формула D логически следует из формулы P тогда и только тогда, когда формула P D является тавтологией. Доказательство. Пусть P ├─ D , тогда для всех наборов переменных значение P = И влечет D = И. Это означает, что для всех наборов переменных P D И, т.к. формула P D принимает значение “ложь” только в одном случае: когда P =И, а D =Л, но такая ситуация исключена по условию. Следовательно, P D – тавтология. 14 15 Обратно, пусть P D – тавтология, т.е. P D И. Отсюда по определению операции импликации заключаем: не существует такого набора значений переменных, при котором P =И, а D =Л. Значит, P ├─ D . Согласно доказанной теореме, проверка правильности логического рассуждения сводится к ответу на вопрос: является ли формула P D тавтологией? На этот вопрос можно ответить, построив таблицу истинности для формулы P D , или сведя эту формулу с помощью равносильных преобразований к известной тавтологии. Например, для логического рассуждения X Y , X ├─ Y с помощью законов логики высказываний (табл. 1.5) имеем: 11 11 8 ( X Y ) & X Y (X Y ) & X Y (( X Y ) & X ) Y 8 5 ((X Y ) X ) Y (( X & Y ) X ) Y 1 (( X X ) & (Y X )) Y ( И & (Y X )) Y 3,4 1 (Y X ) Y X (Y Y ) X И И по признаку логического следования данное рассуждение логически правильно. Третий способ проверки правильности логического рассуждения назовем сокращенным, т.к. он не требует полного перебора значений переменных для построения таблицы истинности. Для обоснования этого способа сформулируем условие, при котором логическое рассуждение является неправильным. Рассуждение является логически неправильным, если 0 0 0 найдется набор значений переменных X1 , X 2 ,..., X n такой, что посылка P( X10 , X 20 ,..., X n0 ) =И, а заключение D( X10 , X 20 ,..., X n0 ) =Л. Сокращенный метод заключается в следующем. Пусть требуется проверить правильность логического следования формулы D из посылок P1, P2 , , Pn . 0 0 0 Предположим, что существует набор X1 , X 2 ,..., X n , при котором все посылки истинны, а заключение ложно, и попытаемся найти этот набор. Если такой набор будет обнаружен, то наше предположение оправдалось, и рассуждение является логически неправильным. Если в процессе поисков набора придем к противоречию, то наше предположение ошибочно, а рассуждение является логически правильным. Пример. Проверим сокращенным способом правильность логического рассуждения X Y , X ├─ Y . Пусть существует набор X 0 ,Y0 , при котором посылки истинны, а заключение ложно. Оформим это предположение в виде таблицы (табл. 1.9). 15 16 Таблица 1.9 Проверка правильности логического рассуждения № 1 2 3 4 Истина X 0 Y0 X0 Ложь Y0 X 0 Y0 Примечания это наши предположения Из 2, 3 и определения импликации Запишем в четвертой строке таблицы импликацию X 0 Y0 , учитывая, что X 0 И, а Y0 Л. Получим противоречие между первой и четвертой строкой таблицы. Следовательно, рассуждение X Y , X ├─ Y является логически правильным. Если с помощью такого способа будем проверять правильность логического рассуждения с посылками P1 X Y , P2 X и заключением D Y , то увидим, что никакого противоречия не получается, но есть значения X 0 Л, Y0 И, при которых посылки истинны, а заключение ложно. Следовательно, это рассуждение логически неправильно. Заметим, что не всегда сразу удается отыскать интересующий нас набор значений переменных, и сокращенный метод приводит к частичному перебору их значений. Логически правильное рассуждение можно построить, пользуясь уже готовыми логически правильными схемами рассуждений - они называются правилами вывода (табл. 1.10). Таблица 1.10 Правила вывода A B, A ├─ B Правило Название Правило отделения (ПО) A B, B ├─ А Правило отрицания (ПТ) A, B ├─ A & B A & B ├─ A A ├─ A B A B , B ├─ A A B, B C ├─ A C Введение конъюнкции (ВК) Удаление конъюнкции (УК) Введение дизъюнкции (ВД) Удаление дизъюнкции (УД) Цепное правило (ЦП) 16 17 Пример. “Если идет дождь, то кошка в комнате или в подвале. Мышка в комнате или в норке. Если кошка в подвале, то мышка в комнате. Если кошка в комнате, то мышка в норке, а сыр в холодильнике. Сейчас идет дождь, а сыр лежит на столе. Где кошка и где мышка?” Обозначим: Д – “идет дождь”; К – “кошка в комнате”; Р – “кошка в подвале”; М – “мышка в комнате”; Н – “мышка в норке”; Х – “сыр в холодильнике”; Х – “сыр на столе”. Получаем следующую схему рассуждения: Д КР М Н КН&Х РМ Д & Х ? Воспользуемся правилами вывода (табл. 1.5). 1) Д & X ├─ Д (УК); 2) Д & X ├─ X (УК); 3) Д К Р, Д ├─ К Р (1, ПО). Далее рассмотрим два варианта. Вариант А. Пусть имеет место К. Тогда 4а) К , К Н & Х ├─ Н & Х (А, ПО); 5а) Н & Х ├─ Х (УК, 4а); 6а) Х , Х ├─ Х & Х (2,5а) – получили противоречие, значит, предположение было ошибочно и этот вариант невозможен. Вариант Б. Пусть имеет место Р. Тогда 4б) Р, Р М ├─ М (Б, ПО); 5б) Р, М ├─ Р & М (Б,4б,ВК). Получено заключение Р & М , т.е. “кошка в подвале, а мышка в комнате”. Таким образом, правила вывода помогают нам получить заключение из имеющихся посылок, т.е. проводить логическое рассуждение. 1.8.3. Прямые и косвенные методы доказательств 17 18 Доказывая теоремы в математике, мы всякий раз проводим логическое рассуждение P├─D (P – условие теоремы, D – заключение), т.е. выясняем, является ли тавтологией формула P D . При этом доказательство теоремы может быть прямым (как в примере с “кошкой и мышкой” в 1.9.2), когда на основе правил вывода из посылки P мы получаем заключение D. Но доказательство может быть и косвенным, когда вместо формулы P D мы рассматриваем другую, но равносильную ей формулу. Назовем теорему P D прямой. Наряду с ней можно рассматривать теоремы: D P – обратную; P D – противоположную; D P – обратную противоположной. Есть ли среди этих формул равносильные исходной? Построив таблицу истинности, убеждаемся, что есть (табл. 1.11). Таблица 1.11 Таблица истинности P D PD DP P D D P И И Л Л И Л И Л И Л И И И И Л И И И Л И И Л И И Прямая теорема равносильна обратно противоположной: P D D P . Эта равносильность имеет специальное название – закон контрапозиции. Заметим, что обратная и противоположная теоремы также связаны законом контрапозиции. Пример. Вместо доказательства утверждения “Если m n нечетное число, то m и n нечетны” ( P D ) согласно закону контрапозиции можно доказывать утверждение ( D P ): “Если хотя бы одно из чисел m или n четно, то m n четно”. К методам косвенного доказательства относятся доказательства “от противного”. Схемы таких доказательств основаны на равносильностях (справедливость которых можно проверить по таблице истинности): A B ( A & B) A ; A B ( A & B) B ; A B ( A B) C & C . 2. ЛОГИКА ПРЕДИКАТОВ 2.1. Понятие предиката 18 19 Не всякие логические рассуждения могут быть проведены средствами логики высказываний. Иногда нам требуется исследовать саму структуру предложений. Это можно сделать с помощью логики предикатов. Предложение “x белого цвета” не является высказыванием, но если вместо x подставить конкретное значение, например “ снег” или “жираф”, получим высказывание. Это предложение описывает свойство x “быть белого цвета” и является одноместным предикатом. Если рассмотрим предложение “x больше ростом, чем y”, то подставляя конкретные пары значений ( x, y ) , будем получать высказывания, принимающие значение “истина” или “ложь”. Это предложение описывает свойство пары объектов и является двухместным предикатом. В общем случае n-местным предикатом P( x1, x2 , , xn ) называется функция, аргументы которой являются элементами произвольного множества M, а значения принадлежат множеству {И, Л}, т.е. P( x1, x2 , , xn ) : M n {И, Л}. Элементы множества M называются предметными переменными. Количество предметных переменных есть порядок (местность) предиката. Множество значений предметных переменных, на котором предикат принимает значение И, называется множеством истинности предиката. Например, определим на множестве M=N одноместный предикат С (x ) – “x делится на 2”. Его множеством истинности является множество целых положительных чисел. На множестве M=R зададим двухместный предикат L( x, y ) – “x меньше y”. Его множество истинности можно изобразить на плоскости xOy как множество точек, лежащих выше прямой x y . Пусть два предиката P и Q определены на одном и том же множестве M. Так как предикаты могут принимать только два значения (истина или ложь), то к ним можно применить операции логики высказываний, образуя новые предикаты, при этом порядок (местность) предиката не меняется: P, P & Q, P Q, P Q, P Q . В качестве упражнения дайте определение этим предикатам самостоятельно. 2.2. Кванторы Кроме операций логики высказываний, в логике предикатов рассматриваются операции квантификации. Для их обозначения используются символы: - квантор всеобщности; - квантор существования. Рассмотрим эти операции вначале для одноместных предикатов. Пусть P(x ) – одноместный предикат, определенный на множестве M. Тогда под выражением xP(x) будем понимать высказывание, которое принимает значение истина тогда и только тогда, когда P(x ) истинно для каждого элемента x множества M. Это высказывание уже не зависит от x. 19 20 Переменную x в предикате P(x ) называют свободной, а в высказывании xP(x) – связанной квантором всеобщности. Аналогично, под выражением xP(x) понимают высказывание, которое является истинным, если найдется хотя бы один элемент x множества M, для которого P(x ) истинно, и ложным, если ни одного такого элемента во множестве M нет. Высказывание xP(x) не зависит от x, в нем переменная x связана квантором существования. Операции квантификации являются обобщением операций конъюнкции и дизъюнкции на случай бесконечного множества M предметной переменной. Действительно, пусть множество M конечно: M {x1, x2 , , xn } . Тогда xP(x) И означает, что для всех элементов множества M выполняется свойство P, т.е. n & P( xi ) P( x1 ) & P( x2 ) & ... & P( xn ) И . i 1 Равенство xP(x) Л означает, что найдется хотя бы один элемент n xm M такой, что P( xm ) Л, т.е. & P( xi ) Л . i 1 Операция квантификации понижает порядок (местность) предиката, а одноместный предикат превращает в высказывание ( 0-местный предикат). Применение одной кванторной операции к двухместному предикату превращает его в одноместный предикат: yL( x, y ) – здесь связана переменная y, а переменная x осталась свободной; а двух – в высказывание xyL( x, y) –“для любого x найдется y такой, что x y ” (если предикат L( x, y ) означает “ x y ”). Если на двухместный предикат навешивают два одноименных квантора, то их можно менять местами, если же кванторы разноименные, то этого делать нельзя. Пример. Пусть предикат P( x, y ) выражает свойство “покупателю x подходит по размеру пара ботинок y”. Тогда высказывание xyP( x, y) может служить рекламой обувного магазина: “каждому покупателю мы подберем подходящую по размеру пару ботинок”, а высказывание yxP( x, y ) – нет (“у нас есть пара ботинок, подходящая по размеру любому покупателю”). 2.3. Формулы логики предикатов Из предикатных символов с помощью знаков логических операций и кванторов строятся формулы логики предикатов, которые используются в информационных задачах для описания предметной области. При этом определяется содержание множества предметных переменных M, а каждому предикатному символу придается смысл – задается свойство, которое 20 21 описывает этот предикат. Таким образом, формулам придается некоторая интерпретация. Одна и та же формула в разных интерпретациях может иметь разные значения. Пример. Пусть задана формула F xyP( x, y) . Рассмотрим две ее интерпретации: I1: M=N, P( x, y)" x y" ; I2: M=Z, P( x, y)" x y" . В первом случае F=И – это утверждение о существовании наименьшего натурального числа. Во втором случае F=Л. Если формула F истинна при любых значениях своих аргументов в некоторой интерпретации, то она называется истинной в данной интерпретации. Формула, истинная в любой интерпретации, называется общезначимой. Например, формула F xA( x) A( y) общезначима. Аналогично, можно говорить о формулах равносильных в данной интерпретации и просто равносильных. В логике высказываний мы всегда можем определить по таблице истинности, является ли формула тавтологией. В логике предикатов нет единой процедуры, позволяющей определить, является ли формула общезначимой: ведь каждой формуле можно придать бесконечное число интерпретаций. 2.4. Равносильные преобразования формул Две формулы логики предикатов называются равносильными, если они принимают одинаковые истинностные значения при любых значениях переменной в любой интерпретации. Все равносильности логики высказываний (табл. 1.5) справедливы в логике предикатов. Кроме этого, в логике предикатов есть равносильности, связанные с преобразованиями формул, содержащих кванторы (табл. 2.1). Докажем первую из этих формул: (xP( x)) x(P( x)) . Зададим произвольную интерпретацию I этой формулы на множестве M. Покажем, что левая и правая части формулы принимают одинаковые значения при любых значениях предметной переменной x M . Таблица 2.1 Основные равносильности логики предикатов № 1 2 3 4 5 Формула (xP( x)) x(P( x)) (xP( x)) x(P( x)) (xP( x)) & (xQ( x)) x( P( x) & Q( x)) (xP( x)) (xQ( x)) x( P( x) Q( x)) (xP( x)) (xQ( x)) xy( P( x) Q( y)) 21 22 6 (xP( x)) & (xQ( x)) xy( P( x) & Q( y)) Пусть (xP( x)) И в данной интерпретации, тогда xP(x) Л. По определению квантора существования это означает, что во множестве M нет такого элемента x, для которого P(x ) принимает значение “истина”. Следовательно, при всех значениях предметной переменной x предикат P(x) Л, а P(x) И. По определению квантора всеобщности формула x(P( x)) истинна в данной интерпретации. Если же формула (xP( x)) ложна в данной интерпретации, тогда xP(x) истинна. Это значит, что найдется хотя бы один элемент a M такой, что P(a) И, т.е. P(a ) Л. Но тогда x(P( x)) ложна в данной интерпретации. Следовательно, (xP( x)) и x(P( x)) равносильны в данной интерпретации, а в силу ее произвольности, равносильны. Остальные равносильности логики предикатов (табл. 2.7) доказываются аналогично. Обратите внимание на разницу между парами формул 3, 4 и 5, 6. В формулах 3, 4 используются “родственные” операции: конъюнкция и квантор всеобщности, дизъюнкция и квантор существования. В формулах 5, 6, прежде чем выносить квантор за скобки, нам приходится делать замену переменной: чтобы (xP( x)) & (xQ( x)) (xP( x)) & (yQ( y)) , подчеркнуть разные области действия кванторов существования. Действительно, если P(x ) означает “x получил пятерку по математике”, а Q(x) – “x получил пятерку по физике”, то может оказаться, что (xP( x)) & (xQ( x)) И, а (x( P( x) & Q( x)) Л (если пятерки получили разные люди). 2.5. Рассуждения в логике предикатов Рассмотрим рассуждение: “Каждый орел умеет летать. Некоторые свиньи не умеют летать. Следовательно, некоторые свиньи – не орлы”. На языке предикатов его можно записать так: x(O( x) L ( x)) x( S ( x) & L ( x)) x( S ( x) & O( x)) Здесь предикат O(x) описывает свойство x быть орлом, S (x) – быть свиньей, L(x) – уметь летать. С каждым предикатом связано множество истинности. 22 23 O L; что x(O( x) L( x)) x означает, x(S ( x) & L( x)) – что S L ; x( S ( x) & O( x)) – что S O Условие (рис. 2.1). В этом рассуждении мы проверили правильность логического рассуждения, опираясь на геометрическую иллюстрацию. В логике предикатов существуют формальные методы проверки правильности рассуждений. Они используют специальную форму записи формулы логики предикатов – предваренную нормальную форму (ПНФ). Записать формулу в предваренной нормальной форме – это значит: 1) перейти от символов и ~ к символам &, , ; 2) внести все отрицания внутрь формулы, “приклеив” их к предикатным символам; 3) вынести все кванторы в начало формулы. Пример. Записать в ПНФ формулу логики предикатов F (x( P( x) yQ( y))) . В преобразованиях будем использовать законы логики высказываний (табл. 1.5) и логики предикатов (табл. 2.1). F (x( P( x) yQ( y))) x((P( x) yQ( y))) x( P( x) & (yQ( y))) x( P( x) & (yQ( y))) xy( P( x) & Q( y)). 3. БУЛЕВЫ ФУНКЦИИ 3.1. Элементарные булевы функции. Суперпозиции функций Булевы функции можно рассматривать как математические модели дискретных устройств переработки информации (рис. 3.1). y1 y2 … yk x1 x2 … xn Рис. 3.1. «Черный ящик» 23 24 В процессе работы каждый вход такого устройства может находится только в одном из двух состояний (будем обозначать 0 и 1), и в зависимости от комбинации нулей и единиц на входе устройства получим преобразованную устройством комбинацию нулей и единиц на выходе, при этом каждое значение y можно считать функцией от x1, x2 ,..., xn . Обозначим E 0,1 . Определим булеву функцию (БФ) n переменных как отображение f : E n E . Область определения БФ – конечное множество, поэтому БФ можно задать с помощью таблицы, содержащей E 2 n строк. Столбец значений БФ при этом представляет собой двоичное слово длиной 2n . n Поэтому количество различных БФ n переменных равно 2 2 . Таблица 3.1 представляет БФ одной переменной. Таблица 3.1 Табличное задание булевой функции одной переменной ( n 1 ) x 0 1 БФ 0 0 0 БФ x 1 0 БФ x 0 1 БФ 1 1 1 Таблица 3.2 представляет БФ двух переменных. Для удобства представления БФ таблица «перевернута» - строки табл. 3.2 – это столбцы, а столбцы – это строки. В табл. 3.2 функции f 0 , f 3 , f 5 , f10 , f12 , f15 сводятся к БФ одного аргумента, а среди остальных принято выделять еще семь БФ, которые вместе с отрицанием образуют множество элементарных БФ. Это функции: f1 - конъюнкция; f 2 - дизъюнкция; f 6 - сумма по модулю 2; f8 - стрелка Пирса; f 9 - эквивалентность; f13 - импликация; f14 - штрих Шеффера. Таблица 3.2 Табличное задание булевой функции двух переменной ( n 2 ) x y 0 0 0 1 1 0 24 1 1 f 25 f0 0 0 0 0 0 f1 0 0 0 1 xy f2 0 0 1 0 f3 0 0 1 1 xy x f4 0 1 0 0 f5 0 1 0 1 f6 0 1 1 0 f7 0 1 1 1 f8 1 0 0 0 f9 1 0 0 1 f10 1 0 1 0 f11 1 0 1 1 f12 1 1 0 0 f13 1 1 0 1 x x y f14 1 1 1 0 xy f15 1 1 1 1 1 yx y x y x y x y xy y yx Другие БФ строятся из элементарных с помощью суперпозиций функций. Рассмотрим понятие суперпозиции подробнее. 25 26 Определим на множестве переменных P : булевых функций операцию подстановки P f P f x1,...,xn f xi1 , xi2 ,...,xin , где xi - любые переменные из множества x1,..., xn , необязательно k различные. Рассмотрим операцию подстановки на примере P f f x, x , где f x, y x y . Подставим в f x, y вместо переменной y , переменную x f x, x x x . Построим таблицу истинности для полученной БФ: x x f x, x 0 1 0 1 1 0 По таблице истинности видно, что f x, x x . Определим на множестве пар БФ операцию R - подстановки функции в функцию: R f , g R f x1,..., xn , g y1,..., yk f x1,..., xn 1, g y1,..., yk . На рис. 3.2 операции P и R представлены в виде дискретных устройств. x1 x2 x3 x1 x2 f g g x1 , x2 f x1, x2 , x3 x1 x1 x2 f f g x2 P f f x1, x2 , x1 R f , g f x1, x2 , g x1, x2 Рис. 3.2. Операции подстановки переменных P и подстановки функции R f1, f 2 ,..., f n . f является суперпозицией данных функций, если Определение. Пусть задана система булевых функций Говорят, что функция функцию f можно получить из них , применяя конечное число раз операции подстановки P и R . 26 27 Приведенное определение позволяет задавать БФ формулами, а не таблицами (число строк таблицы быстро растет с увеличением числа аргументов БФ). При преобразовании формул, определяющих БФ, используются законы логики высказываний (см. раздел 1.6). 3.2. Представление булевых функций формулами 3.2.1. Представление булевых функций в СДНФ Между булевыми функциями, заданными таблично, и таблицами истинности формул логики высказываний можно установить взаимнооднозначное соответствие ( И 1, Л 0 ). Но каждую формулу логики высказываний F Л можно единственным образом представить в совершенной дизъюнктивной нормальной форме (СДНФ). Значит, возможно представить в СДНФ и булеву функцию f 0 , заданную таблично, причем такая форма записи БФ будет однозначной. Как перейти от табличного представления БФ к СДНФ? Рассмотрим пример БФ, приведенный в табл. 3.3. Для каждого набора 1, 2 , 3 значений переменных x1, x2 , x3 , такого, что f 1, 2 , 3 1 , составим полные элементарные конъюнкции (ПЭК) по следующему правилу: если i 1 , то в ПЭК включаем xi ; если i 0 , то в ПЭК включаем xi i 1,2,3 . Составленные таким образом ПЭК выписаны в правом столбце табл. 3.3. Таблица 3.3 Представление булевой функции в СДНФ Набор x1 x2 x3 f 0 0 0 0 0 ПЭК 1 2 0 0 0 1 1 0 1 0 x1 x2 x3 3 4 0 1 1 0 1 0 1 0 x1x2 x3 5 6 7 1 1 1 0 1 1 1 0 1 1 0 0 x1x2 x3 Рассмотрим одну из них и выясним, когда она равна единице: x1 x2 x3 1 x1 x2 x3 1 x1 0, x2 0, x3 1 . Таким образом, каждая ПЭК равна единице только на том наборе 1, 2 , 3 , по которому она составлялась, а на всех остальных наборах она равна нулю. Следовательно, на всех наборах значений переменных x1, x2 , x3 27 28 значение БФ f x1, x2 , x3 совпадает с дизъюнкцией полных элементарных конъюнкций, стоящих в правом столбце табл. 3.3: f x1 , x2 , x3 x1 x2 x3 x1 x2 x3 x1 x2 x3 . Мы получили представление БФ f в СДНФ. Этот способ построения СДНФ булевой функции можно применить к любой таблице, за исключением той, для которой f x1,..., xn 0 . Обобщим этот результат в виде теоремы. Теорема 2. Любую булеву функцию, не равную тождественно нулю, можно представить в виде формулы в СДНФ. f x1,..., xn - БФ. Для каждого набора 1,..., n значений переменных такого, что f 1 ,..., n 1 , составим ПЭК Пусть 1 при всех xi i , i 1, n x11 x2 2 ... xnan 0 при остальных наборах значений xi Тогда БФ может быть представлена формулой f x1 , x2 ..., xn 1 , 2 ..., n : f 1 , 2 ..., n 1 x11 x2 2 ...xn n (3.2) В табл. 3.4 представлены СДНФ элементарных булевых функций f 0 f15 (табл. 3.2) двух переменных. 28 29 Таблица 3.4 Представление булевых функций в СДНФ БФ СДНФ - БФ СДНФ f8 xy f1 xy f9 xy x y f2 xy f10 xy xy f3 x y xy f11 x y x y xy f4 xy f12 x y xy f5 xy xy f13 x y xy xy f6 xy x y f14 x y xy x y f7 xy x y xy f15 x y xy x y xy f0 Проверим правильность записанной СДНФ для БФ f11 y x . По f11 равна единице при следующих наборах значений переменных x, y - 0,0 , 1,0 , 1,1 . По теореме 2 этим наборам 0,0 1,0 1,1 таблице 3.2 булева функция xy xy xy значений переменных соответствуют ПЭК: . 3.2.2. Двойственность формул Пусть задана произвольная БФ f x1,..., xn . Будем называть БФ f двойственной функции f , если f * x1,..., xn f x1,... xn , т.е. значение БФ f * * (3.3) на любом наборе значений переменных противоположно значению f на противоположном наборе. Покажем, что двойственной функцией для конъюнкции является дизъюнкция, т.е. & . Сравним таблицы для этих БФ как показано на рис. 3.3. * 29 30 x1 & x2 x1 x2 0 0 0 1 0 0 1 1 0 1 0 1 Противоположные наборы x1 x2 x1 x2 1 1 0 0 1 0 1 0 1 1 1 0 Противоположные значения функций Рис 3.3. Двойственные функции Следовательно, дизъюнкция двойственна конъюнкции, и наоборот. Из * определения двойственности следует, что f * f , и булевы функции разбиваются на двойственные пары (необязательно с различными элементами). На рис. 3.4 показано, что x x . * x x Противоположные наборы 0 1 1 0 Рис. 3.4. Двойственность булевой функции x Легко показать, что x* x , 1* 0 , 0* 1 . Теорема 3. (Принцип двойственности). Если БФ f можно представить суперпозицией, содержащей знаки функций f1, f 2 ,..., f r , то двойственную БФ f можно представить такой же суперпозицией, но с заменой знаков f1, f 2 ,..., f r на f1* , f 2* ,..., f r* соответственно. Пусть, например, f x1, x2 , x3 f1 f 2 x1 , x2 , f1x1, x2 , x3 . теореме 3 двойственная функция строится следующим образом: По f * x1, x2 , x3 f1* f 2* x1 , x2 , f1* x1, x2 , x3 . Для доказательства теоремы достаточно проверить ее справедливость для операций подстановки P и R . Пусть P f1 P f1x1, x2 ,...,xn f1 xi , xi ,...,xi . Двойственная ей функция 1 2 n P f1 * f1xi1 , xi2 ,...,xin f1* xi1 , xi2 ,...,xin 30 31 получается из f1* в результате этой же подстановки переменных. Пусть теперь f 2 R f1, g , т.е. f 2* x1,..., xn 1, y1,..., yl f1x1,..., xn 1, g y1,..., yl . Двойственная ей функция получается с помощью той же подстановки: f 2 x1 ,..., xn1 , y1 ,..., yl f 2 x1 ,..., x n1 , y1 ,..., y l f x ,..., x , g y ,..., y f1 x1 ,..., x n1 , g y1 ,..., y l * 1 1 n 1 1 l f x1 ,..., xn1 , g y1 ,..., yl . * 1 * Теперь, используя пары двойственных элементарных функций и применяя конечное число раз операции подстановки P и R , можно построить двойственную функцию для любой неэлементарной. В частности, если f F 0,1, x, x, x & y, x y , то f * F 1,0, x, x, x y, x & y . f x, y x y Найдем БФ, двойственную БФ Построим таблицу истинности для f x, y (табл. 3.5) (стрелка Пирса). Таблица 3.5 Таблица истинности для булевой функции f x, y x y x y f x, y 0 0 1 1 0 1 0 1 1 0 0 0 По табл. 3.2 найдем БФ такую, что на противоположных наборах значений переменных функция принимала бы противоположные данным значения. Т.е. функцию которая бы принимала следующие значения: f 1,1 0 ; f 1,0 1 ; f 0,1 1 ; f 0,0 1 . Это функция f14 x y . Следовательно, x y 31 * x y . 32 Определение двойственной функции можно переписать в другой форме: f x1, x2 ,..., xn f * x1, x2 ,..., xn . Применяя принцип двойственности, получаем БФ, двойственную к БФ f x1, x2 ,...,xn . Следствие. Пусть БФ f представлена формулой, содержащей знаки функций f1, f 2 ,..., f r . Чтобы получить формулу для БФ f (отрицание БФ f ), нужно выполнить следующие действия: 1. 2. заменить знаки функций f i , i 1, r на знаки f i* , i 1, r соответственно; в полученной формуле инвертировать каждое значение входных переменных. Запишем отрицание для БФ f x, y x y . 1. Найдем БФ, двойственную f x, y . По предыдущему примеру f x, y * x y . 2. Инвертируем каждое значение входных переменных - f x, y x y . Отрицание построено. 3.2.3. Представление булевых функций в СКНФ Теорема 4. Каждую БФ, не равную тождественно единице, можно представить в СКНФ. Доказательство. Рассмотрим БФ n переменных f x1,..., xn . Используя формулу (3.2), представим в СДНФ отрицание БФ f : f x1 , x2 ..., xn 1 , 2 ..., n : f 1 , 2 ..., n 1 x11 x2 2 ...xn n Перейдем к отрицанию в левой и правой частях этой формулы. В левой части по закону двойного отрицания получим f f , а в правой, согласно следствию из теоремы 3, заменим знак на & ; & - на ; поставим знаки отрицания над всеми xi , i 1, n : f x1 , x2 ..., xn & x 1 , 2 ..., n : f 1 , 2 ..., n 1 32 1 1 2 n x 2 ... x n 33 Но так как x x , а f 1 f 0 , то окончательно получим: f x1 , x2 ..., xn & 1 , 2 ..., n : f 1 , 2 ..., n 0 x 1 1 x2 2 ... xn n (3.4) Формула (3.4) дает представление БФ f в СКНФ. Такое представление построить невозможно, если f 1 . 3.2.4. Представление булевых функций полиномами Жегалкина Представление БФ в нормальных формах использует три операции: дизъюнкцию, конъюнкцию и отрицание. Булевы функции дизъюнкция и сложение по модулю 2 (неравнозначность), а также функция – константа единица, позволяют представлять БФ в виде полиномов, по своим алгебраическим свойствам аналогичных обычным алгебраическим полиномам. Такие полиномы называют полиномами Жегалкина (в честь русского математика конца XIX века И.И. Жегалкина). Будем говорить, что БФ f x1 ,..., x n представлена в виде полинома Жегалкина, если f x1 ,..., xn a0 a1 x1 ... an xn a12 x1 x2 ... an1,n xn1 xn (3.5) a123 x1 x2 x3 ... a1... n x1 x2 ...xn , причем коэффициенты полинома a 0 ,..., a1...n 0,1 . Операция сложения по модулю 2 обладает свойствами (проверьте с помощью таблицы): x y yx x y z x y z x y z xy xz x0 x xx 0 x 1 x (3.6) Учитывая эти свойства, а также свойства конъюнкции, будем преобразовывать формулы, содержащие только и & по обычным алгебраическим законам: переставлять множители и слагаемые, раскрывать скобки, выносить общие множители. Особенность преобразования только одна: если в сумме встречаются два одинаковых слагаемых, их можно опустить (см. пятое равенство в (3.6)). Теорема 5. Любую БФ можно представить полиномом Жегалкина, причем однозначно. 33 34 Доказательство теоремы дает способ построения полинома Жегалкина для произвольной БФ, поэтому будем сопровождать наши рассуждения примером. Шаг 1. Пусть f x1,..., xn - произвольная БФ. Причем, если f x1,..., xn 0 a0 , то полином Жегалкина для нее уже построен (полином нулевой степени). В противном случае ( f 0 ) данную БФ можно представить однозначно в СДНФ. В качестве примера рассмотрим функцию, заданную таблицей 3.3, для нее СДНФ имеет вид: f x1, x2 , x3 x1 x 2 x3 x1x2 x3 x1 x 2 x3 Шаг 2. Заменим в СДНФ данной БФ знак дизъюнкции знаком сложения по модулю 2. Когда это можно сделать? Рассмотрим табличное представление этих функций: a b ab ab 0 0 1 1 0 1 0 1 0 1 1 1 0 1 1 0 Значения a b и a b отличаются только в одном случае: когда аргументы a и b одновременно принимают значение единица. Но в СДНФ знак дизъюнкции соединяет полные ЭК, каждая из которых принимает значение единица только на «своем» наборе переменных (т.е. одновременно разные ПЭК не могут принимать значение единица), поэтому в СДНФ можно знак заменить на : f x1, x2 , x3 x1 1x2 1x3 x1 1x2 x3 x1x2 1x3 . Затем преобразуем полученную формулу, раскрывая скобки и приводя подобные: f x1 , x2 , x3 x1 x2 x3 x2 x3 x1 x3 x3 x1 x2 x3 x2 x3 x1 x2 x3 x1 x3 x1 x2 x3 x3 . Получили представление БФ полиномом Жегалкина. 3.3. Полнота системы булевых функций 3.3.1. Основные понятия и определения Система БФ f1, f 2 ,..., f r называется полной, если любую БФ можно представить в виде суперпозиции функций f1, f 2 ,..., f r . Мы уже встречались с полными системами функций: любую БФ можно представить в виде суперпозиции трех функций “ ”, “ & ”, “ ” (ДНФ), 34 35 любую БФ можно представить в виде полинома Жегалкина (т.е. в виде суперпозиции БФ “ ”, “ & ”, “1”). Полной является и система &, , действительно, по теореме 2 любую БФ f 0 можно представить в СДНФ, а используя закон де Моргана, в этом представлении дизъюнкцию можно заменить на конъюнкцию и отрицание; а БФ f 0 можно представить 0 x & x . Таким образом, любую БФ можно представить в виде суперпозиции функций системы полной является и система , . &, . Аналогично, Следовательно, система ,&, обладает избыточностью: одну из функций (дизъюнкцию или конъюнкцию) можно удалить, при этом система останется полной. Полную систему, не обладающую избыточностью, будем называть базисом. Как определить, является ли данная система f1,..., f r полной? Ответ на этот вопрос дает теорема Поста. Прежде чем ее сформулировать, определим пять важных классов булевых функций. Обозначим T0 - класс БФ, сохраняющих нуль, т.е. T0 f x1,...,xn f 0,0,...,0 0. f1x1, x2 x1 & x2 T0 , Действительно, f 3 x1, x2 x1 x2 T0 . Примеры БФ, принадлежащих классу T0 : f 2 x1, x2 x1 x2 T0 , f1 0,0 0 & 0 0 , f 2 0,0 0 0 0 , f 4 x x T0 : f 4 0 0 1 . f3 0,0 0 0 0 . Но Аналогично определяется класс T1 функций, сохраняющих единицу: T1 f x1,...,xn f 1,1,...,1 1 . Например, f1x1, x2 x1 x2 T1 , f 2 x x T1 . Класс S самодвойственных функций: S f x1,..., xn f * x1,..., xn f x1,..., xn . Очевидно, функции f1 x1, x2 x1 & x2 , самодвойственными не являются, а f 3 x x S . f 2 x1, x2 x1 x2 Булева функция f x1,..., xn называется линейной, если ее полином Жегалкина не содержит степеней выше первой. Обозначим L - множество всех линейных функций: L f x1 ,..., xn f x1,..., xn a0 a1 x1 ... an xn . 35 36 Например, f1x1, x2 x1 & x2 L , т.к. ее полином Жегалкина второй f1x1, x2 x1x2 0 x1 0 x2 0 ; степени f 2 x x 1 - полином первой степени. f 2 x x L , а т.к. Для определения понятия монотонной функции введем частичный порядок на множестве двоичных слов длины n : будем говорить, что слово A 1 2 ... n предшествует слову B 1 2 ... n (обозначим А В), если i i для всех i 1, n i , i 0,1 . Убедитесь, что введенный таким образом порядок обладает свойствами рефлексивности, антисимметричности, транзитивности. Пример. Рассмотрим набор слов длиной n2 A 00 , B 01, C 10 , D 11 . Отношение предшествования связывает тройки слов: А В D, А C D, но В и C несравнимы! Отношение предшествования можно представить графически (рис. 3.5). Здесь дуги соединяют только «соседние» двоичные слова длины n , т.е. двоичные слова, отличающиеся лишь одним двоичным символом, а предшествующими данному двоичному слову будут все слова, соответствующие вершинам, достижимым из данной. Булева функция f x1,..., xn называется монотонной, если для любой пары двоичных слов A 1 2 ... n и B 1 2 ... n , таких, что А В, f 1, 2 ,..., n f 1, 2 ,..., n . монотонных функций M : справедливо 1 Обозначим класс 111 11 01 10 110 101 011 001 0 00 100 010 а) б) в) 000 а) n 1 , б) n 2 , в) n 3 Рис. 3.5. Отношение предшествования M { f x1 ,..., xn 1 2 ... n f 1 2 ... n f 1 ,..., n f 1 ,..., n } 36 37 Примером монотонной функции является функция f1 x1, x2 x1 & x2 . Действительно, f1 0,0 0 f1 0,1 0 f1 1,1 1 и f10,0 0 f11,0 0 f11,1 1 Функция f 2 x1 x2 не является монотонной: f 2 0,0 0 f 2 0,1 1, нo f 2 1,1 0 и f 2 0,0 0 f 2 1,0 1, нo f 2 1,1 0 . Перечисленные классы функций обладают важным свойством: суперпозиция функций, принадлежащих одному классу, дает функцию из этого же класса, т.е. справедлива следующая теорема. T0 T1 Теорема 6. Класс S замкнут относительно суперпозиции булевых L M функций. Чтобы доказать теорему, достаточно показать, что каждый из этих классов замкнут относительно операции P (подстановки переменных) и R (подстановки функции). Эти доказательства очевидны и требуют только знания определений пяти классов БФ. Теорема 7. (Теорема Поста о функциональной полноте). Для того, чтобы система БФ f1,..., f r была полной, необходимо и достаточно, чтобы она содержала 1) функцию, не сохраняющую нуль; 2) функцию, не сохраняющую единицу; 3) несамодвойственную функцию; 4) немонотонную функцию; 5) нелинейную функцию. Для доказательства теоремы нам понадобятся две леммы. Лемма 1. (О немонотонной функции). Из немонотонной функции f x1,..., xn путем подстановки констант на место n 1 аргумента можно получить отрицание. Пусть булева функция f x1,..., xn M . Тогда найдется пара двоичных слов A 1 2 ... n и B 1 2 ... n , таких, что А В, но f 1, 2 ,..., n f 1, 2 ,..., n , т.е. f A 1, f B 0 . Пару слов A и B всегда можно связать цепочкой соседних слов, предшествующих одно другому (вершина A достижима из вершины B ), например: A (001001 ) 011001 011011 B . Так как в начале цепочки f A 1 f B 0 , то найдется пара соседних слов такая, что но f 1,..., k 1,0, k 1,..., n 1 , f 1,..., k 1,1, k 1,..., n 0 . , а в конце 37 38 Рассмотрим функцию одного аргумента x f 1,..., k 1, x, k 1,..., n . По построению x x . Лемма 2. (О нелинейной функции). Пусть f x1,..., xn - нелинейная функция и n 2 . Подстановкой констант на места n 2 аргументов можно получить нелинейную функцию двух аргументов. Так как f x1,..., xn L , то полином Жегалкина этой БФ содержит хотя бы один член степени выше первой (пусть для определенности он содержит переменные x1 и x2 ). Сгруппируем слагаемые так, чтобы выделить переменные x1 и x2 : f ( x1 ,..., xn ) x1x2 0 x3 ,..., xn x1 1 x3 ,..., xn x2 2 x3 ,..., xn 3 x3 ,..., xn . Подберем значения x3 3 ,..., xn n , так, чтобы 0 3 ,..., xn 1 (это возможно, т.к. 0 0 ). Получим нелинейную функцию двух переменных: x1, x2 x1x2 ax1 bx2 d , где a, b, d 0,1 . Доказательство теоремы Поста (теоремы 7). Необходимость следует из замкнутости классов Действительно, предположив противное (т.е. система T0 , T1, S , L, M . f1,..., f r полная, но все функции f i , i 1, r принадлежат одному из пяти классов), по теореме 6 получим, что и любая суперпозиция этих функций принадлежит этому классу. Т.е. не всякая БФ может быть представлена суперпозицией функций данной системы f1,..., f r - противоречие. Достаточность. Доказательство проведем по следующей схеме: 1) используя функции системы, не принадлежащие T0 , T1, S , M , построим константы 0,1 и отрицание x ; 2) используя 0,1 и x , а так же функцию системы, не принадлежащую классу L , построим конъюнкцию; 3) в силу полноты системы &, любая БФ может быть представлена в виде суперпозиции &, , а следовательно и функций системы f1,..., f r . Шаг 1. Построим константы и отрицание. Найдем в данной системе функции f и g такие, что f T0 , а g T1 , и построим x f x, x,..., x и x g x, x,..., x . Тогда 0 1 , 1 0 и возможны следующие случаи (табл. 3.6) 38 39 Таблица 3.6 Построение констант и отрицания а x б в г x x x x x x x x 0 1 0 1 1 1 1 1 0 1 0 0 1 0 0 0 1 0 В случае а: - x x , x 0 , x 1 . В случае а: - x 1 , В случае а: - x x , x 0 . x x x . Для построения констант найдем в системе несамодвойственную функцию hx1,..., xn . Т.к. h S , то найдется набор значений аргументов 1, 2 ,..., n такой, что h1, 2 ,..., n h 1, 2 ,..., n . Для этого набора рассмотрим функцию x h x , x 1 2 . Для нее 1 h1 ,1 ,...,1 h , ,..., h , ,..., h0 ,0 ,..., 0 0 . n ,..., x 1 1 2 n 2 1 1 n 2 2 n n т.е. 1 0 и функция x является константой. В случае г: - x 1 , x 0 . Для построения отрицания найдем в системе немонотонную функцию. По лемме 1 с ее помощью подстановкой констант 0 и 1 получим отрицание. Таким образом, суперпозицией функций системы f1,..., f r получены константы 0 , 1 и отрицание x . Шаг 2. Построим теперь БФ конъюнкцию. Найдем в системе нелинейную функцию. По лемме 2 с ее помощью можно построить нелинейную функцию вида x1, x2 x1x2 ax1 bx2 d . Преобразуем эту функцию следующим образом (используя формулы 3.6): 39 40 x1 , x2 x1 , x2 ab ab x1 x2 ax1 bx2 d ab ab x1 x2 a b x2 a ab d x1 b x2 a ab d . Следовательно, чтобы получить конъюнкцию, необходимо выполнить действия: x1x2 x1 b, x2 a ab d . Учитывая, что x, при c 0; xc x, при c 1; и функция x , а так же константы 0 и 1 уже построены, построение конъюнкции суперпозицией функций системы f1,..., f r закончено. Шаг 3. Поскольку система функций системы f1,..., f r , &, полная и получена суперпозицией заключаем, что система f1,..., f r также полная, т.е. любую БФ можно представить суперпозицией функций f1,..., f r . Теорема доказана. 3.4. Минимизация булевых функций 3.4.1. Постановка задачи Рассмотрим задачу минимизации булевых функций в классе дизъюнктивных нормальных форм. Задача. Найти ДНФ булевой функции, в которой число входящих букв наименьшее. Такую ДНФ будем называть минимальной ДНФ булевой функции. Отметим, что речь идет о минимальном числе букв, а не переменных, например ДНФ БФ f x, y, z xy xz содержит четыре буквы, но три переменные x, y, z . Уменьшить число букв в формуле можно, применяя некоторые равносильности логики высказываний: 1) Kx K K - тождество поглощения; 2) 3) Kx K x K - тождество склеивания; Kx Ky K x y - дистрибутивный закон, где K - элементарная конъюнкция. Большинство методов минимизации БФ основываются на первых двух тождествах. А третье – дистрибутивный закон – уменьшает количество букв в формуле, но выводит формулу из класса ДНФ. При минимизации БФ используют различные термины (и обозначения) для полных элементарных конъюнкций (ПЭК). Наиболее часто используются термины «минтерм» и «конституента единицы». (Для ПЭД используются термины «макстерм» и «конституента нуля»). Слово «конституента» означает «составляющая», а название «минтерм» исходит из определения конъюнкции, как минимального значения ее операндов. При этом используются 40 41 mi - для минтерма и M i - для макстерма. Номер i соответствует двоичной записи той оценки переменных, для которой mi 1 . обозначения Например, ПЭК x1 x 2 x3 x4 принимает значение единица на оценке 1,0,0,1 , что соответствует двоичной записи числа 910 10012 , поэтому x1 x 2 x3 x4 m9 . Такая форма записи удобна для представления СДНФ, например: f x1, x2 , x3 x1 x 2 x3 x1x2 x 3 x1x2 x3 x1x2 x3 m1 m2 m3 m7 Часто вместо знака "" используют знак "" и перечисляют только номера ПЭК, входящих в СДНФ булевой функции: f x1, x2 , x3 1,2,3,7 . Последнюю форму записи мы и будем использовать. Рассмотрим один метод минимизации булевых функций. 3.4.2. Метод карт Карно Этот метод используется для БФ не более, чем с шестью аргументами и основан на тождестве склеивания: Kx K x K - две ЭК склеиваются, если они отличаются только знаком инверсии одного аргумента. Чтобы облегчить нахождение таких пар (четверок, восьмерок,…) склеивающихся ЭК, используют специальное представление БФ в виде таблицы – карты Карно (другое название - диаграмма Вейча). Рассмотрим карту Карно для БФ одного аргумента. Таких БФ всего четыре (табл. 3.1), а ПЭК имеют вид x и x . Карта Карно БФ f x состоит из двух клеток, соответствующих этим ПЭК: x f x : 1 0 Причем на карте выделена область, соответствующая вхождению переменной x в ПЭК в неинверсной форме. Номер клетки – это номер ПЭК: m0 x , m1 x . Аналогично определяется карта Карно для БФ двух аргументов: x1 f x1, x2 : x2 41 3 1 2 0 42 Число ПЭК здесь равно четырем: x1x2 , x1 x 2 , x1x2 , x1 x 2 . И на этой карте x1 , x2 в ПЭК в неинверсной форме. выделены области вхождения Пересечение этих областей соответствует ПЭК m3 x1x2 , а ПЭК m0 x1 x 2 лежит вне выделенных областей. Для записи в СДНФ булевой функции трех аргументов используют восемь ПЭК, и карта Карно такой БФ имеет вид: x1 f x1, x2 , x3 : x2 6 7 3 2 4 5 1 0 x3 Карта Карно БФ четырех аргументов состоит из 16 клеток. x1 f x1, x2 , x3 , x4 : x2 12 14 6 4 13 15 7 5 9 11 3 1 8 10 2 0 x4 x3 В табл. 3.8 представлены возможные значения ПЭК и соответствующие им двоичные числа. Таблица 3.8 ПЭК булевой функции четырех аргументов № 0 Двоичное число 0000 ПЭК № x1 x 2 x 3 x 4 8 Двоичное число 1000 1 0001 x1 x 2 x3 x4 9 1001 2 0010 x1 x 2 x3 x 4 10 1010 x1 x 2 x3 x4 x1 x 2 x3 x 4 3 0011 x1 x 2 x3 x4 11 1011 x1 x 2 x3 x4 4 0100 x1x2 x3 x 4 12 1100 x1x2 x3 x 4 42 ПЭК x1 x 2 x3 x 4 43 5 0101 x1x2 x3 x4 13 1101 6 x1x2 x3 x4 0110 x1x2 x3 x 4 14 1110 0111 x1x2 x3 x4 15 1111 x1x2 x3 x 4 x1x2 x3 x4 7 Пример. Составим карты Карно для следующих БФ: f1x x , f 2 x 1 , f3 x1, x2 x1 x2 , f 4 x1, x2 x1 x2 , f5 x1, x2 , x3 0,1,5,7 , f 6 x1, x2 , x3 , x4 0,1,2,6,7,9,10,14,15 . Для того, чтобы записать карту Карно, нужно знать , какие ПЭК входят в СДНФ данной функции. БФ f1 x уже записана в СДНФ. Отметим на карте Карно ту ПЭК, которая входит в СДНФ f1 x : x 1 CДНФ функции f 2 x 1 имеет вид f 2 x x x , а соответствующая ей карта Карно: x 1 1 Булевы функции f 3 и f 4 запишем в СДНФ: x1 x2 f3 0 0 0 0 1 1 1 0 1 1 1 0 ПЭК ПЭК x1 x2 f4 0 0 0 x1x2 0 1 1 x1x2 x1 x 2 1 0 1 x1x2 1 1 1 x1x2 43 44 f3 x1, x2 x1 x2 x1x2 x1 x 2 m1 m2 1,2 , f 4 x1, x2 x1 x2 x1x2 x1 x 2 x1x2 m1 m2 m3 1,2,3 . Соответствующие им карты Карно: x1 x1 f3 x1, x2 : x2 f 4 x1, x2 : 1 x2 1 1 1 1 Булевы функции f 5 и f 6 представлены в СДНФ, а под знаком перечислены номера ПЭК, входящих в СДНФ. Карты Карно имеют вид: f 5 x1, x2 , x3 : x1 x2 1 f 6 x1, x2 , x3 , x4 : x1 1 x2 1 1 1 1 1 1 1 1 x3 x4 1 1 1 1 x3 Карта Карно обладает той особенностью, что две ПЭК, соответствующие соседним клеткам карты, отличаются знаком инверсии только одного аргумента, т.е. их можно склеивать. Причем соседними являются не только клетки, например, с номерами 1 и 3, но и клетки с номерами 12 и 8, 12 и 4, т.е. карту можно «сворачивать» в цилиндр, соединяя горизонтальные (вертикальные) ее границы. Какие группы единиц можно объединять, применяя тождество склеивания? Группы из двух соседних единиц: 1 1 1 1 1 1 1 1 44 45 Две единицы «склеиваются» каждый раз, когда они стоят рядом в строке или столбце (карту можно свернуть в цилиндр). В результате склеивания число букв, входящих в ПЭК, уменьшается на единицу, т.е. для БФ четырех аргументов записываем ЭК из трех переменных (тех, которые входят в склеиваемые ПЭК без знака отрицания, либо в обе ПЭК без знака отрицания, либо в обе ПЭК со знаком отрицания); для БФ трех аргументов - ЭК из двух переменных. Например, для БФ f5 x1, x2 , x3 0,1,5,6,7 , можно объединить три пары единиц: x1 x2 1 1 1 1 1 x3 Тогда f5 x1, x2 , x3 x1x2 x1x3 x1 x 2 . Одну и ту же единицу мы можем использовать для склеивания дважды (по закону идемпотентности). Группы из четырех соседних единиц: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 В этом случае мы применяем склеивание дважды, и число букв уменьшается на две. Например, для БФ f 6 x1, x2 , x3 , x4 0,1,2,6,7,9,10,14,15 можно склеить две «четверки» и две «двойки» единиц: x1 x2 1 1 1 1 1 1 1 1 x3 x4 1 При этом f 6 x1, x2 , x3 , x4 x2 x3 x3 x 4 x 2 x3 x4 x1 x 2 x3 . Группы из восьми соседних единиц: 45 46 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 В этом случае при склеивании получается ЭК из одной переменной (для БФ четырех переменных). Например: x1 f x1 , x2 , x3 , x4 0,1,4,5,8,9,11,12 ,13,15 x 3 x1 x4 . x2 1 1 1 1 1 1 1 1 1 x4 1 x3 Минимизацию БФ по карте Карно рекомендуется проводить, начиная с ПЭК, имеющей наименьший (наибольший) номер. 46