Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_по_ДМ_2часть.doc
Скачиваний:
84
Добавлен:
17.12.2018
Размер:
1.72 Mб
Скачать
    1. Замыкание систем функций алгебры логики

Рассмотрим ещё два понятия: замыкания и замкнутого класса, которые тесно связаны с понятием полноты.

Пусть М  Р2 – некоторое подмножество множества всех функций алгебры логики. Замыканием М называется множество тех истинностных функций, которые могут быть выражены формулой над М.

Замыкание М обозначается [M].

Примеры:

Пусть М Р2, тогда [M] = Р2.

Пусть М = {}, тогда [M] = Р2.

Пусть М = {1,}, тогда [M] = {f(x1,…,xn)P2: f(x1,…,xn) = c0c1x1cnxn, где сi0 или 1}. Т.е. [M] – это множество функций, представимых линейным выражением или класс всех линейных функций.

Свойства замыкания:

Для всякого множества функций алгебры логики М замыкание «шире» самого множества М. Или [M]  М.

Для всякого множества функций М замыкание замыкания М есть само замыкание М. Или [[M]] = [М].

Если множество функций М1 является подмножеством множества функций М2, то замыкание М1 является подмножеством замыкания М2. Или если М1  М2, то [М1]  [М2].

Объединение замыканий двух множеств является подмножеством замыкания объединения этих множеств. Или [М1]  [М2]  [М1  М2].

Класс функций М называется функционально замкнутым или просто замкнутым, если его замыкание совпадает с ним самим, т.е. [M] = М.

Так, например, множество всех функций алгебры логики – функционально замкнутый класс. А множества {Ø,&}, {Ø,Ú}, {Ø,®} не являются замкнутыми классами, поскольку их замыканием является множество всех функций алгебры логики. То же можно сказать и о других полных системах функций. Тем самым, определение полной системы функций можно сформулировать в терминах замыканий: система функций М является функционально полной, если её замыкание совпадает с множеством всех функций алгебры логики, т.е. [M]=P2.

    1. Важнейшие замкнутые классы

1) Класс функций, сохраняющих ноль. Обозначение: Т0.

Т0={f(x1,x2,…,xn)P2: f(0,0,…,0)=0}, таким образом, этот класс состоит из тех функций алгебры логики, которые на наборе, состоящем из одних нулей, имеют значение ноль. Или, что то же самое, в верхней строке таблицы истинности значение этих функций равно нулю. И поскольку, ровно половина всех функций в верхней строке равны нулю, то число функций от n переменных, относящихся к классу Т0, равно . Из элементарных функций к этому классу относятся следующие: 0, х, &, , . А такие, как 1, , ,  не принадлежат классу Т0.

Утверждение:

Т0 – замкнутый класс, т.е. [Т0]=T0.

Доказательство:

По свойствам замыканий Т Т0. Покажем, что Т0  Т0. Для этого рассмотрим произвольную функцию Ф Т0. По определению замыкания функция Ф выражается формулой через функции класса Т0, т.е. Ф=f(f1,f2,…,fm), где функции ff1f2,…,fmТ0. Тогда Ф(0,0,…,0)=f(f1(0,…,0),f2(0,…,0),…,fm(0,…,0)) = f(0,…,0)=0. Таким образом, функция ФТ0. И так как Ф – произвольная функция из замыкания, то Т0  Т0. И, следовательно, Т0 = Т0.

2) Класс функций, сохраняющих единицу. Обозначение: Т1.

Т1={f(x1,x2,…,xn)P2: f(1,1,…,1)=1}, таким образом, этот класс состоит из тех функций алгебры логики, которые на наборе, состоящем из одних единиц, имеют значение 1. Или, что то же самое, в нижней строке таблицы истинности значение этих функций равно единице. И, поскольку, ровно половина всех функций в нижней строке равны единице, то число функций от n переменных, относящихся к классу Т1, равно . Из элементарных функций к этому классу относятся следующие: 1, х, &, , , . А такие, как 0, ,  не принадлежат классу Т1.

Утверждение:

Т1 – замкнутый класс, т.е. [Т1]=T1.

Доказательство:

По свойствам замыканий Т Т1. Покажем, что Т1  Т1. Для этого рассмотрим произвольную функцию Ф Т1. По определению замыкания функция Ф выражается формулой через функции класса Т1, т.е. Ф=f(f1,f2,…,fm), где функции ff1f2,…,fmТ1. Тогда Ф(1,1,…,1)=f(f1(1,…,1),f2(1,…,1),…,fm(1,…,1)) = f(1,…,1)=1. Таким образом, произвольно взятая функция Ф из Т1 принадлежит и классу Т1. Поэтому Т0  Т0. Следовательно Т0 = Т0.

3) Класс самодвойственных функций. Обозначение: S.

S={f(x1,x2,…,xn)P2: f(x1,x2,…,xn)=*(x1,x2,…,xn) }, таким образом, этот класс состоит из тех функций алгебры логики, которые совпадают с двойственными к ним. Заметим, что такие функции на противоположных наборах принимают противоположные значения, т.к. f(x1,x2,…,xn)=. Таблицы истинности этих функций имеют зеркальную симметрию верхней половины строк таблицы и инвертированной нижней половины строк относительно середины всех строк таблицы. Тем самым, самодвойственные функции полностью определяются своими значениями на первой половине строк таблицы. Число таких строк для функций от n переменных равно =2n-1 и, следовательно, число функций от n переменных, относящихся к классу S, равно . Из элементарных функций самодвойственными являются только тождественная функция х и отрицание .

Утверждение:

S – замкнутый класс, т.е. [S]= S.

Доказательство:

По свойствам замыканий S  S. Покажем, что S  S. Для этого рассмотрим произвольную функцию ФS. По определению замыкания функция Ф выражается формулой через функции класса S, т.е. Ф=f(f1,f2,…,fm), где функции ff1f2,…,fmS. Тогда Ф*=f*(f1*,f2*,…,fm*) = f(f1,f2,…,fm)=Ф. Таким образом, функция ФS. И так как Ф – произвольная функция из замыкания, то S  S. Отсюда следует, что S = S.

Лемма о несамодвойственной функции

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

Доказательство:

Доказательство имеет конструктивный характер и показывает, как подобрать такую замену переменных. Рассмотрим произвольную несамодвойственную функцию от n переменных f(x1,x2,…,xn). Так как fS, то существует такой набор значений переменных 1,2,…,n, что f(1,2,…,n), а это значит, что f(1,2,…,n) =. Заметим, что для самодвойственной функции такого набора не существует по определению. Введем также в рассмотрение функции gi(x)=xi, где i=1,2,…,n, и gi(x) равно либо х, либо , в зависимости от значения i. Произведем замену переменных x1,x2,…,xn в функции f на g1(x), g2(x),…, gn(x) соответственно. Покажем, что полученная в результате этой замены функция Ф(х)= f(g1(x), g2(x),…, gn(x)) является константой. Действительно, т.к. Ф(х)=f(x1,x2,…,xn), то Ф(0)=f(01,02,…,0n), но 0i равно =1, если i=0, и равно 0, если i=1, тем самым, 0i=. Тогда Ф(0)==(по условию)f(1,2,…,n) = f(11,12,…,1n) = Ф(1). Т.е. Ф(х) имеет постоянное значение для всех значений х, и Ф(х) – константа.

Пусть функция f(х,y,z)=. Заметим, что f(0,0,0)= f(1,1,1). Поэтому набор (1,1,1) можно взять для формирования функций gi(x)=xi, где i=1,2,3. На выбранном наборе все эти функции равны тождественной функции х. Выполним замену каждой переменной на х. Получим: f(х,х,х)= .

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

4) Класс монотонных функций. Обозначение: М.

Функция f(x1,x2,…,xn)P2 называется монотонной, если для любых двух наборов =(1,2,…,n) и =(1,2,…,n) таких, что i  i, где i=1,2,…,n, следует f()  f(). Про такие наборы говорят, что набор предшествует набору , и обозначают   . Из элементарных функций монотонными являются 0, 1, тождественная функция х, , . А функции , , , , ,  монотонными не являются.

Утверждение:

М – замкнутый класс, т.е. [М]= М.

Доказательство:

По свойствам замыканий М  М. Покажем, что М  М. Т.к. функция хМ, то достаточно рассмотреть произвольную функцию ФМ. По определению замыкания функция Ф выражается формулой через функции класса М, т.е. Ф(x1,x2,…,xn)=f(f1,f2,…,fm), где функции ff1f2,…,fmМ. Пусть =(1,2,…,n) и =(1,2,…,n) – два набора значений переменных (x1,x2,…,xn) таких, что i  i, где i=1,2,…,n. Эти наборы определяют наборы значений переменных для функций f1,f2,…,fm: а1=(11,12,…,1s1) и b1=(11,12,…,1s1),…, аm=(m1,m2,…,msm) и bm=(m1,m2,…,msm), которые (вследствие того, что   ) также попарно предшествуют друг другу. Т.е. а1  b1 и а2  b2 и …аm  bm. Но функции f1f2,…,fm монотонны, поэтому f1(а1)  f1(b1), f2(а2)  f2(b2), …, fm(аm)  fm(bm). Тогда рассматривая  =(f1(а1), f2(а2),…, fm(аm)) и  =(f1(b1), f2(b2), …, fm(bm)) как наборы значений переменных функции f, имеем:      и f( )  f( ) ввиду монотонности f. Но Ф()=f( ) и Ф()=f( ), т.е. для     Ф()  Ф(). И, следовательно, функция ФМ. Но Ф – произвольная функция из замыкания, поэтому М  М. Отсюда по определению равных множеств следует: М = М.

Лемма о немонотонной функции

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

Доказательство:

Доказательство имеет конструктивный характер и показывает, как подобрать такую замену переменных. Рассмотрим произвольную немонотонную функцию от n переменных f(x1,x2,…,xn). Так как fМ, то существуют такие наборы значений переменных и , что    и f() f().

Если наборы и смежны, т.е. различаются только одной i–той координатой (при этом в наборе на i–том месте стоит ноль, а в наборе – единица), то цель достигнута – можно сделать замену переменных (x1,x2,…,xn) на (1,…,i‑1,x,i+1,…,n). После этой замены будет получена функция одной переменной g(x) = f(1,…,i‑1,x,i+1,…,n). Причем g(0)=f(1,…,i‑1,0,i+1,…,n)=f(), а g(1)=f(1,…,i‑1,1,i+1,…,n)=f(). И так как f() f(), то g(0) > g(1), а это значит, что g(0)=1 и g(1)=0, т.е. g(x)=.

Если же наборы и несмежны, то они отличаются в нескольких координатах, и пусть число этих координат равно k (где k>1). И так как   , то в наборе эти k координат равны 0, а в наборе они равны 1. Поэтому между наборами и можно вставить (‑1) промежуточных наборов 1,2,…,k-1 таких, что    … k-1  , образующих цепь смежных наборов, связывающих и . И так как f() f(), то в этой цепи существуют два смежных набора i и i+1 (где i  i+1), для которых f(i) f(i+1). Тогда также, как и в первом случае, эти наборы i и i+1 можно использовать для замены.

Пусть функция f(х,y)=ху. Заметим, что на наборах (0,0) и (1,0), которые являются смежными, значения функции находятся в соотношении: f(0,0)>f(1,0). Поэтому можно выполнить замену переменной у на 0, а переменную х оставить без изменений. После замены получим: f(х,0)=х0=.

5) Класс линейных функций. Обозначение: L.

L={f(x1,x2,…,xn)P2: f(x1,x2,…,xn)=c0c1x1c2x2…cnxn, где c0,c1,c2,…,cn равны 0 или 1}. Таким образом, этот класс состоит из тех функций алгебры логики, которые представимы линейным выражением. Различные линейные функции от n переменных отличаются друг от друга составом слагаемых, входящих в их линейные выражения. Этот состав определяется значением коэффициентов: если соответствующий коэффициент равен нулю, то слагаемое отсутствует. И так как число коэффициентов равно n+1, то число функций от n переменных, относящихся к классу L, равно 2n+1. Из элементарных функций линейными являются тождественная функция х, отрицание , константы 0 и 1, а также  и .

Утверждение:

L – замкнутый класс, т.е. [L]= L.

Доказательство:

По свойствам замыканий L  L. Покажем, что L  L. Т.к. хL, то достаточно рассмотреть произвольную функцию ФL. По определению замыкания функция Ф выражается формулой через функции класса L, т.е. Ф=f(f1,f2,…,fm), где функции ff1f2,…,fmL. Иными словами функция Ф представляет из себя «линейное выражение от линейных выражений», а оно в свою очередь линейно. Таким образом, функция ФL. И так как Ф – произвольная функция из замыкания, то L  L. Следовательно, L = L.

Лемма о нелинейной функции

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

Доказательство:

Рассмотрим полином Жегалкина для функции f: . Вследствие нелинейности функции f(x1,x2,…,xn) в полиноме обязательно найдется слагаемое, содержащее не менее двух сомножителей. Без уменьшения общности можно считать, что этими сомножителями являются х1 и х2. Преобразуем полином к виду: = х1х2f1(х3,…,хn)  х1f2(х3,…,хn)  х2f3(х3,…,хn)   f4(х3,…,хn). Так как f(x1,x2,…,xn) нелинейна, то f1(х3,…,хn)0 и существует набор значений 3,…,n такой, что f1(3,…,n)=1. Подставим этот набор в полином. Тогда f(x1,x2,3,…,n) = х1х2f1(3,…,n)  х1f2(3,…,n)   х2f3(3,…,n)  f4(3,…,n) = х1х2  х1 х2b  c, где a, b и с равны нулю или единице. Теперь заменим х1 на (х1b) и х2 на (х2а) – это соответствует подстановке функций вида: х или , в зависимости от значений a и b. Получим: f(x1bx2а,3,…,n) = (х1b)(х2а)  (х1b) (х2а)b  c = = х1х2  х1 х2b  ab  х1 ab  х2b  ab  c = х1х2  ab  c. К последнему выражению добавим (ab  c) – это соответствует возможному размещению знака отрицания над функцией. В итоге будет получена функция двух переменных (x1,x2) = х1х2 = х1 & х2. Что и требовалось доказать.

Пусть функция алгебры логики задана полиномом Жегалкина: f(х,y,z,t) = xyz  yzt  xy  zt  xz   1. Здесь для компактности записи пропущен знак «». Выполним преобразования полинома, как указано в доказательстве леммы: f(х,y,z,t) = xy( 1)  x( 1)  yzt  (zt  1). Таким образом, в соответствии с введенными в лемме обозначениями f1(z,t) =  1, f2(z,t) =  1, f3(z,t) = zt, f4(z,t) = zt  1. Заметим, что f1(z,t) = 1 при z = 0 и t = 0 или t = 1. Для определенности рассмотрим набор (z,t) = (0,1). На выбранном наборе f2(0,1) = 1, f3(0,1) = 0 и f4(z,t) = 1, т.е. a, b и с равны соответственно 1, 0 и 1. И f(х,y,0,1) = xy   1. Заменим теперь у на у  1. Тогда f(хy1,0,1) = x( 1)  1= xy    1= xy  1. Добавим к последнему выражению (ab  c)=1 и (х,у) = ху. Тем самым, с помощью замены х на х, у на , z на ноль и t на единицу, а также установки знака отрицания над функцией получена конъюнкция.

Т0

Т1

S

M

L

0

+

+

+

1

+

+

+

+

+

Таблица 17

Отметим, что все замкнутые классы попарно различны. Это хорошо видно из таблицы 17, где знаком «+» отмечена принадлежность функций 0, 1 и к классу, а знаком «–» отсутствие соответствующей функции в классе.