
- •Учебно-методический комплекс дисциплины сд.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 |
+ |
+ |
|
+ |
|