Московский государственный технический университет имени Н. Э. Баумана М.С. Виноградова, С.Б. Ткачев Иcследование полноты множества булевых функций Методические указания к выполнению домашнего задания «Булевы функции» УДК 517.5 ББК 22.161.5 B49 Издание доступно в электронном виде на портале ebooks/bmstu.ru по адресу: http://ebooks.bmstu.ru/catalog/122/book907.html Факультет «Фундаментальные науки» Кафедра «Математическое моделирование» Рекомендовано Редакционно-издательским советом МГТУ им. Н. Э. Баумана в качестве методических указаний Рецензенты: д-р физ.-мат. наук, профессор А. С. Фурсов, канд. техн. наук, доцент С. И. Шишкина В49 Виноградова, М. С. Исследование полноты множества булевых функций : методические указания к выполнению домашнего задания «Булевы функции» / М. С. Виноградова, С. Б. Ткачев. – Москва : Издательство МГТУ им. Н. Э. Баумана, 2015. – 29, [3] с. ISBN 978-5-7038-3830-3 Приведены краткие теоретические сведения о представлении булевых функций формулами и способах исследования полноты заданного множества. Разобраны задачи расчета значений булевой функции, заданной формулой, с использованием таблицы, а также проведено исследование полноты заданного множества булевых функций. Подробно рассмотрены примеры решения задач на исследование полноты множества булевых функций трех переменных. Для студентов 2-го и 3-го курсов факультетов «Информатика и управление», «Специальное машиностроение» и «Фундаментальные науки» МГТУ им. Н. Э. Баумана. УДК 517.5 ББК 22.161.5 c c ISBN 978-5-7038-3830-3 МГТУ им. Н.Э. Баумана, 2015 Оформление. Издательство МГТУ им. Н. Э. Баумана, 2015 1. БУЛЕВЫ ФУНКЦИИ 1.1. Понятие булевой функции. Булев куб Булева функция от n переменных (при n > 0) — это произвольное отображение f : {0, 1}n → {0, 1}. Область изменения каждого переменного булевой функции есть множество {0, 1}, значениями функции также являются элементы указанного множества. Булеву функцию от n переменных x1 , . . . , xn записывают в виде y = = f (x1 , . . . , xn ). Областью определения любой булевой функции от n переменных является множество {0, 1}n . Это множество называют булевым кубом размерности n и обозначают Bn . Элементы булева куба называют n-мерными булевыми векторами или наборами. Число всех элементов булева куба {0, 1}n составляет 2n . На Bn можно задать отношение порядка: для двух произвольных наборов α e = (α1 , . . . , αn ) и βe = (β1 , . . . , βn ) из Bn существует α e 6 βe тогда и только тогда, когда αi 6 βi для каждого i = 1, n, т. е. αi ∨ βi = βi . Введенное отношение называют булевым порядком. Этот порядок является частичным, поскольку не все наборы попарно сравнимы. Например, в булевом кубе B3 (0, 0, 1) 6 (1, 0, 1), поскольку 0 6 1, 0 6 0 и 1 6 1. Однако наборы (0, 1, 0) и (1, 0, 1) несравнимы, так как, например, первая компонента второго набора (1) больше первой компоненты первого набора (0), а вторая компонента первого набора (1) больше второй компоненты второго набора (0). Булев куб как упорядоченное множество можно изобразить в виде диаграммы Хассе. На рисунке приведены диаграммы Хассе для булевых кубов размерностей 0, 1, 2 и 3. 1.2. Таблицы булевых функций Для задания функции f (x1 , . . . , xn ) от n переменных необходимо указать значение функции на каждом из наборов значений перемен3 Диаграммы Хассе ных. Поскольку каждое переменное может принимать только два значения (0 и 1), имеется 2n попарно различных наборов. Следовательно, булева функция от n переменных может быть задана таблицей, состоящей из двух столбцов и 2n строк. В первом столбце перечисляются все наборы из Bn , а во втором — значения функции на соответствующих наборах. В таблице используют стандартное расположение наборов: каждый набор рассматривают как запись натурального числа в двоичном исчислении и располагают наборы в соответствии с естественным числовым порядком. Поскольку на каждом наборе булева функция может принимать только два значения (0 и 1), число булевых функций от n переменных n равно 22 . Cуществует две булевы константы: 0 и 1. Их можно рассматривать как функции любого числа переменных. Для функции одного переменного можно задать четыре булевы функции (табл. 1.1). Таблица 1.1 x f1 (x) f2 (x) f3 (x) f4 (x) 0 1 0 1 0 0 1 1 1 0 Функцию f1 называют тождественной функцией, а функцию f4 — отрицанием. Для записи отрицания как унарной операции 4 используют обозначение x. Функции f2 и f3 принимают постоянные значения 0 и 1 соответственно, и их также называют константой 0 и константой 1. При n = 2 cуществует 16 различных булевых функций. Поскольку каждая булева функция ω(x1 , x2 ) от двух переменных определяет бинарную операцию на множестве {0, 1}, для них используют запись x1 ω x2 . В табл. 1.2 указаны семь наиболее часто употребляемых булевых функций от двух переменных. Таблица 1.2 x1 x2 x1 ∨ x2 x1 ∧ x2 x1 ⊕ x2 x1 → x2 x1 ∼ x2 x1 | x2 x1 ↓ x2 0 0 1 1 0 1 0 1 0 1 1 1 0 0 0 1 0 1 1 0 1 1 0 1 1 0 0 1 1 1 1 0 1 0 0 0 Функции, приведенные в табл. 1.2, имеют специальные названия. Так, x1 ∨ x2 называют дизъюнкцией, x1 ∧ x2 — конъюнкцией, x1 ⊕ x2 — сложением по модулю 2, x1 → x2 — импликацией, x1 ∼ x2 — эквивалентностью, x1 | x2 — штрихом Шеффера, x1 ↓ x2 — стрелкой Пирса. Часто для обозначения конъюнкции используют знак умножения и записывают x1 · x2 . Штрих Шеффера есть отрицание конъюнкции, а стрелка Пирса — отрицание дизъюнкции: x1 | x2 = x1 · x2 , x1 ↓ x2 = x1 ∨ x2 . Среди булевых функций двух переменных также имеются функции, принимающие постоянные значения 0 и 1. Табличный способ задания булевых функций имеет ограниченное применение, поскольку, например, для задания некоторой функции от 10 переменных потребуется таблица из 1024 строк. Даже все функции от пяти переменных практически невозможно задать таблицами, поскольку их будет 4 294 967 296 шт. Различных функций от трех переменных оказывается 256 шт. 5 Приведем для примера таблицу булевой функции от трех переменных (табл. 1.3), называемую мажоритарной функцией (или функцией голосования). Таблица 1.3 № набора x1 x2 x3 f (x1 , x2 , x3 ) 0 1 2 3 4 5 6 7 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 0 0 1 0 1 1 1 Для задания функции от n переменных можно использовать более экономные способы — достаточно записать вектор значений булевой функции на всех наборах в порядке их следования в таблице или перечислить номера тех наборов, на которых функция принимает значение 1. Например, мажоритарная функция f может быть задана в виде f = (0, 0, 0, 1, 0, 1, 1, 1) или f = {3, 5, 6, 7}. 1.3. Формулы и суперпозиции Помимо табличного способа существует способ представления булевых функций в виде формул. Определение формулы основано на понятии сложной функции, или суперпозиции. Пусть булева функция f есть функция от n переменных, а g1 , . . . , gn — произвольные (и не обязательно различные) булевы функции от одного и того же числа переменных, которое обозначим m. Определим функцию f (g1 , . . . , gn ), называемую суперпозицией функций f , g1 , . . . , gn , так, что для любого α e ∈ Bm имеет место равенство f (g1 , . . . , gn )(e α) = f (g1 (e α), . . . , gn (e α)). 6 Пусть даны некоторое счетное множество P , элементы которого назовем булевыми переменными, и некоторое множество булевых функций F . Элементы множества P обозначим символами x1 , x2 , . . . , xn , . . . , а множества F — строчными латинскими буквами. Отметим, что константы 0 и 1 также могут включаться в F . Понятие формулы вводится индуктивно. 1. Базис индукции. Формулой над множеством F считают любую константу из F (если она там есть) и любое булево переменное из P . 2. Индуктивный переход. Если Φ1 , . . . , Φn (n > 1) — формулы над множеством F , а f — функция из F от n переменных, то выражение f (Φ1 , . . . , Φn ) есть формула над множеством F . 3. Замыкание. Никаких других формул над множеством F , кроме определенных выше, не существует. «Промежуточные» формулы, используемые при построении некоторой формулы, называют подформулами этой формулы. При построении формул с использованием функций двух переменных будем использовать традиционную форму записи функции как бинарной операции. Пусть F = {∨, ·, }. Это множество, состоящее из функций дизъюнкции, конъюнкции и отрицания, называют стандартным базисом. Построим некоторую формулу над этим базисом. Согласно определению, формулой над стандартным базисом будет любое переменное из P , например x1 , x2 . Из переменных x1 , x2 как формул и функции ∨ можно построить новую формулу: Φ1 = x1 ∨ x2 . Из переменного x3 (которое будет формулой) формулы Φ1 и функции конъюнкции можно построить формулу Φ2 = x3 · Φ1 . Из формулы Φ2 , используя функцию отрицания, можно построить формулу Φ3 = Φ2 . В результате получим Φ3 = Φ2 = x3 · Φ1 = x3 · (x1 ∨ x2 ). Каждому набору значений переменных, входящих в заданную формулу, сопоставляется значение этой формулы. Вычисление ука7 занного значения в точности соответствует процессу построения формулы из подформул. Следовательно, каждая формула определяет (или представляет) некоторую булеву функцию. Заметим, что одна и та же функция может быть представлена различными формулами. Формулы называют эквивалентными, если соответствующие им функции равны. 1.4. Расчет булевой функции Рассмотрим булеву функцию от трех переменных, заданную формулой f (x1 , x2 , x3 ) = (((x1 ↓ x2 ) ⊕ ((x1 ∨ x2 ) ∼ x3 )) ∨ (x1 | x3 )) |(x1 ∧ x2 ). Для расчета разобъем формулу на подформулы A, B, C, D, E, I и J и сведем результаты расчетов в табл. 1.4. Таблица 1.4 № набора 0 1 2 3 4 5 6 7 x1 x2 x3 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 A B C D E I J f (x1 , x2 , x3 ) x1 ↓ x2 x1 ∨ x2 B ∼ x3 A ⊕ C x1 | x3 x1 ∧ x2 D ∨ E J |I 1 0 1 0 1 0 1 1 1 0 0 1 1 0 1 1 0 1 0 0 1 1 1 0 0 1 1 1 1 1 1 0 0 1 0 0 1 0 1 1 0 1 1 1 0 0 1 1 0 1 0 0 1 0 1 1 0 1 1 1 0 0 1 1 В данном примере разбиение исходной формулы на подформулы однозначно задается расстановкой скобок. В общем случае возможны несколько путей построения формулы из подформул. 1.5. Функция, представляемая формулой над множеством Рассмотрим некоторое фиксированное множество булевых функций F . Функцию, представляемую некоторой формулой над множеством F , называют суперпозицией над множеством F , а множество всех 8 суперпозиций над F — замыканием множества F булевых функций. Его обозначают [F ]. Если булева функция f (x1 , . . . , xn ) представляется формулой Φ(x1 , . . . , xn ), то пишут f = Φ(x1 , . . . , xn ). Представление булевой функции формулой при большом числе переменных существенно короче, чем представление ее таблицей. Так, таблица функции от 20 переменных f (x1 , . . . , x20 ) = x1 ∨ . . . ∨ x20 содержит более миллиона строк. Одна и та же функция может быть представлена различными формулами. Эквивалентность (см. табл. 1.2) над множеством {∨, ·, , →} можно представить, например, так: x1 ∼ x2 = (x1 ∨ x2 ) · (x2 ∨ x1 ), x1 ∼ x2 = (x1 → x2 ) · (x2 → x1 ). Таким образом, соответствие между формулами над фиксированным множеством и представляемыми ими функциями не является взаимно однозначным. Формулы называют эквивалентными, если соответствующие им функции равны. 2. ИССЛЕДОВАНИЕ ПОЛНОТЫ МНОЖЕСТВА БУЛЕВЫХ ФУНКЦИЙ 2.1. Классы Поста Определение 2.1. Множество булевых функций F называют полным, если любая булева функция может быть представлена некоторой формулой над F . Стандартный базис {∨, ∧, } является полным множеством в силу теоремы представлении произвольной булевой функции дизъюнктивной или конъюнктивной нормальной формой (см. [2]). Сформулируем необходимое и достаточное условие полноты произвольного множества булевых функций. Для этого рассмотрим некоторые специальные множества функций. 9 Определение 2.2. Функцию f называют функцией, сохраняющей константу 0 (соответственно константу 1), если f (e 0) = 0 e e e (соответственно f (1) = 1), где 0 — нулевой, а 1 — единичный наборы значений переменных функции f . Множество всех функций, сохраняющих константу 0 (константу 1), обозначают T0 (соответственно T1 ). Определение 2.3. Hаборы α eиα e из булева куба Bn = {0, 1}n наe есть инверсия зывают взаимно противоположными, если набор α (или отрицание) набора α e. Другими словами, к двоичному набору (α1 , . . . , αn ) противоположным будет набор (α1 , . . . , αn ). В силу единственности отрицания любого элемента αi , i = 1, . . . , n, такой набор будет единственным. Определение 2.4. Функцию g ∈ P2,n называют двойственной к функции f ∈ P2,n , если для всякого α e ∈ {0, 1}n (n > 0) имеет место α). g(e α) = f (e Например, сумма по модулю 2 двойственна к эквивалентности, так как x ∼ y = x ⊕ y = x ⊕ y. Определение 2.5. Функцию f ∈ P2,n называют самодвойственной, если она двойственна к себе самой, т. е. α)). (∀e α ∈ {0, 1}n )(f (e α) = f (e Функция самодвойственна тогда и только тогда, когда на взаимно противоположных наборах она принимает взаимно противоположные значения. Для того чтобы убедиться в несамодвойственности заданной функции f , достаточно найти хотя бы одну пару взаимно протиe, таких, что значения функции на них воположных наборов α e иα совпадают, т. е. f (e α) = f (e α). 10 Для того чтобы доказать самодвойственность заданной функции f , надо проверить все наборы и убедиться, что на взаимно противоположных наборах она принимает взаимно противоположные значения. Можно также построить функцию f ∗ , двойственную к функции f . Если окажется, что f ∗ = f , то функция f является самодвойственной. В противном случае легко увидеть взаимно противоположные наборы, на которых значения функции совпадают. Так, функция f1 = (0101) является самодвойственной, поскольку f1 (0, 0) = 0 = 1 = f 1 (0, 0) = f 1 (1, 1), f1 (0, 1) = 1 = 0 = f 1 (0, 1) = f 1 (1, 0), f1 (1, 0) = 0 = f 1 (0, 1). Для проверки также можно построить функцию f ∗ , двойственную к функции f (см. табл. 1.4). Из табл. 2.1 видно, что f = f ∗ , следовательно, функция f является самодвойственной. Таблица 2.1 № набора x1 x2 f f∗ 0 1 2 3 0 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 Множество всех самодвойственных функций (при всех n > 1) обозначим через S. Определение 2.6. Функцию f ∈ P2,n называют монотонной, e имеет место если для любых наборов α e, βe ∈ Bn , таких, что α e 6 β, e f (e α) 6 f (β). Множество всех монотонных функций принято обозначать через M . Для того чтобы убедиться в немонотонности заданной функции f , e таких, достаточно найти хотя бы одну пару сравнимых наборов α e и β, e e что α e 6 β и f (e α) > f (β). 11 Для доказательства монотонности заданной функции f , следует проверить все наборы и убедиться, что на всех сравнимых наборах e то f (e e α e и βe выполняется следующее условие: если α e 6 β, α) 6 f (β). Например, функция f = (0011) монотонна. Штрих Шеффера — немонотонная функция, так как 00 < 11, но 0|0 = 1, а 1|1 = 0. Приведем теорему, характеризующую важное свойство немонотонных функций. Теорема 2.1. Если функция f не является монотонной (f ∈ / M ), e то найдутся два таких набора α e, β, что α e = (α1 , . . . , αi−1 , 0, αi+1 , . . . , αn ), βe = (α1 , . . . , αi−1 , 1, αi+1 , . . . , αn ), e = 0. и f (e α) = 1, f (β) e разлиα 6 β), Упоминаемые в теореме 2.1 наборы сравнимы (e чаются значениями в точности одной компонентой αi , а значение функции f равно 0 на большем наборе βe и 1 на меньшем наборе α e. Множество функций {⊕, ·, 1} называют базисом Жегалкина. Базис Жегалкина является полным множеством, а любую формулу над базисом Жегалкина называют полиномом Жегалкина. Полином Жегалкина от n переменных можно записать в виде Pf (x1 , . . . , xn ) = = X (mod 2) ai1 i2 ...im xi1 xi2 . . . xim , {i1 , i2 , ..., im }⊆{1, 2, ..., n} где коэффициенты полинома ai1 i2 ...im ∈ {0, 1} индексированы всеми возможными подмножествами множества {1, 2, . . . , n} (коэффициент a0 соответствует пустому множеству). Например, формула 1 ⊕ x1 ⊕ x1 x2 ⊕ x2 x3 ⊕ x1 x2 x3 есть пример полинома Жегалкина от трех переменных. 12 Поскольку для любой булевой переменной xi xi = xi , в полиноме Жегалкина могут присутствовать только произведения различных переменных, сами переменные и константы. Формула вида Pf (x1 , . . . , xn ) = n X (mod 2) ai xi ⊕ a0 (2.1) i=1 называется полиномом Жегалкина первой степени от переменных. В таком полиноме отсутствуют «нелинейные» слагаемые. Определение 2.7. Функцию f ∈ P2,n называют линейной, если она может быть представлена полиномом Жегалкина первой степени от n переменных. Например, 1 ⊕ x1 ⊕ x2 ⊕ x3 — полином Жегалкина первой степени от трех переменных. Любая булева константа является линейной функцией. Сумма по модулю 2 линейна. Отрицание также линейно, x = x ⊕ 1. Конъюнкция и дизъюнкция не являются линейными функциями, так как не могут быть представлены полиномом Жегалкина первой степени. Множество всех линейных функций принято обозначать через L. Определение 2.8. Множества функций T0 , T1 , S, M , L называют классами Поста. Теорема 2.2 (теорема Поста). Множество F булевых функций полно тогда и только тогда, когда это множество не содержится целиком ни в одном из классов Поста. Пример 2.1. Исследуем полноту множества F = {g, w}, где g = (11111101), w = (11100110), с использованием теоремы Поста. Для этого выясним, каким классам Поста принадлежат элементы этого множества. Для удобства зададим функции f и g с помощью табл. 2.2. 13 Таблица 2.2 № набора x1 x2 x3 g w 0 1 2 3 4 5 6 7 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 1 0 1. Принадлежность классу T0 (cохранение константы 0). Напомним, что функцию g называют функцией, сохраняющей константу 0, если g(e 0) = 0 , где e 0 — нулевой набор значений переменных функции g. Поскольку g(0, 0, 0) = 1, то функция g не сохраняет константу 0 (g ∈ / T0 ). У второй функции w(0, 0, 0) = 1, функция w также не сохраняет константу 0 (w ∈ / T0 ). 2. Принадлежность классу T1 (сохранение константы 1). Функцию g называют функцией, сохраняющей константу 1, если g(e 1) = e = 1, где 1 — единичный набор значений переменных функции g. Из табл. 2.2 видно, что g(1, 1, 1) = 1. Следовательно, функция g сохраняет константу 1 (g ∈ T1 ). Аналогично w(1, 1, 1) = 0, и функция w не сохраняет константу 1 (w ∈ / T1 ). 3. Принадлежность классу S (cамодвойственность). Функцию g ∈ P2,n называют самодвойственной, если она двойственна к себе самой, т. е. (∀e α ∈ {0, 1}n )(g(e α) = g(e α)). Функция самодвойственна тогда и только тогда, когда на взаимно противоположных наборах она принимает взаимно противоположные значения. Функции g несамодвойственна (g ∈ / S), поскольку g(0, 0, 0) = = g(1, 1, 1) = 1. Вторая функция также несамодвойственна (w ∈ / S), поскольку w(0, 1, 1) = w(1, 0, 0) = 0. В табл. 2.3 для каждой функции выделены соответствующие пары строк. 14 Таблица 2.3 № набора x1 x2 x3 g w 0 1 2 3 4 5 6 7 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 1 0 4. Принадлежность классу S (монотонность). Функцию g e таких, что называют монотонной, если для любых наборов α e, β, e имеет место неравенство g(e e α e 6 β, α) 6 g(β). Функция g немонотонна (g ∈ / M ), поскольку есть по крайней мере два сравнимых набора (0, 0, 0) и (1, 1, 0), такие, что (0, 0, 0) 6 (1, 1, 0), но g(0, 0, 0) > g(1, 1, 0), где g(0, 0, 0) = 1, g(1, 1, 0) = 0. Функция w также немонотонна (w ∈ / M ), так как (0, 1, 0) 6 6 (0, 1, 1), но w(0, 1, 0) > w(0, 1, 1), где w(0, 1, 0) = 1, w(0, 1, 1) = 0. В табл. 2.4 для каждой функции выделены соответствующие указанным наборам пары строк. Таблица 2.4 № набора x1 x2 x3 g w 0 1 2 3 4 5 6 7 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 1 0 5. Принадлежность классу L (линейность). Напомним, что функцию f ∈ P2,n называют линейной, если она может быть представлена 15 полиномом Жегалкина первой степени от n переменных. В случае функций от небольшого числа переменных удобно использовать для получения полинома Жегалкина метод неопределенных коэффициентов. Функция g представляется некоторым полиномом Жегалкина третьей степени, общий вид которого дает формула Pg (x1 , x2 , x3 ) = a123 x1 x2 x3 ⊕ a12 x1 x2 ⊕ a13 x1 x3 ⊕ ⊕ a23 x2 x3 ⊕ a1 x1 ⊕ a2 x2 ⊕ a3 x3 ⊕ a0 . Этот полином содержит 23 = 8 коэффициентов, подлежащих определению. Значение функции g на наборе (0, 0, 0) равно коэффициенту a0 : g(0, 0, 0) = a0 = 1. Для определения коэффициентов a3 , a2 и a1 рассмотрим значения функции на наборах (0, 0, 1), (0, 1, 0) и (1, 0, 0) соответственно и учтем, что a0 = 1. Имеем g(0, 0, 1) = a3 ⊕ a0 = a3 ⊕ 1 = 1, откуда a3 = 0; g(0, 1, 0) = a2 ⊕ 1 = 1, откуда a2 = 0; g(1, 0, 0) = a1 ⊕ 1 = 1 и a1 = 0. Чтобы найти коэффициенты a12 , a13 и a23 , рассмотрим значения функции на наборах (1, 1, 0), (1, 0, 1) и (0, 1, 1) соответственно. Найдем a12 . Поскольку g(1, 1, 0) = 0, то g(1, 1, 0) = a12 · 1 · 1 ⊕ a1 · 1 ⊕ a2 · 1 ⊕ a0 . С учетом a1 = a2 = 0 получим a12 ⊕ a0 = a12 ⊕ 1 = 0, откуда a12 = 1. Найдем коэффициент a13 . Поскольку g(1, 0, 1) = 1, а a1 = a3 = 0, то g(1, 0, 1) = a13 ⊕ a0 = a13 ⊕ 1 = 1, откуда a13 = 0. Найдем коэффициент a23 . Здесь g(0, 1, 1) = 1, a2 = a3 = 0, g(0, 1, 1) = a23 ⊕ a0 = a23 ⊕ 1 = 1, a23 = 0. 16 Вычислим a123 . Из предыдущих вычислений a1 = a2 = a3 = = a13 = a23 = 0. Тогда g(1, 1, 1) = a123 ⊕ a12 ⊕ a0 = a123 ⊕ 1 ⊕ 1 = a123 = 1. Таким образом, полином Жегалкина, представляющий g, имеет вид g = x1 x2 x3 ⊕ x1 x2 ⊕ 1. В полиноме Pg (x1 , x2 , x3 ) имеются нелинейные слагаемые, и, следовательно, функция g нелинейна (g ∈ / L). Для вывода о полноте множества F данных достаточно, поэтому функцию w проверять не будем. Результаты исследований удобно представить в виде критериальной таблицы (табл. 2.5). Таблица 2.5 Функция T0 T1 S M L g w − − + − − − − − − ? Поскольку в каждом столбце критериальной таблицы есть хотя бы один прочерк, множество функций F = {g, w} не содержится целиком ни в одном из классов Поста. Следовательно, согласно теореме Поста, множество F полно. 2.2. Построение основных элементов стандартного базиса Доказательство теоремы Поста базируется на представлении элементов полного множества {∧, } формулами над произвольным полным множеством. Известно (см. [1, 2]), что в общем случае конъюнкцию можно выразить формулой с использованием нелинейной функции, констант 0, 1 и отрицания. 17 Отрицание можно реализовать формулой с использованием немонотонной функции и констант 0, 1. Константы можно реализовать формулой с использованием несамодвойственной функции и отрицания. Поиск искомых формул обычно начинают с построения констант и отрицания. Для полного множества функций при заполнении критериальной таблицы в классах T0 и T1 возможны следующие четыре случая: а) существует функция f1 , сохраняющая константу 0, но не сохраняющая константу 1 (f0 ∈ T0 , f0 ∈ / T1 ), и функция, не сохраняющая константу 0, но сохраняющая константу 1 (f1 ∈ / T0 , f1 ∈ T1 ); б) существует функция, сохраняющая константу 0, но не сохраняющая константу 1 (f0 ∈ T0 , f0 ∈ / T1 ), и функция f1 , не сохраняющая обе константы (f1 ∈ / T0 , f1 ∈ / T1 ); в) существует функция, не сохраняющая константу 0, но сохраняющая константу 1 (f0 ∈ / T0 , f0 ∈ T1 ), и функция f1 , не сохраняющая обе константы (f1 ∈ / T0 , f1 ∈ / T1 ); г) существует только функция, не сохраняющая обе константы (f0 ∈ / T0 , f0 ∈ / T1 ). Случай а. Рассмотрим реализацию констант 0 с помощью функции, сохраняющей константу 0 и не сохраняющей константу 1. Пусть существует функция f0 , сохраняющая константу 0 и не сохраняющая константу 1, т. е. f0 (0, . . . , 0) = 0 и f0 (1, . . . , 1) = 0 (f0 ∈ T0 и f0 ∈ / T1 ). В этом случае константа 0 представляется формулой 0 = f0 (x, . . . , x). Пусть существует функция f1 , не сохраняющая константу 0, но сохраняющая константу 1, т. е. f1 (0, . . . , 0) = 1 и f1 (1, . . . , 1) = 1 (f0 ∈ / T0 и f0 ∈ T1 ). Тогда 1 = f1 (x, . . . , x). Для построения отрицания в этом случае воспользуемся немонотонной функцией. Само построение рассмотрим позже. Случай б. Пусть существует функция f0 , сохраняющая константу 0, но не сохраняющая константу 1. Тогда 0 = f0 (x, . . . , x). 18 Пусть функция f1 не сохраняет обе константы (f1 ∈ / T0 , f1 ∈ / T1 ). Тогда f1 (0, . . . , 0) = 1, f1 (1, . . . , 1) = 0. Полученные соотношения позволяют выразить отрицание в виде x = f1 (x, . . . , x). Константу 1 в этом случае можно получить как отрицание 0 в виде 1 = f0 (x, . . . , x) = f1 (f0 (x, . . . , x), . . . , f0 (x, . . . , x)). Заметим, что функция f0 , сохраняющая только одну из констант, является несамодвойственной. Случай в. Если f0 ∈ / T0 и f0 ∈ T1 , то 1 = f0 (x, . . . , x). Построение отрицания выполняется, как и в предыдущем случае. Случай г. Если f0 ∈ / T0 , f0 ∈ / T1 , то x = f1 (x, . . . , x). Построить формулы для констант на основе анализа классов T0 и T1 в этом случае не удается. Для соответствующих построений используют несамодвойственные функции. Реализация констант 0 и 1 из несамодвойственной функции. Этот случай реализации констант предполагает наличие отрицания. Пусть существует несамодвойственная функция fS . Для этой функции найдется такой набор α e, что fS (e α) = fS (e α). Будем использовать следующее обозначение: для σ ∈ {0, 1} пишут xσ , понимая под этим само переменное x, если σ = 1, и отрицание x, если σ = 0, т. е. x, σ = 1; (2.2) xσ = x, σ = 0. Введем функцию от одного переменного h(x) = fS (xα1 , . . . , xαn ) (в предположении, что α e = (α1 , . . . , αn )). α) = fS (e α) = h(1), так как для любого Заметим, что h(0) = fS (e σ ∈ {0, 1}. Подставив в (2.2) 0 и 1 вместо x, получим 1, σ = 0; 1, σ = 1; σ σ 0 = 1 = 0, σ = 1, 0, σ = 0. Значение h(x) есть константа. 19 Реализация отрицания с использованием немонотонной функции. Для немонотонной функции fM ∈ F \ M , согласно теe что ореме 2.1, найдутся два таких набора α e и β, α e = (α1 , . . . , αi−1 , 0, αi+1 , . . . , αn ), βe = (α1 , . . . , αi−1 , 1, αi+1 , . . . , αn ), e = 0. Тогда x = fM (α1 , . . . , αi−1 , x, αi+1 , . . . , αn ), fM (e α) = 1, а fM (β) т. e. отрицание может быть получено из немонотонной функции подстановкой вместо некоторого ее переменного xi переменного x, а вместо остальных переменных — констант α1 , . . . , αi−1 , αi+1 , . . . , e αn , определяемых выбранными выше наборами α e и β. Построение формулы для конъюнкции. Возьмем нелинейную функцию fN L из F . В полиноме Жегалкина для этой функции выберем произвольное нелинейное слагаемое, содержащее наименьшее число переменных. Пусть это будет слагаемое xi1 , . . . , xik при 2 6 k 6 n. Вместо каждого переменного xm функции fL , где m∈ / {i1 , . . . , ik }, подставим константу 0, т. е. заменим нулями все переменные, которые не вошли в выбранную ранее конъюнкцию. В результате получим новую функцию двух переменных fL0 = xi1 . . . xik ⊕ ai1 xi1 ⊕ . . . ⊕ aik xik ⊕ a0 = = fL (0, . . . , 0, xi1 , 0, . . . , 0, xik , 0, . . . , 0). Поскольку формулы для констант 0 и 1 уже получены, то функция fL0 представлена формулой над F . Разобьем множество переменных {xi1 , . . . , xik } произвольно на две части: {xi1 , . . . , xim } и xim+1 , . . . , xik , где 1 6 m 6 k − 1, и заменим все переменные первой части переменным x, а переменные второй части — переменным y. В результате получим функцию от двух переменных χ(x, y) = xy ⊕ ax ⊕ by ⊕ c, где a = ai1 ⊕ . . . ⊕ aim , b = aim+1 ⊕ . . . ⊕ aik , c = a0 . 20 Функция χ может быть представлена следующей формулой над F : χ(x, y) = fL (0, . . . , 0, |{z} x , 0, . . . , 0, |{z} x , 0, . . . , 0, i1 im y , 0, . . . , 0, y , 0, . . . , 0), |{z} |{z} im+1 ik Функция χ получена из нелинейной функции fL ∈ F путем подстановки на место ее переменных с номерами i1 , . . . , im переменного x, на место переменных с номерами im+1 , . . . , ik — переменного y, на место всех остальных переменных — константы 0, уже представленной формулой над F . Определим функцию ψ(x, y) = χ(x ⊕ b, y ⊕ a) ⊕ ab ⊕ c. Выразив функцию ψ(x, y) из полинома Жегалкина для χ, получим ψ(x, y) = χ(x ⊕ b, y ⊕ a) ⊕ ab ⊕ c = = (x ⊕ b)(y ⊕ a) ⊕ a(x ⊕ b) ⊕ b(y ⊕ a) ⊕ c ⊕ ab ⊕ c = = xy ⊕ ax ⊕ by ⊕ ab ⊕ ax ⊕ ab ⊕ by ⊕ ab ⊕ c ⊕ ab ⊕ c = xy, так как сумма по модулю 2 любого четного числа равных слагаемых равна 0. Функция ψ есть конъюнкция. Прибавление к любой функции константы по модулю 2 есть либо сама исходная функция, либо ее отрицание, а отрицание уже представлено формулой над множеством F , поэтому и конъюнкция представлена такой формулой. Пример 2.2. Построим константы, отрицание и конъюнкцию из функций множества F , приведенных в примере 2.1, где для этого множества была заполнена критериальная таблица (см. табл. 2.5). 1. Реализация константы 1. Функция g сохраняет константу 1 и не сохраняет константу 0, т. е. g(0, 0, 0) = 1 и g(1, 1, 1) = 1. Следовательно, g(x, x, x) = 1. 21 2. Реализация отрицания. Функция w не сохраняет константу 0 и не сохраняет константу 1, т. е. w(0, 0, 0) = 1 и w(1, 1, 1) = 0. Следовательно, w(x, x, x) = x. 3. Реализация константы 0. Заметим, что функция w несамодвойственна, причем w(0, 1, 1) = w(1, 0, 0) = 0. Используя указанное свойство, получим 0 = w(x, x, x, ) = w(w(x, x, x), x, x). Еще один вариант реализации константы 0: 0 = 1 = g(x, x, x) = w(g(x, x, x), g(x, x, x), g(x, x, x)). Константу 0 можно получить и иначе. Поскольку w(1, 1, 1) = 0, то 0 = w(g(x, x, x), g(x, x, x), g(x, x, x)). Этот способ дает ту же формулу, что и предыдущий способ. 4. Реализация конъюнкции из нелинейной функции g. Полином Жегалкина для g имеет вид x1 x2 x3 ⊕ x1 x2 ⊕ 1. Самое короткое произведение — x1 x2 . Положив x3 = 0, получим ϕ(x1 , x2 ) = x1 x2 ⊕ 1 = x1 x2 , так как x ⊕ 1 = x. Пусть x1 = x, x2 = y, тогда ψ(x, y) = ϕ(x, y) = xy. Следовательно, x · y = g(x, y, 0). В итоге получено представление конъюнкции следующей формулой: x · y = w( g(x, y, w(g(x, x, x), g(x, x, x), g(x, x, x))), g(x, y, w(g(x, x, x), g(x, x, x), g(x, x, x))), g(x, y, w(g(x, x, x), g(x, x, x), g(x, x, x))) ). 2.3. Пример выполнения домашнего задания Пусть дано множество функций F = {f, w}, где f = (01111110), а w = (01101001). Исследуем это множество на полноту. В случае его неполноты дополним его так, чтобы получилось полное множество. Из полного 22 множества реализуем формулами константы, отрицание и конъюнкцию. Для удобства анализа зададим функции с помощью табл. 2.6 и выясним принадлежность этих функций классам Поста. Таблица 2.6 № набора x1 x2 x3 f w 0 1 2 3 4 5 6 7 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 o 1 1 1 1 1 1 0 0 1 1 0 1 0 0 1 1. Принадлежность классу T0 (cохранение константы 0). Поскольку f (0, 0, 0) = 0, то функция f сохраняет константу 0, т. е. f ∈ T0 . Функция w также сохраняет константу 0, поскольку w(0, 0, 0) = 0, т. е. w ∈ T0 . 2. Принадлежность к классу T1 (сохранение константы 1). Функция g не сохраняет константу 1, поскольку g(1, 1, 1) = 0 и g ∈ / T1 . Так как w(1, 1, 1) = 1, то функция w сохраняет константу 1 и w ∈ T1 . 3. Принадлежность к классу S (самодвойственность). Функция f несамодвойственна, так как f (0, 1, 1) = f (1, 0, 0) = = 1 и, следовательно, f ∈ / S. Соответствующие наборы значений переменных в табл. 2.7 выделены. Для функции w построим двойственную ей функцию w∗ . Результат приведен в табл. 2.8. Из таблицы видно, что w = w∗ , следовательно, w самодвойственна и w ∈ S. 4. Принадлежность к классу M (монотонность). Для проверки монотонности функции f необходимо проверить выполнение слеe то f (e e Для того чтобы дующего условия: если α e 6 β, α) 6 f (β). 23 Таблица 2.7 № набора x1 x2 x3 f 0 1 2 3 4 5 6 7 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 0 Таблица 2.8 № набора x1 x2 x3 w w∗ 0 1 2 3 4 5 6 7 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 0 0 1 убедиться в немонотонности функции f , достаточно найти хотя бы e таких, что α e одну пару сравнимых наборов α e и β, e 6 βe и f (e α) > f (β). Функция f немонотонна, так как (1, 1, 0) 6 (1, 1, 1), но f (1, 1, 0) > > f (1, 1, 1), поскольку (f (1, 1, 0) = 1, а g(1, 1, 1) = 0. Таким образом, f∈ / M . Соответствующие наборы выделены в табл. 2.9 полужирным шрифтом. Функция w немонотонна, так как (0, 1, 0) 6 (0, 1, 1), но w(0, 1, 0) > > w(0, 1, 1), где (w(0, 1, 0) = 1, а w(0, 1, 1) = 0), т. е. w ∈ / M . Соответствующие наборы выделены в табл. 2.9 курсивом. 5. Принадлежность классу L (линейность). Найдем полином Жегалкина, представляющий f , методом неопределенных коэффициентов. Запишем для функции f (x1 , x2 , x3 ) полином Жегалкина 24 Таблица 2.9 № набора x1 x2 x3 f w 0 1 2 3 4 5 6 7 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 0 0 1 1 0 1 0 0 1 третьей степени в общем виде: Pf (x1 , x2 , x3 ) = a123 x1 x2 x3 ⊕ a12 x1 x2 ⊕ a13 x1 x3 ⊕ ⊕ a23 x2 x3 ⊕ a1 x1 ⊕ a2 x2 ⊕ a3 x3 ⊕ a0 . При подстановке в полином Жегалкина третьей степени значений x1 = 0, x2 = 0 и x3 = 0 получим Pf (0, 0, 0) = a123 · 0 · 0 · 0 ⊕ a12 · 0 · 0 ⊕ a13 · 0 · 0 ⊕ ⊕ a23 · 0 · 0 ⊕ a1 · 0 ⊕ a2 · 0 ⊕ a3 · 0 ⊕ a0 = a0 . Следовательно, значение функции f на наборе (0, 0, 0) равно коэффициенту a0 . Поскольку f (0, 0, 0) = 0, то a0 = 0. Найдем коэффициенты a3 , a2 и a1 . Для этого рассмотрим значения функции на наборах (0, 0, 1), (0, 1, 0) и (1, 0, 0) соответственно, учитывая, что a0 = 0. Для нахождения коэффициента a3 , подставим в полином Жегалкина третьей степени значения x1 = 0, x2 = 0 и x3 = 1. Получим f (0, 0, 1) = 1 и Pf (0, 0, 1) = a123 · 0 · 0 · 1 ⊕ a12 · 0 · 0 ⊕ a13 · 0 · 1 ⊕ a23 · 0 · 1 ⊕ ⊕ a1 · 0 ⊕ a2 · 0 ⊕ a3 · 1 ⊕ a0 = a3 ⊕ a0 = a3 ⊕ 0 = 1. Следовательно, a3 = 1. Аналогично найдем коэффициенты a2 и a1 . Имеем f (0, 1, 0) = 1 и Pf (0, 1, 0) = a2 ⊕ 1 = 1. Следовательно a2 = 1. 25 Поскольку f (1, 0, 0) = 1, то Pf (1, 0, 0) = a1 ⊕ 1 = 1 и a1 = 1. Итак, a0 = 0, a1 = 1, a2 = 1, a3 = 1. Чтобы найти коэффициенты a12 , a13 и a23 , рассмотрим значения функции на наборах (1, 1, 0), (1, 0, 1) и (0, 1, 1) соответственно. Для нахождения коэффициента a12 рассмотрим значения функции на наборе (1, 1, 0). По таблице функции f (см. табл. 2.6) находим f (1, 1, 0) = 0. Поскольку a0 = 0, a1 = a2 = 1, полином Жегалкина на этом наборе имеет вид Pf (1,1,0) = a12 ·1 ·1⊕a1 ·1⊕a2 ·1 ⊕a0 = a12 ⊕1⊕1⊕0 = a12 ⊕0 = 1. Таким образом, a12 = 1. Аналогично находим коэффициенты a23 и a13 . Подставив в Pf (x1 , x2 , x3 ) набор (1, 0, 1), найдем a13 . На этом наборе f (1, 0, 1) = = 1. Учитывая, что a0 = 0, a1 = a3 = 1, получим Pf (1, 0, 1) = a13 ⊕ 1 ⊕ 1 ⊕ 0 = a13 ⊕ 0 = 1. Следовательно, a13 = 1. Для вычисления коэффициента a23 подставим в Pf (x1 , x2 , x3 ) набор (0, 1, 1). Поскольку f (0, 1, 1) = 1, a0 = 0 и a2 = a3 = 1, имеем Pf (0, 1, 1) = a13 ⊕ 1 ⊕ 1 ⊕ 0 = a23 ⊕ 0 = 1. Таким образом, a23 = 1. Зная значения коэффициентов a0 , a1 , a2 , a3 , a12 , a13 ,a23 , можно найти коэффициент a123 . Для этого подставим в полином Жегалкина третьей степени значения x1 = 1, x2 = 1 и x3 = 1: Pf (1, 1, 1) = a123 · 1 · 1 · 1 ⊕ a12 · 1 · 1 ⊕ a13 · 1 · 1 ⊕ ⊕ a23 · 1 · 1 ⊕ a1 · 1 ⊕ a2 · 1 ⊕ a3 · 1 ⊕ a0 = = a3 ⊕ a0 = a3 ⊕ 0 = 1. Учитывая, что a0 = 0, a1 = a2 = a3 = a12 = a13 = a23 = 1, найдем Pf (1, 1, 1) = a123 ⊕ 1 ⊕ 1 ⊕ 1 ⊕ 1 ⊕ 1 ⊕ 1 ⊕ 0 = a123 ⊕ 0 = 1. Следовательно, коэффициент a123 = 0. 26 Полином Жегалкина, представляющий f , имеет вид Pf (x1 , x2 , x3 ) = x1 x2 ⊕ x1 x3 ⊕ x2 x3 ⊕ x1 ⊕ x2 ⊕ x3 . В нем присутствуют нелинейные слагаемые, следовательно, функция f нелинейна. Функцию w проверять не будем, поскольку первая функция оказалась нелинейной. Заполним критериальную табл. 2.10. Таблица 2.10 Функция T0 T1 S M L f w + + − + − + − − − ? Множество функций F = {f, w} содержится целиком в классе Поста T0 . Следовательно, множество неполно, и его необходимо дополнить функцией h, не сохраняющей 0. Функцию h можно выбирать произвольным образом, но по условию задания она не должна совпадать константами 0 или 1, отрицанием и базовыми функциями двух переменных (⊕, ∨, ∧, |, ↓ и т. д.). Зададим новую функцию с помощью табл. 2.11. Таблица 2.11 № набора x1 x2 x3 h 0 1 2 3 4 5 6 7 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 1 0 1 1 1 1 1 1 Проверим функцию h на принадлежность классам Поста. 27 Поскольку h(0, 0, 0) = 1, то h ∈ / T0 . Так как h(1, 1, 1) = 1, то h ∈ T1 . Функция h несамодвойственна (h ∈ / S), поскольку на взаимно противоположных наборах (0, 0, 0) и (1, 1, 1) функция h принимает равные значения (h(0, 0, 0) = h(1, 1, 1) = 1). Для проверки функции h на монотонность рассмотрим наборы (0, 0, 0) и (0, 0, 1). На наборе (0, 0, 0) функции h принимает значение, равное 1, а на наборе (0, 0, 1) — значение, равное 0. Заметим, что (0, 0, 0) < (0, 0, 1), но h(0, 0, 0) > h(1, 0, 0). Следовательно, функция h немонотонна (h ∈ / M ). Проверять функцию h на линейность не будем, так как в F = = {f, w h} уже содержится нелинейная функция, и для реализации коньюнкции этого достаточно. Составим новую критериальную табл. 2.12. Таблица 2.12 Функция T0 T1 S M L f w h + + − − + + − + − − − − − ? ? Теперь множество функций F = {f, w h} не содержится целиком ни в одном из классов Поста, следовательно, это множество полное, и формулами над этим множеством можно реализовать константы 0, 1 и базис {∧, }. Перейдем к реализации основных элементов. Из критериальной таблицы видно, что функция f сохраняет константу 0 (d ∈ T0 ) и не сохраняет константу 1, т. е. f (0, 0, 0) = 0 и f (1, 1, 1) = 0. Следовательно, константу 0 можно реализовать, используя функцию f . Подставив в функцию вместо переменных x1 , x2 и x3 переменное x, получим 0 = f (x, x, x). Константу 1 получим из несамодвойственной функции h (h ∈ / S). Выберем два взаимно противоположных набора (0, 0, 0) и (1, 1, 1), на которых функция h принимает значение 1. Подставив в функцию h вместо переменных x1 , x2 и x3 переменное x, получим h(x, x, x) = 1. 28 Отрицание получим из немонотонной функции w (w ∈ / M ). Рассмотрим наборы (0, 1, 0) и (0, 1, 1), на которых нарушается монотонность. Заметим, что w(0, 1, 0) = 1, w(0, 1, 1) = 0. Отрицание может быть получено из немонотонной функции w подстановкой вместо переменного x3 переменного x, вместо x1 — константы 0, а вместо x2 — константы 1. В результате получим w(0, 1, x) = x. Реализуем конъюнкцию из нелинейной функции f . Рассмотрим полином Жегалкина для этой функции: Pf (x1 , x2 , x3 ) = x1 x2 ⊕ x1 x3 с ⊕ x2 x3 ⊕ x1 ⊕ x2 ⊕ x3 . В полиноме Жегалкина выберем произвольное нелинейное слагаемое, содержащее наименьшее число переменных. Все входящие в полином нелинейные слагаемые имеют по два элемента, поэтому можно выбрать любое. Пусть это будет x1 · x2 . Вместо переменного x3 функции f подставим константу 0. Получим новую функцию двух переменных f 0 (x1 , x2 ) = f (x1 , x2 , 0) = = x1 x2 ⊕ x1 · 0 ⊕ x2 · 0 ⊕ x1 ⊕ x2 ⊕ 0 = x1 x2 ⊕ x1 ⊕ x2 . Пусть x1 = x, x2 = y, тогда ψ(x, y) = xy ⊕ x ⊕ y. полученную формулу следующим образом: Преобразуем f (x, y) = xy ⊕ x ⊕ y = xy ⊕ x ⊕ y ⊕ 1 ⊕ 1 = = x(y ⊕ 1) ⊕ (y ⊕ 1) ⊕ 1 = (x ⊕ 1)(y ⊕ 1) ⊕ 1 = = x · y ⊕ 1 = x · y. В результате x · y = f (x, y). Формулы для констант 0, 1 и отрицания уже получены, следовательно, конъюнкция может быть представлена формулой над F : x · y = w(f (x, x, x), h(x, x, x), f (w(f (x, x, x), h(x, x, x), x), w(f (x, x, x), h(x, x, x), y))). 29 2.4. Приемы реализации конъюнкции из нелинейной функции двух переменных Функцию от двух переменных всегда можно получить из функции от большего числа переменных, положив какие-то переменные равными 0 или 1, а также отождествив некоторые переменные между собой и положив xi = . . . = xj = x, xk = . . . = xm = y. Пусть, например, f1 = x1 x2 ⊕ x1 x3 ⊕ x2 x3 ⊕ 1. Положим x1 = 0, получим ϕ(x2 , x3 ) = x2 x3 ⊕ 1. Пусть f2 = x1 x2 x3 ⊕ 1. Положим x1 = 1, получим ϕ(x2 , x3 ) = = x2 x3 ⊕ 1. Подставить x1 = 0 нельзя, так как «потеряем» единственную конъюнкцию x1 x2 x3 . Для этой функции можно поступить и так: x1 = x, x2 = x3 = y. Тогда получим ϕ(x, y) = xy ⊕ 1. Возможны следующие варианты вида функции от двух переменных. 1. ϕ(x, y) = xy ⊕ 1 = xy. Следовательно, x · y = f (x, y). 2. ϕ(x, y) = xy ⊕ x ⊕ 1 = x(y ⊕ 1) ⊕ 1 = xy ⊕ 1 = xy. В этом случае x · y = f (x, y). 3. ϕ(x, y) = xy ⊕ x = x(y ⊕ 1) = xy. Здесь x · y = f (x, y). 4. ϕ(x, y) = xy ⊕ x ⊕ y ⊕ 1 = x(y ⊕ 1) ⊕ (y ⊕ 1) = (x ⊕ 1)(y ⊕ 1) = = x · y. В результате получим x · y = f (x, y). 5. ϕ(x, y) = xy ⊕ x ⊕ y = xy ⊕ x ⊕ y ⊕ 1 ⊕ 1 = x(y ⊕ 1) ⊕ (y ⊕ 1) ⊕ ⊕ 1 = (x ⊕ 1)(y ⊕ 1) ⊕ 1 = x · y ⊕ 1 = x · y. В итоге x · y = f (x, y). ЛИТЕРАТУРА 1. Яблонский С.В. Введение в дискретную математику. 3-е изд. М.: Высш. шк., 2001. 384 с. 2. Белоусов А.И., Ткачев С.Б. Дискретная математика / под ред. В.С. Зарубина, А.П. Крищенко. М.: Изд-во МГТУ им. Н.Э. Баумана, 2001. 744 с. (Сер. Математика в техническом университете; вып. XIX). ОГЛАВЛЕНИЕ 1. Булевы функции . . . . . . . . . . . . . . . . . . . . . . . 1.1. Понятие булевой функции. Булев куб . . . . . . . . . 1.2. Таблицы булевых функций . . . . . . . . . . . . . . . 1.3. Формулы и суперпозиции . . . . . . . . . . . . . . . 1.4. Расчет булевой функции . . . . . . . . . . . . . . . . 1.5. Функция, представляемая формулой над множеством . . . . . . . . . . . . . . . . . . 3 3 3 6 8 8 2. Исследование полноты множества булевых функций . . . . 2.1. Классы Поста . . . . . . . . . . . . . . . . . . . . . . . . . 2.2. Построение основных элементов стандартного базиса . . 2.3. Пример выполнения домашнего задания . . . . . . . . . . 2.4. Приемы реализации конъюнкции из нелинейной функции двух переменных . . . . . . . . . . . . . . . . . . . . . . . 9 9 17 22 30 Литература . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Учебное издание Виноградова Марина Станиславовна Ткачев Сергей Борисович Исследование полноты множества булевых функций Редактор B.M. Царев Корректор О. В. Калашникова Компьютерная верстка С.Б. Ткачева В оформлении использованы шрифты Студии Артемия Лебедева Оригинал-макет подготовлен в Издательстве МГТУ им. Н.Э. Баумана Подписано в печать 04.03.2015. Формат 60×90/16. Усл. печ. л. 2,0. Тираж 500 экз. Изд. № 23-2013. Заказ № Издательство МГТУ им. Н.Э. Баумана. 105005, Москва, 2-я Бауманская ул., д. 5, стр. 1. [email protected] www.baumanpress.ru Отпечатано в типографии МГТУ им. Н.Э. Баумана. 105005, Москва, 2-я Бауманская ул., д. 5, стр. 1. [email protected]