ОСНОВНЫЕ ПОНЯТИИ
Развитие вычислительной техники потребовало разработки специфического математического аппарата, основой которого стали фундаментальные понятия математической логики. Дискретность процессов арифметических вычислений и логических выводов требовала создания специальных физических устройств, реализующих эти процессы, причем с максимально возможной скоростью, что, в свою очередь, стимулировало разработку математических моделей дискретных процессов, которые в наиболее общей форме реализовались в новом разделе математики - дискретной математике, построенной на основных понятиях математической логики.
Известно, что если некоторая величина задана в какой-либо системе счисления, например в десятичной, то ее всегда можно перевести в двоичную систему, использующую для записи всего два знака, например 0 и I. Двоичный код удобен тем, что большинство физических приборов, реализующих те или иные автоматы, имеют два состояния - активное и пассивное. В связи с этим будем рассматривать функции от любого конечного числа переменных
, каждая из которых, а также каждый аргумент которых принимают лишь два значения 0 и I. Независимые переменные этих функций, называемые пропозициональными переменными, будем обозначать не только через
, но и любыми строчными буквами латинского алфавита. В математической логике (в алгебре логики) 0 идентифицируется с ложным суждением, а I - с истинным.
Если - некоторое суждение, то посредством
обозначим его отрицание. Формула
, читаемая "х и х2 ", выражает логическое умножение, которое будет являться истинным тогда и только тогда, когда истинно каждое из суждений
и
. Логическое умножение называют конъюнкцией. Через
обозначают логическое сложение, называемое дизъюнкцией и читаемое как "
или
". Дизъюнкция истинна, если истинно хотя бы одно из составляющих ее суждений
или
.
Выражение "из следует ", обозначаемое
, называют импликацией. Условились считать, что импликация ложна лишь в том случае, когда суждение
истинно, а
ложно.
Нетрудно убедиться, что импликация эквивалентна .
Говорят, что суждения и
эквивалентны (и обозначают это посредством
), если оба суждения
и
одновременно истинны или ложны.
Истинность или ложность перечисленных выше элементарных операций над суждениями отражены в табл. I.
Таблица I
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
I | I | I | ||||
I | I | I | I | |||
I | I | |||||
I | I | I | I | I | I | I |
Из простых суждений с помощью введенных операций "и", "или" и "не", а также импликации и эквиваленции можно составлять сложные суждения. Правила подобных построений составляют раздел алгебры логики. Прежде чем переходить к операциям алгебры логики, введем понятие функции алгебры логики.
Функцией алгебры логики назовем любую функцию , принимающую лишь значения 0 и I и определенную на множестве переменных
, принимающих также только значение 0 и I. Функция f будет определена, если заданы ее значения при всех значениях ее аргументов
. Поскольку число всех возможных наборов двоичных переменных
равно 2, то число всех возможных функций алгебры логики, зависящих от n переменных
, равно
Это число очень быстро возрастает с ростом n, и поэтому задавать такие функции в виде нижеследующих таблиц при n> 5 становится практически невозможным; в этом случае их задают не таблицами, а формулами. Табличное представление функции чаще всего дается в форме табл. 2.
Таблица 2
![]() ![]() | ![]() ![]() ![]() | ![]() |
0 0 | 0 0 | f (0,...,0) |
I I | I 0 | f (I,...,I,0) |
I I | I I | f (I,...,I) |
Множество всех функций алгебры логики обычно обозначают через .
Переменная называется существенной, а функция
- существенно зависящей от этой переменной, если найдется такой набор значений
переменных (
),что имеет место неравенство
. В противном случае переменная
называется несущественной, или фиктивной. Две функции равны, если они отличаются друг от друга на фиктивную переменную. Существует два вида функций, не содержащих существенных переменных - это функции, тождественно равные 0 или I.
По определению пропозициональные переменные и константы 0 и I называются формулами. Формулами считаются также любые выражения, составленные из формул c применением операций конъюнкции, дизъюнкции, импликации, эквиваленции и отрицания.
Каждая формула определяет некоторую функцию алгебры логики, причем различным формулам может отвечать одна и та же функция. Например, формуле, задающей импликацию , отвечает та же функция
, что и формуле
.В качестве другого примера рассмотрим, например, формулу
, определяющую сложение по модулю 2. То, что это сложение определяет формулу алгебры логики, следует из равенства
(табл. 3).
Таблица 3
![]() | ![]() | ![]() | ![]() |
I | I | I | |
I | I | I | |
I | I |
Нетрудно убедиться также, что формулы и
-задают одну и ту же функцию алгебры логики, так же как одну и ту же функцию задают и формулы
и
. Чтобы убедиться в этом, достаточно построить таблицу значений функций, определенных этими формулами.
В дальнейшем формулы, отличные от пропозициональных переменных, будем обозначать большими буквами и использовать в формулах по возможности меньше скобок, условившись, что знаки конъюнкции и дизъюнкции определяют более тесную связь, чем знаки импликации и эквиваленщи, а знак конъюнкции задает более сильную связь, чем знак дизъюнкции. При подобных предположениях в отношении обозначений можно существенно уменьшить число скобок в формулах, например, формулу
можно переписать в виде
Операции конъюнкции, дизъюнкции, эквиваленции и отрицания обладают рядом свойств, позволяющих существенно упрощать формулы алгебры логики.
1. Операции конъюнкции и дизъюнкции обладают следующими свойствами, очень сходными c аналогичными свойствами в теории множеств, если операции конъюнкции сопоставить операцию пересечения множеств, а операции дизъюнкции - операцию объединения
множеств:
,
(закон идемпотентности);
,
,
,
2. Следующие три закона отражают естественные отношения в логике высказываний:
(одновременно и то, и ему противоположное невозможно);
(т.е. это или ему противоположное достоверно);
(двойное отрицание есть утверждение).
- Закон ассоциативности конъюнкции, дизъюнкции и эквиваленции:
что позволяет вообще отказаться от скобок, когда одна и та же операция повторяется последовательно более одного раза. 6
4. Операции конъюнкции, дизъюнкции и эквиваленции обладают также свойством коммутативности:
- Операции конъюнкции и дизъюнкции обладают свойством дистрибутивности (распределительности) относительно друг друга:
Используя сформулированные свойства, можно упрощать сложные формулы, приводя их к элементарным, называемым тупиковыми, не допускающим дальнейшего упрощения.
Обратимся к выводу общих формул представления функций алгебры логики.
Покажем, что любая функция алгебры логики может быть выражена через конъюнкцию, дизъюнкцию и отрицание.
Теорема I. Любая функция алгебры логики допускает разложение по любому числу К переменных из множества n всех переменных:
где
Доказательство. Как следует, из обозначений теоремы, в том и только том случае, если
. Для проверки теоремы достаточно подставить в функцию f и ее разложение произвольное множество допустимых значений
и учесть указанное свойство при
и
в ином случае:
Следствие. Любая функция алгебры логики () может быть выражена через конъюнкцию, дизъюнкцию и отрицание:
где логическое суммирование проводится только по тем комбинациям ), для которых f = I. Это разложение функции алгебры логики называют совершенной дизъюнктивной нормальной формой.
Разложим, например, функцию f (, приведя ее к совершенной дизъюнктивной нормальной форме:
.
Если все значения функции заданы, то, подставляя их в эту формулу, получаем окончательный вид разложения. Например, пусть функция f задана своими значениями:
.
Тогда .
Любая функция алгебры логики, исключая тождественно равную нулю, может быть представлена в совершенной дизъюнктивной нормальной форме (СДНФ), составленной из произведений (), соединенных операцией
. Можно, однако, показать, что функция алгебры логики могут быть также представлены в виде произведения членов вида (
). Подобное представление называется совершенной конъюнктивной нормальной формой (СКНФ). Для нахождения связи между двумя этими представлениями полезно предварительно ввести понятие двойственной функции: функция
называется двойственной к функции
Очевидно, , а следовательно, двойственная функция получается из таблицы значений исходной функция в результате взаимной замены 0 и I и переворачивания столбца значений функции (табл. 4).
Таблица 4
![]() | ![]() | ![]() | ![]() |
I | I | ||
I | I | I | |
I | |||
I | I |
Из определения двойственной функции следует, что 0 и I двойственны друг другу, функции и
двойственны самим себе, повторное применение операции двойственности возвращает к исходной функции, т.е.
.
Следующая теорема позволяет по заданной формуле А, определяющей функцию , построить формулу В, определяющую двойственную функцию
.
Теорема 2. Пусть - некоторая функция алгебры логики, представляющая собой суперпозицию более простых функций алгебры логики
, i-я из которых зависит от произвольного числа переменных /из множества
/, обобщенно обозначенного через
.
Тогда
Доказательство:
Следствие. Если формула A() определяет функцию.
, то формула
определяет двойственную функцию
. Нетрудно проверить, что функции
взаимно двойственны друг другу. Отсюда следует, что для получения формулы
, двойственной к
, следует взаимно поменять 0 и I и дизъюнкцию и конъюнкцию, например:
Из определения двойственной функции следует, что , а отсюда, в свою очередь, следует правило де Моргана: чтобы получить отрицание некоторой формулы, следует образовать двойственную формулу и заменить в ней аргументы их отрицаниями, или, в другой формулировке, отрицание всякой формулы, выраженной через отрицание, дизъюнкцию в конъюнкцию, может быть получено заменой аргументов их отрицаниями и взаимной заменой операций дизъюнкции и конъюнкции.
Примеры: I) ,
;
2) ,
.
Покажем теперь, что любую функцию алгебры логики можно представить в виде СКНФ. Пусть , а следовательно,
.
Разложим в СДНФ:
Применяя правило де Моргана и обозначая через П произведение (конъюнкцию), получаем
.
Из сравнения представлений функции алгебры логики в виде СДНФ и в виде CKНФ следует правило перехода от СДНФ к СКНФ: необходимо образовать логическую сумму дизъюнктивных членов, не входящих в СДНФ, поменять местами операции дизъюнкции и конъюнкции и заменить аргументы их отрицаниями.
При операциях c формулами алгебры логики полезными оказываются следующие правила:
I. Логическое произведение двух разных дизъюнктивных членов вида () равно нулю. Это следует из того, что в разных дизъюнктивных членах найдется по крайней мере одна такая переменная
, что в один из членов она входит в вида
, а в другой - в виде
, а следовательно, с учетом свойства коммутативности конъюнкции произведение можно будет представить в виде
)(•), где первый сомножитель равен нулю.
2. Логическая сумма двух разных конъюнктивных членов вида
)(
) равна единице. Это следует из того, что подобную сумму можно представить в вида (
,где первая сумма равна единице, а следовательно, равна единице и всясумма. 3. Логическая сумма всех
попарно различных дизъюнктивных членов
равна единице. Это следует из теоремы представления произвольной функции алгебры логики в виде СДНФ и из того, что если в данном представлении фигурируют вcе
дизъюнктивных членов, то это означает, что функция тождественно равна единице.
4. Логическое произведение всех попарно различныхконъюнктивных членов
равно нулю, что следует из теоремы о представлении произвольной функции f в виде СКНФ и из того, что если в этом представлении присутствуют все конъюнктивные члены (а в произведении участвуют только члены, для которых
), то
.
ПОЛНОТА СИСТЕМЫФУНКЦИЙ АЛГЕБРЫЛ0ГИКИ
Выше было показано, что любая функция алгебры логики может быть выражена через конъюнкцию, дизъюнкцию и отрицание, т.е. через функции . Можно поставить вопрос: существуют ли еще какие-либо системы функций, через которые можно выразить любую функцию из класса
всех булевых функций? Как увидим, ответ на этот вопрос положительный. Более того, найдены даже необходимые и достаточные условия того, чтобы заданная система функций обладала подобным свойством (полноты).
Система функций { } называется полной, если любую функцию из множества всех булевых функций
можно задать в виде некоторой формулы от функций этой системы.
Примеры. Полными будут системы всего из двух функций поскольку посредством операции отрицания первая из них может быть дополнена конъюнкцией
линейных функций,
а вторая - дизъюнкцией
что приводит к системе функций полнота которой уже была
установлена ранее. Более того, можно показать, что всего одна функция ,
по определение равная функцииc и называемая функцией Шеффера, образует полную систему. Функция Шеф-фера равна нулю (т.е. ложному суждению), только когда равны единице (т.е. когда истинны)
и
. Составляя таблицу этой функции, легко видеть, что отрицание
может быть получено, если в этой функции берутся одинаковые аргументы
, а дизъюнкция равна
,что следует из определения отрицания и определения самой функции Шеффера (табл. 5).
Таблица 5
![]() | ![]() | ![]() | ![]() |
I | |||
I | I | I | |
I | I | I | |
I | I | I |
Существует множество других наборов полных функций. Оценить полноту произвольного набора функций посредством эквивалентных преобразований этих функций в функции какого-либо из известных наборов полных функций бывает не всегда просто и удобно. Ниже будет определено пять классов функций, опираясь на которые можно сформулировать критерий полноты системы функций. Но прежде чем переходить к рассмотрению этих пяти классов, укажем на полезное свойство замкнутости класса функций.
Если М - подмножество функций из , то замыканием М в
, обозначаемым [ М], называется множество всех тех функций из
, которые могут быть выражены в виде формул через функции из множества М. Класс функций называется замкнутым, если он совпадает со своим замыканием. Например, класс L всех линейных функций
замкнут, поскольку любая функция из , определяемая как некоторая линейная комбинация, принадлежит этому классу.
Класс L будет играть роль одного из пятb классов функций, через которые выражается критерий полноты системы функций.
Заметим, что если H - некоторая система функций и если , * то H - полная система функций.
Вторым классом функций, важным для оценки полноты системы функций, является класс всех булевых функций
, сохраняющих 0, т.е. таких, которые удовлетворяют условию
.
функциями из класса являются, например, следующие:
,
а также любые однородные линейные функции. Не принадлежат этому классу, например, .
Класс замкнут, поскольку если функции f,
принадлежат классу
, то и функция
принадлежит этому классу. В самом деле, имеем
Третьим классом является класс всех функций алгебры логики, сохраняющих единицу, т.е. удовлетворяющих условию
.
В этот класс входят, например, функции , но не входят функции
. Поскольку класс
является двойственным классу
, то он тоже замкнут, как и
.
К четвертому классу относится класc S так называемых самодвойственных функций, т.е. таких, что f *= f, называемых также "нечетными": поскольку , что как раз и выражает свойство нечетности. Самодвойственной является, например, функция
, так как
, а также функция x.
Замкнутость класса S следует из того, что если , то и
.
В самом деле, имеем (согласно теорема о двойственной функции):
Пятый класс функций образует класс М монотонных функций, т.е. функций, удовлетворяющих следующему условию:
если . Нетрудно проверить, что монотонными являются функции
и I. Примем без доказательства, что класс монотонных функций замкнут.
Основываясь на пяти построенных классах функций, можно сформулировать теорему о функциональной полноте системы функций алгебры логики.
Теорема. 3 (о полноте). Чтобы система функций { } была полной необходимо и достаточно, чтобы она не содержалась целиком в одном из пяти классов
.
Эта теорема позволяет проверить, является некоторая выбранная система функций полной или нет. Понятно, что система заведомо неполна, если все функции этой системы принадлежат некоторому классу , поскольку в этой системе нет функции, не принадлежащей классу
. В то же время система функций не окажется полной, если в ней не будет функции, которая не является функцией класса
, где под
понимается любой из пята классов
.
В ряда случаев удобнее вместо пяти классов говорить о пяти свойствах
. В подобной трактовке можно сказать, что система функций не будет полной, если в ней не найдется функции, не обладающей свойством
(
- любое из свойств
). Например, система функций (
) и
) не является полной, так как обе эти функции удовлетворят свойству
и в этой системе нет функции, не удовлетворяющей давнему свойству. Если же к этой системе добавить, например,I то система станет полной, так как
. Можно проверить и убедиться, что функция Шеффера не обладает ни одним из пяти свойств, а следовательно, она образует полную систему. В общем случае доказано, что из всякой полной системы можно выделить полную подсистему, содержащую не более четырех функций.
Легко проверить, что система функций полна: так как
обладает свойствами
не обладает свойствами L и S, то вся система не обладает всеми пятью свойствами, т.е. не содержится ни в одном из пяти классов.