Математические и логические основы информатики

Элементы логики высказываний



Под высказыванием мы будем понимать повествовательное предложение, относительно которого объективно можно сказать, что оно либо истинно, либо ложно.

Высказывания, подобные приведенным выше, называют простыми высказываниями. Они не могут быть «разложены» на более элементарные высказывания, относительно которых сохранилась бы объективная возможность оценить их истинность.

Из одних высказываний могут составляться (строиться) другие, более сложные высказывания. Такие высказывания мы будем называть составными, или сложными высказываниями.

В русском языке (и не только в русском) составные высказывания строятся из простых с помощью союзов (и, или), частицы (не) и словосочетаний (если…,то...;…тогда и только тогда, когда…; …если, и только если…;…необходимо и достаточно для… и т.д.)



Логические операции над высказываниями



Условимся обозначать простые высказывания большими буквами начала латинского алфавита: A, B, C (возможно с индексами: A1, A2, A3 и так далее), а значения истинности высказываний - буквами И (истина) и Л (ложь)), которые называют логическими константами.

Определим операции над высказываниями, которые будут соответствовать союзам (и, или), частице не, словосочетаниям (если …, то …; …тогда и только тогда, когда ….; …если, и только если …; …необходимо и достаточно для… и т.д.) русского языка. Часто союзы, частицу не, указанные словосочетания называют связками. Соответствующие им операции называют логическими операциями, или логическими связками.

Союзу и соответствует операция конъюнкция, обозначаемая нами с помощью символа  и задаваемая таблицей:



A

B

A&B

Л

Л

Л

Л

И

Л

И

Л

Л

И

И

И



Обоснованием такого способа определения (задания) операции конъюнкции является то, что согласно интуитивному пониманию союза и, составное высказывание типа «A и B» истинно тогда и только тогда, когда истинны оба составляющих его высказывания, на что и указывает последняя строка таблицы. В остальных случаях конъюнкция двух высказываний ложна. Операция конъюнкции обозначается также с помощью символов  и  (точка). Иногда знак конъюнкции между высказывания опускают, подобно тому, как в обычной алгебре часто опускают знак операции умножения. 

Союзу или соответствует операция дизъюнкция, обозначаемая нами с помощью символа  и задаваемая таблицей:



A

B

AB

Л

Л

Л

Л

И

И

И

Л

И

И

И

И



Обоснованием такого способа определения (задания) операции дизъюнкции является то, что согласно интуитивному пониманию союза или, составное высказывание типа «A или B» ложно тогда и только тогда, когда ложны оба составляющие его высказывания, на что и указывает первая строка таблицы. В остальных случаях дизъюнкция двух высказываний истинна.

Приведенное определение операции дизъюнкции соответствует употреблению союза или в русском языке в так называемом соединительном смысле. Но часто этот союз употребляется в разделительном смысле, то есть понимается как «либо A, либо B, но не то и другое вместе». Такому пониманию союза или отвечает следующая таблица, определяющая операцию строгой дизъюнкции, обозначаемой с помощью символа :



A

B

AB

Л

Л

Л

Л

И

И

И

Л

И

И

И

Л



Частице не соответствует операция отрицания, обозначаемая символом и задаваемая таблицей: 



A

A

Л

И

И

Л



То есть, высказывание A истинно, если высказывание A ложно, и наоборот, ложно, если A истинно.

Словосочетанию «если …, то …» соответствует операция, называемая материальной импликацией и обозначаемая символом . Материальная импликация задается следующей таблицей:



A

B

AB

Л

Л

И

Л

И

И

И

Л

Л

И

И

И



A называется антецедентом (или условием), B – консеквентом (или следствием) материальной импликации.

Определение материальной импликации (мы будем называть ее просто импликацией) весьма условно можно считать формализацией словосочетания «если …, то …». Дело в том, что словосочетание «если …, то …» выражает в языке не только логическую, но и причинно-следственную связь, которую материальная импликация выразить не может. И, тем не менее, это определение в значительной степени соответствует интуитивному пониманию словосочетания «если …, то …» в смысле логического следования. По крайней мере, высказывание, являющееся импликацией двух высказываний, ложно в том и только том случае, если мы из истины пытаемся сделать (или, как говорят, имплицировать, вывести) ложное заключение (третья строка таблицы). 

Словосочетанию «…тогда и только тогда, когда …» (синонимы: «… если и только если …», «… эквивалентно…», «… необходимо и достаточно для …») соответствует логическая операция, называемая эквиваленцией и обозначаемая символом . Эквиваленция задается следующей таблицей:



A

B

AB

Л

Л

И

Л

И

Л

И

Л

Л

И

И

И



То есть, эквиваленция двух высказываний истинна тогда и только тогда, когда высказывания либо оба ложны, либо оба истинны.

Примером эквиваленции двух высказываний является высказывание «Четырехугольник является квадратом тогда и только тогда, когда все его стороны и углы равны между собой».




Свойства логических операций



Для обозначения логической равносильности двух высказываний будем использовать символ . Приведем здесь лишь свойства основных логических операций: конъюнкции, дизъюнкции и отрицания.

Свойства коммутативности

коммутативность конъюнкции: A&B  B&A,

коммутативность дизъюнкции: AB  BA.

Свойства ассоциативности

ассоциативность конъюнкции: A&(B&C)  (A&B)&C,

ассоциативность дизъюнкции: A(BC)  (AB)C.

Свойства дистрибутивности

дистрибутивность конъюнкции относительно дизъюнкции:

A&(BC)  (A&B) (A&C),

дистрибутивность дизъюнкции относительно конъюнкции:

A(B&C)  (AB)& (AC).

Свойства логических констант

свойства константы И: A&И  A, AИ  A;

свойства константы Л: A&Л  Л, AЛ  A.

Законы Де Моргана: (A&B)  AB, (AB)  AB.

Закон исключенного третьего 

(tertium non datur - третьего не дано): AA  И.

Закон противоречия: A&A  Л.

Закон снятия двойного отрицания: A  A.

Законы идемпотентности

идемпотентность конъюнкции: A&AA,

идемпотентность дизъюнкции: AAA.

Законы поглощения A&(AB)A, A(A&B)A.

Используя теперь приведенные свойства и законы, можно осуществлять эквивалентные (тождественные) преобразования формул логики высказываний, подобно тому, как мы преобразовывали формулы теории множеств. Но прежде уточним некоторые понятия и определения.



Понятие формулы логики высказываний. Значение истинности формулы логики высказываний. Приоритет логических операций



Переменную, которая может принимать значения конкретных высказываний, будем называть пропозициональной переменной. Логические константы И, Л будем называть пропозициональными константами.

Истинностными значениями пропозициональных переменных являются пропозициональные константы И, Л.

Пропозициональные переменные будем обозначать буквами конца латинского алфавита X, Y, Z (возможно с индексами: X1, X2, X3 и так далее).

Дадим индуктивное определение формулы логики высказываний:

Всякая пропозициональная константа и переменная есть формула логики высказываний.

Если F, Ф – формулы логики высказываний, то следующие последовательности символов также будут формулами логики высказываний:

Те и только те последовательности символов будут формулами логики высказываний, для которых это следует из пп.1 и 2 данного определения.)

Истинностным значением (или просто значением) формулы логики высказываний является значение истинности, получаемое при вычислении результатов всех логических операций, с помощью которых строится формула, при той или иной комбинации значений пропозициональных переменных и констант, входящих в формулу.

При вычислении значения формулы мы будем руководствоваться (как и в школьной алгебре) круглыми скобками (,) и следующим приоритетом (старшинством) операций: 

отрицание (),

конъюнкция (&),

дизъюнкция (), строгая дизъюнкция (),

импликация (),

эквиваленция ().

Операции перечислены в порядке убывания приоритета: отрицание () имеет самый высокий приоритет, а эквиваленция () – самый низкий. Старшинство операций учитывается, если скобки не определяют однозначно порядок вычисления.



Вычисление значений истинности формул логики высказываний



Покажем на примерах как вычисляется значение истинности формул логики высказываний при заданных значениях истинности входящих в формулу пропозициональных переменных и констант. Для этого воспользуемся универсальным для логики высказываний методом – методом истинностных таблиц.

Прежде всего, заметим, что порядок вычисления значения истинности этой формулы определяется частично скобками, а частично старшинством операций. Этот порядок и вычисления в соответствии с ним представлены в таблице:

Результирующее значение И представлено в последней строке в столбце, соответствующем последней выполняемой операции отрицания  (в выделенной жирной линией клетке).

Предпоследнюю и последнюю строки в будущем будем объединять в одну, чтобы сократить размеры таблицы.




Тождественно-истинные и тождественно-ложные формулы логики высказываний. Логическая равносильность формул. Равносильные преобразования формул



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

Формулу логики высказываний, принимающую значение истинности Л (ложь) на любом наборе значений для пропозициональных переменных, входящих в формулу, называют тождественно-ложной формулой, или противоречием.

Формулу логики высказываний, не являющуюся ни тождественно-истинной, ни тождественно ложной, называют выполнимой.

Пусть формулы F и Ф логики высказываний содержит пропозициональные переменные X1, X2, … , Xn. Будем считать эти формулы логически равносильными, если они принимают одинаковые значения истинности на соответствующих наборах значений для пропозициональных переменных X1,X2,…,Xn, входящих в эти формулы.

Если множества пропозициональных переменных, входящих в формулы F и Ф не совпадают, то можно добиться этого совпадения, введя в ту или другую формулу недостающую переменную в качестве "фиктивной". Пусть, например, формула F не содержит пропозициональной переменной Xi. Тогда эту переменную можно ввести в формулу F "фиктивно", заменив формулу F на формулу F( Xi Xi) или на формулу F&( Xi Xi), которые на основании закона противоречия, закона исключенного третьего и свойств логических констант Л и И, равносильны F. Аналогично можно "фиктивно" ввести в формулы F и Ф все другие недостающие переменные. Это соображение легко распространить на любое число формул.

Как мы условились выше, тот факт, что формулы F и Ф логически равносильны будем обозначать FФ.

Отношение равносильности формул, очевидно, обладает свойством транзитивности: если FФ и Ф, то F.

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

Кроме приведенных выше равносильностей в логике высказываний большое значение имеют и другие, среди которых отметим следующие:

Логические равносильности играет важную роль в логике высказываний. Они фактически являются правилами и законами логических рассуждений, законами правильного мышления.) Ниже мы покажем их применение, например, к анализу структуры математических доказательств.

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



Вывод следствий в логике высказываний



Пусть дана совокупность формул логики высказываний F={F1,F2,F3,…,Fm}. Формулы множества F называют посылками (или гипотезами). Определим понятие логического вывода формулы Ф из множества посылок (гипотез) F.

Вначале определим содержательно понятие логического следствия.

Будем говорить, что формула Ф является логическим следствием множества формул F1,F2,F3,…,Fn, если формула F1&F2&F3&…&FnФ является тождественно-истинной (или тавтологией).

Например, формула X является логическим следствием формул (XY) и (XY), поскольку формула (XY)&(XY)X тождественно истинна, в чем легко убедиться с помощью таблицы истинности:

Ясно, что если две формулы равносильны, то каждая из них является логическим следствием другой.

Построение логического вывода некоторой формулы основывается на применении в процессе вывода специальных правил, называемых правилами вывода

Наиболее часто используются следующие правила вывода:

Правило замены формулы равносильной. В процессе вывода в любой момент любую формулу (или подформулу) можно заменить равносильной ей формулой. 

Например, формулу (AB) в любой момент можно заменить равносильной ей формулой A&B (второй закон Де Моргана), а формулу AA - пропозициональной константой И (закон исключенного третьего).

Правило подстановки. Если в формулу F вместо всех вхождений пропозициональной переменной Xi подставить одну и ту же формулу , то полученная в результате формула будет логическим следствием формулы F.

Правило modus ponens. Это правило позволяет из двух формул X и XY выводить третью формулу Y. 

Правило modus tollens. Это правило формулируется так: из формул X&Y и Y выводится формула X.

Формула X является логическим следствием формул X&Y и Y в смысле приведенного выше определения, поскольку формула ((X&Y)&Y)X является тождественно-истинной (тавтологией), в чем можно убедиться с помощью следующей таблицы истинности:

Например, из формул (AB)&C и C по правилу modus tollens выводится формула (AB).

Итак, можно следующим образом более формально определить понятие логического вывода (и логического следования):

Логическим выводом (или просто, выводом) формулы Ф из множества посылок (гипотез) F={F1, F2, F3, … , Fm} называют последовательность формул вида: Ф1,Ф2,…,Фi-1,Фi,…,Фn=Ф, таких, что либо Фi - тавтология, либо Фi F, либо Фi является конъюнкцией формул из F, либо Фi получена из формул множества F, или тавтологий логики высказываний, или ранее выведенных в данном выводе формул Ф1, Ф2, …,Фi-1 с помощью правил вывода.

Формулу Ф будем называть в этом случае логическим следствием множества формул F={F1,F2,F3,…, Fm}.

Тот факт, что формула Ф выводима из множества посылок F={F1,F2,F3,…, Fm} будем обозначать: F1,F2,F3,…, Fm  Ф. 

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

Примем без доказательства следующую теорему, которая называется теоремой дедукции.

Теорема дедукции:

Если F1,F2,F3,…, Fm  Ф, то F1,F2,F3,…, Fm-1  (Fm Ф), и наоборот.

Эта теорема говорит о возможности переноса формул логики высказываний через знак выводимости .

Замечание: m-кратное применение теоремы дедукции приведет к утверждению выводимости формулы 




Применение логики высказываний к анализу математических

доказательств



Ни у кого не возникает сомнения в том, что математические доказательства являются примерами строгих логических рассуждений. 

Аппарат логики высказываний позволяет нам прояснить структуру доказательств многих математических утверждений.

Рассмотрим с точки зрения логики высказываний наиболее типичные методы доказательств в математике.

Доказательство с помощью построения цепочки импликаций.

Этим методом пользуются при доказательстве теорем, выраженных в форме импликации: "Если высказывание A истинно, то и высказывание B истинно", то есть AB.

Доказательство строится как последовательность тождественно-истинных импликаций вида: AA1, A1A2, … , An-1An, AnB, где A1, A2, A3, … , An - некоторые вспомогательные высказывания.

Отсюда делается вывод (в силу транзитивности импликации) о справедливости теоремы AB.

Такое доказательство называется прямым доказательством.

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

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

Из указанных равносильностей вытекает следующий метод доказательства.

Доказательство от противного.

Этот метод используется при доказательстве теорем вида AB и основывается на законе контрапозиции XY  Y  X, который фактически гласит, что доказательство теоремы AB может быть заменено доказательством эквивалентной ей теоремы, которая формулируется как B A . Последняя теорема называется обратная противоположной (или противоположная обратной).

Доказательство теоремы B A осуществляется прямым путем, то есть как цепочка импликаций: BB1, B1B2, …, Bn-1Bn, BnA, из которой делается вывод (в силу транзитивности импликации) о справедливости теоремы B A. А в силу закона контрапозиции заключается о справедливости теоремы AB.

Доказательство приведением к абсурду.

Пусть требуется доказать истинность некоторого утверждения A. Предположим, что A ложно, тогда A - истинно, поскольку закон противоречия (X&XЛ), имеющий место в логике высказываний, означает, что одновременно не могут быть истинными утверждение и его отрицание. 

После этого показывается, что тогда имеется некоторое утверждение B такое, что истинными являются одновременно два утверждения: AB и AB.) Это и есть то, что называют абсурдом.

В логике высказываний тождественно-истинной является формула: (AB)&(AB) A (проверку чего мы предоставляем читателю).

Из этой формулы и (AB)&(AB) по правилу вывода modus ponens следует, что имеет место утверждение A.

4. Доказательство необходимых и достаточных условий.

В математике часто встречаются теоремы вида: "Условие A равносильно условию В", что также выражается словами: "Для того, чтобы имело место условие А, необходимо и достаточно, чтобы выполнялось условие В". В виде формулы логики высказываний такая теорема может быть записана в виде: АВ. Доказательство ее обычно сводится к доказательству двух утверждений: 

	АВ (Если имеет место условие А, то выполняется и условие В) 

	ВА (Если имеет место условие В, то выполняется и условие А).)

Первое условие называют необходимым (то есть, В необходимо для А), а второе условие - достаточным (то есть, А достаточно для В). По-другому, первое называют прямой теоремой, а второе - обратной. 

Доказательство и прямой, и обратной теорем может быть осуществлено любым из трех приведенных выше способов. После чего, можно утверждать и справедливость теоремы "Условие A равносильно условию В".

Существует и другой способ доказательства теорем вида: "Условие A равносильно условию В", когда одновременно доказывается необходимость и достаточность условия В для А. Для этого находится последовательность тождественно-истинных эквиваленций вида: AA1, A1A2,…,An-1An, AnB, где A1,A2,A3,…,An - некоторые вспомогательные высказывания.

Отсюда делается вывод (в силу транзитивности эквиваленции) о справедливости теоремы AB.

Наконец, доказательство теоремы вида AB можно заменять доказательством равносильной ей противоположной теоремы АВ. (В равносильности этих теорем легко убедиться с помощью таблиц истинности.)

Изложив основные структуры математических доказательств, мы надеемся, что читатель теперь по иному будет относиться к доказательству любой теоремы из курсов линейной алгебры, аналитической геометрии, математического анализа и т.д. Приступая к изучению доказательства любой теоремы, прежде всего, необходимо выяснить структуру доказательства, постараться отнести его к одному из рассмотренных четырех видов, а уже затем изучать само доказательство, четко представляя ту идею, которую применил автор теоремы для того, чтобы ее доказать. 



Применение логики высказываний к анализу и синтезу

переключательных (контактных) схем



Переключательной (или контактной) схемой мы будем называть участок электрической цепи, включающий ряд переключателей (контактных выключателей), подобный приведенному на рис.2.2.





Рис.2.2. Вид переключательной схемы.



Каждому переключателю схемы сопоставим пропозициональную переменную Xi, которая будет принимать значение И (истина) или Л (ложь), если соответствующий переключатель замкнут или разомкнут (то есть, не проводит электрический ток).

Поскольку функция участка электрической цепи состоит в том, чтобы проводить электрический ток, то два участка, содержащие одни и те же переключатели и проводящие или не проводящие ток при одном и том же состоянии всех выключателей , мы будем считать "равными" и не различать между собой.

Легко сообразить, что участку цепи, представляющему собой последовательное соединение двух переключателей X1 и X2 будет отвечать формула логики высказываний, представляющая собой конъюнкцию пропозициональных переменных X1 и X2, то есть, X1&X2 (что означает, что такой участок проводит ток тогда и тогда, когда оба переключателя X1 и X2 замкнуты), а участку цепи, представляющему собой параллельное соединение двух переключателей X1 и X2 - формула, представляющая собой дизъюнкцию пропозициональных переменных X1 и X2, то есть, X1X2. Сказанное представлено на рис. 2.3.





Рис. 2.3. Соответствие формул логики высказываний видам соединения переключателей.



Условимся обозначать через И всегда замкнутый контакт, а через Л - всегда разомкнутый. На схемах это будет выглядеть так, как представлено на рис. 2.4.



 

Рис.2.4. Соответствие логических констант всегда замкнутому и всегда разомкнутому контактам.



Условимся, наконец, обозначать через Xi и Xi такую пару контактов, что когда контакт Xi замкнут, контакт Xi обязательно разомкнут, и наоборот. Техническое осуществление такой пары контактов показано на рис.2.5.





Рис.2.5. Реализация контактов Xi и Xi.




Ясно, что параллельное и последовательное соединение переключательных схем обладает свойствами коммутативности, ассоциативности, идемпотентности. 

Несколько сложнее проверяется выполнимость двух законов дистрибутивности: 

Приведены попарно эквивалентные переключательные схемы, подтверждающие справедливость указанных законов дистрибутивности для переключательных схем.

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



Булевские функции



Многим из читателей, мы полагаем, приходилось иметь дело с так называемыми числовыми функциями: алгебраическими, тригонометрическими, логарифмическими и т.д. Все они характеризовались тем, что область определения и область значений функций представляли собой подмножества множества действительных чисел. 

Например, функция y = f(x), задаваемая формулой y = sin(x) + 1, имеет в качестве области определения (обычно обозначается буквой Х) все множество действительных чисел, а в качестве области значений (чаще обозначаемой буквой Y) множество неотрицательных чисел, принадлежащих интервалу [0, 2]; функция y = (x) , задаваемая формулой (x)=|lgx|+5, в качестве области определения имеет множество всех положительных действительных чисел, а в качестве области значений - множество положительных действительных чисел, больших 5.

Рассматриваемые нами здесь булевские (логические) функции характеризуются тем, что аргументы и сама функция принимают значения из множества логических констант {И, Л}.

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

Булевская функция в общем случае может содержать n аргументов: y=f(x1,x2,…,xn).

Как и математические функции, булевские функции могут задаваться: словесно, таблично или аналитически. Мы будем использовать последние два способа задания булевских функций: табличный (в виде таблиц истинности) и аналитический (в виде формул логики высказываний). Одна и та же функция может, естественно, задаваться по-разному.

Булевские функции одной переменной

Булевских функций от одной переменной всего 4. Эти функции и задающие их формулы логики высказываний приведены в следующей таблице:



x

0

1

Формулы логики высказываний, задающие функции

φ1

0

0

φ1(x) = 0 (константа 0)

φ2

0

1

φ2(x) = x (совпадает с переменной х)

φ3

1

0

φ3(x) = x (является отрицанием переменной х)

φ4

1

1

φ4(x) = 1 (константа 1)



Булевских функций от двух переменных всего насчитывается 16. Все они представлены в следующей таблице:



x

0

0

1

1

Формулы логики высказываний, задающие функции

y

0

1

0

1



f1

0

0

0

0

f1(x,y) = 0 (константа 0)

f2

0

0

0

1

f2(x,y) = x&y (конъюнкция)

f3

0

0

1

0

f3(x,y) = (xy) (отрицание импликации)

f4

0

0

1

1

f4(x,y) = x (совпадает с переменной x)

f5

0

1

0

0

f5(x,y) = (yx) (отрицание обратной импликации)

f6

0

1

0

1

f6(x,y) = y (совпадает с переменной y)

f7

0

1

1

0

f7(x,y) = xy (строгая дизъюнкция)

f8

0

1

1

1

f8(x,y) = xy (дизъюнкция)

f9

1

0

0

0

f9(x,y) = xy (конъюнкция отрицаний)

f10

1

0

0

1

f10(x,y) = xy (эквиваленция)

f11

1

0

1

0

f11(x,y) = y (отрицание y)

f12

1

0

1

1

f12(x,y) = yx (обратная импликация)

f13

1

1

0

0

f13(x,y) = x (отрицание x)

f14

1

1

0

1

f14(x,y) = xy (импликация)

f15

1

1

1

0

f15(x,y) = (xy) (отрицание конъюнкции)

f16

1

1

1

1

f16(x,y) = 1 (константа 1)

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



Булевские функции n переменных



Областью определения такой булевской функции будет n-тая декартова степень множества {0,1}, то есть всевозможные двоичные наборы длины n вида <12…n>, где i{0,1}. Число таких всевозможных наборов (n-ок) составляет 2n. 

Область значений булевской функции от n переменных - это множество {0,1}.

В дальнейшем мы будем рассматривать только всюду определенные булевские функции, то есть область определения таких функций совпадает с n-той декартовой степенью множества {0,1}.

Булевские функции от большего числа переменных могут быть так же заданы таблично, или с помощью формул логики высказываний, или в виде суперпозиции (взаимной подстановки) булевских функций одной и/или двух переменных.

Например, булевская функция y=f(x,y,z), задаваемая формулой логики высказываний x&y  x&y  z может быть задана в виде следующей суперпозиции функций от одной и двух переменных: y=f8(f8(f2(x,y),f9(x,y)),φ2(z)).

Учитывая принципиальную возможность выразить булевскую функцию от любого числа переменных в виде суперпозиции (взаимной подстановки) булевских функций от одной и двух переменных, мы чаще будем использовать либо табличный способ задания таких функций, либо с помощью формул логики высказываний. 

Табличный способ задания булевских функций от одной и двух переменных (см. приведенные выше таблицы, определяющие эти функции) наводит нас на некоторые соображения:

число наборов истинностных значений, на которых определена булевская функция от n переменных, составляет 2n (при n=1 это число составляет 2, при n=2 - 4);

значение каждой булевской функции от n переменных представляет собой двоичный набор длины 2n; 

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

А отсюда можно сделать предположение о том, число N различных булевских функций от n переменных равно числу различных двоичных наборов длины 2n, то есть: 

При n=1 это число равно 4, при n=2 - 16, n=3 - 256, n=4 - 65536 и т.д.



Полные системы булевских функций



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

Но как известно из логики высказываний, операции логики высказываний строгая дизъюнкция (), импликация (), эквиваленция () могут быть выражены через дизъюнкцию (), конъюнкцию (&) и отрицание (). 

В свою очередь, дизъюнкция () может быть выражена через конъюнкцию (&) и отрицание (), а конъюнкция (&) - через дизъюнкцию () и отрицание ().

Таким образом, конъюнкция и отрицание, а также дизъюнкция и отрицание, образуют полную систему логических связок, то есть через эти операции могут быть выражены все остальные.

Более того, можно определить логическую операцию, через которую выражаются все шесть операций: отрицание (), конъюнкция (&), дизъюнкция (), строгая дизъюнкция (), импликация (), эквиваленция (). Таковой, например, является операция, соответствующая сложному союзу "не А или не В" ("или" соединительное). Эта операция обозначается символом (например, АВ) и получила название штрих Шеффера. Штрих Шеффера определяется с помощью следующей таблицы:



X

Y

XY

Л

Л

И

Л

И

И

И

Л

И

И

И

Л



Как легко видеть, штрих Шеффера представляет собой отрицание конъюнкции: XY  XY  (X&Y).

Можно убедиться, что X  XX.

А отсюда: X&Y  ( XY)  (XY) ( XY).

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

Есть еще одна логическая операция, аналогичная штриху Шеффера и называемая стрелкой Пирса. Она обозначается символом  и представляет собой отрицание дизъюнкции (или конъюнкцию отрицаний): XY  (XY)  X&Y. 

Можно убедиться, что X  XX.

А отсюда: XY  ( XY)  (XY)  ( XY). 

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

Систему булевских функций будем называть функционально полной, если любую булевскую функцию можно выразить в виде суперпозиции (взаимной подстановки) функций из этой системы.

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

S0 = {φ3(x), f2(x,y), f8(x,y)} - отрицание, конъюнкция, дизъюнкция.

S1 = {φ3(x), f2(x,y)} - отрицание, конъюнкция.

S2 = {φ3(x), f8(x,y)} - отрицание, дизъюнкция.

S3 = {f15(x,y)} - отрицание конъюнкции (штрих Шеффера).

S4 = {f9(x,y)} - отрицание дизъюнкции (стрелка Пирса).

S5 = {φ3(x), f14(x,y)} - отрицание, импликация.

В последующем мы увидим, что с точки зрения проектирования вычислительных устройств особый интерес представляют S3 и S4.

Общий критерий функциональной полноты системы булевских функций, выражающий необходимые и достаточные условия, носит название критерия Поста-Яблонского. Его изложение выходит, к сожалению, за рамки настоящего пособия.



Применение аппарата булевских функций к анализу и синтезу комбинационных схем



Рассмотрим так называемые схемы из функциональных элементов (комбинационные схемы), вычисляющие (реализующие) булевские функции.

Под функциональным элементом будем понимать некоторое устройство (внутренняя структура которого нас не интересует), обладающее такими свойствами:

оно имеет n1 упорядоченных входов и один выход;

на входы этого устройства могут подаваться сигналы, принимающие два значения, которые будем обозначать через 0 и 1;

при каждом наборе сигналов на входах устройство выдает один из сигналов (0 или 1) в тот же момент, в который поступили сигналы на входе;

набор сигналов на входах однозначно определяет сигнал на выходе, то есть, если в различные моменты времени на входы поступает одна и та же комбинация сигналов, то в эти моменты на выходе будет один и тот же сигнал.

С каждым функциональным элементом с n входами сопоставим булевскую функцию от n переменных f(x1,x2,…,xn), определяемую следующим образом: входу с номером i (i = 1, 2, … , n) ставится в соответствие переменная xi и с каждым набором <1, 2, … , i, …, n> этих переменных (i{0,1}) сопоставляется число f(1, 2, … , i, …, n), равное 0 или 1 в зависимости от того, какой сигнал вырабатывается на выходе при подаче этого набора сигналов на входы данного функционального элемента. О функции f(x1,x2,…,xn) будем говорить, что данный функциональный элемент ее реализует.

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

Теперь определим понятие "схема из функциональных элементов в базисе {&, , }" и понятия ее выходов и входов. Определение будет носить индуктивный характер (подобно тому, как выше определялось понятие формулы логики высказываний).

Каждый функциональный элемент представляет собой схему из функциональных элементов с теми же входами и выходами, что и у этого элемента.

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

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

4. Если в схеме из функциональных элементов 1 ее вход соединить с выходом некоторого функционального элемента из 1 без образования цикла для какого-либо функционального элемента (то есть его выход не должен соединяться, быть может, через другие функциональные элементы из 1 с его входом), то получившаяся конструкция  является схемой из функциональных элементов. Выходом  будет выход 1, а входами  - все входы 1, кроме того, который соединен с выходом функционального элемента. На рис.2.21 приведен пример подобной схемы:

Определение схемы из функциональных элементов завершено. 

Теперь определим булевскую функцию, реализуемую данной схемой. 

Если схема является функциональным элементом, то булевская функция, ею реализуемая, уже определена.

Если схема 1 реализует булевскую функцию f(x1,x2,…,xn), то схема , построенная в п.2 определения схемы из функциональных элементов, реализует булевскую функцию, полученную из f(x1,x2,…,xn) отождествлением переменных, отвечающих объединенным входам схемы 1.

Пусть схема 1 реализует булевскую функцию f(x1,x2,…,xn), а схема 2 - булевскую функцию g(y1,y2,…,ym). Считаем, что все переменные x1,x2,…,xn,y1,y2,…,ym попарно различны. Тогда схема , построенная в п.3 определения схемы из функциональных элементов, реализует булевскую функцию g(y1, y2, …, yi-1, f(x1,x2,…,xn), yi-1, … , ym), то есть функцию, получаемую путем подстановки в функцию g(y1,y2,…,ym) вместо аргумента yi, сопоставленного входу схемы 2, соединенному с выходом 1, функции f(x1,x2,…,xn).

Булевская функция, реализуемая схемой , построенной в п.4 определения схемы из функциональных элементов, получается из булевской функции, реализуемой схемой 1, операцией, типа описанной в п. 3 настоящего определения. Например, приведенная на рис.2.21 схема реализует функцию f(x1,x2,x3,x4) = ( x1& x2&(x3x4)).

Определение булевской функции, реализуемой схемой из функциональных элементов, завершено.

Поскольку, как отмечалось выше, любую булевскую функцию от n переменных можно выразить в виде суперпозиции функций, образующих полную систему булевских функций (в частности, S0 = {φ3(x), f2(x,y), f8(x,y)} - отрицание, конъюнкция, дизъюнкция), то значит, что и любая булевская функция может быть реализована соответствующей схемой из функциональных элементов.

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

В качестве примера опишем в виде схемы из функциональных элементов один из основных узлов ЭВМ - двоичный сумматор - устройство, предназначенное для сложения n-разрядных двоичных чисел.

Пусть имеются два двоичных числа:



X = xn xn-1 xn-2 … x2 x1 и Y = yn yn-1 yn-2 … y2 y1



(Здесь xi, yj - двоичные цифры 0 или 1.)

Требуется получить число Z, равное сумме чисел X и Y.

Рассмотрим вначале одноразрядный двоичный сумматор на два входа.

Здесь: xi - i- тая цифра числа X; yi - i-тая цифра числа Y; zi - i-тая цифра результата сложения - числа Z; pi+1 - перенос в следующий, (i+1)-ый разряд.

Входы сумматора - xi и yi, выходы сумматора - zi и pi+1.

Опишем выходы сумматора как булевские функции его входов в виде следующей таблицы:



xi

yi

zi

pi+1

0

0

0

0

0

1

1

0

1

0

1

0

1

1

0

1



Легко видеть:


zi = f1(xi,yi) = xi&yi xi&yi; pi+1 = f2(xi,yi) = xi&yi.



Соответствующие схемы из функциональных элементов представлены на рис.2.23.





Рис.2.23. Функциональная схема одноразрядного двоичного сумматора на два входа.



Рассмотрим теперь одноразрядный двоичный сумматор на три входа. Схематическое представление его на рис.2.24.

В отличие от предыдущего случая теперь мы учитываем перенос из младшего разряда. Здесь: xi - i- тая цифра числа X; yi - i-тая цифра числа Y; pi - перенос из предыдущего, i-го разряда; zi - i-тая цифра результата сложения - числа Z; pi+1 - перенос в следующий, (i+1)-ый разряд.

Входы сумматора - xi, yi, pi, выходы сумматора - zi и pi+1.

Опишем выходы сумматора как булевские функции его входов в виде следующей таблицы:



хi

yi

pi

zi

pi+1

0

0

0

0

0

0

0

1

1

0

0

1

0

1

0

0

1

1

0

1

1

0

0

1

0

1

0

1

0

1

1

1

0

0

1

1

1

1

1

1


Соответствующие схема из функциональных элементов представлены на рис.2.25.





Рис.2.25. Функциональная схема одноразрядного двоичного сумматора на три входа.



Сложение n-разрядных двоичных чисел можно осуществить, соединив n сумматоров таким образом, как это показано на рис.2.26.

В данной схеме сумматора первый элемент имеет два входа, а все остальные элементы - по три. Появление 1 на выходе yn+1 означает переполнение разрядной сетки, то есть попытка представить число, содержащее больше, чем n двоичных разрядов.





Рис.2.26. Схема n-разрядного двоичного сумматора.



В некоторых схемах сумматоров "замыкают" выход pn+1 последнего элемента на вход p1 первого. Тогда все элементы схемы сумматора будут иметь по три входа. Такое сложение называют циклическим. Оно находит свое применение при выполнении арифметических операций в ЭВМ.

Работа n-разрядного двоичного сумматора напоминает замóк типа "молния". Но есть существенная разность: замóк застегивается "шаг за шагом", последовательно. А сложение на двоичном сумматоре осуществляется "параллельно" за один шаг (такт), и выход полностью определяется текущим состоянием входов, независимо от их количества. То есть, если в момент времени t подать 2n сигналов на входы xn,xn-1, xn-2, … ,x2, x1 и yn,yn-1, yn-2,…,y2 ,y1, то n сигналов на выходах сумматора zn, zn-1, zn-2, … ,z2, z1 появятся в тот же момент времени, без задержки. Схемы из функциональных элементов называют поэтому комбинационными схемами, или схемами без памяти. Они не запоминают результатов своей предыдущей работы.

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

Такие схемы и способы их анализа и синтеза мы рассмотрим ниже.



Логические операции, выполняемые микропроцессором



Микропроцессор компьютера способен выполнять основные логические операции: конъюнкцию & (обозначение AND), дизъюнкцию  (обозначение OR), отрицание  (обозначение NOT), строгую дизъюнкцию (или сложение по модулю 2)  (обозначение XOR). 

Особенностью выполнения логических операций микропроцессором является то, что они выполняются над двоичными кодами (словами, полусловами, двойными словами) поразрядно. 




Булевы алгебры



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

Но, вообще говоря, слово алгебра в математике понимается значительно шире. 

А именно: Алгеброй называют множество объектов любой природы с определенными и замкнутыми на этом множестве операциями. 

Если какая-либо операция  определена на множестве Q и результат ее также принадлежит этому множеству, то говорят, что операция  замкнута на этом множестве, или множество замкнуто относительно операции . Например, множество натуральных чисел N замкнуто относительно операций сложения и умножения натуральных чисел, но не замкнуто относительно операций вычитания и деления, которые могут в качестве результата давать значения, не принадлежащие множеству натуральных чисел (вычитание – отрицательные числа, а деление – дробные). 

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

Рассмотренная в § 1 настоящей главы теория множеств также является алгеброй в указанном выше смысле. Это алгебра множеств, объектами которой являются множества, а определенными и замкнутыми на этих объектах являются операции объединения, пересечения, дополнения.

Точно так же, рассмотренная в § 2 настоящей главы логика высказываний является алгеброй. Это алгебра высказываний, объектами которой являются высказывания, а определенными и замкнутыми на этих объектах являются операции дизъюнкции, конъюнкции и отрицания.

Две последние алгебры принадлежат к особому типу алгебр, называемых булевыми.)

Булева алгебра представляет собой множество объектов (любой, но одинаковой, природы) с двумя «особыми» объектами («константами») - «единица» (I) и «нуль» (О), и двумя замкнутыми на множестве объектов операциями «сложения» (+) и «умножения» (), обладающими следующими свойствами:

коммутативность + и :



A+B=B+A, AB=BA;



ассоциативность + и :



A+(B+C)=(A+B)+C, A(BC)=(AB) C;



дистрибутивность + относительно  и  относительно +:



A+(BC)=(A+B) (A+C), A(B+C)=(AB)+(AC);



идемпотентность + и :



A+A=A, AA=A.



Кроме того, «особые» объекты («константы») I и O обладают следующими свойствами:




A+O=A, A+I=I, AI=A, AO=O.



С точки зрения этого определения алгебра множеств является булевой алгеброй, в которой роль «сложения» играет операция объединения множеств (), роль «умножения» – операция пересечения множеств (), роль константы «нуль» – пустое множество (), роль «единицы» - универсальное множество (U). Легко проверить, что все указанные выше свойства операций и констант булевой алгебры здесь выполняются.

Алгебра высказываний также является булевой алгеброй. В ней роль «сложения» играет операция дизъюнкции (), роль «умножения» – операция конъюнкции (&), роль “нуля” – логическая константа Л, роль “единицы” – логическая константа И. И опять-таки легко проверить, что все указанные выше свойства операций и констант булевой алгебры выполняются.

Аналогично можно убедиться в том, что «алгебра переключательных схем» также является булевой: «сложению» будет соответствовать параллельное соединение контактов, «умножению» – последовательное соединение, константе «нуль» – всегда разомкнутый контакт, «единице» – всегда замкнутый контакт. )

В заключение приведем пример еще одной булевой алгебры – «алгебры максимумов и минимумов». Примем в качестве объектов (элементов) нашей алгебры, например, множество всех чисел отрезка [0,1], т.е. 0х1. В качестве операции «сложения» будем рассматривать операцию взятия максимального из двух чисел x и y и обозначать ее max (x,y), в качестве операции «умножения» - операцию взятия минимального из двух чисел x и y и обозначать ее min (x,y). В качестве константы «нуль» примем минимальное число из рассматриваемого отрезка, то есть число 0, а в качестве «единицы» – максимальное число из рассматриваемого отрезка – 1.

Легко проверить, что для определенных таким образом констант и операций выполняются все свойства булевой алгебры.

В самом деле:

коммутативность min и max:



min (x,y)=min(y,x), max (x,y)=max(y,x);



ассоциативность min и max:



min (x, min (y,z)) =min (min (x, y),z), 

max (x, max (y,z)) =max (max (x, y),z);



дистрибутивность min относительно max:



min (x, max(y,z)) = max(min(x,y),min(x,z)),

max (x, min(y,z)) = min(max(x,y),max(x,z));



идемпотентность min и max:



min(x,x)=x, max(x,x)=x;



свойства констант 0 и 1:



min(x,0)=0, min(x,1)=x, max(x,0)=x, max(x,1)=1.



Рекомендация: Проверьте (хотя бы на примерах) справедливость этих соотношений