- •Учебно-методический комплекс дисциплины сд.12 дискретная математика
- •061800 «Математические методы в экономике»
- •Раздел 1. Программа учебной дисциплины. Структура программы учебной дисциплины
- •1.3 Пояснительная записка:
- •1.5. Объем дисциплины и виды учебной работы.
- •1.6 Содержание дисциплины.
- •1.7 Методические рекомендации по организации изучения дисциплины.
- •1.8 Учебно-методическое обеспечение дисциплины.
- •1.9 Материально-техническое обеспечение дисциплины.
- •1.10 Примерные зачетные тестовые задания.
- •1.11 Примерный перечень вопросов к зачету (экзамену).
- •1.12 Комплект экзаменационных билетов
- •1.13 Примерная тематика рефератов.
- •1.14 Примерная тематика курсовых работ.
- •Элементы теории множеств
- •§ 2. Бинарные операции и их свойства
- •§ 3. Операции над множествами. Законы де Моргана
- •§ 4. Вектор. Прямое произведение
- •§ 5. Мощность конечного множества
- •§ 6. Отношения и их свойства
- •§ 7. Отношение эквивалентности
- •§ 8. Отношение порядка
- •§ 9. Отображения и их свойства
- •Глава II. Элементы теории графов
- •§ 1. Графы, их вершины, рёбра и дуги
- •§ 2. Операции над графами
- •§ 3. Способы задания псевдографов. Степени вершин
- •§ 4. Отношение связности для вершин неориентированного графа
- •§ 5. Отношение достижимости для вершин орграфа
- •§ 6. Эйлеров граф и условия его существования
- •§ 7. Гамильтонов граф и условия его существования
- •§ 8. Деревья и их свойства. Цикломатическое число
- •§ 9. Формула Кэли
- •§ 10. Двудольный граф
- •§ 11. Планарность
- •§ 12. Раскраска графов
- •Глава III. Булевы функции
- •§ 1. Основные определения
- •§ 2. Свойства булевых функций
- •§ 3. Переключательные функции
- •§ 4. Совершенные нормальные формы
- •§ 5. Полнота. Примеры полных систем
- •§ 6. Замыкание и его свойства
- •§ 7. Важнейшие замкнутые классы
- •§ 8. Теорема о функциональной полноте
- •Раздел 4. Словарь терминов (глоссарий) Элементы теории множеств
- •Конечные графы
- •Функциональные системы с операциями: алгебра логики
- •Раздел 5. Практикум по решению задач (практических ситуаций) по темам лекций (одна из составляющих частей итоговой государственной аттестации) Элементы теории множеств
- •Задачи для самостоятельного решения
- •Конечные графы
- •Задачи для самостоятельного решения
- •Функциональные системы с операциями: алгебра логики
- •Задачи для самостоятельного решения
- •Раздел 6. Изменения в рабочей программе, которые произошли после утверждения программы.
- •Раздел 7. Учебные занятия по дисциплине ведут:
§ 6. Замыкание и его свойства
С понятием полноты тесно связано понятие замыкания и замкнутого класса. Пусть М некоторое подмножество функций из P2. Замыканием множества М называется множество всех булевых функций, представимых в виде формул через функции множества М. Замыкание множества М обозначается [М].
Примеры. 1. [i (i=1,...,7)] = P2.
2. Пусть M={1,x1x2}. Замыканием этого множества будет множество L всех линейных функций, то есть функций, имеющих вид: f(x1,...,xn)=c0c1x1...cnxn, где константы ci принимают значения либо 0, либо 1 (i = 0,1,...,n).
Свойства замыкания
1. Множество является подмножеством своего замыкания, т.е. М [М].
2. Замыкание к замыканию множества М равно замыканию множества М, т.е. [[М]] = [М].
3. Если множество М1 является подмножеством множества М2, то и для их замыканий справедливо такое же соотношение: (М1 М2) ([М1] [М2]).
4. Объединение замыканий является подмножеством замыкания от объединения:
[М1] [М2] [М1 М2].
Множество М называется функционально замкнутым, если оно совпадает со своим замыканием: [М] = М. Замкнутое множество иногда называют замкнутым классом.
Примеры. 1. Класс М=P2 является замкнутым классом.
2. Класс L всех линейных функций является замкнутым, так как выражение, составленное из линейных выражений, является линейным.
3. Множество M={1,x1x2} не замкнуто, так как, например, отрицание, которое можно выразить через функции этого множества (=x1), в самом этом множестве не содержится.
Из второго свойства замыкания следует, что всякий класс [M] будет замкнутым. Это дает возможность получать многочисленные примеры замкнутых классов.
В терминах замыкания и замкнутого класса можно дать другое определение полноты (эквивалентное исходному): множество M полная система, если замыкание этого множества представляет собой все множество булевых функций: [M] = P2.
§ 7. Важнейшие замкнутые классы
Класс функций, сохраняющих константу 0
Обозначим через T0 класс всех булевых функций f(x1,x2,...,xn), сохраняющих константу 0, то есть функций, для которых выполнено равенство f(0,0,...,0)=0. Очевидно, что функции 0, x, x1 x2, x1 x2, x1 x2 принадлежат классу T0, а функции 1, , x1 x2 в него не входят.
Поскольку таблица для функций f(x1,x2,...,xn) из класса T0 в первой строке содержит фиксированное значение 0, то в T0 попадает ровно половина всех булевых функций: .
Покажем, что T0 замкнутый класс. Так как он содержит тождественную функцию, то для обоснования его замкнутости достаточно показать, что функция Ф=f(f1,...,fm) принадлежит классу T0, если только f, f1,..., fm принадлежат этому классу.
Ф(0,0,...,0)= f(f1(0,0,...,0),...,fm(0,0,...,0))= f(0,0,...,0)=0.
Класс функций, сохраняющих константу 1
Обозначим через T1 класс всех булевых функций f(x1,x2,...,xn), сохраняющих константу 1; для них выполнено равенство f(1,1,...,1)=1. Этому классу принадлежат функции 1, x, x1 x2, x1 x2, x1 x2 и не принадлежат функции 1, , x1x2.
Покажем, что класс T1 состоит из функций, двойственных функциям из класса T0 (говорят, что класс T1 двойственен классу T0).
Пусть f(x1,x2,...,xn) принадлежит T1, т.е. выполняется равенство f(1,1,...,1)=1. Тогда, воспользовавшись определением двойственной функции, получим: f*(0,0,...,0)= (,,...,)= (1,1,...,1)=0. Это значит, что f*(x1,x2,...,xn) принадлежит классу T0.
Из взаимной двойственности классов T0 и T1 следует, что T1 также является замкнутым классом, и что он содержит столько же булевых функций, что и класс T0.
Класс самодвойственных функций
Класс S включает в себя все самодвойственные функции, то есть такие функции, для которых выполняется равенство: f(x1,x2,...,xn)=f*(x1,x2,...,xn). Очевидно, что функции x и самодвойственные (см. табл. 1.7). Менее тривиальным примером самодвойственной функции является функция h(x1,x2,x3)=x1x2 x1x3 x2x3. Составив двойственную к h функцию h* и преобразовав h*, легко убедиться, что это так. Для самодвойственной функции имеет место тождество:
f(x1,...,xn); (*)
иначе говоря, на наборах (1,...,n) и , которые называются противоположными, самодвойственная функция принимает противоположные значения.
Навесим отрицания на (*) слева и справа:
f(x1,...,xn); (**)
Отсюда следует, что самодвойственная функция полностью определяется своими значениями на первой половине строк, которых для n переменных будет 0.52n. Поэтому число самодвойственных функций, зависящих от переменных x1,...,xn, равно .
Докажем, что класс S замкнут. Поскольку он содержит тождественную функцию, достаточно показать, что функция Ф=f(f1,...,fm) является самодвойственной, если функции f, f1,..., fm самодвойственны. Последнее устанавливается непосредственно:
Ф* (x1,...,xn) = Ф=f (f1,...,fm) = по (**)
=f (f1 (x1,...,xn),...,fm (x1,...,xn)) = f (f1,...,fm) = по (*)
= f(f1,...,fm) = Ф (x1,...,xn).
Так как функции x и самодвойственные, а функции 0 и 1 самодвойственными не являются, то несамодвойственная функция одного переменного это просто константа.
Лемма 1.1 (о несамодвойственной функции)
Если функция f(x1,...,xn) не принадлежит классу S, то из нее путем подстановки функций x и можно получить несамодвойственную функцию одного переменного, то есть константу.
Так как f(x1,...,xn) S, то найдется хотя бы один набор (1,...,n), такой, что выполняется равенство f=f (1,...,n). Используя этот набор, составим функцию одной переменной (x)=f. Вычислим значение этой функции в нуле:
(0) = f() = f() = f(1,...,n) = f() = (1).
Так как (0)= (1), то (x) это константа.
Пример. Пусть f(x1,x2) = x1 | x2 . Тогда (1,2)=(0,1); (x)=x0|x1=x | x = 1.
Класс монотонных функций
Для двух наборов =(1,...,n) и =(1,..., n), выполнено отношение предшествования , если 11, ..., nn и хотя бы в одной координате i выполнено условие i < i.
Пример. (0, 1, 0, 1) (1, 1, 0, 1), а наборы (0, 1) и (1, 0) не сравнимы.
Функция f(x1,...,xn) называется монотонной, если для любых двух наборов и таких, что , имеет место неравенство: f()f(). Например, функции 0, 1, x, x1x2, x1 x2 монотонные, а функции , x1 x2, x1x2 монотонными не являются.
Обозначим через M множество всех монотонных функций. Покажем, что класс М замкнут. Поскольку тождественная функция принадлежит множеству M, то достаточно показать, что функция Ф=f(f1,...,fm) является монотонной, если функции f, f1,..., fm монотонны.
Пусть и два набора длины n значений переменных x1,...,xn, причем . Так как функции f1,..., fm монотонны, то выполняются соотношения fi()fi() при 1 i m, , поэтому набор (f1(),..., fm()) предшествует набору (f1(),..., fm()) или они совпадают. В обоих случаях в силу монотонности функции f справедливо неравенство:
f (f1(),..., fm()) f (f1(),..., fm()),
откуда следует, что Ф () Ф (), т.е. Ф функция монотонная.
Наборы и называются соседними по i-й координате, если
=(1,..., i1, i, i+1,... n), = (1,..., i1, , i+1,... n).
Лемма 1.2 (о немонотонной функции).
Если функция f(x1,...,xn) не принадлежит классу M, то из нее путем подстановки констант 0 и 1 и функции x можно получить функцию .
Так как f(x1,...,xn) немонотонная функция, то найдутся такие два набора и , что и при этом f()>f(). Если наборы и не являются соседними, то отличается от в t>1 координатах. Так как предшествует , то такое различие означает, что эти t координат в наборе имеют значение 0, а в наборе значение 1. Поставим между наборами и (t1) промежуточных наборов так, чтобы выполнялось отношение предшествования . Наборы, стоящие в этой цепочке рядом, являются соседними. (Например, если =(0, 0, 0), а =(1, 1, 1), то получится цепочка (0, 0, 0) (0, 0, 1) (0, 1, 1) (1, 1, 1)).
Так как f()>f(), то, по крайней мере, на одной из этих пар соседних наборов обозначим их через и () окажется, что f()>f(). Для определенности будем считать, что данные наборы имеют соседство по i-й координате и, следовательно,
=(1,..., i1, 0, i+1,... n), = (1,..., i1, 1, i+1,... n).
Используя эти наборы, составим функцию одной переменной
(х) =f(1,..., i1, x, i+1,... n)
и вычислим ее значения в нуле и единице:
(0) = f(1,..., i1, 0, i+1,... n)= f()>f()=f(1,..., i1, 1, i+1,... n)= (1).
Итак, (0) > (1). Это возможно только в том случае, когда (0)=1, (1)=0, т.е. (х) =.
Пример. Пусть f(x1,x2) = x1 x2 . Тогда =(0,0), =(0,1); (x) = 0 x =x.
Класс L линейных функций содержит функции 0, 1, x, , x1x2 и не содержит функций x1x2 и x1 x2. Выше было показано, что этот класс также замкнут.
Лемма 1.3 (о нелинейной функции).
Если функция f(x1,...,xn) не принадлежит классу L, то из нее путем подстановки констант 0 и 1 и функций x и , а также, быть может, путем навешивания отрицания над f можно получить функцию x1x2.
Составим полином Жегалкина для функции f(x1,...,xn).
Так как f(x1,...,xn) нелинейная функция, в полиноме Жегалкина найдется слагаемое, содержащее не менее двух множителей. Без ограничения общности можно считать, что среди этих множителей присутствуют x1 и x2. Тогда соответствующий полином можно представить в виде:
x1x2g12(x3,...,xn) x1g1(x3,...,xn) x2g2(x3,...,xn) g0(x3,...,xn),
причем в силу единственности полинома g12(x3,...,xn)0. Значит, найдется хотя бы один набор (3,...,n) такой, что g12(3,...,n)=1.
Введем обозначения a= g1(3,...,n), b= g2(3,...,n), c= g0(3,...,n)
и составим вспомогательную функцию 2 переменных: (x1,x2)=f(x1,x2,3,...,n)= x1x2 ax1 bx2 c.
Рассмотрим функцию
(x1,x2)= (x1b, x2a) ab c.
Преобразуем ее с учетом определения функции (x1,x2):
(x1,x2)= (x1b, x2a) ab c=(x1b)(x2a) a(x1b) b(x2a) c ab c=
= = x1x2.
Таким образом, с помощью нелинейной функции удалось построить конъюнкцию (x1,x2)= x1&x2.
Пример. Пусть f(x1, x 2, x3) = x1 x 2 x3 x1 x3 x 2 = x 2 x1 x3.
Тогда (x1,x2) = x1 x 2 x1 x 2. (x1,x2) = x1x2.
Таблица 1.10 |
|||||
f |
T0 |
T1 |
S |
M |
L |
0 |
+ |
|
|
+ |
+ |
1 |
|
+ |
|
+ |
+ |
x |
+ |
+ |
+ |
+ |
+ |
|
|
+ |
|
+ |
|
x1&x2 |
+ |
+ |
|
+ |
|
x1 x2 |
+ |
+ |
|
+ |
|