60 Вестник СамГУ — Естественнонаучная серия. 2009. №2(68)
УДК 519.716
КРИТЕРИЙ ПОЛНОТЫ ДЛЯ ДООПРЕДЕЛЯЕМЫХ БУЛЕВЫХ ФУНКЦИЙ1
© 2009 В.И. Пантелеев2
В работе рассматриваются булевы функции, определенные не на всех наборах. При этом неопределенность понимается как принятие решения в модели с тремя возможными вариантами ответа — ”за”, ’’против” и ”не определился или безразлично,” и решение ”за” принимается в ситуации ”отсутствия против”. Вводится соответствующее определение суперпозиции, замкнутых классов и доказывается критерий полноты.
Ключевые слова: булевы функции, частичные булевы функции, замкнутые классы, максимальные классы, клон, гиперклон.
Введение
В теории булевых функций наряду со всюду определенными рассматриваются и функции, определенные не на всех наборах. Для них имеются различные уточнения понятия неопределенности и соответствующие определения суперпозиции (см., например [1-3]).
В данной работе рассматривается еще один вариант доопределения, соответствующий принятию решения в модели с тремя возможными вариантами ответа — ”за”, ’’против” и ”не определился или безразлично” и при этом общим решением будет ”за”, если есть ответы ”за” и нет ответов ’’против”. Соответственно решением будет ’’против”, если есть ответы ’’против” и нет ответов ”за”. Во всех остальных вариантах решением будет ”не определился”.
Пусть Е = {0,1},Е = {0,1, -}. Тогда функции / : Еп ^ Е назовем всюду определенными (р2 — множество всех всюду определенных булевых функций); / : Еп ^ Е — доопределяемыми (Р— — множество всех доопределяемых булевых функций).
хРабота выполнена при финансовой поддержке РФФИ (проект 07-01-00240).
2Пантелеев Владимир Иннокентьевич ([email protected]), Институт математики, экономики и информатики Иркутского государственного университета, 664003, Россия, г. Иркутск, ул. К. Маркса, 1.
При задании функций из Р- будем считать, что наборы из множества Еп (такие наборы мы будем называть двоичными) записаны в соответствии с натуральным порядком: например, запись / = (-0 — 1) означает, что /(00) = —, /(01) = 0, /(10) = —, /(11) = 1. Для вектора значений функции будем использовать запись как в виде строки, так и в виде столбца и в качестве указания для транспонирования будем использовать символ і.
Набор (ті,..., тп) Є Еп назовем уточнением набора (71,..., 7п) Є ^п, если для тех і, для которых 7г = —, следует что Ті = Ті, а для остальных і имеем Ті Є Е.
Пусть /і(Х),...,/т(Х) — п-местные доопределяемые функции,
/(жі,...,жт) — т-местная функция. Суперпозиция /(/і(ж),...,/т(ж)) определяет функцию д(ж) (будем записывать это в виде д(Х) = /(/і(Х),...,/т(х))) следующим образом: для набора 7 Є Еп обозначим через 7 набор (/і (7),..., /™(7)) и тогда
д(7) = —, если для любого уточнения 7 набора 7 имеем /(7) = — или существуют уточнения а и /5 набора 7 такие, что /(а) = 0 и /(в) = 1;
д(7) = 1, если для любого уточнения 7 набора 7 имеем /(7) = 0 и при этом существует уточнение а набора 7 такое, что / (а) =1;
д(7) = 0, если для любого уточнения 7 набора 7 имеем /(7) = 1 и при этом существует уточнение а набора 7 такое, что / (а) = °.
Замечание 1. Алгоритм (1) фактически позволяет находить значение функции /(жі,...,жт) Є Р2_ на наборе (7і,...,7т) Є ^т: по определению значение функции
д(х) = / ...,/т(х))
на наборе 7 Є Еп совпадает со значением функции / на наборе
(7і,...,7т) = (/і(7),...,/т(7)).
Таким образом на доопределяемые функции можно смотреть как на некоторый класс трехзначных функций — функций, определенных на множестве ^ = {0,1, —}. На двоичных наборах, т.е. на наборах (аі,..., ап) Є Еп, такая функция может принимать любое значение из ^, а на наборах, содержащих ” —”, ее значение вычисляется по следующему правилу: /(7) равно
0, если есть уточнение набора 7, на котором значение / равно 0, и нет уточнения набора 7, на котором значение / равно 1; /(7) равно 1, если, соответственно, есть уточнение, на котором значение / равно 1, и нет уточнения, на котором значение / равно 0; /(7) равно ” —”, если на любом уточнении набора 7 значение / равно ”—” или есть такие два уточнения, что на первом значение / равно 0, а на втором равно 1.
Замечание 2. Если
д(Х) = / (/1(X),...,/m(X)),
то для набора а € Еп значения $(5) и /(/1 (5),...,/т(5)) в общем случае могут быть различными, но для любого набора а € Еп значения $(<5) и /(/1(15),..., /ш(й)) совпадают по определению.
Пример. Рассмотрим функции /(ж, у) = (-00-), /1 = /2 = (01). Пусть $(ж) = /(/1, /2). Вычислим $(-). Имеем $(0) = /(/1(0)),/2(0)) = /(0, 0) = -; $(1) = /(/1(1)) /2(1)) = /(1,1) = -. Поэтому $(-) = -.
Так как /(0, 0) = -, /(0, 1) = 0, /(1, 0) = 0 и /(1, 1) = -, то /(-, -) = 0. Кроме того, д(-) = -, /2(-) = - и тогда /(/1 (-),/2(-)) = /(-, -) = 0.
Переменная жг называется несущественной для п-местной функции /(ж1,...,жп) € Р_, если для любых й1, ..., аг_1, аг+1,..., ап из Е выполняется равенство
/(Й1, ..., йг_1, 0, аг+1, ..., ап) — /(а1, ..., аг_ 1, 1, аг+1, ..., ап).
В противном случае переменная жг называется существенной. Операции удаления и добавления несущественных переменных определяются обычным образом.
Для множества функций В замыкание [В] определим следующим образом:
1. Тождественная функция, т.е. функция е(ж) = (01) принадлежит [В].
2. Любая функция из В принадлежит [В].
3. Если некоторая функция / принадлежит [В], то и все функции, полученные из / удалением или добавлением несущественных переменных, принадлежат [В].
4. Если /1(ж),...,/т(ж) — п-местные, / (ж1,...,жт) — т-местная функция из [В], то функция $(ж), являющаяся суперпозицией /(Д(ж),...,/т(ж)), принадлежит [В].
5. Других функций в [В] нет.
Множество функций называется замкнутым, если оно совпадает со своим замыканием, и полным в замкнутом множестве М, если его замыкание совпадает с М. Множество функций А называется предполным в замкнутом множестве В, если [А] = В, но [А и {/а}] = В, где /а € А.
Пусть Ят — т-местный предикат, заданный на множестве Е. Будем говорить, что функция /(ж1,...,жп) сохраняет предикат Ят, если для любых п наборов (ац,..., ат1), ... , («1п,..., атп), принадлежащих предикату, набор (/(ап,...,«1п),...,/ (ат1, ...,атп)) принадлежит Ят.
Множество функций из Р2, сохраняющих предикат, заданный на множестве Е, является замкнутым (см., например, [4]), но множество функций из Р_, сохраняющих предикат, заданный на множестве Е, не обязательно является замкнутым. Рассмотрим предикат Я = {(01), (0-), (-0)}. Несложно проверить, что функция /(ж) : /(0) = -,/(1) = 0 сохраняет этот предикат. Но $(ж) = /(/(ж)) уже не сохраняет.
Но, с другой стороны, справедлива
Лемма 1. Пусть функции /,/1,...,/ сохраняют предикат Ят, определенный на множестве Е, $(ж1,...,жп) = /(/1,...,/^), двоичные наборы (а1,..., ат),..., («п,..., ат) принадлежат Ят. Тогда набор
принадлежит Л™.
Доказательство. Значение функции д на двоичном наборе (аі,...,ап) равно значению функции / на наборе (ві,—,в«), где в^ =
= /і(аі ,...,ап) (і Є {1,...,«},; Є {1, ...,т}). Наборы (ві,...,вГ) принадлежат Л™ (функции /і,...,/ сохраняют предикат). Но тогда и набор (/(въ ..., ві),..., /(в™,...,в™)) принадлежит предикату. Лемма доказана.
Очевидно, что функция е(ж) = (01) сохраняет любой предикат, определенный на множестве ^, и если /(жі,...,жп) сохраняет предикат Л, то и функции, полученные из / добавлением или удалением несущественных переменных, тоже сохраняют предикат.
В дальнейшем наряду с (/(аи,..., аіп),..., /(атЬ...,атп)) будем исполь-
личные столбцы, не обязательно сохраняя их порядок, соответственно, и наборы, принадлежащие предикату, будем записывать тоже в виде столбцов, а сам т-местный предикат, содержащий г наборов, задавать в виде (т х г) матрицы.
Функция д(жі,...,жп) всегда будет являться суперпозицией
Если набор а = (аі,...,ап) Є Еп, то через а будем обозначать набор (а і,..., ап), где 0 = 1 и 1 = 0.
1. Замкнутые классы
Введем в рассмотрение 11 замкнутых классов, содержащих тождественную функцию е(ж).
I. Р2 — класс всюду определенных функций.
II. Т- — класс функций, которые сохраняют нуль, т.е. на наборе из всех нулей равны 0.
III. Т- — класс функций, которые сохраняют единицу, т.е. на наборе из всех единиц равны 1.
Замкнутость этих классов очевидна.
Остальные классы мы опишем как классы функций, сохраняющих некоторый предикат, и при доказательстве замкнутости, как правило, будем использовать следующую схему: пусть
зовать обозначение
и при этом указывать только раз-
д = / (/і(жі,...,жп),...,/т(жі,...,жп)).
д(жі, ...,жп) = / (/і (ж і,..., жп),..., /™(жі, ...,жп))
(функции /, /і,...,/™ сохраняют предикат Л5) и предположим, что для некоторых наборов аі,..., ап, принадлежащих предикату Л5, выполняется
д(аі, ...,ап) Є Л5.
Будем показывать, что тогда можно найти такие наборы /?і,...,/?п, являющиеся, соответственно, уточнениями наборов аі,...,ап и тоже принадлежащие предикату Л5, для которых выполняется
д(А,..., вп) Є л5.
Но последнее утверждение противоречит лемме 1. Следовательно, предположение является неверным.
В этой схеме в качестве наборов аі,..., ап можно просто записывать все наборы, принадлежащие предикату.
IV. 8- — класс функций, сохраняющих предикат
01
5 - ='10 -
Замечание 3. Любая самодвойственная из класса Р2 принадлежит 8-. Замечание 4. Если / Є 8- и на каком-то наборе ее значение есть ”—”, то на противоположном наборе ее значение также есть ” —”. Если же на каком-то наборе ее значение есть а Е, то на противоположном наборе ее значение есть а.
Предложение 1. Класс 8- замкнут.
Доказательство. Пусть /,/і,...,/т принадлежат классу 8-, а д(жі, ...,жп) Є §-, т.е.
д(аі,..., (5;п) Є<|о , — , 0 , — , 1 , 1 }
для некоторых наборов аі,...,ап из 5-.
Каждый из возможных 6 вариантов приводит к противоречию с леммой 1. Мы ограничимся рассмотрением двух первых случаев.
аі ... ап \ / 0
1. Пусть $ 2 п / I п
\ «2 ... ап ) \ 0
Для набора (а1 ,...,0^) есть уточнение в = (в{,...,вп) такое, что
^(в{,..., вп) = 0. Набор в = (/?!,..., вА) является уточнением набора
(а2,..., ап) и д(/) Є {0, —}, т.е. д [/і) Є { 0, —
2 "у- к°1 = (—) •
Опять же для набора (а1,...,^) есть уточнение в = (в1,-..,вп) такое, что д(в|1...,в1) =0.
Для в возможны 3 варианта: $(в) = 0, $(в) = —, #(/?) = 1. Первые два сразу дадут противоречие, а в третьем, очевидно, есть набор 7, являющийся уточнением (а1,...,ап), такой, что ^(7) =0. Но 7 является уточнением
(а1,...,ап) и поэтому $(7) € {0, —}. Снова получили противоречие. Предложение доказано.
V. Ь — класс функций, сохраняющих предикат
Предложение 2. / € Ь ^ / — линейная всюду определенная функция или функция на всех наборах, принимающая значение ” —”.
/ не равна ” —” ни на одном наборе или / на всех наборах равна ” —”.
Пусть / — нелинейная всюду определенная функция. Тогда подстановками констант из нее можно получить нелинейную функцию, существенно зависящую от двух аргументов д(ж, у) = ж ■ у + аж + Ьу + с. Во всех слу-
получить (0—) или (1—).
Очевидно, что функции неопределенные на всех наборах или являющиеся всюду определенными линейными сохраняют данный предикат. Предложение 3. Ь- — замкнутый класс.
Доказательство. Рассмотрим
где /, /1,...,/т принадлежат классу Ь-.
Если / = —, то и $ = —.
Пусть / — линейная всюду определенная функция. Если все / — всюду определенные линейные функции, то и $ — линейная всюду определенная функция. Если среди /г встречается функция, тождественно равная ” —”, то получаем функцию, тождественно равную ”—”, так как для любого набора (а1,..., —,..., ап) выполняется / (а1,..., —,..., ап) = —, если / — линейная всюду определенная функция. Предложение доказано.
VI. М- — класс функций, сохраняющих предикат
ней строке левой части равенства, подставляя вместо ”—” нуль, а снизу — уточнение, где значение функции равно 0, получим (10)* или (—0)*.
Доказательство. Если / € Ь и /(а) = с € Е, /(в) = —, то подстановками (00)*, (11)*, (01)*, (10)* можно получить функцию (с, —). Значит
чаях дальнейшими подстановками (01)* и (------)* или (10)* и (--)* можно
д(жі, ...,жп) = /(/і(жі, ...,жп), ...,/™(жі, ...,жп)),
Предложение 4. М — замкнутый класс. Доказательство. Пусть д(жі,...,жп) Є М-, т.е.
01
11
0 1 — 0 11
1
Если $
001—0
011
1
, то возможны две ситуации: при
любом уточнении набора в верхней строке левой части равенства получаем ” —” и есть уточнение верхнего набора, на котором функция $ равна 1. В первом случае возьмем уточнение верхнего набора, подставляя вместо ” —” нули и уточнение нижнего набора, на котором значение функции равно
0, а во втором случае, взяв уточнение верхнего набора, на котором значение функции равно 1, а вместо нижнего набора — уточнение, при котором вместо ”—” подставляем 1, получим (—0)*, (10)* или (1—)*.
Аналогично рассматривается и последний случай.
Таким образом, во всех случаях получаем противоречие с леммой 1. Предложение доказано.
VII. К — класс функций, сохраняющих предикат
Предложение 5. Классы К и К2 замкнуты.
Доказательство замкнутости показывается аналогично замкнутости класса М-.
Далее мы будем рассматривать предикаты, содержащие наборы длины 3, и при доказательстве замкнутости будем учитывать, что для каж-
дого набора (авт)*, принадлежащего соответствующему предикату, набор (атв)* также принадлежит предикату.
IX. К3 — класс функций, сохраняющих предикат
( 00 0 — 00001111 1 1 ----------- 0 0 ---^
К3 = <00-011011-1 1 1-1 1 0 >.
[ 0 — 0---101101 — 1 — 1 — 1 1 — 0 1
Предложение 6. Класс К3 замкнут.
Доказательство. Пусть
VIII. К2 — класс функций, сохраняющих предикат
где каждый набор (аіа2а3)* принадлежит К3. 1.
Возможны 2 случая:
а) для любого набора (в2,...,вП), являющегося уточнением набора (а2,...,аП), выполняется д(в2,...,вП) = —. Тогда берем такое уточнение набора (а2,...,аП), при котором вместо ” —” подставляем 1. Для набора (а3,...,аП) берем уточнение, на котором значение функции $ равно 0, для (а 1 ,...,аП) берем такое уточнение, при котором значение функции $ равно 1. В результате получаем, что значением функции $ на двоичных наборах, принадлежащих предикату, является набор, не принадлежащий предикату. Противоречие с леммой 1;
б) есть набор (в2,...,вга), являющийся уточнением набора (а2,...,аП), для которого выполняется $(в2,...,вП) = 0. Берем этот набор в качестве уточнения для (а2,...,аП). Для набора (а3,...,аП) берем уточнение, при котором вместо ” —” подставляем 1, а для (а 1,...,а^) берем такое уточнение, при котором значение функции $ равно 1. И получаем, что значением функции $ на двоичных наборах, принадлежащих предикату, является один из наборов — (100)* или (10—)*, не принадлежащий предикату.
2.
а1 ... аП
$ | °2 ... < | е <( 0
*■1 ... ап ,
а3 ... аП } 10
Существуют 2 случая:
а) для любого набора (в^,...,вП) являющегося уточнением набора (а1,...,аП), выполняется $(в1,..., вП ) = —.
Тогда для набора (а{,...,аП) берем уточнение, при котором вместо ” —” подставляем 0.
В качестве уточнения для (а3,...,аП) берем набор (в3,...,в3), для которого выполняется $(в3,...,вп) =0.
Для набора (а2,...,аП) берем уточнение, при котором вместо ” —” подставляем 1;
б) для набора (а1, ...,а1) есть уточнение, на котором значение $ равно 1, берем это уточнение.
В качестве уточнения для (а3,...,аП) берем набор (в3,...,вп), для которого выполняется $(в3,...,в3) =0.
Для набора (а2,...,аП) берем уточнение, при котором вместо ” —” подставляем 1.
3. Получен набор (--------0)*. Возможны 4 ситуации:
а) для верхнего и среднего наборов при любом уточнении получаем ”—”. Тогда в среднем наборе вместо ” — ’’подставляем 1, в верхнем — нули. Для нижнего берем уточнение, на котором значение функции равно 0. Получим (—— 0)*;
б) при любом уточнении верхнего набора получаем ” —”, вместо ” —” в верхнем наборе подставляем 0. Для среднего набора есть уточнение, при котором значение функции $ равно 0, берем это уточнение. Для нижнего
набора берем уточнение, при котором вместо ” —” подставляем одни единицы. Получим набор (—00)* или (—0—)*;
в) сверху есть уточнение, на котором значение $ равно 1, берем это уточнение. Для среднего набора при любом уточнении получаем ”—”, подставляем вместо ” —” одни 1. Для нижнего набора берем уточнение, на котором значение функции равно 0. Получим (1 — 0)*;
г) есть уточнение верхнего набора, на котором значение $ равно 1, берем это уточнение. Для среднего набора есть уточнение, при котором значение функции $ есть 0, берем это уточнение. Для нижнего набора берем уточнение, при котором вместо ” —:’’подставляем одни единицы. Получим (10—)* или (100)*.
X. К4 — класс функций, сохраняющих предикат
/— 0000 00 - 1\
К = I- 010 — 00 0 — 1 I .
\— 010--------00 — 01/
Предложение 7. Класс К4 замкнут.
Доказательство. Пусть
/а 1... а^\ ( 0 00 --------------------- 11111 1 1 1 ^
$ I а? ...аП )е< 1 , — , 1, 1 , 1 , 0 , —, 1 , 0, —, 1, 0, —, 0 , —, 1,
\а? ...аП/ [ — 11 — 0 1 1 100011 -
где каждый набор (а^а^а3)* принадлежит К4.
1. $(а{,..., аП) = 1.
Нулевой набор (0,..., 0) является уточнением набора (а1,...,а1), и поэтому значение функции $ на этом наборе равно 1 или ” —”. Кроме того, есть набор (в{,..., ви,), являющийся уточнением набора (а1,...,а1), для которого выполняется $(в|,...,в1) = 1.
Если $(а2,...,аП) = 0 (или $(а1,...,аП) = 0), то берем уточнение (в2,..., в2) набора (а2,...,аП) (или (а3,..., аП)), при котором вместо ” —” подставляем 0. Функция $ на этом уточнении равна 0 или ” —”.
И взяв уточнения: (0,..., 0), (в!,...,в^) и (в2, ...,в2), получим один из наборов: (110)*, (11—)*, ( — 10)* или ( —1—)*.
Пусть теперь $(а2,...,аП) =0 и $(а3 , ...,аП) = 0, т.е. мы рассматриваем случаи (1 — —)* и (1 — 1)*.
Для набора (а21, ... , а2), стоящего во второй строке, возможны ситуации
а) при любом уточнении получаем ” —” и б) есть уточнение, при котором получаем 0.
Существуют 2 случая:
а) рассмотрим два уточнения набора (а1, ...,аП), стоящего в первой строке. При первом уточнении все ” —” заменяем на 0. Пусть (в|, ...,вп) — такое уточнение, при котором получаем 1 и к этим двум строкам добавляем уточнение набора (а2,...,аП), при котором все ” —” меняем на 0. Получим один из наборов (11—)* или (—1—)*;
б) снова рассматриваем уточнение набора («^..^«П), при котором все ” —” заменяем на 0. Если в результате получим 1, то подбираем такое уточнение (а2,...,аП), при котором получаем 0. После этого берем уточнение (а3,...,аП), при котором все ” —” заменяем на 0.
В результате на этих уточнениях получаем один из (10—)*, (100)*, (101)*.
Если же после уточнения набора (а1, ...,«П), при котором все ” — ” заменили на 0 и получили ” — ”, то берем еще одно уточнение (а1,...,аП) на котором значение функции $ равно 1, и к этим двум строкам добавляем уточнение (а1,...,аП), при котором все ” —” меняем на 0.
На этих уточнениях получим один из (—1—)*, (—10)* или (—11)*.
2. $(а 1,...,«п) е {(01—)*, (011)*}.
Рассмотрим 2 случая:
а) при любом уточнении набора (а3,...,аП) получаем ”—”.
Берем уточнение (а1,...,аП), при котором все ”—” заменили на 0, для (а2,...,аП) рассматриваем уточнение, на котором значение функции равно 1, а для (а1,...,«П) рассматриваем уточнение, при котором все ”—” меняем на 0. На этих уточнениях получим (01—)* или (—1—)*;
б) есть уточнение набора (а3,...,аП), на котором значение функции $ равно 1.
Для (а2,...,аП) и (а1,...,аП) рассматриваем уточнения, при которых все ”—” меняем на 0. И на уточнениях получим (011)*, (—11)*, (0 — 1)* или (— — 1)*.
3. $(«1,..., «п) е {( — 1—)*, ( — 11)*, ( — 10)*}.
Существуют также 2 случая:
а) рассматривая уточнение (а1, ...,«П), при котором все ” — ” заменяем на 0, получаем ” —”. К этому уточнению добавляем уточнение (а2,...,«П), на котором значение функции $ равно 1, и уточнение («1 ,...,«П), при котором все ” — ” меняем на 0.
Получим (—10)*, (—11)* или (—1—)*;
б) случай а) не имеет места, т.е получаем 0 (или, соответственно, 1). Тогда берем еще одно уточнение, на котором значение функции равно 1 (соответственно, 0). И после этого добавляем уточнение набора (а2,...,«П), при котором все ” — ” заменяем на 0.
Получим один из (011)* или (01—)* (сответственно (101)* или (10—)*).
Предложение доказано.
XI. К5 — класс, состоящий из всех функций, существенно зависящих не более чем от одной переменной, а также из функций, принимающих два значения, одно из которых есть ” —”.
Предложение 8. К5 — замкнутый класс.
Доказательство очевидно.
2. Вспомогательные результаты
Для / (X) е Р— зададим /0 — 0-характеристическую функцию следующим образом: /°(сг) = 1 тогда и только тогда, когда /(<г) е {0, —}, в противном случае /°(<г) = 0. Аналогично определяется /1 — 1-характерис-тическая функция для /: / 1((г) = 1 ^ /(<г) е {1, —} Отметим, что характеристические функции являются всюду определенными.
Определим функцию ж > у: 1 > 0 = 0, 0 > 1 = 1, 0 > 0 = 1,1 > 1 = —.
Предложение 9. Множество функций К = Р и {[>}, где Р — полное множество в классе Р2, будет полным в классе Р—.
Доказательство следует из возможности представления произвольной функции / е Р— в виде / = /0 > /1. Предложение доказано.
Пусть К — некоторый класс доопределяемых функций. Через /к обозначим функцию, которая не принадлежит классу К.
Следствие. Класс {Р2,/р2} является полным в Р2_.
Доказательство. Функция /р2 не принадлежит множеству Р2, значит, есть двоичный набор <г, на котором значение этой функции равно ”—”.
Константы 0 и 1 принадлежат Р2. Построим $(ж) = /(а) = (-----------) и
Л(ж) = $(ж)-ж = (0—). Отрицание позволит получить одноместную функцию (1—). И теперь (11----) ■ (1101) = >. Предложение доказано.
Пусть и — множество всех одноместных функций из Р—.
Лемма 2. Множество и и{®}, где ® — сложение по модулю 2, будет полным в Р—.
Доказательство. Построим следующую последовательность функций: Мж,у) = (0110), Л-2(ж) = (1 — 1—), ^3(ж, у) = Л-1 (^1,^2) = (1 — 0—), Л-4(ж, у) =
= ^3(у,^1) = (0---1), Л-5(ж, у) = Л3(^1, Л4) = (100—), Л-6(ж, у) = ^5(у, ^5) =
= (0010), где Лб — нелинейная функция. Используя Лб и одноместные всюду определенные функции, можно получить Р2 и тогда все функции из Р—. Предложение доказано.
Рассматривая ниже значения функции на наборах из предиката, мы вновь, как и при доказательстве замкнутости, будем перечислять в качестве аргументов функции все наборы, принадлежащие предикату.
Лемма 3. (-----) е [(10),/5- ,/Р2]
Доказательство. Если, например,
/^ (00 —) = (0 )■
то для нижнего набора выберем уточнение, при котором значение функции равно 0. Для верхнего набора возьмем уточнение, при котором каждый столбец совпадает с функцией ж или ж. Тогда получим одну из функций (—0) или (00) . В том и другом случае затем получим обе константы — (00) и (11), /Р2 дает (-).
Если же /5- ^ І1 ^ = \/ ,Т° длЯ нижнего набора возьмем уточнение на котором /5- равна 0 или ” —”. Соответствующее уточнение верхнего
набора даст 0 или ” —”. В результате получим одну из функций: (00), (----),
(0—), (—0), которая или совпадает с (-----), или позволяет ее получить.
Остальные случаи аналогичны.
Лемма 4. Выполняется по меньшей мере одно из соотношений (00) Є [( ——),/5-], (11) Є [( — — ),/5-].
Доказательство. Функции /5- и (---------) позволяют получить двухмест-
ную функцию Ь(х,у) = (а075), где а Є {0,1, —}, 5 Є {0,1, —}, (в,7) Є {(00), (0—), (—0), (11), (1—), ( — 1)}, из которой отождествлением переменных не удастся получить (00) или (11) только в случае, когда (а, 5) Є {(10), (01), (——)}.
Функция (10) вместе с /5- позволит получить одну из шести функций
(00), (0—), (—0), (11), (1—), (—1). Каждая из них даст нужный результат.
Функция Ь'(х,у) = (—в7—), (в7) Є {(00), (0—), (—0), (11), (1—), (—1)} позволит получить одну из констант: Ь (—, —) = 0 или 1.
И теперь осталось рассмотреть два варианта:
Ь''(х,у) = (0ві7і1), (ві7і) Є {(00), (—0)},
Ь'''(х,у) = (002721), (в272) Є {(11), (1—)}.
Но Ь'' (0, —) = 0; Ь'' (1, —) = — и Ь''' (0, —) = —; Ь''' (1, —) = 1.
Лемма 5. (11) Є [(--), (00),/к,/ь-]
Доказательство. Функция /к2 на наборах из К2 дает набор, не принадлежащий К2. Пусть
/000 — — 1 \ ( 1 1
/к2 V01 — 0 — 0) Є \ —, 1
Рассмотрим случаи, когда /к2 на всех нулях равна 0 (остальные случаи тривиальны), т.е.
/000 0 00\ ( 0 0'
/К2 ( 00 0 ---1 І Є \ 1 , 1
01- 0 -0 - 1
и остановимся только на варианте (01—)*.
Рассмотрим 2 случая:
а) при любом уточнении нижней строки получаем ” —”. Берем уточнение средней строки, при котором значение функции равно 1, а для нижней строки берем уточнение, при котором все ”-” заменяем на 0;
б) есть уточнение нижней строки, при котором значение функции равно 1, берем это уточнение, а для средней строки берем уточнение, при котором все ”-” заменяем на 0.
В результате получим (0—1)*, (011)* или (01—)* на наборах (000)*, (010)*,
(001)*.
Отсюда следует, что на наборах (0000)*, (0101)* и (0011)* мы получим функции и = (011а) или и =(01 — в), где {а,в} ^ {0,1, —}.
Если а Є {1, —}, то и (0, —) = —, и (1, —) = 1; если в Є {1, —}, то '' '' ''' ''' ''' и (и , х) = (0 — 11) = и (х, у) и и (—, 0) = —, и (—, 1) = 1.
Пусть а = в = 0. Если получили функцию VI (х,у) = (01 — 0), то последовательность функций:
■У2 = VI(VI,х); V3 = V2(V2,Vl),V4 = vз(vз,х)
позволит получить функцию (01 — 1), из которой получается ( — 1).
Осталось рассмотреть функцию (0110) — сложение по модулю 2. Функция /ь- позволит получить двухместную функцию Ь(х,у):
/0000—\ /а\
£(х,у) = /ь-
1001-
1010
, (в, 7) €{(0-), (-0), (1-), (-1)}.
\оои-/ \б;
При этом, очевидно, достаточно рассмотреть случаи (в,7) € {(0-), (1-)} и а = 1. Так как (00-) + (010) = (01-), (01-) + (001) = (01-), (-0-) +
+ (010) = (-1-), то, используя сложение и Л,(ж,у), можно получить функции (01 - ш) или (-1 - ш), из которых уже несложно получить (-1) и соответственно (11).
Лемма 6. Выполняется, по крайней мере, одно из соотношений (-1) € [(--), (11), /ь-], {(0-), (00)} С [(--), (11), /ь-]
Доказательство. Для функции /^- имеем
1001- а
/ь- I 1010 - I = I в
\1111 -/ \1 или 0 или - ,
гДе (а,в) € {(0-) (-0), (1-), (-1)}.
Если в = -, то а € {0,1}, и, комбинируя вторую строку с третьей или первую строку с третьей, получим одну из функций (-1), (-0), (0-) или (1-), и дальнейшие рассуждения очевидны.
Если же в = -, то а = -, и рассуждения аналогичны. Лемма доказана.
Лемма 7. Выполняется, по крайней мере, одно из соотношений (10) € [(--), (-1), (1-), (00), (11/],
(0-) € [(--), (-1), (1-), (00), (11),/кз].
Доказательство. Функция /к3 на наборах из Кз дает набор, не принадлежащий К3. Так как во всех наборах, не принадлежащих Кз, есть 0, то надо рассмотреть только такие /к3, которые на всех нулях принимают значение 0 (для остальных функций справедливость леммы очевидна). Но тогда имеет смысл рассматривать только такие функции, которые всюду определены и являются монотонными.
1. Пусть
Для 3 строки возьмем уточнение, при котором ” —” меняется на 0. Значение функции на таком наборе должно быть 0. Иначе легко получить функцию (10).
Для 2 строки возьмем уточнение, при котором ” —” меняется на 1. Значение функции на таком наборе должно быть 0 (это всюду определенная функция). Затем вместо троек (001)*, (101)*, (—01)* возьмем тройки (0 — 1)*, (1 — 1)*, (— — 1)* соответственно (мы изменили вторую строку, и значение функции тоже может измениться). Если значение функции на измененном наборе будет ” —”, то измененная 3 строка и измененная 2 строка дадут функцию (0—).
Иначе изменим первую строку. Сначала вместо всех ” —” возьмем 1. В результате значение функции останется равным 1. Затем вместо троек
(0 — 1)* возьмем тройки (----1)*. В результате получим в верхней строке 1
или ” —”. И теперь первая и вторая строки дадут функцию (10) или (—0).
2. Рассмотрим случай (100)*. Заменив столбцы вида (110)* на (11—)*, получим (100)* или (10—)*. Второй случай мы уже рассматривали.
Теперь вместо троек (—10)* и (—01)* возьмем тройки (010)* и (001)* соответственно. В первой строке будем иметь 1. Но тогда первая строка и измененная третья (вместо ”—” в тех случаях, когда столбец, составленный из элемента первой и третьей строк, имеет вид (0—)*, можно брать, например (01)*), дадут функцию (10).
Если взять аі и а2 как уточнения первой и второй строки, соответственно, при котором ” —” заменяем на 0, то, очевидно, значение функции /к3 на этих уточнениях равно 0. Пусть теперь /Зі — уточнение первой строки, на котором значение функции /к3 равно 1, и вз — уточнение третьей строки, при котором ” —” заменяем на 1.
/к3(А) = 1, /к3(вз) = 0, но при этом могут быть столбцы вида (10)*. Заменим их на (1— )*. Вместо вз получим вз. Если /к3 (вз) = 0, то получаем функцию (10). А если /к3(вз) = —, то, используя а2 и вз (при необходимости заменяя столбцы вида (10)* на (1—)*), получим функцию (0—).
4. (—00)* аналогичен предыдущему.
3.
Пусть и- — множество всех одноместных функций, не содержащих отрицания.
Лемма 8. и- С [(------), (11), (-1),/к1 ,/м-, /к].
Доказательство. Для функции /к имеем
, /011- 1 -\ Г 0 - 01 /к^ 101 --1) € \-, 0 ,0 / •
Отсюда
/Кх
/001-------1 \ /1 или
011 - 1 - _
101 -- 1 _
1 1 1 - 1 1 1 или
в
а
или 0
или 0
где (а, в) € (-0), (0-), (00). При этом, очевидно, достаточно рассмотреть случаи, когда (а, в) € {(-0), (00)}.
Рассмотрим случай, когда в 4 строке стоит ”-” или 0. Тогда третья и четвертая строки дадут функции (0-) (после этого получаем функцию (00)) или (00). Далее /м- позволит получить функции (10), (-0) или (1-), (10) позволит получить все одноместные функции, а (-0) позволит получить все функции из и-.
Если получили функцию (1-), то /к3, по лемме 7, позволит получить опять же (10) или (0-). Каждый из этих случаев дает все функции из и-.
Значит, в четвертой строке стоит 1.
Каждый из 6 возможных вариантов здесь позволяет получить функцию (0-). Пусть й(ж,у) _ (-1 - 1).
Тогда, если имеем Д(ж,у) _ (1 - 01), то /п(ж,у) _ Л(у,ж) _ (10 -
- 1), /12(ж,у) _ /1(/11 ,у) _ (0---1), /1з(ж,у) _ /12(ж, й(ж, у)) _ (0 - 11),
/14(ж, у) _ /1 (/13, /1) _ (- - 01), /15(ж,у) _ /м(/м, ж) _ (00 - 1), /1б(ж,у) _
_ /15(-,ж) _ (0-).
Если получили (1001), то /21 (ж, у) _ /2/2, й) _ (-0 - 1). И /21(у,ж) _ _ (- - 01) _ /14.
Функцию (----01) мы уже рассматривали, а в остальных случаях, под-
ставляя в получающиеся функции в качестве аргументов ж и (-), получим сразу (0-).
Учитывая, что получена функция (0-) (и, соответственно, (00)), а функции (----), (-1), (11) и /м- даны по условию, дальнейшие рассуждения
очевидны. Лемма доказана.
Лемма 9. и- С [(-----), (11), (0-), (00), /к,/м-]
Доказательство. Для доказательства леммы достаточно получить функции /1 (ж) _ (10) или /2(ж) _ (1-), так как /2(/2) _ (-1).
Пусть суперпозицией функций /м-, (00), (0-), (11) и (-------) получена
функция (-0) (остальные случаи сразу приводят к справедливости утверждения).
Рассмотрим /к4.
/- 0000 00------1\ ( 111 --1110--0011 ]
/к4 (-- 010 - 000 -11 € < 1 -- 1 - 0011011 - 0 -.
\- 010--00 - 01/ I- 1 -- 1010110 - 1 - 0
Случаи, когда в 1 и 3 или 1 и 2 строках находятся 1 с ”-”, позволяют
сразу получить функции (-1) или (1-). Если в первой строке стоит 1, а во второй или в третьей стоит 0, то получаем (10).
Осталось рассмотреть 2 случая — (011)* и (01 —)*.
Случай (011)* приводит к двум функциям: Д(ж,у) _ (01 - а) или
/2(ж,у) _ (011а). (Сначала мы столбцы вида (0-----)* заменили на (------) ,
затем столбцы (-00)* заменили на (-0-)*, а затем каждый столбец длины 3 дополнили так, чтобы полученные столбцы длины 4 представляли функции, полученные из имеющихся добавлением несущественных переменных. При этом случай, когда полученная функция, зависящая от 2-х переменных, на наборе (00) равна ”-” , можно не рассматривать.
Если а _ 0, то имеем (10). Если а _ -, то имеем (1-). Если же а _ 1, то /1(1, ж) _ /2(ж, -) _ (-1).
Лемма доказана.
Лемма 10. (10) € [и- и {/Кб}]
Доказательство. Для /кБ имеем 2 варианта: либо она всюду определенная функция, либо она принимает 3 значения.
Если она всюду определенная функция, существенно зависящая не менее чем от двух переменных, то подстановками констант и переименованием переменных из нее можно получить функцию /1 _ ж1ж2+а1ж1 +а2ж2+аз или /2 _ ж1 + ж2 + в.
Функция /1 содержит нечетное количество единиц. Если /1 немонотонная функция, то отрицание получается очевидным образом. Для ,Д(ж,у) _
_ ж ■ у, получим /11 _ (00 - 1) _ (0011) ■ (-1 - 1) и /11 ^--^ _ ^0) . А для
/1(ж, у) _ ж V у, получим /12 _ (-101) _ (---00) V (0101) и /12
/2 легко позволяет получить отрицание.
Пусть /кБ принимает 3 значения. Нужно рассмотреть случаи, когда /кБ (0,..., 0) _ 0 или ”-”. Аналогично /кБ (1,..., 1) _ 1 или ”-”. Получаем для системы (/кБ(0,..., 0), /кБ(1,..., 1)) четыре варианта. Рассмотрим их все.
а) (/к(0,..., 0),/к(1,..., 1)) _ (01). Получаем функцию #1 _ (0 - а1), из которой, подставляя (1-) и (-0), получим (10);
б) (/кБ(0,..., 0),/кБ(1,..., 1)) _ (0-). В этом случае получаем функцию
#2 _ (01а-). Если #2 _ (010-), то #2 ^ 1 -^ _ ^0^ . Если #2 _ (011-), то
пусть й1(ж,у) _ (-----00), и тогда получим #21(ж,у) _ (-101) _ #2(й1,у),
из которой подстановками (0-) и (-0) получим отрицание. В функцию #2 _ (01----) подставляем (-0) и (1-);
в) (/кБ(0,..., 0),/кБ(1,..., 1)) _ (-1). В этом случае получаем функцию
#з _ (-а01), из которой при а _ 1 отрицание получить несложно. При а _ - суперпозиция #з(#з,у) определяет функцию (01 - 1), а при а _ _0 суперпозиция #з(ж,#з) определяет функцию (0 - 01), которые мы уже рассматривали;
г) (/Кб (0, ..., 0),/Кб (1,..., 1)) _ (-). Тогда
0000 -
0011 0
/к 0101 \11И/
Заменив столбец (0111)* на (1111)*
1
V-/
мы получим следующее:
/к
0001
0011
0101
1111
- или 1 или 0
V
0
1
/
Если в первой строке 1, то первая и вторая строки дадут отрицание. Если в первой строке ”-”, то получим
/К5
0001 -
0011 _ 0
0101 _ 1
0111 в
При в _ 1 пусть функция т1(ж,у) _ (-011) и тогда ш1(ш1(ж, у), у) _ (1011).
При в _ 0 отрицание получается очевидным образом.
При в _ - пусть функция т2(ж,у) _ (-01-) и тз(ж) _ (-0), т4(ж) _ (0-). Тогда т2(тз,т4) _ (10).
Пусть в первой строке 0. Тогда
/к
0000
0001
0100
0101
-
0
в
1
Случай (-011)* нами уже рассмотрен. Случай (-001)*. Обозначим эту функцию через щ(ж,у). Тогда щ(ж,Пі) = (0 — 01) Из последней легко получается отрицание.
Случай (-0 - 1)*. Пусть її(ж,у) = (-0 - 1), /2(ж,у) = (---------01), 1з(ж,у) =
= (00 - 1), І4(ж, у) = (0001), І5(ж, у) = (001-), 1б(ж, у) = (-101), І7(ж,у) = = (- 0 - 0), 1в(ж,у) = (1 - 1-), 1д(ж,у) = (-1 - 1).
Тогда І2 = Іі(у,ж), Із = І2(І2, ж), І4 = ІЗ(І3, у), І5 = І4(ж, їв), І6 = І5(І9, І5) (1010) = їб(у, І7). Лемма доказана.
Лемма 11. [и и {/кБ}] _ Р2
Доказательство. Рассмотрим случай, когда /кБ — это функция, принимающая все 3 значения. Для доказательства леммы достаточно получить нелинейную всюду определенную функцию или функцию (0110).
Суперпозиция функций /Кб, (0000), (0011), (0101), (0111), (1000), (1010), (1100) и (1111) даст функцию (01 - а):
/Кб
/00001111\
00110011
01010101
У01110001/
0 1
а
Используя в суперпозиции вместо (0111), (1000) функции (1111) и
(0000), соответственно, получим одну из функций /1 _ (01-0), /2 _ (11-0), /з _ (-1 - 0). И тогда, построив /и(ж,у) _ Д(ж,у), /12(ж,у) _ /п(ж,Д) _ _ (1000) или /21 (ж,у) _ /2(ж,у) _ (0 - 11), /22(ж,у) _ /21 (у,ж) _ (01 - 1), /2з(ж, у) _ /22(у,/21) _ (0111) или /з1 (ж, у) _ /з(ж, /з) _ (001-), /з2(ж,у) _
_ /з(ж, у) _ (0 - 1-), /зз(ж,у) _ /з2(у,ж) _ (01-----), /з4(ж,у) _ (----11),
/з5(ж, у) _ /з1(/зз,/з4) _ (0100), получим нелинейную всюду определенную функцию.
Остальные случаи рассматриваются аналогично.
Лемма 12. Классы Р2, То, Т1, 5-, Ь-, М-, К -К5 попарно различны.
Доказательство. Попарная различность классов приведена в следующей таблице, где в строках указаны функции, принадлежащие классу, а в столбцах — не принадлежащие.
Таблица
Р2 То Т1 5- ь- К5 К1 К2 Кз К4 М -
Р2 • 11 00 00 & & & V 10 V 10
То 0- • 00 00 & & & V & ® ®
Т1 -1 11 • 11 & & & V & V ж+у+1
5- - 10 10 • Ь(ж,у,г) Ь(ж,у,г) 10 10 10 10 10
Ь- - 10 10 11 • ж + у 10 10 10 10 10
К - 10 10 00 0- • 10 10 10 10 10
К1 - - - 11 1- 1011 • 1- 1011 1- 1-
К2 - - - 00 -0 0010 00 • 0010 0010 -0
Кз - - - 00 1- V 00 11 • 1- 1-
К4 - - - 00 -0 & -0 11 -0 • -0
М - - - - 0- 0- & & V 0-01 0-01 •
Примечание: Л,(ж, у, г) — самодвойственная функция, существенно зависящая от 3-х переменных.
3. Критерий полноты
Теорема. Система функций Е С Р2_ полна тогда и только тогда, когда она целиком не содержится ни в одном из классов Р2, То, Т1, 8-, Ь-, М-, К1 — К5.
Доказательство. Необходимость следует из замкнутости всех классов и леммы 12.
Достаточность. Пусть в Е содержится /р0. Функция /р0(ж,...,ж) совпадает с одной из шести функций: /1 _ (10), /2 _ (11), /з _ (-0), /4 _ (-),
/5 _ (1-), /б _ (-1). С учетом того, что /5(/5) _ /б и /б(/б) _ /2, можно
рассматривать 4 варианта: /1 _ (10), /2 _ (11), /з _ (-0), /4 _ (-).
Аналогично из /т1 £ Е можно получить одну из шести функций: $1 _
_ (10), $2 _ (00), $з _ (1-), $4 _ (-), $5 _ (-0), $6 _ (0-), для которых
также достаточно остановиться на четырех: $1 _ (10), $2 _ (00), $з _ (1-), $4 _ (---).
Несложно показать, что получившиеся 16 вариантов сводятся к трем:
1) Л _ (-), 2) Л-2 _ (10), 3) Лз _ (11) и Л-4 _ (00).
Функция /р2 третий вариант сводит к первому: для /р2 найдется набор (а1,...,ап), на котором /р2(а1,...,ап) _ -, что позволяет получить одноместную функцию (--).
Лемма 3 второй вариант также сводит к первому.
Будем рассматривать случай, когда функция /р0 совпадает с /р1 и представляет функцию (--).
По лемме 4 получим функции (00) или (11), но лемма 5 первый случай сводит к второму.
Итак, получены функции (-- ) и (11). По лемме 6 получаем множество функций:
{(--), (11), (-1)} или {(--), (11), (0-), (00)}.
Для первого множества по лемме 8, а для второго по лемме 9 получим все одноместные функции, кроме, быть может, отрицания.
Лемма 10 позволит получить отрицание, и завершает доказательство лемма 11.
Литература
[1] Фрейвалд, Р.В. О полноте частичных функций алгебры логики / Р.В. Фрейвалд // ДАН СССР. — 1966. — Т.167. — № 6. — С. 1249-1250.
[2] Тарасов, В.В. Критерий полноты для не всюду определенных функций алгебры логики / В.В. Тарасов // Проблемы кибернетики. — М.: Наука, 1975. — Вып. 30. — С. 319-325.
[3] Ложкин, С.А. О синтезе формул и схем из не всюду определенных функциональных элементов / С.А. Ложкин // Дискретные модели в
теории управляющих систем: труды Международной конференции. — М.: Изд-во ВМиК МГУ, 2004. — C. 44-47.
[4] Марченков, С.С. Замкнутые классы булевых функций / С.С. Марчен-ков. — М.: ФИЗМАТЛИТ, 2000. — 128 с.
Поступила в редакцию 12/11/2009; в окончательном варианте — 12/11/2009.
THE CRITERIA OF COMPLETENESS FOR REDEFINING BOOLEAN FUNCTION
© 2009 V.I. Panteleyev3
Boolean functions, determined not to all sets are considered in this work. At the same time vagueness is appreciated as decision-making in the model with three possible answers: ”for”, ”against” and ’’indifferently or not determined” and decision ’’for” is taken in the situation ’absence of against”. Appropriate definition of superposition, closed classes is introduced and the criteria of completeness is proved.
Key words and phrases: boolean functions, partial boolean functions, closed classes, maximal classes, clone, hyperclone.
Paper received 12/11/2009. Paper accepted 12/11/2009.
3Panteleyev Vladimir Innokentievich ([email protected]), Institute of Mathematics, Economics and Informatics of Irkutsk State University, Irkutsk, 664003, Russia.