- В помощь студентам ПМР

advertisement
ПРИДНЕСТРОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
им. Т.Г.Шевченко
ИНЖЕНЕРНО-ТЕХНИЧЕСКИЙ ФАКУЛЬТЕТ
Кафедра «Вычислительные комплексы, машины, системы и сети»
Т.Д. Бордя, В.А. Дружинин, И.А. Васюткина
«Дискретная математика»
(конспект лекций)
Тирасполь 2001
2
Введение
Повышению уровня математической подготовки студентов, специализирующихся
в области вычислительной техники, в последнее время уделяется большое внимание.
Особое значение в этом плане имеет изучение современных разделов математики, таких как
теория множеств, математическая логика, теория графов, теория алгоритмов
и
др.
Указанные разделы в настоящее время принято относить к дискретной математике.
Предлагаемый конспект лекций подготовлен
соответствующей дисциплины, изучаемой студентами
в соответствии
с
программой
ИТФиТК ПГУ. Данный конспект
лекций имеет своей целью дать студентам материал для самостоятельной работы и для
более глубокого усвоения
новых
понятий,
а
также
облегчить
преподавателям
подготовку и проведение занятий.
В данном пособии
рассматриваются основные разделы, относящиеся к теории
множеств, математической логике, алгебре, теории графов, теории алгоритмов и др. Данные
разделы дискретной математики являются методологической основой задач проектирования
вычислительных систем, сетей ЭВМ, подсистем САПР различного функционального
назначения.
Bезде, где возможно, в каждой новой теме используются понятия и термины из
предыдущих тем, материал сопровождается примерами. Разбор и решение примеров на
практических занятиях является составной частью изучения данного курса.
3
Раздел 1. Множества
1.1: Множества и их спецификации
Изложение курса дискретной математики традиционно принято начинать с исходного
неопределяемого понятия множества. Понятие множества описывается перечислением его
свойств. Исходя из этого, можно определить все последующие понятия математически
приемлемым образом. Такой подход необходим, так как любую ошибку можно проследить,
вернуть назад к неправильному предложению где-то в цепочке рассуждений.
Определение1.1: Множество - это совокупность определенных различаемых
объектов, таких, что для любого объекта можно установить, принадлежит этот объект
данному множеству или не принадлежит. Объекты множества называются так же
элементами множества.
Определяемое таким образом множество может содержать объекты почти любой
природы.
Пример:
- множество всех подземных станций метро Москвы;
- множество натуральных чисел: 1, 2, 3,...
- множество кодов операций конкретного компьютера;
- множество зарезервированных слов языка Бейсик;
- множество идентификаторов, встречающихся в определенной программе;
- множество операций в той же самой программе;
- множество операций, которые могут быть выполнены после данной инструкции в
той же программе.
Но эти множества достаточно важны для исследования, поэтому для большинства
примеров будем исследовать некоторые абстрактные множества, такие, например, как
множества чисел.
Условимся множества обозначать большими латинскими буквами A, B, ..... Z, а его
элементы малыми латинскими буквами: а, b, с, ..., z.
Если множество бесконечное, то
используются эти же буквы с индексами.
Множества можно специфицировать (задать) четырьмя способами:
1) Если множество содержит несколько элементов (т.е. конечно), то просто
записываем все его элементы - перечисление элементов.
Пример: Определим множество A как множество целых чисел строго между 6 и 10.
A = {7, 8, 9}. Читается: “Множество A, содержащее целые числа 7, 8, 9 ”
4
2) Множество можно охарактеризовать свойствами элементов:
Пример: A = {x | x Z, 6 < x < 10} Читается: “A есть множество всех x, таких что ...”
3) Задается порождающая процедура, которая описывает способ получения элементов
множества из уже полученных элементов либо из других объектов.
Пример:

2
Множество всех корней уравнения соs x = 0 -
это числа вида
 k  , k  012
, , ...
B данном случае, исходными объектами для построения являются целые числа, а
порождающей процедурой является вычисление, описанное формулой

2
 k . Правила,
описанные таким образом, являются индуктивными или рекурсивными.
4) Образование множеств из других множеств с помощью операций над множествами,
которые рассмотрим ниже.
Множества часто рассматривают как “неупорядоченные совокупности элементов”, и
иногда полезно подчеркнуть, что например {7, 8, 9} = {8, 9, 7} = {9, 8, 7} = ... ; Т.о., мы не
делаем никакой оговорки о порядке, в котором рассматриваются элементы, поэтому было бы
неправильно допускать какой-либо определенный порядок.
Знак принадлежности множеству: 7  A читается: 7 является элементом множества,
принадлежит множеству A. 6 A - 6 не принадлежит множеству A.
Понятие принадлежности не обладает свойством транзитивности, т. е., если аA и
AB, то отсюда не следует, что а B.
A={a, b}
B={{a, b}, b}
aB
Пример: Какие из приведенных определений множества являются правильными?:
1) A={1, 2, 3} - число элементов множества A легко вычисляется, и среди элементов
множества нет повторений. Верно.
2) B={5, 6, 6, 7} - выглядит правильно, но число 6 встречается дважды. Но мы можем
проверить, принадлежит ли элемент множеству или нет. Наиболее важное требование в
определении множества сохраняется. Следовательно, можно рассмотреть эту запись как
верную и эквивалентную {5, 6, 7}. Будем рассматривать повторение символов в определении
множеств как упоминание одного и того же символа, а его дублирование как недосмотр;
удаление
повторяющихся
символов
образует
основу
для
некоторых
дальнейших
математических рассуждений. Но в то же время, если рассматривать элементы множества не
как числа, а их названия (обозначения, имена), то может быть ловушка. Необходима
правильная спецификация рассматриваемых объектов.
5
Х = {“Введение в Паскаль”, ”Основы структурных данных”, “Введение в Паскаль”}.
Что это?
- Множество названий двух книг с одним элементом, случайно записанным
дважды, или это множество трех книг, две из которых имеют одно название? Если верно
последнее, то две книги “Введение в Паскаль” следует каким-то образом разделить. Т.о., из
данной информации нельзя выяснить правильный ответ, необходима осторожность.
3) С={x | xA} - справедливо ,т.к. если xA, то xС и если xA, то xС. Множество
С велико, оно содержит “все”, что не содержит A. “Все” опасно с математической точки
зрения.
4) Д={A, C} - множество множеств (!) - справедливо, содержит два элемента. 1Д,
хотя 1A и AД, 1 A, 1С, только множества A и С являются элементами Д.
5) Е = {x | x =1 или y = {x} и yE} - рекурсивно определяемое множество. Оно
частично определяется в понятиях самого себя. Конструктивный процесс продолжается
бесконечно, поэтому мы должны иметь правило для определения элементов. Мы не можем
записать их явно. Заметим, что Е не определяется полностью в терминах Е. Мы должны
знать о множестве что-то, что не зависит от определения. B данном случае, это то, что 1 Е.
Имеем: 1Е, потому {1}E,
{1}E, потому {{1}} E,
{{1}}E, потому {{{1}}}E и т.д.
Хотя конструктивный процесс неограничен, беря любой элемент и, располагая достаточным
временем, можно определить, содержится ли этот элемент в Е.
6) F={множества, которые не являются элементами самих себя} = {x | x -множество и
xx} - не существует такого множества.
Докажем это от противного. Пусть F - существует. Покажем, что существует особый
элемент y такой, что мы не можем определить yF или yF. Будем использовать само
множество F. Обозначим это множество через G. Если предполагаем, что F искомое
множество, то или GF или GF.
а) GF . Тогда G удовлетворяет условию содержания, т.е. GG и  GF;
б) GF. Тогда G не удовлетворяет условию вхождения в F и, следовательно, GF.
Во всех случаях пришли к противоречию. Поэтому F не может существовать.
Множество множеств может существовать, бесконечно большие множества (U) так же
разрешаются. Но с “множествами всех множеств” нельзя работать в обычной теории
множеств - это требуют другого рода математики. Эта аномалия теории множеств известна
как парадокс Рассела. Если мы уже имеем множество Н, то можно определить T:
T = {x | x H и xx}.
6
Таким образом, будем использовать только множества, которые могут быть явно
записаны или же построены путем хорошо определенных процессов. Множества не так
тривиальны, как может показаться.
1.2: Простейшие операции над множествами. Диаграммы Эйлера – Венна
Как было указано ранее, одним из способов задания множества является получение
его из других с помощью операций над множествами. Пусть даны два множества A и B.
Определение 1.2: Пересечением множеств A и B называется множество всех
элементов, принадлежащих и A и B (Рис.1.1)
AB =  x | x  A и x B
Данное определение можно обобщить для n множеств.
A1 A2 ... An= x | x  A1, x A2, ... , x  An=x | x  Ai , i = 1, 2,..., n }
Рис. 1.1. Пересечение множеств.
Для графического изображения результатов операций над множествами служат
диаграммы Эйлера - Венна.
Определение 1.3:
Пустое множество (обозначается ) есть множество,
обладающее свойством: x для любого элемента x.
Определение 1.4: Два множества A и B не пересекаются, если AB=.
Определение 1.5: Объединением множеств A и B называется множество, элементы
которого принадлежат хотя бы одному из множеств A или B или обоим одновременно
(Рис.1.2).
AB= x | x  A или x B
Данное определение можно обобщить для n множеств:
A1A2... An= x | x  A1 или x A2 или ... или x  An ={x |  Ai, x  Ai ,
i=1,2,...,n}
7
Рис.1.2. Объединение множеств.
Определение пересечения и объединения множеств выводится из слов “и” и “или”, и,
как следствие, мы имеем AB=BA, AB=BA и, что менее очевидно, AA=A, AA=A.
Пример:
A = {1, 2, 3, 4}, B = {1, 2, a, b}
AB = {1, 2, 3, 4, a, b}
AB = {1, 2}
Определение 1.6: Разностью множеств A и B (также называемой дополнением B до
А) называется множество, элементы которого принадлежат A и не принадлежат B (Рис.1.3).
A\B=A-B= {x | x  A и x  B}
Рис.1.3. Разность множеств.
Замечание 1.1:
aAB  a A или а B
aAB  a A и а B
a A\B  a A или а B
Следующее
определение
включено
для
полноты.
Его
редко
используют
непосредственно, но этот оператор имеет большое значение в машинной арифметике.
Определение 1.7: Симметрической разностью множеств A и B называется
множество, которое равно AB=(AB)\ (AB) = (A\ B) (B\ A) (Рис.1.4)
Для симметрической разности имеет место свойство ассоциативности:
(A  B) С=A  (B  С)
8
Рис.1.4. Симметрическая разность множеств.
Пример: Пусть мы имеем две программы P и Q, и A - множество всех данных, доступных P.
B- множество всех данных, доступных Q. Тогда :
AB - множество всех данных, доступных P и Q.
AB - множество всех данных, доступных, по крайней мере, P или Q.
A\B - множество всех данных, доступных P, но не доступных Q.
AB - множество всех данных, доступных только одной из программ P или Q.
Следующее множество, которое мы рассмотрим, зависит от решаемой задачи. Его
называют универсальным.
Определение
1.8:
Универсальное
множество
U
есть
множество
всех
рассматриваемых в задаче элементов.
Рис.1.5. Дополнение множества до универсального
Определение 1.9: B каждом случае, когда U задано, определим дополнение
множества A до универсального как A’= A = U\ A={x | x  U, x  A} (Рис.1.5)
Из определений , U, A’ следует справедливость тождеств:
A A’ = U
A A’= 
Замечание 1.2: Относительно данного множества U дополнение любого множества A
до универсального A’ единственно.
Чтобы доказать это, предполагают, что существуют
два таких объекта, а затем
доказывают, что они совпадают.
Пример: Пусть U={1, 2, 3, 4}, A={1, 3, 4}, B={2, 3}, C={1, 4}. Легко найти A’, BС.
Но может понадобиться вычислить и более сложные выражения, включающие несколько
9
операций. Встает вопрос, как определить порядок вычислений. Приоритет операций над
множествами следующий:
1) в скобках
2) ’ (дополнение)
3) , , \, 
Вычислить выражение
(A’  (B  С))’. Тогда
(A’(BС))’=(({1,2,3,4}\{1,3,4})({2,3}{1,4}))’=({2})’=({2})’={1,2,3,4}\{2}={1,3,4}.
Рассмотрим теперь множество A= {1, 2,... ,n} = {x | x N, 1 x N}.Оно имеет n
элементов. Будем говорить, что мощность (или размер, норма, длина) этого множества n.
|A| = card (A) = n.
Далее, множество B, которое имеет то же число элементов, что и A, имеет такую же
мощность. Для небольших множеств достаточно легко пересчитать элементы, но для других
множеств (например, N - множество натуральных чисел) это может быть невозможно. Дадим
строгое, но неформальное правило для вычисления количества элементов.
Определение 1.10 : Говорят, что Х конечно, если Х= или, если для некоторого n N
{1, 2,...,n} такое, что оно имеет такое же самое число элементов, что и Х. Если Х   и
никакого n не может быть найдено, то Х называется бесконечным.
1.3: Подмножества и доказательства. Свойства операций над множествами
Операции , , \, ’ позволяют формировать новые множества. Но мы не можем
сказать, как эти множества будут соотноситься друг с другом. Например, даны множества Х
и Y. XY в некотором смысле “меньше” (уже не больше), чем Х. Все элементы множества
XY принадлежат множеству Х. Из этого
наблюдения можно формально определить
равенство множеств и различных выражений.
Определение 1.11: Пусть множества A и B таковы, что из того, что xA следует, что
xB. Тогда говорят, что A есть подмножество B и обозначается AB или B A (рис.1.6.)
В
.x
А
Рис.1.6.
10
Определение 1.12: Если AB и существует элемент yB такой, что yA, то A
называется собственным подмножеством B (Рис.1.7.). Обозначается A  B или B  A
Это означает, что в некотором смысле. B “больше”, чем A.
В
.y
.x
А
Рис.1.7.
B обоих случаях B называют еще надмножество (собственное надмножество) A.
Очевидно, что для A справедливо: A A, AU, A (Пустое множество является
подмножеством любого множества).
Определение 1.13: Множества A и B эквивалентны A=B, если A B, BA. Т.е. все
элементы A являются элементами B, а все элементы B - элементами A.
Определение 1.14: Два множества A и B неэквивалентны, если они не эквивалентны
или, что равносильно тому A\ B   или B\A  .
Свойства операций над множествами
A  A  A
 Идемпотентный закон.
A  A  A
(1.1)
(A  B)  C  A  (B  C)
 Ассоциативный закон.
(A  B)  C  A  (B  C)
(1.2)
A  (B  C)  (A  B)  (A  C) 
 Дистрибутивный закон.
A  (B  C)  (A  B)  (A  C)
(1.3)
A  B  B  A
 Коммутативный закон.
A  B  B  A
(1.4)
A  (A  B)  A 
 Закон поглощения.
A  (A  B)  A 
(1.5)
(A  B)  A   B
 Закон де Моргана для множеств.
(A  B)  A   B
(1.6)
(A )  A
(1.7)
AU  U
AU  A
Закон двойного отрицания
A   A
A   
A  A  
A  A  U
(1.8)
11
Все эти тождества доказываются взаимным включением, т.е., например, чтобы
доказать, что ( A  B)  A  B  надо доказать, что ( A  B)  A  B , A  B   ( A  B) .
Возникает вопрос, почему следует заботиться о доказательствах в компьютерной
науке. Мы должны доказать что-либо только один раз. Затем мы исходим из того, что эта
часть информации является правильной и, следовательно, может рассматриваться как факт.
Т.к. зачастую важен и сам метод и результат. После анализа доказательства становятся
понятными предположения и последствия, процессы вывода, которые можно использовать
при решении других задач. Кроме того, доказательства теории формируют основу всех
решающихся автоматически задач.
Пример: Доказать равенство: A  ( B  C )  ( A  B )  ( A  C ) .
1. Докажем, что A  ( B  C )  ( A  B)  ( A  C ) .
Пусть x  A  ( B  C )  x  A и x  B  C  x  A и ( x  B или x  C )  ( x  A и x  B)
x  A и x  C   x  A  B или x  A  C  
или
x  (A  B)  (A  C)
т.е. A  ( B  C )  ( A  B)  ( A  C )
2. Докажем, что ( A  B)  ( A  C )  A  ( B  C ) . Пусть
x  ( A  B)  ( A  C )  x  ( A  B) или x  ( A  C )  ( x  A и x  B) или
(x  A и x  C)  x  A и (x  B или x  C)  x  A  (B  C)
(A  B)  (A  C)  A  (B  C)
Из 1. и 2. следует, что A  (B  C)  ( A  B)  ( A  C)
ч. т.д.
Определение 1.15: Множество всех подмножеств данного множества Х называется
степенью множества Х.
P(X) = {Y | Y  X}.
Т.к.   Х и Х  Х, то Р(Х), ХР(Х).
Замечание 1.3: Если |X| = n, то | P(X) | = 2 n
Пример: Х={1, 2}, |X| = 2, P(X)={{1},{2},{1,2}, }, |P(X)|=22=4.
1.4: Произведение множеств
До сих пор строили из существующих множеств множества меньшего размера.
Рассмотрим способ конструирования больших множеств.
Определение 1.16:
Обозначим упорядоченную последовательность из n элементов
x1, x2, ... ,xn через (x1, x2, ... ,xn ) Будем называть такую последовательность набором длины n.
Набор длины 2 называется парой.
12
Следует различать множество 2-х элементов и упорядоченную пару:
{2, 3}={3, 2}, но (2, 3)(3, 2).
(a, b)=(c, d)a=c и b=d.
Пусть даны n множеств A1, A2, .... An.
Определение 1.17: Прямым произведением n множеств A1, A2, .... An, называется
множество всевозможных упорядоченных наборов вида (x1, x2, ... ,xn ) из n элементов таких,
что х1A1, x2A2,...,xnAn.
n
A
 ...
A  An
 A i  A i  A 2  ...  A n  ( x1 , x 2 ,...x n ) | x i  A i , i  1,2,...n  A



i 1
n раз
Пример:
1. Шахматная доска представляет собой игровое поле из клеток, в котором столбцы
обозначены латинскими буквами, а строки - цифрами.
Пусть F = {a, b,..., h}- cтолбцы, R = {1, 2,... 8}- cтроки, Тогда a1, f7, e3 и др. - клетки
шахматной доски - это элементы произведения множеств FR.
2. RR=R2 - множество всех точек плоскости с координатами (x, y), x, y  R.
3. A={1,2,3}, B={a,b}, AB={(1,a),(1,b),(2,a),(2,b),(3,a),(3,b)}.
Теорема 1.1: Пусть A1, A2, .... An - конечные множества |A1|=m1, ..., |An|=mn. Тогда мощность
n
множества:
A
i
 m1 m2 ...mn .
i 1
Следствие: |An| = |A|n.
13
Раздел 2. Отношения
2.1: Основные понятия
Определение 2.1:
Любое подмножество  прямого произведения A1A2....An
называется n-местным (n-арным) отношением, определенным на множествах A1, A2, .... An.
 A1 A2 ...An .
Другими
словами
элементы
отношением  тогда и только тогда,
x1,x2,...,xn
когда (x1,
(где х1A1, х2A2,...,хnAn) связаны
x 2,
..., xn ) . (x1,
x 2,
..., xn ) -
упорядоченный набор из n элементов.
Отношения, хотя и являются множествами, принято обозначать малыми буквами
греческого алфавита , , , ..., , .
Определение 2.2:
Любое подмножество  прямого произведения
A1A2
называется бинарным отношением, определенным на множествах A1 и A2.
Часто используют следующие обозначения:
1. (a,b), т.е. a и b находятся в отношении .
2. ab, т.е. a связано с b отношением .
3. b(a), (a)=b.
Рассмотрим частный случай, когда A1 = A2 = A, тогда AA=A2={(а,b)| a, bA}
A
A
 ...
A




=An = {(a1, a2, ..., an ) | aiA, i=1n},
n раз
A1=A.
Т.о. будем иметь,
что любое подмножество A2 определяет отношение на A.
Очевидно, что =, =A2 также являются бинарными отношениями.
Пример:
A={1, 2, 3} A2= {(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)}
={(1, 1), (3, 2), (2, 3)}  A2
={(1, 1), (3, 2), (1, 4)}  A -  не является бинарным отношением на A.
Аналогично определяется тернарное отношение, определенное на множестве A, а
именно   A3=A  A  A.
Пример:
1) Пусть A = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}. Тогда
={(x, y)}| x, yA, x-делитель y, х 5} может быть записано в частном виде
14
={(1,1), (1,2), (1,3), (1,4), (1,5), (1,6), (1,7), (1,8), (1,9), (1,10), (2,2), (2,4), (2,6), (2,8), (2,10),
(3,3), (3,6), (3,9), (4,4), (4,8), (5,5), (5,10)}
2) R-множество действительных чисел.  R2=R  R.
={(x, y) | x, y R, x<y},
(1, 2)   ,
(2, 1)   т.к. x > y.
3) Шахматы. Пусть F = {a, b, c, d, e, f, g, h}, R={1, 2, 3, 4, 5, 6, 7, 8} и S=FR множество всех клеток обозначаемых парами (x,y), где xF, yR. Определим бинарное
отношение  для ладьи на S т.о., что клетка (s,t) S тогда и только тогда, когда, s и t
элементы S, s,tS и ладья может пройти от s к t одним ходом на пустой доске. (Ладья может
изменять либо горизонтальную, либо вертикальную координату, но не обе одновременно).
Поэтому,   S  S
и  = {(fs, rs), (ft, rt)) | (fs=ft и rsrt) или (fs ft и rs=rt)}.
Для бинарных отношений можно использовать любые способы задания множеств,
например,
список пар,
для которых данное отношение выполняется. Отношения на
конечных множествах обычно задаются списком или матрицей.
Матрица бинарных отношения  на множестве М={a1,...,am} - это квадратная матрица
C порядка m, в которой элемент сij, стоящий на пересечении i-ой строки и j-го столбца,
определяется следующим образом:
1, если (a i , a j )   ,
C ij  
0, если (a i , a j )  
Пример: M={1, 2, 3, 4, 5, 6},   M2=M  M.
1.  = {(a, b)| a, b M и a  b}
1 2 3 4 5 6
1 1 1 1 1 1 1
2 0 1 1 1 1 1
3 0 0 1 1 1 1
4 0 0 0 1 1 1
5 0 0 0 0 1 1
6 0 0 0 0 0 1
2.  = {(a, b)| a, b M и a и b имеют общий делитель}
1
2
3
4
5
6
1
1
1
1
1
1
1
2
1
1
0
1
0
1
3
1
0
1
0
0
1
4
1
1
0
1
0
0
5
1
0
0
1
1
0
6
1
1
1
1
1
1
3.  = {(a, b)| a, b M и a - делитель b}
15
1
2
3
4
5
6
1
1
1
1
1
1
1
2
1
1
0
0
0
0
3
1
0
1
0
0
0
4
1
1
0
1
0
0
5
1
0
0
0
1
0
6
1
1
1
0
0
1
Так как отношения на М задаются подмножествами М2, то для них можно определить
те же операции, что и над множествами.
Рассмотрим еще три отношения, которые полезны при рассмотрении множеств.
Определение 2.3: Для любого множества A определим тождественное отношение
A и универсальное отношение A следующим образом:
A = {(a, a) |  a A},
A = {(a, b) |  aA, bA}.
Таким образом, A = A2
Т. к.   A2, то  является отношением на A и называется пустым отношением.
Пусть А={1, 2, 3, 4}. Матрица смежности тождественного, универсального и пустого
отношений, определенных на множестве A, будут иметь соответственно вид:
1) матрица
1
2
3
4
тождественного отношения:
1
1
0
0
0
2
0
1
0
0
3
0
0
1
0
4
0
0
0
1
2) матрица универсального отношения:
1 2 3 4
1 1 1 1 1
м
2 1 1 1 1
3 1 1 1 1
ат
4 1 1 1 1
р
3) матрица
и пустого отношения:
ца
1
2у
3
н
4
1
0
0
0
0
2
0
0
0
0
3
0
0
0
0
4
0
0
0
0
и
ве
рс
Пусть отношение  определено в соответствии с изображением на рисунке 2.1.
ал
ьн
ог
о
16
В
А
Элементы A,
не включаемые в 
Элементы A и B,
включаемые в 
Элементы В,
не включаемые в 
Рис.2.1. Бинарное отношение .
Рассмотрим элементы множеств A и В, находящиеся в отношении . Они имеют
специальные названия.
Определение 2.4:
множествах A и B,
Свяжем с каждым бинарным отношением , определенным на
  A B,
два множества - область определения D() и область
значений R(). Они определяются следующим образом.
D() = {x| (x, y)},
R() = {у| (x, y) }.
Пример : A = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
 = {(x, y) | x, yA, х - делитель y, x  5}.
Тогда: D() = {1, 2, 3, 4, 5}, R(  ) = A.
Пример: Предположим, что мы имеем некоторую программу, она читает два числа из
множества A = {1, 2, 3, 4, 5}, обозначенных x и y, и если х < y, печатает число z (так же
из A) такое, что х  z < y. В любом случае программа останавливается после считывания
всех чисел из A. Задача определяет отношение A2A такое, что ={((x,y),z)|x<y,xz<y}. Не
все входные данные приводят к выдаче результата. Поэтому область определения
отношения  не совпадает с A2 . Ясно, что
 = {((1,2),1), ((1,3),1), ((1,3),2), ((1,4),1), ((1,4),2), ((1,4),3), ((1,5),1), ((1,5),1), ((1,5),2), ((1,5),3),
((1,5),4), ((2,3),2), ((2,4),2), ((2,4),3), ((2,5),2), ((2,5),3), ((2,5),4), ((3,4),3), ((3,5),3), ((3,5),3),
((3,5),4), ((4,5),4)}.
D() = {(1,2), (1,3), (1,4), (1,5), (2,3), (2,4), (2,5), (3,4), (3,5), (4,5)},
R() = {1, 2, 3, 4}.
Определение 2.5: Пусть  - бинарное отношение. Определим обратное отношение
- 1 cледующим образом: - 1= {(x, y) | (y, x) }.
17
Таким образом, -1 связывает те же пары элементов, что и , но “в другом порядке”.
Следовательно,
если -1BA,
то D(-1)=R() и R(-1)=D(). В дальнейшем будем
записывать без скобок D и R.
2.2: Свойства бинарных отношений
Определение 2.6: Пусть  - бинарное отношение на множестве A. Тогда:
а)  - рефлексивно, если (х,х) для х.
(главная диагональ матрицы содержит только единицы)
б)  - антирефлексивно, если (х,х) х   .
(главная диагональ матрицы содержит только нули)
в)  - симметрично, если из того, что (х,y) следует, что (y,x).
( =- 1 матрица отношения симметрична относительно главной диагонали)
г)  - антисимметрично, если из того, что (х,y) и (y,x) следует, что x=y .
Замечание: Отношение  антисимметрично тогда и только тогда, когда из того, что
((x,y) и xy)(x,y).
д)  - транзитивно, если из того, что (х,y) и (y,z) следует, что (х,z)
Замечание:
Антисимметричность
есть
следствие
антирефлексивности
и
транзитивности.
Пример:  = {(x,y)| x, yN и y x т.е. x - делитель y}
а) рефлексивно, т.к. х  х  х N
б) несимметрично, т.к. 2 - делитель 4, но 4 не является делителем 2.
в) транзитивно, т.к., если y  x и z  y, то z  x
г) антисимметрично, т.к. если x  y и y x, то x=y.
Замечание: Если отношение рефлексивно,
отношение антирефлексивно,
то оно не антирефлексивно. Если
то оно не рефлексивно. Отношение может быть ни
рефлексивным, ни антирефлексивным. Свойства симметричности и антисимметричности не
являются взаимоисключающими. Для  множества A отношение A является симметричным
и антисимметричным. Можем так же иметь отношения,
которые не являются ни
симметричными, ни антисимметричными.
Пример: P- множество всех людей. ={(x,y)| x,yP, x является братом y}.
18
Пусть в семье два брата p и q и сестра r. Зададим бинарное отношение в виде графа
(Рис.2.2).
p
 несимметрично т.к. (p, r), но (r, p)
q
 не антисимметрично (p, q), и (q, p), но q  p.
r
Рис.2.2. Пример бинарного отношения.
Если отношение задано в виде графа, то свойства можно сформулировать следующим
образом:
a) отношение рефлексивно тогда и только тогда,
когда для каждого узла (точки) на
диаграмме существует стрелка, которая начинается и заканчивается в этом узле (петля).
б) отношение симметрично тогда и только тогда, когда для каждой стрелки, соединяющей
два узла, существует также стрелка, соединяющая эти узлы в обратном направлении.
в) отношение транзитивно тогда и только тогда,
когда для каждой пары узлов x и y,
связанных последовательностью стрелок от x к a1, от а1 к а2, ..., от а
n-1
к аn, от an к y,
существует так же стрелка от x к y;
г) отношение антисимметрично тогда и только тогда, когда не существует двух различных
узлов, связанных парой стрелок.
Определение 2.7: Для  отношения  отношение
замыканием ,
̂ ,
определяется следующим образом: (а, b)
называемое транзитивным
̂ ,
если во множестве A
существует цепочка из n элементов а = а1, а2, ..., а n-1, an = b, в котором между соседними
элементами выполнено : (a,a2), (a2,a3) ,...,(a n-1, b). Если  транзитивно, то
̂ =.
Транзитивным замыканием отношения “быть сыном” является отношение “быть
прямым потомком”, являющееся объединением отношений “быть сыном” и “быть внуком”,
“быть правнуком “ и т.д. Транзитивным замыканием отношения “ иметь общую стену” для
жильцов дома является отношение “жить на одном этаже”.
2.3: Операции над бинарными отношениями
Пусть A,
A2 = A  A и ,
определенные на множестве A .
,
,
 A2 - некоторые бинарные отношения,
A2 = AA=(x,y)| x, yA}.
Операции над бинарными отношениями:
19
1) {(x,y)|(x,y) или (x,y)}
2) {(x,y)|(x,y) и (x,y)}
3) \{(x,y)|(x,y) и (x,y)}
4) {(x,y)|(x,y)  и (x,y)A2}
5) -1{(x,y)|(y,x) }
6) ={(x,y)|z(x,z) и(z,y)}- произведение отношений  и 
Относительно введенных операций имеют место следующие свойства:
1) 
2) 
3)  
4)  
5) 
6)  
7) (=
8) () =
Связь между опреациями над отношениями и свойствами отношений.
1) Объединение и пересечение двух рефлексивных отношений на множестве А
рефлексивно.
2) Объединение и пересечение двух симметричных отношений на множестве А
симметрично.
3) Объединение и пересечение двух антирефлексивных отношений на множестве А
антирефлексивно.
4) При любом отношении  на множестве А отношение -1 и -1 симметричны.
5) Объединение двух антисимметричных отношений на множестве А может не быть
антисимметрично, пересечение двух антисимметричных отношений на множестве А
антисимметрично.
6) Объединение двух транзитивных отношений на множестве А может не быть
транзитивно, пересечение двух транзитивных отношений на множестве А транзитивно.
2.4: Разбиения и отношения эквивалентности
20
Во многих вычислительных задачах берутся большие множества и разбиваются таким
образом, чтобы все интересующие нас ситуации можно было исследовать на нескольких
правильно выбранных примерах. Например, один из путей получения качественной оценки
характеристик языка программирования - это посмотреть конкретные программы,
написанные на этом языке. Но каждый язык (С, Паскаль и т.п.) порождает бесконечно много
программ, и, следовательно, мы должны выбирать программы так, чтобы они правильно
отражали достоинства и недостатки языка. Чтобы быть более конкретными, в дальнейшем
будем предполагать, что язык имеет три основные управляющие структуры и четыре метода
доступа, и более у него нет никаких особых свойств. Мы могли бы в качестве примера взять
семь программ, каждая из которых включает только одну характеристику языка, хотя,
вообще говоря,
каждая программа может использовать более чем одну характеристику
языка. Исследование этих программ тогда могло бы покрыть большую часть свойств языка.
Математически это можно определить следующим образом:
Определение 2.8: Пусть A - непустое множество и {Ai} - cовокупность подмножеств
Ai (i=1, 2, ..., n, n  N) таких, что Ai  A,
n
 Ai  A . Совокупность таких подмножеств
I 1
называется покрытием A.
Пример: {A, B} - покрытие AB
{A, AB, B, C} - покрытие ABС.
Используя понятие покрытия, можно обеспечить, чтобы ни одно из свойств не было
пропущено,
т.к. каждый элемент включен по крайней мере в одно из подмножеств
покрытия. Но в общем случае могут быть случаи дублирования. Если в дальнейшем
потребовать, чтобы элементы покрытия попарно не пересекались, то дублирования не
будет. Отсюда вытекает понятие разбиения.
Определение 2.9: Пусть A - непустое множество и {Ai} - cовокупность подмножеств
Ai (i=1,
2,
...,
n,
n 
N) таких,
что
Ai  A,
n
 Ai  A
и A i  A j  , i  j .
I 1
Совокупность таких подмножеств называется разбиением множества A.
Пример:
1){ A \ B, A  B, B \ A} - разбиение AB.
2){ A, A} - разбиение U.
3){ A  B, A  B , A  B, A  B } - разбиение Е.(Рис.2.3)
21
1)
2)
3)
A
A\B
AB
B\A
A
B
AB’
A
A’B
AB
A’B’
Рис.2.3. Разбиение множеств.
Разбиение определяется однозначно,
и части разбиения порождают
особый род
отношения, называемый отношением эквивалентными. Эти отношения ведут себя подобно
отношению “=“ между числами или множествами. Выделяя основные свойства равенства,
приходим к следующему определению:
Определение 2.10: Бинарное отношение на множестве А называется отношением
эквивалентности, если оно рефлексивно, симметрично и транзитивно.
Пример:
1) Пусть дано множество всех треугольников. Отношение ={(x,y)|x,y имеют
одинаковую площадь}, является тривиальным отношением эквивалентности.
2) Рассмотрим множество всех программ. Рассмотрим отношение  ={(x,y)|x,y вычисляют одну и ту же функцию на определенной машине} -
тоже отношение
эквивалентности.
Т. о., мы рассматриваем более простые способы создания больших множеств,
разбивая их на мелкие части, чем если бы в качестве этих частей брали элементы множества.
Некоторый общий способ задания отношения эквивалентности на произведении
множестве связан с разбиением множества на подмножества - (классы).
Пример:
1) A={1, 2, 3, 4, 5}, A1={1, 2}, A2={3, 5), A3={4} - {A1, A2, A3} разбиение
множества A.
2) Z1- нечетные числа, Z2- четные числа, Z3 = {0}. {Z1, Z2, Z3} - разбиение
множества Z.
Мощность этого множества называется индексом разбиения В данном примере он
равен 3.
Определение 2.11: Пусть -отношение эквивалентности на множестве A. Определим
класс эквивалентности [x] для хA как [x]={y|(х, y)}, такой что:
1) любые 2 элемента одного и того же класса эквивалентны друг другу;
22
2)никакие два элемента разных классов не эквивалентны между собой.
Т.о., [x]- множество всех элементов A, которые  - эквивалентны х.
Теперь,
вместо проверки всего множества мы можем любым способом выбрать
представителей по одному из каждого класса эквивалентности, что упрощает вычисления.
В вычислениях отношения эквивалентности представляют особый интерес, так как
они ассоциируются с различными программами, дающими один и тот же результат, или
приводящими к одной и той же обработке данных, или же представляющими одну и ту же
информацию о различных эквивалентных структурах данных.
Наиболее известное отношение эквивалентности связано с дробями. Рассмотрим
множество ZN,
тогда пару (a,b) из этого множества можно рассмотреть как дробь
a
.
b
Определим отношение эквивалентности на Z  N следующим образом: (a, b)  (c, d) тогда и
только тогда, когда ad = bc. Множество всех классов эквивалентности, определяемых этим
отношением на Z  N, называются рациональными числами (Q). Обычно выбирают тех
представителей классов, у которых самые малые a и b.
[
1
1 2 3 4
]={ , , , ,...}
2
2 4 6 8
1
1 2
[ ]={ , , , ...}
3
3 6
………
Утверждение 2.1: Пусть  - отношение эквивалентности на множестве A. Тогда:
1) если xА, то x[x];
2) Если x, yА и(x, y), то [x]=[y] (т.е. класс эквивалентности порождается любым своим
элементом).
Для доказательства 1) достаточно воспользоваться рефлексивностью отношения :
(x, x) и, следовательно, x[x]. Докажем 2). Пусть z [y]. Тогда (y, z)  и в силу
транзитивности отношения  (x, z) , т.е z[x]. Отсюда [y][x]. Аналогично в силу
симметричности  можно показать, что [x][y], а значит, [x]=[y].
Теорема 2.1: Каждому разбиению множества A на классы соответствует некоторое
отношение эквивалентности и наоборот, каждое отношение эквивалентности  определяет
разбиение множества A на классы эквивалентности относительно этого отношения.
Доказательство: Докажем прямую теорему. Рефлексивность и симметричность 
очевидны. Пусть теперь (x,y) и (y,z). Тогда x,yА1,
y,zА2,
где А1,
A2 –
23
подмножества из разбиения A. Так как y A1 и yA2, то A1 = A2. Следовательно, x, z A1 и
(x, z).
Докажем теперь обратное, что совокупность классов эквивалентности определяет
разбиение множества A. В силу утверждения 2.1. x[x], а следовательно, каждый элемент
множества A принадлежит некоторому классу эквивалентности. Из утверждения 2.1.
вытекает, что два класса эквивалентности либо не пересекаются, либо совпадают.
Пример: 1) A={1, 2, 3, 4, 5, 6}. Пусть дано разбиение A1={1,2}, A2={3}, A3={4,5,6}.
1. A1, A2, A3  
2. A1 A2= , A1 A3=, A2 A3=
3. A1 A2 A3=A
Строим :
 = {(1, 1), (2, 2), (1, 2), (2, 1),
(3, 3),
(4, 4), (5, 5), (6, 6), (4, 5), (4, 6), (5, 4), (5, 6), (6, 4), (6, 5)}
2) Дано , строим разбиение:
K1={xA| (x, 1) }={1, 2},
K2={xA| (x, 3) }={3},
K3={xA| (x, 4) }={4, 5, 6}.
Матрица смежности бинарного отношения
перестановки строк может быть приведена к виду,
эквивалентности
в результате
где около главной диагонали
расположены подматрицы, состоящие из единиц, остальные элементы матрицы равны нулю
(Рис.2.4):
1
. . .
... 1 1 . . .
... 1 1 . . .
. . .1 1 1 ...
. . .1 1 1 ...
. . .1 1 1 . ..
.
.
. 1
Рис.2.4. Матрица смежности отношения эквивалентности.
Совокупность классов эквивалентности множества X по отношению эквивалентности
 называется фактор-множеством множества X по отношению  и обозначается X/.
24
2.5: Отношение порядка
Определение 2.12: Бинарное отношение
, определенное
на множестве
A,
называется отношением предпорядка, если оно рефлексивно и транзитивно.
Определение 2.13: Бинарное отношение , определенное на множестве A, называется
отношением порядка, если оно транзитивно и антисимметрично.
Определение 2.14: Отношение порядка , определенное на множестве A, называется
строгим, если  антирефлекcивно.
Определение 2.15: Отношение порядка , определенное на множестве A, называется
нестрогим если  рефлекcивно.
Определение 2.16: Элементы x и y сравнимы по отношению порядка ,
если
выполняется (x, y) или (y, x) . В противном случае элементы x и y не сравнимы.
Определение 2.17: Множество A, на котором задано отношение порядка, называется
полностью упорядоченным,
если любые два элемента x, yA сравнимы,
и частично
упорядоченным в противном случае.
Определение 2.18: Частичный порядок на множестве A называется линейным, если
любые два элемента из множества сравнимы:
x, y  A,
x  y или y  x.
Определение 2.19: Множество A с заданным на нем частичным или линейным
порядком называется частично или линейно упорядоченным.
Определение 2.20: Подмножество Y частично упорядоченного
множества Х
называется цепью в Х, если оно частично упорядоченно тем же отношением.
Пример:
а) Отношение  и  для чисел является отношением нестрогого порядка.  и  строгого. Оба отношения полностью упорядочивают множества N и R.
б) Отношение подчиненности на предприятии задает строгий
порядок. В нем
несравнимыми являются сотрудники разных отделов.
в) Определим отношение  и  на Rn следующим образом:
(а1,...,an)(b1,...,bn), если а1  b1, ..., an  bn ; (a1,...,an)(b1,...,bn), если (а1,...,a n) (b1,...,bn) и
хотя бы в одной координате i выполнено ai<bi. Эти отношения определяют частичный
порядок на Rn.
(5, 1/2, -3) < (5, 2/3, 3);
(5, 1/2, -3)
(5, 0, 0)
не сравнимы.
25
г) На множестве подмножеств М отношение включения  задает нестрогий
частичный порядок. Например, {1, 2}  {1, 2, 3}; Множества {1, 2} и {1, 3, 4}
не
сравнимы.
д) Пусть в списке букв конечного алфавита A порядок букв зафиксирован, т. е. всегда
один и тот же, как, например, в русском или латинском алфавите. Тогда этот список
определяет полное упорядочение букв, которое называется отношением предшествования
и обозначается  (ai  a
если ai предшествует a
j,
j
в списке букв). На основе отношения
предшествовали букв строится отношение предшествования слов, определяемое следующим
образом: Пусть даны слова 1 = a 11a 12...a
1m
и 2 = a 21a 22...a
2m
(слова одной длины m)
Тогда 1  2, если и только если либо
1) 1= аi , 2= аj 
и аi  aj (, ,  - некоторые слова, возможно пустые, аi, aj -
буквы) либо
2) 2=1, где - непустое слово. Это отношение задает полное упорядочение множества
всех конечных слов в алфавите A,
которое называется лексико-графическим
упорядочением слов.
1. Наиболее известным примером лексико-графического упорядочения является
упорядочение слов в словарях. Например, лес  лето (случай 1 определяется =ле, с  т, пусто, =0) поэтому слово “лес” расположено в словаре раньше слова “лето”, лес  лето.
2. Если рассмотреть числа в позиционных системах счисления (например в двоичной
или десятиричной) как слова в алфавите цифр, то их лексико-графическое упорядочение
совпадает с обычным, если все сравнимые числа имеют одинаковое количество разрядов. В
общем же случае эти два вида упорядочения могут не совпадать: например 10  1073 и
20  1073,
но 10< 1073,
а
20>1073. Чтобы они совпадали нужно выравнивать число
разрядов у всех сравниваемых чисел, приписывая с лева нули. Получим 0020<1073. Такое
выравнивание чисел автоматически происходит при записи целых чисел в ЭВМ.
3. Лексико-графическое упорядочение цифровых представлений дат вида 05.08.86.(5
августа 1986) не совпадает с естественным упорядочением дат от ранних к поздним:
например,
05.08.86 лексико-графически “старше” третьего числа любого года. Чтобы
возрастание дат совпадало с лексико-графическим упорядочением, обычное представление
надо “перевернуть”, т.е. слева направо 86. 08. 05. Так делают при представлении дат в ЭВМ.
Определение 2.21: Рассмотрим конечное множество A   . Говорят, что элемент y
покрывает элемент х, если xy и
x<y и не существует uA, такого что x<u<y.
Любое множество с заданным на нем отношением порядка можно представить в виде
графа,
в котором каждый элемент изображается в виде вершины,
и если элемент y
26
покрывает x, то x и y соединяются дугой, причем вершина соответствующая элементу х
располагается ниже y, такие графы называется диаграммами Хассе.
Пример: Рассмотрим три отношения частичного порядка,
и для них диаграммы
Хассе.
1) А = {1, 2, 3}, Р(А) = {, {1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2, 3}}
На множестве Р(А) рассмотрим отношение быть подмножеством (которое является
отношением частичного порядка).
Для данного отношения частичного порядка построим диаграмму Хассе:
{1,2,3}
{2,3}
{1,3}
{1,2}
{2}
{3}
{1}
{}
2)A = {1, 2, 3, 5, 610, 15, 30}
Рассмотрим отношение частичного порядка x  y  y  x
30
6
10
2
5
1
3) Множество Х = {1, 2, 3, 4, 5, 6, 7, 8}
Рассмотрим отношение частичного порядка .
8
7
6
5
4
3
2
1
15
3
27
Диаграммы первых 2-ух отношений совпадают,
это означает,
упорядоченные множества имеют одинаковую структуру,
что эти частично
отличную от структуры 3-го
множества, хотя оно тоже содержит 8 элементов.
Более точно такая общность структуры определяется понятием изоморфизма, точное
математическое понятие которого рассмотрим далее.
Таким образом, частично упорядоченные множества в примерах 1) и 2) являются
изоморфными.
Утверждение 2.2: Всякое частично упорядоченное множество Х изоморфно
некоторой системе подмножеств множества Х, частично упорядоченного отношением
включения.
2.6: Составные отношения
Часто приходится связывать бинарные отношения друг с другом.
Определение 2.22: Пусть заданы множества A, B, С и отношения  между A и B и 
между B и С. Определим отношение между A и С следующим образом, оно действует из A в
B посредством , а затем из B в С посредством . Такое отношение называют составным и
обозначают   , т.е. (  )(а)=  ((а))
Следовательно,    ={(x, y) |  zB такой, что (x, z) и (z, y)}.
Замечание: Из записи отношений  и  следует, что они применяются справа налево.
Следовательно,
(  )(а) означает,
что вначале берется а и преобразуется по-
средством , а затем результат преобразуется посредством .
Пример:
Пусть  и - отношения на N такие что ={(x, x + 1)| xN}
={(x2, x) | xN}
Тогда D() = {x2| xN}
D() = {x| x, x + 1N}=N
D(  ) = {x| x  и x+1= y2, где y } = {3, 8, 15, 24...}
В случае,
когда рассматриваем
отношение на множестве,
оно может быть
скомбинировано само с собой. Используя отношения из примера, имеем
  = 2 = {(x, x+2)|xN}    = 2 ={(x4, x)|xN}
Используя это обозначение мы можем определить n для n, n 1 cледующим
образом:
28
n = {(x, y)| x z и z n-1y для некоторого z}
n
Для отношений из примера получим n = {(x, x+n)| xN} n={( x 2 , x)| xN}.
2.7: Функции и отображения
Определение 2.23: Бинарное отношение f, заданное на множествах X, Y, называется
функцией, если из (x, y) f и (x, z) f следует y = z.
Обозначается: f(x) = y.
Если f - это функция между элементами множеств X и Y, то это обозначается
f : X  Y.
Таким образом, каждому элементу x из своей области определения Df функция f
ставит в соответствие единственный элемент y из Rf - области значений функции. При
этом x называется аргументом функции (прообразом y), а y- значением функции (образом x).
Определение 2.24: Назовем функцию f n - местной функцией, если f Xn  Y, т.е.
y = f(x1, х2, х3, ..., хn).
Если Df =X , т.е. функция является полностью определенной, то f : X  Y называется
отображением.
Функции f и g равны, если их области определения – одно и то же множество X и для
любого x f(x)=g(x).
Определение 2.25: Пусть дана функция f : X  Y
Функция (отображение) является :
1) инъекцией, если для х1, х2, y из того что x1  x2  f(x1)  f(x2)
2) сюръекцией, если для y  Y х  Х, такой что y = f(x)
3) биекцией, если f инъекция и сюръекция.
Биекция называется еще взаимно однозначным соответствием.
Определение 2.26: Композицией двух функций f и g называется функция
g  f = {(x, z)y, (x, y) f, (y, z) g }
Утверждение 2.3: Если f : X  Y, g : Y  Z , то композиция двух функций есть
функция h= g  f , такая что h : X  Z.
Говорят , что h получена подстановкой f в g, h(x)=g(f(x)).
Утверждение 2.4: Композиция двух биективных функций есть биекция .
Определение 2.27: Тождественным отображением множества Х в себя называется
отображение ех : Х  Х, такое что х  Х ех(х) = х.
29
Пусть функция f : X  Y, тогда еy  f = f,
Пусть f
-1
f  еx = f
- отношение обратное f, тогда f
-1
назовем обратной функцией тогда и
только тогда, когда f - биекция. f -1 : Y  X.
Рассмотрим некоторые свойства :
Если f и g - инъекции, то
1) (f -1)-1 = f
2) (g  f )-1 = f -1  g-1
Если f - биекция, то
3) f -1 f = еx
4) f f -1 = еy
Определение 2.28: Если некоторая функция получена из функции f1, f2, ..., fk путем
подстановки
их друг в друга или переименованием аргументов,
то такая функция
называется суперпозицией из функций f1, f2, ..., fk. Выражение описывающее эту
суперпозицию называется формулой.
2.8: Cчетность множеств. Мощность
Если между конечными множествами А и В существует взаимно однозначное
соответствие, то А=В, если это не так, то либо А>В, и тогда т.к. отображение
всюду определено в А найдутся два элемента, которым соответствует один элемент из В и
нарушится единственность образа ; либо В>Аи тогда нарушится единственность
прообраза. Этот факт позволяет установить равенство мощностей двух множеств, не
вычисляя мощностей двух множеств, а также установив взаимно однозначное соответствие
со множеством, мощность которого известна, вычислить мощность множества.
Определение 2.29: Если между элементами
двух множеств можно установить
взаимно однозначное соответствие, то такие множества называются равномощными.
Для конечных множеств это утверждение доказывается, а для бесконечных является
определением равномощности.
Определение 2.30: Множества, равномощные множеству натуральных чисел,
называются счетными .
Утверждение 2.4: Объединение конечного числа счетных множеств счетно.
30
Теорема 2.2(Кантора): Множество всех действительных чисел [0;1] не счетно.
Множество такой мощности называется континуальным, а его мощность – мощностью
континуума.
Утверждение 2.5: Множество всех подмножеств счетного множества континуально.
Не существует множества максимальной мощности.
31
Раздел 3. Элементы общей алгебры
3.1: Алгебраическая операция. Алгебра
Пусть M - произвольное множество.
Определение 3.1: Функцию типа : M
n
 M называется n - арной операцией,
определенной на множестве М.
n - называется арностью операции , M называется основным или несущим
множеством операции.
Если n=1, то операция называется унарной, если n=2 - то бинарной.
В данном определении выделим два момента:
1) Так как операция есть функция, то результат ее применения определяется
однозначно.
2) Так как область значений операции лежит во множестве M, на которое операция
действует, то говорят, что операция замкнута на множестве M.
Элементы xi набора (x1, x2,...,xn)Mn , где xiM, i=1,2,...n, называются операндами.
Операции обычно обозначают символами, называемыми операторами.
Если операция унарная, то оператор располагают перед операндом. Например, -a
(унарный минус)
Если операция бинарная, то возможны три случая расположения операторов:
1) оператор перед операндами (prefix). Например, +xy
2) оператор между операндами (infix). Например, x+y
3) оператор после операндов (postfix). Например, xy+
Определение 3.2: Совокупность множества M вместе с определенным на нем
множеством
операций
=<1,
2,...,k>
называется
алгеброй
и
обозначается
A=<M; 1,  2,...  k>. При этом  называется сигнатурой алгебры.
Пусть MM и операции 1,  2,...  k замкнуты на множестве M, тогда
A
= <M  ; 1, 2,...  k> есть подалгебра алгебры A.
Определение 3.3: Типом алгебры называется вектор арностей входящих в нее
операций.
Примеры алгебр:
1) Алгебра на множестве действительных чисел R с операциями + и 
A1= <R; +, > Ее подалгеброй будет A1  = <N; +, >, где N- множество натуральных
чисел. Так как + и  - бинарные операции, тип данных алгебр (2,2).
32
2) Рассмотрим квадрат с вершинами a 1, a 2, a 3, a 4 пронумерованными против часовой
стрелки, а также всевозможные повороты этого квадрата относительно центра О,
переводящие вершины в вершины. Таких различных поворотов будет 4: 0, /2, ,
3/2.
Обозначим их
соответственно через , , , . Т.о. получим алгебру с
основным множеством { a 1, a 2, a 3, a 4} и определенными на нем операциями
поворота , , , .
A2=<{ a 1, a 2, a 3, a 4};, , , >
a2
a1
/2

( a 3)= a 1
2
3/2
a3
a4
Рис.3.1. Пример алгебры.
Определение 3.4: Операция, отображающая любой элемент в самого себя, называется
тождественной.
В данном примере  - тождественная операция, так как (a1)= a1, (a2)= a 2,
(a3)=a3,
(a4)=a4.
Подалгебры в этой алгебре нет.
3) Рассмотрим множество О={, , ,  }содержащее повороты из п. 2) и определим
бинарную операцию композиции двух поворотов

как их последовательное
выполнение. Рассмотрим алгебру A3=<O; >Если множество конечно, то операции
удобно задавать таблицей Келли:

























Подалгеброй рассматриваемой алгебры будет A3 =<{}; >.
33
3.2: Свойства бинарных алгебраических операций
Рассмотрим бинарную операцию  типа умножения, определенную на множестве A.
Определение 3.4:Операция называется коммутативной, если a,bA ab=ba.
Определение
3.5:
Операция
называется
ассоциативной,
если
a,b,cA
a(bc)=(ab)c.
Определение 3.6: Пусть  элемент e, такой что a ea=a. Тогда e называется
левой единицей (или левым единичным элементом) по отношению к операции . Если 
элемент e, такой что a ae=a, то e называется правой единицей (или правым
единичным элементом) по отношению к операции . Если  элемент e, такой что a
ea=ea=a, то e называется двусторонней единицей или просто единицей (единичным
элементом) по отношению к операции .
Например, На множестве R по отношению к умножению число 1 является
двусторонней единицей: 1x=x1=x, а по отношению к сложению двусторонней единицей
является число 0: x+0=0+x=x. По отношению к вычитанию число 0 является правой
единицей, но не левой: x-0=x, но 0-x=-x.
Определение 3.7: Пусть  - бинарная операция типа умножения с единицей,
определенная на множестве A и xy=e, где x,yA. Тогда x называют левым обратным
элементом к y и обозначают y-1, а y называют
правым обратным элементом к x и
обозначают x-1. Если xy=yx=e, то x называют обратным к y, а y называют обратным к x.
Менее общим свойством является свойство идемпотентности.
Определение 3.8: Операция называется идемпотентной, если a аa=a.
Идемпотентными являются операции   множеств.
Пусть на множестве A определены две бинарные операции  - типа умножения и
типа сложения.
Определение 3.9: Если для a,b,cA abc=abac, то говорят, что операция
 дистрибутивна по отношению к  слева. Если для a,b,cA bca=baca, то
говорят, что операция  дистрибутивна по отношению к  справа.
Утверждение 3.1: Если по отношению к умножению существует единица, то она
единственна, если существует обратный элемент, то он единственный.
Определение 3.10: Алгебра вида <A, 2>, где 2 - бинарная операция, определенная
на множестве A, называется группоидом.
34
Если 2 - операция типа умножения, то группоид называется мультипликативным и
его единичный элемент называется единицей и обозначается 1, а если 2
-
операция типа
сложения, то группоид называется аддитивным и его единичный элемент называется нулем
и обозначается 0.
3.3: Гомоморфизм и изоморфизм алгебры
Алгебры с различными типами имеют существенно различное строение. Если же
алгебры имеют один и тот же тип, то наличие у них сходства характеризуется с помощью
понятия гомоморфизма и изоморфизма.
Пусть даны два группоида < А ; > и <В ; >
Определение 3.11: Если существует отображение
 : А  В, такое что
(x  y) = (х)  (y) для  x,y  А, то отображение  называется гомоморфизмом.
Смысл данного определения в том, что независимо от того, выполнена ли сначала
операция  в множестве А, а затем отображение , или сначала выполнено отображение ,
а затем операция  в В - результат одинаков.
x;y


xy

(x);(y)
(x  y) = (x)  (y)

Рис.3.2. Коммутативная диаграмма.
Определение
3.12:
Гомоморфизм,
являющийся
инъекцией,
называется
мономорфизмом.
Определение
3.13:
Гомоморфизм,
являющийся
сюръекцией,
называется
эпиморфизмом.
Определение 3.14: Гомоморфизм, являющийся биекцией, называется изоморфизмом.
Рассмотрим две алгебры < А;+ ; > и <В ;  ;>, они должны быть гомоморфны, те.
(x + y) = (x)  (y) , (x  y) = (x)  (y)
Определение 3.15: Если область определения и область значений отображения
совпадают, гомоморфизм называется эндоморфизмом, а изоморфизм - автоморфизмом.
Пример: Пусть дано множество А, |A|=m и рассмотрим <P(А) ; ,  > и
35
<Р(A) ; ,  > и рассмотрим отображение :P(A)P(A), такое что каждому
множеству Х ставится в соответствие дополнение X до универсального, обозначается X .
Покажем , что  - автоморфизм.
Пусть множества X, Y  Р(А), тогда
 ( X  Y) = ( X  Y ) = X  Y =  (X )   ( Y )
 ( X  Y) = ( X  Y ) = X  Y =  ( X )   ( Y )

т.е.  - изоморфизм, но так как область определения и область значения совпадают, то
 -автоморфизм.
3.4: Полугруппы
Определение 3.16: Группоид <А;  называется полугруппой, если относительно
определенной на нем бинарной операции  имеет место ассоциативный закон, т.е.
 а,b,с  А
а  ( b  с ) = (а  b)  с.
Примеры: <R; , <Q; + .
Определение 3.17: Если полугруппа обладает единицей, то ее называют моноидом.
Утверждение 3.1: Единица в полугруппе единственна.
Определение 3.18: Если в полугруппе имеет место коммутативный закон, то ее
называют абелевой.
 а,b  А
аb=bа
Прежде чем рассмотреть тему далее рассмотрим следующее определение.
Определение 3.19:
Подстановкой n - ой степени называется взаимно однозначное
отображение множества А из n элементов в себя.
Пусть множество А = { а 1 , а 2 , а 3 }, тогда
 шесть различных перестановок
элементов а 1 , а 2 , а 3 :
(а 1 , а 2 , а 3 ) , (а 1 , а 3 , а 2 ) , (а 2 , а 1 , а 3 ) , (а 2 , а 3 , а 1 ) , (а 3 , а 1 , а 2 ) ,(а 3 , а 2 , а 1 ).
В случае, когда А = n всевозможных различных перестановок элементов множества
А будет n= 123…n (n-факториал). 3!=123=6.
Запишем всевозможные подстановки из трех элементов (всевозможные подстановки
третьей
степени).
Число
всевозможных
подстановок
перестановок.
 a1 a 2 a 3 

  a - тождественная подстановка,
 a1 a 2 a 3 
равно
числу
всевозможных
36
 a1 a 2 a 3 
a a a 
a a a 
a a a 
a a a 

  b,  1 2 3   c,  1 2 3   d,  1 2 3   e,  1 2 3   f .
 a1 a 3 a 2 
 a 2 a1 a 3 
 a 2 a 3 a1 
 a 3 a1 a 2 
 a 3 a 2 a1 
Определение 3.20: Произведением двух подстановок называется подстановка,
получаемая в результате последовательного выполнения сначала 1 - ой, а затем 2 - ой из
перемножаемых подстановок.
Пример:
 a1 a 2 a 3   a1
  
b  c  
 a1 a 3 a 2   a 2
a 2 a 3   a1 a 2 a 3 

d
a1 a 3   a 2 a 3 a1 
Результат умножения всевозможных подстановок можем определить таблицей Келли.
a
b
c
d
e
f
a
a
b
c
d
e
f
b
b
a
e
f
c
d
c
c
d
a
b
f
e
d
d
c
f
e
a
b
e
e
f
b
a
d
c
f
f
e
d
c
b
a
Если рассмотрим группоид со множеством подстановок, то вместе с определенной на
этом
множестве
операцией
произведения
подстановок,
получим
полугруппу,
т.к.
выполняется ассоциативный закон относительно операции произведения подстановок.
М = {a,b,c,d,e,f }, M, - полугруппа, т.к. a(bc)=(ab)c, ad=bc, d=d
a,b,cM.
Данная полугруппа - моноид. Единицей является подстановка а, т.к. аb = b b M.
Теорема 3.1: Любая полугруппа с единицей изоморфна некоторой полугруппе
подстановок.
Рассмотренная полугруппа подстановок не является абелевой т.к. dc  cd, b f.
Пример: Полугруппы и моноиды имеют особое значение при обработке строк
символов в теории формальных языков.
Пусть А ={х,у,z}, х,у,z будем рассматривать как символы, а не как объекты т.е. А алфавит.
Определим
множество
А*
как
множество
всех
строк
символов
–
А* = {х,у,z,ху,хz,уz,хуz,… }. Множество А* - бесконечно. На множестве А* определим
операцию конкатенции ( ) следующим образом хуz  z =хуzz ;    =   , A*.
Каждая строка  имеет конечную длину   , равную числу символов в , причем
разрешены повторения:  х  =1,  хуzz  =4. Для обозначения пустой строки введем символ
а0 А*, тогда |а0| = 0, а0   =   а0 , таким образом, для  А – алфавита, структура < A*,  >
является моноидом, а а0 - единица по отношению к .
37
Данный пример важен, т.к. для достаточно большого алфавита А, содержащего,
например, все символы, доступные периферийному устройству компьютера, все языки
программирования являются подмножествами множества А* и, это понятие является
основным при изучении формальных языков.
Пусть дан группоид <A,>, рассмотрим уравнения а  х = b и х  а = b где а,b  А.
Эти уравнения могут быть разрешимы или не разрешимы.
Определение 3.21: Если  с  А, а  с = b и с  а = b, то говорят, что уравнения
разрешимы.
Уравнение может иметь несколько решений.
Определение 3.22: Группоид <А,> называется квазигруппой, если уравнение
ах=b и ха=b имеют единственное решение для а,bА.
Приведенный выше пример полугруппы подстановок есть квазигруппа, т.к. х d=e,
х=d и dу=е, у=d.
Различают квазигруппы с левой и правой единицей (рассмотренный выше пример
полугруппы подстановок есть квазигруппа с единицей).
3.5: Группы
Определение 3.23: Группой называется полугруппа <A;>, если
1) для аА еА, такой что ае=еа=а;
2) для аА а-1А , такой что аа-1=а-1а=е, т.е. существуют единичный и братный
элементы.
Т.к. <A;> - полугруппа , то в группе имеет место ассоциативный закон, т.е. для
а,b,сА а(bс)=(аb)с.
Если множество А конечно, то группа называется конечной.
Число, равное А, т.е. число элементов группы, называется порядком группы.
Группа, в которой операция коммутативна, называется абелевой.
Группа, все элементы в которой являются степенями одного и того же элемента,
называется циклической (циклическая группа всегда абелева).
Для абелевых групп операция обычно обозначается как + (сложение), а единичный
элемент - 0 (нуль).
Свойства групп
38
1. Для a,b уравнения aх=b, ya=b однозначно разрешимы внутри группы А.
2. (а  b)-1 = b-1  а-1
Определение 3.24(2-е определение группы): Полугруппа называется группой, если
она является квазигруппой.
Примеры групп:
1. Множество рациональных чисел без нуля с операцией умножения является группой.
< Q\{0}; > Здесь e=1, a-1=
1
.
a
2. Множество целых чисел с операцией сложения <Z; +>. Здесь e=0, a-1= -a.
3. Алгебра <О ;  >, где множество О - множество всех поворотов квадрата относительно
своего центра. Данная алгебра является циклической группой, т.к. (см. п. 3 из примера
§3.1.)
= /2=(/2)1, ==(/2)2, =3/2=(/2)3, =2 =(/2)4.
-1=, -1=, -1=, -1=.
Единичным элементом в этой группе служит поворот , а обратным к данному будет
поворот, дополняющий его до 2.
Теорема 3.2: Любая конечная группа изоморфна группе подстановок на множестве ее
элементов.
3.6: Кольцо
Определение 3.25: Алгебра < M ;  ;> называется кольцом, если :
1) <M; > - абелева группа,
2) <M; > - полугруппа.
3) для  а,b,сM
а(bс)=(аb) (ас),
(аb)с=(ас)(bс).
т.е. M – кольцо, если
1)  а,b,сM а(bс)=(аb)с,
2)  а,bM аb=bа,
3)  0M
а0=0a=а,
4)  -aM
а(-a)=(-a)а=0,
5)  а,b,сM а(bс)=(аb)с,
6) для  а,b,сM а(bс)=(аb)(ас)
(аb)с=(ас)(bс)
39
Примеры колец:
< Z ;+, > , <Zчетн. ; +, >,
<Zнечетн. ; +, > - не является кольцом, т.к. 3+5=8-четное число.
Определение 3.26: Кольцо называется коммутативным, если относительно
умножения  для  а,bM аb=bа.
Определение 3.27: Если относительно умножения  кольцо обладает единицей, т.е.
 еM ае=еа=а, то кольцо называется кольцом с единицей.
Определение 3.28: Если в кольце а  0 и b  0, но а  b = 0, то кольцо называется
кольцом с делителями нуля, а а, b - делители нуля.
Пример кольца с делителями нуля:
ПустьM=ZZ={(a,b)|a,bZ}. На данном множестве определим операции + и :
(a,b)+(c,d)=(a+c,b+d)
(a,b)(c,d)=(ac,bd)
Проверкой можно убедиться, что <M;+, > - кольцо, с единичным элементом (0,0):
(a,b)+(0,0)=(a+0,b+0)=(a,b)
Рассмотрим пары: (a,0)(0,0) и (b,0)(0,0).
(a,0)(b,0)= (a0,0b)=(0,0).
Свойства кольца
1) Т.к. < M ;  > - абелева группа, то
а) нулевой элемент единственный.
б) обратный элемент единственный.
в) в сумме из n элементов скобки можно расставлять произвольно или опустить.
2)
Т.к. <M; > - полугруппа, то в произведении из n элементов скобки можно
расставлять произвольно или опустить.
3) Уравнение а х = b имеет единственное решение. Это уравнение определяет новую
алгебраическую
операцию на множестве М, называемую вычитанием:
Относительно введенной операции имеют место свойства :
а  ( b - с ) = (аb) – (ас) ; ( b - с )  а = (bа) – (са)
4) а  0 = 0
Доказательство:
Для
 bM
b  ( - b ) = 0, а(b(-b))=аb-аb
х = b – а.
40
5) b = - ( - b )
6) - аb = - ( аb )
( - а )( - b ) = аb
3.7: Поле
Определение 3.29: Коммутативное кольцо <M; , >, в котором существует хотя
бы один элемент а  0, что уравнение а  х = b имеет единственное решение, где а,b M,
называется полем ,т.е. выполняются следующие аксиомы
1) а  b = b  а,
2) а  ( b  с) = (а  b)  с,
3) а  0 = 0  а = а,
4) а  ( - а ) = 0,
5) аb = bа,
6) а  (bс ) = ( аb )с,
7) а(b  с) = аb  ас,
8) уравнение ах = b,а  0 - разрешимо.
Примеры полей:
1) Множество действительных чисел с операциями сложения и умножения < R ;,  >
2) < Q ; ,  >
Свойства полей
1) Любое поле содержит единицу, причем единственную. Минимальное поле
состоять из 2 - ух элементов (из нулевого для сложения и единичного для
{0, e}
2) Для  а М  а-1 М  а а-1 = е причем единственный.
3) Рассмотрим решение уравнения а  х = b, а  0
а-1ах = а-1b,
ех = а-1b,
х = а-1b,
b
х= .
a
может
умножения
41
Таким образом определили новую операцию - деление, относительно которой
выполняются свойства:
1)
a
c

 ad = bc, b,d  0.
b
d
2)
a c a dbc
 
b d
bd
3)
a c ac
 =
, b,d  0.
b d bd
4)
a c a d
 
, b, c,d  0.
b d bc
, b,d  0.
В поле нет делителей нуля.
5) Если для некоторого целого, положительного числа n
e
 ...
выполняется равенство e



e  0 , где е - единица поля,
( n , n > 0 )
то и  а М, а  0
n раз
выполняется равенство a
a
 ...



a = 0, верно и обратное утверждение.
n раз
В этом случае наименьшее из таких чисел n называется характеристикой поля, в
противном случае характеристикой поля считается число 0, а n называют аддитивным
порядком поля.
Теорема 3.3: Ненулевые элементы поля имеют один и тот же аддитивный порядок.
Аналогично определяется мультипликативный порядок, а именно как наименьшее из
a
 ...
целых положительных чисел m, таких что a


a  e
n раз
Характеристика любого конечного поля является простым числом. Если поле имеет
характеристику 0, то оно бесконечно.
42
43
Раздел 4. Решетки
4.1: Решетки
До сих пор рассматривали алгебры, как совокупность множества с определенными на
нем операциями.
Определение 4.1: Множества, на которых помимо операций заданы отношения,
называются алгебраическими системами.
Таким образом, алгебра является частным случаем алгебраической системы, когда
множество отношений пусто. Другим частным случаем алгебраической системы являются
модели, т.е. множества, с определенными на них только отношениями.
Понятие изоморфизма для алгебраической системы вводится подобно тому, как это
делалось для алгебр, с той лишь разницей, что к условию сохранения операций при
изоморфизме добавляется условие сохранения отношения. Рассмотрим часто встречающиеся
примеры алгебраических систем.
Пусть дано М - частично упорядоченное множество. Отношение частичного порядка
будем обозначать .
Определение 4.2: Для элементов а, b  М их верхней гранью называется  с  М
такой, что а  с, b  с, а их нижней гранью называется  d  М такой, что d  a, d  b.
В общем случае для некоторых элементов а, b верхняя или нижняя грань может не
существовать, либо быть не единственной, причем различные верхние или нижние грани
могут быть не сравнимы между собой.
Определение 4.3: Решеткой называется частично упорядоченное множество, в
котором для  а, b  их пересечение а  b = d - нижняя грань а и b такая, что любая другая
нижняя грань а, b меньше d, и а  b = c - верхняя грань а и b такая, что любая другая
верхняя грань а и b больше c.
Элемент d называют еще наибольшей нижней гранью и обозначают d=inf(a,b)
(инфиниум), а элемент c – соответственно наименьшей верхней гранью и обозначают
c=sup(a,b) (супремум).
Операции ,  здесь понимаются как абстрактные операции алгебраической системы
и отличаются от
теоретико-множественных операций пересечения и объединения,
рассмотренных ранее (хотя в частных примерах могут и совпадать).
Таким образом, решетка - это алгебраическая система с частично упорядоченным
множеством М и операциями взятия верхней и нижней граней < M; ; , > .
44
Пересечение и объединение ассоциативны, поэтому можно говорить о пересечении и
объединении любого конечного подмножества элементов решетки.
Определение 4.4: Частично упорядоченное множество,
в котором любое его
подмножество имеет наибольшую нижнюю и наименьшую верхнюю грань,
называется
полной решеткой.
Примеры:
1) Любое полностью упорядоченное множество (например, ), можно превратить в
решетку, определив для  а , b  Z
a  b = min { a ,b }
a  b = max { a ,b }
2) На множестве N отношение частичного порядка определим следующим образом:
a  b  b  a (а делит b или, b делится без остатка на a), тогда
a  b = НОД (a ,b)
a  b = НОК (a ,b).
3) для множества А множество всех его подмножеств назовем булеаном множества А
В(А) . Алгебра вида < B(A) ; , ,  > называется булевой алгеброй над А типа ( 2 ; 2 ; 1).
Элементами
этой
алгебры
являются
подмножества
множества
А,
тогда
{B(А)={AiAiA}любого множества частично упорядочен по отношению
булеан
включения
Ai Aj  Ai  Aj.
Эта система будет является решеткой, элементами которой являются подмножества
множества А, а операциями взятия точной верхней и нижней границы будут являться
обычные операции  и  множеств.
Следовательно, <B(А); ,  , > - решетка.
4) Рассмотрим множество двоичных векторов длины n
Bn, т.е. это вектора,
координаты которых принимают только значения 0 и 1. Два вектора находятся в отношении
частичного порядка, если:
(а1,а2,...аn)  (b1,b2,...bn) , где аi,bi = 0 или 1  а1  b1 , а2  b2 ,...,аn  bn .
В случае, если хотя бы для одной из координат векторов аj  bj , то
(а1,а2,...аn)  (b1,b2,...bn) .
Множество Bn упорядоченное таким образом является решеткой. В ней vw будет
вектор, в котором 1 стоят на тех и только тех позициях, на которых есть единицы либо в v,
либо в w , а vw - вектор, в котором 1 есть и в v и в w.
(1,0,0,1)  (1,0,1,1),
45
(1,0,0,1)(1,0,1,1)=(1,0,1,1),
(1,0,0,1)(1,0,1,1)=(1,0,0,1).
Между Bn и булеаном множества А мощности n существует взаимно однозначное
соответствие, которое представляет собой изоморфизм соответствующих решеток.
<Bn ;  ,  , > и <B(А) ; , , > - изоморфные.
Конечные решетки наглядно иллюстрируются
диаграммами Хассе, в которых
элементам соответствуют точки; из точки a ведет стрелка в точку b, если a<b и нет такого c,
что a<c<b.
Рассмотрим решетку со множеством B3={(0,0,0), (0,0,1), (0,1,0), (0,1,1), (1,0,0), (1,0,1),
(1,1,0), (1,1,1)}
(1,1,1)
(0,1,1)
(1,0,1)
(0,0,1)
(0,1,0)
(1,1,0)
(1,0,0)
(0,0,0)
Рис. 4.1. Решетка на множестве B3 .
На языке диаграмм выражаются все основные понятия, связанные с решетками:
- а  b , если на диаграмме существует путь из стрелок, связывающий а с b .
- верхняя грань а,b - это элемент, в который есть путь из а и из b .
- нижняя грань а,b - это элемент, из которого есть путь в а и в b.
Упорядоченное множество не является решеткой, если:
1) какие либо два элемента не имеют верхней или нижней грани.( Рис.4.2.а)
Для а, b нет нижней грани. Для d, e нет верхней грани.
f
d
e
d
e
c
b
a
c
b
a
а)
б)
Рис.4.2.
2) когда для пары элементов наименьшая верхняя или наибольшая нижняя грани не
46
единственны (Рис.4.2. б) Для b и с наименьшая верхняя грань d и e. Для d и e наибольшая
нижняя грань b и с.
Определение 4.5: Решетка называется дистрибутивной, если:
А(BС)=(АB)(АС),
А(BС)=(АB)(АС).
Не все решетки дистрибутивны:
e
B(СD)=BЕ=B,
(BC)(BD)=АА=А (рис.4.3)
b
c
d
a
Рис.4.3.
Пример недистрибутивной решетки.
Утверждение 4.1: Пусть в дистрибутивной решетке <M;  ,  , >
xy=xz и xy=xz , тогда y=z.
Пусть <M;  ,  , > - решетка , 0,1  M
Тогда:
х1=1
хх=х
х0=х
х0=0
0  х  1 х  M .
Определение 4.6: Решетка называется решетка с дополнением, если х  M
 x M и х x =1
х  x = 0, в этом случае x - дополнение х .
Утверждение 4.2: Если M - дистрибутивная решетка с дополнениями, то дополнение
единственно.
Определение 4.7: (2-е определение решетки) Частично упорядоченное множество M
называется решеткой тогда и только тогда, когда  ,  - конечное,  sup X и inf
X.
Если M – решетка и ней определен inf M, то он обозначается 0. Соответственно sup M
обозначается 1. По определению sup=0.
Все конечные решетки – полные, в противном случае, любая решетка может быть
дополнена до полной.
47
Раздел 5. Алгебра логики
§ 5.1: Логические функции
Рассмотрим множество В={0, 1}. Это не числа в обычном смысле, хотя и
похожи на них. Наиболее распространенная их интерпретация - логическая: “да” - “нет”,
“истинно” - “ложно”, т.е. будем рассматривать 0 и 1 как формальные символы.
Алгебра, образованная множеством В вместе со всеми возможными операциями на
нем, называется алгеброй логики.
Функцией алгебры логики (или логической функцией) от n переменных называется nарная операция на В. Первый термин более точен, но второй более распространен.
Итак, логическая функция f(x1,.. xn) - это функция принимающая значения 0, 1, где
х1,.., хn также принимают значения 0 и 1.
Множество всех логических функций обозначается Р2, множество всех логических
функций n - переменных - Р2 (n).
Всякая логическая функция n переменных может быть задана таблицей (табл.5.1), в
левой части которой перечислены все 2n наборов значений переменных, (т.е. двоичных
векторов длины n), а в правой части - значения функции на этих наборах. Например, данная
таблица задает функцию 3-х переменных.
Табл.5.1.
x1
0
0
0
0
1
1
1
1
x2
0
0
1
1
0
0
1
1
x3
0
1
0
1
0
1
0
1
f
0
1
0
0
1
1
0
0
Наборы, на которых функция f принимает значение 1, часто называются единичными
наборами функции f, a множество единичных наборов - единичным множеством f.
Соответственно наборы, на которых f принимает значение 0, называются нулевыми наборами
f.
48
В таблице наборы расположены в определенном, лексикографическом порядке,
который совпадает с порядком возрастания наборов, рассматриваемых как двоичные числа.
При любом фиксированном упорядочении наборов логическая функция n переменных
полностью определяется вектор - столбцом значений функции. Поэтому число различных
n
функций n - переменных равно числу различных двоичных векторов длины 2n т.е. 2 2 .
Определение 5.1: Переменная xi в функции f (x1,.. xi-1, xi xi+1,.. xn) называется
несущественной (или фиктивной), если
f (x1,.. xi -1, 0 xi + 1,.. xn) = f (x1,.. xi-1, 1, xi+1,.. xn).
(5.1)
При любых значениях остальных переменных, изменение значения x i не меняет
значения функции. По сути, функция f (x 1,.., xn) зависит от
представляет собой функцию g (x1,.. xi -1, xi
+ 1,..
n-1 переменной, т.е.,
xn) от n-1 переменной. Говорят, что
функция f получена из функции g введением фиктивной переменной, причем эти функции по
определению считаются равными.
Например, f (x1, x2, x3) = g (x1, x2) означает, что при любых значениях х1 и х2 f = g независимо
от значения х3.
Иногда полезно вводить фиктивные переменные. Благодаря этому, всякую функцию
от n переменных, можно сделать функцией любого большего числа переменных, т.е. любую
конечную совокупность функций можно будет считать зависящей от одного и того же числа
переменных (являющихся объединением множеств переменных всех взятых функций), что
часто удобно.
Примеры логических функций:
1. Логические функции одной переменной f(x) (табл. 5.2). Различных функций одной
1
переменной будет 22 = 22 = 4. Функции f0=0 и f3=1 - константы 0 и 1 соответственно. Их
значения не зависят от значения
переменной, следовательно, переменная х для них
несущественна. f1 - “повторяет“ значение х, т.е. f1(х) = х. Функция f2 называется отрицанием
х (или функцией НЕ) и обозначается x или x . Ее значение противоположно значению х.
Табл. 5.2.
x f0
0 0
1 0
f1
0
1
f2
1
0
f3
1
1
2. Примеры логические функции 2-х переменных (табл.5.3) – f(x1,x2). Различных
2
функций двух переменных будет 16 : 2 2 = 24 = 16
49
Табл. 5.3.
x1 x2
0 0
0 1
f0
0
0
f1 f2
0 0
0 0
f3
0
0
f4
0
1
f5
0
1
f6
0
1
f7
0
1
f8
1
0
f9
1
0
f10
1
0
f11 f12
1 1
0 1
f13
1
1
f14
1
1
f15
1
1
1
1
0
0
0
1
1
1
0
0
0
1
1
0
1
1
0
0
0
1
1
0
1
1
0
1
1
0
1
1
0
1
1
0
0
0
f0(x1, x2) = 0 - константа нуль.
f1(x1, x2) = x1^x2 - конъюнкция (функция И, логическое умножение) х 1 и х2. Обозначается:
х 1 х 2, х 1 & x 2, x 1x 2.
f2(x1, x2) = x1  x2 = x1  x2 = x1  x 2 = x1 x 2 - левая коимпликация, читается “не если х1,
то х2”.
f3(x1, x2) = x1
f4(x1, x2) = x1 x2= x1  x2 = x1  x2 = x1 x2 -правая коимпликация, читается “не если х 2, то
х1”.
f5(x1, x2) = x2



f6(x1, x2) = x1  x2 = x1 x 2  x1 x 2 = x1  x2 x1  x2 - сложение по модулю 2 (исключающее
ИЛИ, функция неравнозначности, неэквивалентности).
f7(x1, x2) = x1  x2 – дизъюнкция (функция ИЛИ, логическое сложение).
f8(x1, x2) = x1  x2= x1  x2 = x 1 v x 2 = x1 x 2 - функция Вебба или стрелка Пирса.



f9(x1,x2)=x1x2= x 1 x 2 v x 1 x 2 = x1  x2 x1  x2 - функция эквивалентности, равнозначности.
f10(x1, x2) = x 2 - отрицание, функция НЕ, логическое отрицание.
f11(x1, x2) = x1  x2 = x 1  x 2 - правая импликация, “если х2 то х1”.
f12(x1, x2) = x 1 - отрицание.
f13(x1, x2) = x1 x2 = x 1 v x 2 - левая импликация “если x1, то x2”.
f14(x1, x2) = x1x2 = x 1 x 2 = x 1  x 2 - функция (штрих) Шеффера.
f15(x1, x2) = 1 - константа единица.
В f3 и f12
х2 - фиктивная. В f5 и f10 - х1 - фиктивная переменная.
50
Таким образом, из 16-ти функций двух переменных, 6 функций имеют фиктивные
переменные. С ростом числа переменных n, доля функций, имеющих фиктивные
переменные, убывает и стремится к нулю.
§ 5.2: Суперпозиции и формулы
Определение 5.2.
Суперпозицией функций f1,.. fm называется функция f
полученная с помощью подстановок этих функций друг в друга и переименованием
переменных, а формулой называется выражение, описывающее эту суперпозицию.
Понятие суперпозиции очень важно в алгебре логики.
Пусть
дано
множество
(конечное
или
бесконечное)
исходных
функций
 = {f1, f2,.. fm}. Символы переменных x1,.., xn... будем считать формулами глубины 0.
Формула F имеет глубину k + 1, если F имеет вид fi (F1,.., Fnl) где fi , ni - число
аргументов f i, а F1,.., Fnl называются подформулами F- это формулы, максимальная из
глубин которых равна k; fi называется внешней или главной операцией формулы F. Все
подформулы формул F1,.., Fni так же называются подформулами F.
Пример:
f2 (x1, x2, х3) - формула глубины 1.
f3 (f1(х3, x2), f2 (x1, f3 (x1, x2) ) - формула глубины 3, содержащая одну подформулу глубины 2
и две подформулы глубины 1.
В дальнейшем конкретные формулы будем записывать в виде, когда знаки функций
стоят между аргументами (инфиксная форма записи).
Пример, если f1 - дизъюнкция, f2 - конъюнкция, f3 - сложение по mod 2, то формула
примет вид:
(x3  x2)  (x1 (x1  x2))
(5.2)
Определение 5.3: Формулы, содержащие только символы переменных, скобки и
знаки функций из множества  называются формулами над .
Всякая формула, выражающая функцию f как суперпозицию других функций, задает
способ ее вычисления (при условии, что известно, как вычислить исходные функции).
Формулу можно вычислить, если вычислены значения всех ее подформул.
Вычислим (5.2), если x1=1, x2 = 1, х3 = 0.
х3 x1 = 1
x1 (x1  x2) = x1 0 = 0
(x3 x1)  (x1 (x1  x2)) = 1  0 = 1
51
Таким образом, формула каждому набору значений аргументов ставит в соответствие
значение функции и, следовательно, может служить наряду с таблицей способом задания и
вычисления функции. О формуле, задающей функцию, говорят, что она реализует или
представляет эту функцию.
В отличии от табличного задания представление функции формулой не единственно.
Пример: если в качестве исходного множества функций зафиксировать функции И,
ИЛИ, НЕ, то функцию Шеффера можно представить формулами.
x1 | x2 = x1 x 2 = x 1  x 2 ., а функцию Вебба x1  x2  x1  x 2 = x1 x 2 .
(5.3)
Определение 5.4: Формулы, представляющие одну и ту же функцию, называются
эквивалентными или равносильными. Эквивалентность формул обозначается знаком =.
f14 (x1, x2) = x1 x 2 = x 1  x 2
Чтобы выяснить, являются ли формулы эквивалентными, существует стандартный
метод: по каждой формуле строится таблица, и затем они сравниваются. Т.е. для каждого
набора значений переменных проверяется, равны ли на нем значения формул.
Этот метод требует 22n вычислений (обе формулы зависят от n переменных) и бывает
громоздким. Существуют и другие методы установления эквивалентности формул и
получения новых формул, эквивалентных исходной, т.е. эквивалентные преобразования.
§ 5.3: Булева алгебра функций и эквивалентные преобразования в ней
Рассмотрим представления логических функций в виде суперпозиции функций И,
ИЛИ, НЕ.
Определение 5.5:
Формулы, содержащие только знаки &   , переменных и
скобок, называются булевыми формулами.
Теорема 5.1: Всякая логическая функция может быть представлена в виде булевой
формулы, т.е. как суперпозиция &   .
Пусть функция f1 задана формулой F1 а f2 - F2. Подстановка F1 и F2 в дизъюнкцию
x1 x2 дает формулу F1  F2. Если F1= F1 и F2 = F2, то F1  F2 = F1  F2. Поэтому
дизъюнкцию можно рассматривать как бинарную операцию на множестве логических
функций, которая каждой паре функций f1 и f2, независимо от выражающих их формул,
однозначно ставит в соответствующую функцию f1  f2. Аналогично, конъюнкцию можно
рассматривать как бинарную операцию, а отрицание - как унарную.
52
Определение 5.6: Алгебра < Р2; &   > - основным множеством которой является
все множество логических функций, а операциями &    - называется булевой алгеброй
логических функций, операции булевой алгебры также называются булевыми операциями.
Свойства булевых операций
Ассоциативность :
х1 (х2 х3) = (х1 х2) х3
х1  (x2  x3) = (x1  x2)  x3
(5.4)
Коммутативность:
х1  x2 = x2  x1
х1 х2 = х2 х1
(5.5)
Дистрибутивность:
x1 (x2  x3) = x1 x2  x1 x3
(5.6)
x1 (x2 x3) = (x1  x2) (x1 x3)
(5.7)
Идемпотентность:
х  x = x
х1 х1 = х
(5.8)
Закон двойного отрицания:
x =х
(5.9)
Cвойства констант
х1=x
x 0=0
0= 1
x  0 = x
x  1 = 1
1 =0
(5.10)
Законы де Моргана
x1 x2 = x1  x2
(5.11)
x1  x2 = x1 x2
Закон противоречия
х x =0
(5.12)
Закон “исключенного третьего”
x  x = 1
(5.13)
Равенства (5.4)-(5.13) остаются верными при подстановке вместо переменных любых
логических функций и, следовательно, любых формул, представляющих эти функции. Важно
лишь соблюдать правило подстановки формулы вместо переменной: при подстановке
формулы F вместо переменной х все вхождения переменной х в исходное соотношение
должны быть одновременно заменены формулой F.
53
Например, x  x = 1
F  F = 1 верно
F  x = 1 неверно.
В результате подстановки получаем новые эквивалентные соотношения.
Равенство F1 = F2 означает, что F1 и F2 описывают одни и ту же логическую функцию
f1. Если какая–либо формула F содержит F1 в виде подформулы, то замена F1 на F2 не
изменяет элемента булевой алгебры, над которым производятся операции в формуле F;
поэтому F’, полученная из F заменой F1 на F2,
эквивалентна F. Это правило замены
подформул, которое также позволяет получать эквивалентные формулы.
Разница между подстановкой и заменой в том, что при подстановке переменная
заменяется на формулу; формула может быть любой, но необходима одновременная ее
подстановка вместо всех вхождений переменных. При замене подформул может быть
заменена любая подформула, но не на любую другую, а на эквивалентную ей. При этом
одновременная замена всех вхождений подформулы необязательна.
Пример: Рассмотрим соотношение: x1 x2 = x1  x2
1) Вместо х1, подставим x1 x3.
Получим x1x3 x2 = x1 x3  x2 Две формулы не
эквивалентны исходным, но эквивалентны между собой.
x1  x3
2) В правой части полученного соотношения заменим x1x3 формулой
эквивалентной ей в силу (5.11), а в полученной подформуле x1 заменить на эквивалентную
ей в силу (5.9) формулу x1, тогда все формулы в цепи преобразований эквивалентны.
x1x3 x2 = x1 x3  x2 = x1  x3  x2 =x1  x3  x2
Преобразования, использующие эквивалентные соотношения и правило замены,
называются эквивалентными преобразованиями.
В булевой алгебре принято опускать скобки в следующих случаях:
1) при последовательном выполнении нескольких конъюнкций и дизъюнкций
(х1 х2) х3
х1 х2 х3
2) если они являются внешними скобками у конъюнкции, например, вместо
(х1 (х2  x3))  (x4 x5) пишут х1 (х2  x3)  x4 x5.
Рассмотрим основные эквивалентные преобразования в булевой алгебре и новые
соотношения.
1) Упрощение формул (т.е. получение эквивалентных, содержащих меньшее число
символов)
а) поглощение х  xy = x
(5.14 а)
54
x (x  y) = x
б) склеивание (x  y) (x  y ) = x
xy  x y = x
(5.14 б)
(5.15 а)
(5.15
б)
 xy  x y = x (y  y ) = x 1= x ч.т.д.
в) обобщенное склеивание
 xy  xz  y z = xz  y z
(5.16 а)
 (xy)(xz)(y z )= (xz)y z )
(5.16 б)
г) x  x y = x  y
(5.17 а)
x ( x  y) = x y
(5.17 б)
2) Приведение к нормальной форме
§ 5.4: Приведение формулы к нормальной форме. Совершенные НФ
Рассмотрим представления логических функций в виде суперпозиции функций И,
ИЛИ, НЕ (&, , ).
Для этого введем несколько определений.
Пусть дана логическая функция от n переменных f (x1,.. xn).
Определение 5.7: Конъюнкция, содержащая переменные хi с отрицаниями и без них,
называется элементарной конъюнкцией (э.к).
x1 x2, x1 x3
Замечание: Переменная xi с отрицанием или без также будет считаться элементарной
конъюнкцией.
x1, x2
Аналогично определяется элементарная дизъюнкция.
Определение 5.8: Дизъюнкция, содержащая переменные хi с отрицаниями и без них,
называется элементарной дизъюнкцией (э.д.).
x1 x2, x1 x3
Замечание: Переменная xi с отрицанием или без также будет считаться элементарной
дизъюнкцией.
x1, x2
55
Замечание: Переменная xi - элементарная дизъюнкция.
Определение 5.9: Конъюнктивной нормальной формой (КНФ) логической формулы
называется формула, равносильная данной, состоящая из конъюнкции элементарных
дизъюнкций.
Элементарная дизъюнкция будет являться КНФ.
(x1 x2)( x1  x3 ) x1  x2  x3
Определение 5.10: Дизъюнктивной нормальной формой (ДНФ) логической формулы
называется формула, равносильная данной, состоящая из дизъюнкции элементарных
конъюнкций.
Элементарная конъюнкция будет являться ДНФ.
x1 x2  x1 x3 ,
x1 x2 x1
Формула приводится к НФ следующим образом:
1) приводится к приведенному виду, т.е. к формуле, равносильной данной и не
содержащей других логических операций кроме &, , 
С помощью 5.9, 5.11 все отрицания опускаются до переменных.
2) используя законы 5.6, 5.7 раскрыть скобки:
x (x  z) = xy  xz приводим к ДНФ
x  (y z) = (x  y) (x  z) приведем к НФ.
3)
С помощью 5.8, 5.12, 5.13, 5.10 удалить повторение переменных, элементарной
конъюнкции (дизъюнкции) и константы.
Определение 5.11:
Конъюнкция
n различных переменных или их отрицаний
называется совершенной элементарной конъюнкцией (с.э.к.).
x1x2 x3 - совершенная элементарная конъюнкция из x1, x2, x3 .
Аналогично определяется совершенная элементарная дизъюнкция.
Определение 5.12:
Дизъюнкция
n
различных переменных или их отрицаний
называется совершенной элементарной дизъюнкцией (с.э.д.).
x1x2 x3 - совершенная элементарная дизъюнкция из x1, x2, x3 .
Определение 5.13: Под совершенной конъюнктивной нормальной формой (СКНФ)
формулы
понимается
формула
равносильная
данной,
состоящая
из
совершенных элементарных дизъюнкций.
Например: (x1  x2  x3)(x1  x2  x3 )  x1x2 x3 - CКНФ.
Замечание: Совершенная элементарная дизъюнкция будет считаться СКНФ.
Замечание: Любая КНФ может быть приведена к СКНФ.
конъюнкции
56
Формула приводится к СКНФ следующим образом:
1) Приведем к КНФ.
2) На основании х x = 1 x1 = x отбрасываем все элементарные дизъюнкции,
содержащие переменные, вместе со своими отрицаниями.
3) На основании x  x = x в э.д. опускаем идентичные переменные переменные до
одной.
4)
На
основании
y=(yx)(y x )
дополняем
элементарную
дизъюнкцию
отсутствующими переменными.
5) На основании х х = х опускает идентичные элементарные дизъюнкции до одной.
6) Полученная формула и будет СКНФ.
Пример: (x  y) (x z)= (x  y ) ( x y) (x  z) = (x  y  z) (x  y  z ) ( x  y  z) 
( x  y  z )(x  y z) (x  y  z)= (x  y  z ) ( x  y  z) ( x  y  z )(x  y z) (x  y  z)
Определение 5.14: Под совершенной дизъюнктивной нормальной формой (СДНФ)
формулы
понимается
формула,
равносильная
данной,
состоящая
из
дизъюнкции
совершенных элементарных конъюнкций.
х1 х2 х3  x1 x2 x3 - CДНФ.
Например:
Замечание: Совершенная элементарная конъюнкция будет считаться CДНФ.
Замечание: Любая ДНФ может быть приведена к СДНФ. Формула приводится к СДНФ
следующим образом:
1) Приводим формулу к ДНФ.
2) В ДНФ согласно х x = 0
и х  0 = x oтбрасываем элементарные конъюнкции,
содержащие переменные со своими отрицаниями.
3) Из оставшихся элементарных конъюнкций согласно хх = х опускаем идентичные
переменные до одной.
4) Дополняем оставшиеся элементарные конъюнкции до совершенных согласно
равносильности
 
y  xy   x y
5) На основании х  x = x из полученной формулы опускаем идентичные с.э.к. до
одной.
6) Полученная формула и будет СДНФ.
Пример: Привести к СДНФ.
(x  y) (x z)= (x y x y ) (x  z) = x x y  x y z = x y  x y z = x y z x y z  x y z
57
Если функция задана таблицей истинности, то, чтобы записать ее формулу в СДНФ
поступают следующим образом:
1. Рассмотрим все те наборы переменных, на которых функция принимает значение
2. Для каждого из отобранных наборов составляют совершенную элементарную
конъюнкцию из переменных, если
xi=1 или их отрицаний, если
xi=0,
принимающую на данном наборе значение 1.
3. Из полученных с.э.к. составляем СДНФ.
Аналогично, чтобы записать формулу логической функции в СКНФ поступают
следующим образом:
1. Рассмотрим все те наборы переменных, при которых функция принимает значение
0.
2. Для каждого из отобранных наборов составляем с.э.д. из переменных если xi=0
или их отрицаний, если xi=1, принимающую на данном наборе значение 0.
3. Из полученных с.э.д. составляем СКНФ.
Пример: По таблице истинности (табл. 5.4) записать формулу в 1) СДНФ и 2) СКНФ.
1. f (x1, x2 x3) =
x1 x2 x3  x1 x2 x3  x1 x2 x3  x1 x2 x3
2. f ( x1, x2, x3) = ( x1  x2  x3 ) ( x1  x2  x3 ) ( x1  x2  x3) ( x1  x2  x3 )
Табл.5.4.
x1
0
0
0
0
1
1
1
1
От
x2
0
0
1
1
0
0
1
1
ДНФ к
x3
0
1
0
1
0
1
0
1
f
1
1
1
0
1
0
0
0
КНФ
и наоборот можно всегда перейти либо с помощью
соответствующего дистрибутивного закона, либо с помощью закона двойного отрицания.
Например: Перейти от ДНФ к КНФ с помощью закона двойного отрицания.
58






xy x y z = xy  x yz = xy x yz = x  y x  y  z = x  y x  y  z =
= xx  x y  xz  x y  y y  yz = x y  xz  x y  yz = x y  xz  x y  yz =
    




= x y x z x y y z = x y x z x y y z

§ 5.5: Двойственность
Определение 5.15: Функция
f1(x1,.., xn) называется двойственной
функции
f2(x1,.., xn), если
f1 (x1,.., xn) = f 2 ( x1 ,..., xn )
(5.18)
Если взять отрицание над обеими частями равенства (5.18) и подставляя вместо
x1,.., xn x 1 , ..., x n
получаем f 1 ( x 1 , ..., x n )  f 2 ( x 1 , ..., x n ) = f2 (x1,.., xn), т.е. f2 двойственна
к f1.
Т.о. отношение двойственности между функциями симметрично. Для любой функции
двойственная функция определяется однозначно. Может оказаться, что функция двойственна
самой себе. В этом случае она называется самодвойственной.
Пример: двойственна & (в силу правил де Моргана)
1 двойственна 0
отрицание - самодвойственная функция
xyxzyz - самодвойственная функция
Пример:
Рассмотрим
свойство
самодвойственности
булевой
функции
f
(a,b,c,d)= a d  bc .
Построим таблицу 22n (n=4) (табл.5.5.), в которой в первой строке располагаются
десятичные эквиваленты, соответствующие наборам
(a,b,c,d),
функции f (a,b,c,d), которые соответствуют этим наборам.
Табл. 5.5.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
1 0 1 0 1 1 1 0 0 0 0
0
1
1
0
0
во второй  значения
59
Функция самодвойственная, если на любой паре противоположных
(наборов, сумма десятичных эквивалентов которых равна
наборов
2n1) функция принимает
противоположные значения
Функция f (a,b,c,d) не является самодвойственной: f (7)= f (8).
Принцип двойственности
Если в формуле F, представляющей функцию f все знаки функций заменить
соответственно на знаки двойственных функций, то полученная формула F* будет
представлять функцию f*, двойственную f.
В булевой алгебре принцип двойственности имеет конкретный вид: Если в формуле F,
представляющий функцию f, все конъюнкции заменить на дизъюнкции, дизъюнкции на
конъюнкции, 1 на 0, 0 на 1, то получим формулу F*, представляющую функцию f*,
двойственную f.
Если функции равны, то и двойственные им функции равны. Это позволяет с
помощью принципа двойственности получать новые эквивалентные соотношения, переходя
от равенства F1 = F2 с помощью указанных замен к равенству F1* = F2*.
Пример:
x  xy = x
и
x (x  y) = x.
x1 x2 = x1  x2
и
x1  x2 = x1 x2
§ 5.6: Разложение булевой функции по переменным
Рассмотрим разложение булевой функции f(x1,x2,…,xn)по k переменным (для
определенности по x1,x2,…,xk) – разложение Шеннона.
Теорема 5.2: Любая функция f(x1,x2,…,xn) представима в виде разложения Шеннона:
f ( x1 ,..., x k , x k 1 ,..., x n ) 

k
σ
( & x i i f(σ1,σ 2 ,...,σ k ,x k 1,...,x n ))
по
i 1
всем
наборам
(σ 1 ,σ 2 ,..., σ k )
(5.19)
x i при  i  1,

где i=0,1; i=1,…,k, x i i  
x i при  i  0
Следствие
5.1:
Предельное
f(x1,x2,…,xn), не равной 0, имеет вид:
разложение
Шеннона
(k=n)
булевой
функции
60
f(x1 ,..., x n ) 
n

σ
( & xi i )
по
i 1
всем
наборам
(σ1 , σ 2 ,..., σ n ), на
которых
f(σ1 , σ 2 ,..., σ n ) 1
(5.20)
Предельное разложение Шеннона булевой функции f(x1,x2,…,xn) является ее СДНФ.
В алгебре Буля справедлив принцип двойственности, согласно которому имеем
следующие двойственные разложения Шеннона булевой функции f(x1,x2,…, xk , xk+1,… ,xn):
По k переменным
f ( x1 ,..., x k , x k 1 ,..., x n ) 
k

(  x i i  f (1 ,  2 ,...,  k , x k 1 ,..., x n ))
&
i 1
по
всем
наборам
(σ 1 ,σ 2 ,..., σ k )
(5.21)
Двойственное предельное разложение:
f ( x1 ,..., x n ) 
&
n

(  xi i )
i 1
по
всем
наборам
(σ 1 , σ 2 ,...,σ n ), на
которых
f(σ ,σ ,...,σ )  0
1 2
n
(5.22)
Двойственное предельное разложение Шеннона булевой функции f(x1,x2,…,xn)
является ее СКНФ.
§ 5.7: Полнота и замкнутость
Определение 5.16:
Система функций  называется функционально полной, если
любая логическая функция может быть представлена формулой над , т.е. является
суперпозицией функций из .
Так как любая логическая функция может быть представлена булевой формулой, т.е.
как суперпозиция &, , , то система 0 = {&,, }функционально полная. Функционально
полной будет и любая система , через функции которой можно выразить &, , .
61
Если все функции функционально полной системы * представлены
формулами над системой , то  также функционально полная. Говорят, что  сводится к *.
Пример:
1) системы 1={&, } и 2={, } функционально полны.
Из законов де Моргана и двойного отрицания следует, что в каждой из этих 2-х систем
недостающая до 0 функция выражается через остальные две
x1 x2 = x 1  x2
x1  x2 = x 1  x2
0 можно считать избыточной, т.к. удаление  или & не влияет на полноту.
2) 3 = {|} штрих Шеффера 4 = {}
x= x |x = x  x
x1  x2 = x 1 x2 = (x1  x2)  (x1  x2)
x1  x2 = x 1 | x 2 = (x1 | x2) | (x1 | x2)
3 сводится к 1, а 4 к 2.
3) 5 = {&, , 1} - функционально полная, так как x = х  1 и, 5 сводится к 1.
Функционально полная система функций  называется базисом, если удаление из нее
любой логической функции нарушает ее функциональную полноту.
1. {  } базис Вебба ( или базис Пирса {} )
2. {|} базис Шеффера
3. {  , }
4. {, 0} импликантивный базис
5. {;  }
6. {,  }
7. {  , } коимпликативный базис
8. {, } импликантивный базис
9. {&,  } конъюнктивный базис Буля
10. {, } дизъюнктивный базис Буля
11. {  , 1} коимпликативный базис
12. {, &, 0}
13. {, , 0}
14. {, &, }
15. {, , }
62
16. {, &, 1} базис Жегалкина
17. {, , 1}
Определение 5.17:
Множество М логических функций называется замкнутым
классом, если любая суперпозиция функций из М снова принадлежит М.
Всякая система  логических функций порождает некоторый замкнутый класс, а
именно класс, состоящий из всех функций, которые можно получить суперпозициями из .
Такой класс называется
замыканием
 и обозначается []. Очевидно, что если М -
замкнутый класс, то [M] = М, а если М - функционально полная система, то [M] = Р2.
Пример: Множество всех дизъюнкций, т.е. функций вида х 1  x2 ... xn является
замкнутым классом, т.к. подстановка формул вида хi  xj в формулу такого же вида, дает
формулу такого же вида.
Примером замкнутого класса является класс самодвойственных функций.
§ 5.8: Алгебра Жегалкина и линейные функции
Определение 5.18: Алгебра над множеством логических функций с двумя бинарными
операциями & и  называется алгеброй Жегалкина.
В алгебре Жегалкина выполняются следующие соотношения:
1. x  y = y  x
(5.23)
2. x (y  z) = xy  xz
(5.24)
3. x  x = 0
(5.25)
4. x  0 = x,
(5.26)
а также соотношения булевой алгебры, относящейся к конъюнкции и константам
(5.4), (5.5), (5.8), (5.10).
Отрицание и дизъюнкция выражается следующим образом:
5. x = x  1
(5.27)
6. x  y = x y =( x  1) (y  1)  1 = xy  x  y
(5.28)
Полученная формула, имеющая вид суммы по mod 2, то есть полином (многочлен) по
mod 2, называется полиномом Жегалкина для данной функции.
От булевой формулы всегда можно перейти к формуле алгебры Жегалкина и
следовательно, полиному Жегалкина, используя равенства (5.27), (5.28) и равенство,
63
вытекающее из (5.29): если f1 f2 = 0, то f1  f2 = f1  f2. Оно, в частности, позволяет заменить
знак дизъюнкции знаком , если исходная формула СДНФ.
Пример : x1 x2  x1 x2 = x1 x2  (x1  1) ( x2  1) = x1  x2  1.
Теорема 5.3: Для всякой логической функции
существует полином Жегалкина,
причем единственный.
Определение 5.19:
Функция, у которой полином Жегалкина имеет вид
01x12x2nxn, где i = 0 или 1, i=0,…,n, называется линейной.
Все функции одной переменной линейны. От двух переменных линейными являются
функции сумма по mod 2 и эквивалентность.
Пример: Выясним, является ли булева функция f(a, b, c, d)  a d  bd линейной.
Предположим, что она линейная и, следовательно, представима в виде
f (a,b,c,d)=c 0caacbb ccc cdd
Найдем неизвестные коэффициенты c0, ca, cb, cc, cd, исходя из предположения о
линейности этой функции. Зафиксируем набор 0000:
f (0,0,0,0)=1,
с0  ca0  cb0  cc0cd0=c0, c0=1.
Аналогично определим коэффициенты ca, cb, cc, cd, фиксируя соответственно наборы
1000, 0100, 0010, 0001. Имеем:
f(1,0,0,0)= 1 0  0  0  0  0  0
1  ca1  cb0  c00  cd0 = 1  ca,
1  ca = 0, ca=1,
f (0,1,0,0)= 0  0  1  0 =11=1,
1  10  cb1  cc0  cd0 = 1  cb,
1  cb = 1, cb=0,
f (0,0,1,0)= 0  0  0  1 =10=1
1  10  00  cc1  cd0 = 1  cc,
1  cc = 1, cc=0,
f(0,0,0,1)= 0  1  0  0 =00=0,
1  10  00  00  cd1 = 0,
1  cd=0, cd=1.
Окончательно получаем
f (a,b,c,d)=1  a  d.
64
Это равенство в каждой из остальных 11 точек не сохраняется. Действительно, в
точке (1,1,1,1) имеем
f (1,1,1,1)= 1  1  1  1  00=0,
111=1, 01.
Следовательно, сделанное предположение является неверным. Функция
f (a,b,c,d)
 нелинейная 
§ 5.9: Монотонные функции
Рассмотрим класс монотонных функций.
Для двух векторов  = (1,..,n) и  = (1,..,n)   , тогда и только тогда, когда ii
 i = 1,.., n.
Определение 5.20: Функция f (xi,.., xn) называется монотонной, если для любых
двоичных наборов  и  длины n из того, что    следует, что f ()  f ().
Пример: константа 0,1 и функция х монотонны, x - немонотонна.
х1 х2.. xn и x1 x2...xn
- монотонны.
Анализ таблиц истинности может быть громоздким.
Пример: Для тестирования функций f(a, b, c, d)  a d  bd на монотонность построим
гиперкуб и проанализируем распределение в нем значений этой функций.
Гиперкубом (n-мерным кубом) называется граф H, каждой вершине которого взаимно
однозначно соответствует двоичный вектор. I-тый ярус гиперкуба i=0,1,…,n-1 содержит
вершины, такие, что соответствующие им двоичные векторы которых содержат i единиц.
Две вершины соединены ребром, если соответствующие им двоичные векторы отличаются в
одном и только одном разряде.
Если найдется хотя бы одно ребро, концам которого сопоставимы двоичные наборы
( * 1,* 2,…,*n ) и (1,2,…,n ) вида ( *1,*2,…,*n)  ( 1,2,…,n ) для которых
f (*1,*2,…, n )  f (1,2,…, n) то такая булевая функция является немонотонной, другими
словами, если в гиперкубе найдется хотя бы один 0, покрывающий 1.
65
Пример:
1110
0
1111 0
1
1101
1100
1
1010
1
0110
0111
0101
0100
0
1001
0
1
0
0011
1
0000
1
1000
0010
1011 0
0
0
0001
1
0
Рис. 5.1. Гиперкуб B4.
Рассматриваемая булева функция f(a, b, c, d)  a d  bd немонотонная:
1,0,0,0)  (0,0,0,0),
f (1,0,0,0)  f (0,0,0,0) (Рис.5.1).
Теорема 5.4:
Всякая булева формула, не содержащая отрицаний, представляет
монотонную функцию, отличную от 0 и 1.
Обратная теорема 5.5: Для любой монотонной функции, отличной от 0 и 1,
существует представляющая ее булевая формула без отрицаний.
Теорема 5.6: Множество всех монотонных функций является замкнутым классом.
Следствие 5.2: Класс монотонных функций является замыканием системы функций
{&,, 0, 1}.
Каковы же необходимые и достаточные условия функциональной полноты для
произвольной системы функций ?
Как известно  полная, если &, и  являются суперпозициями функций из .
Поэтому будем искать свойства функций, позволяющие выразить через них булевы
операции.
Лемма 5.1:(о немонотонных функциях) Если функция f (х1,.., хn) немонотонна, то
подстановкой констант из нее можно получить отрицание. Точнее существует такая
подстановка n-1 константы, что функция оставшейся одной переменной является
отрицанием.
Лемма 5.2:(о нелинейных функциях) Если функция f (x1,.. xn) нелинейна, то с
помощью подстановки констант и использования отрицаний из нее можно получить
66
дизъюнкцию и конъюнкцию.
Точнее, существует представление  и & в виде
суперпозиции констант, отрицаний и функции f.
Пример:
f(x1,x2,x3,x4)=
x1x2x3x4x1x3x4x1x4.
Полагаем,
x4=1,
x2=0.
Тогда
f(x1,0,x3,1)= =x1x3x11, что соответствует строке f5 табл. 5.6.
Табл. 5.6. Нелинейные функции двух переменных вида f(x,y)=xyxy.
fi
   Вид полинома Эквивалентная булевая функция Искомая суперпозиция
f0 0
0 0 xy
xy
xy=f0(x,y)
f1 0
0 1 xy1
xy
xy=N(f1(x,y))
f2 0
1 0 xyy
xy
xy=f2(N(x),y)
f3 0
1 1 xyy1
xy  x  y
xy=f3(x,N(y))
f4 1
0 0 xyx
xy
xy=f4(x,N(y))
f5 1
0 1 xyx1
xy  x  y
xy=f5(N(x),y)
f6 1
1 0 xyxy
xy
xy=f6(x,y)
f7 1
1 1 xyxy1
x  y  xy
xy=N(f7(x,y))
Эти две леммы позволяют получить все булевы операции с помощью немонотонных
функций, нелинейных функций и констант. Это еще не функциональная полнота, т.к.
константы с самого начала предполагались данными.
Определение 5.21: Система логических функций  называется функционально полной
в слабом смысле, если любая логическая функция может быть представлена формулой над
системой {0, 1}, т.е. является суперпозицией констант и функций из . Очевидно, что из
обычной полноты системы следует ее слабая полнота.
Теорема 5.7: (I теорема о функциональной полноте) Чтобы
система
функций

была функционально полной в слабом смысле, необходимо и достаточно, чтобы она
содержала хотя бы одну немонотонную и нелинейную функции.
Пример: ={, } функционально полная в слабом смысле, т.к. конъюнкция
нелинейна, а сумма по mod 2 немонотонна.
Определение 5.22: Функция f (x1,.. хn) называется сохраняющей 0, если f(0,...,0)=0.
Функция f (x1,.., xn) называется сохраняющей 1, если f (1, 1,..,1) = 1.
Теорема 5.8: (I I теорема о функциональной полноте)
Чтобы система функций
 была функционально полной (в сильном смысле), необходимо и достаточно, чтобы она
содержала:
1) нелинейную функцию;
67
2) немонотонную функцию;
3) не самодвойственную функцию;
4) функцию, не сохраняющую 0;
5) функцию, не сохраняющую 1.
Пример:  = {,  1} функционально полная в сильном смысле, т.к. конъюнкция
нелинейна, несамодвойственна, сумма по mod 2 немонотонна и не сохраняет 1, константа 1
не сохраняет 0.
§ 5.10: Булева алгебра и теория множеств
Определение 5.23: Всякая алгебра типа (2, 2, 1) называется булевой алгеброй, если ее
операции удовлетворяют соотношениям (5.4)- (5.13)
В алгебре множеств элементарными являются подмножества универсального
множества U (обозначим систему всех подмножеств U через, В(U)), операции &
соответствует ,  соответствует ,  соответствует , единицей является само множество,
а нулем - .
Булева алгебра <Bn, &,,  > на множестве Bn определяется следующим образом.
Для любых векторов  = (1,.., n) и  = (1,..n).
   = (1  1,..., n  n)
 &  = (1 & 1,.., n & n)
  ( 1 ,...,  n )
Т.к. компоненты i и i векторов  и  принимают значение 0 и 1, то указанные
операции - это просто логические операции над двоичными переменными; операции над
векторами называются покомпонентными (поразрядными) логическими операциями над
двоичными векторами. Такие операции входят в систему команд любой современной ЭВМ.
Например:  = (01011)  = (11010)
   = 01010
Теорема 5.9: Если |U| = n, то булева алгебра <B(U), , , ‘ > изоморфна булевой
алгебре <Bn, &    >.
Эта теорема позволяет заменить теоретико-множественные операции над системой
подмножеств подразрядными логическими операциями над двоичными векторами. Такая
замена часто используется в программировании.
Рассмотрим теперь множество Р2 (m) всех логических функций m переменных
х1,.., хm. Оно замкнуто относительно операций &    (результат их применения к
68
функциям из Р2 (m) снова дает функцию из Р2 (m) и следовательно образует конечную булеву
алгебру <Р2 (m), &    >, являющуюся подалгеброй булевой алгебры логических
функций.
Если |U| = 2m, то алгебра множеств <B (U), , , ‘ > изоморфна
Теорема 5.10:
булевой алгебре функций <Р2 (m), &,,  >.
Эти алгебры равномощны и содержат 2 2
m
элементов.
Рассмотренные теоремы указывают на связь между множествами и логическими
функциями и позволяют переходить от операций над множествами к операциям над
логическими функциями и обратно. Они дают возможность непосредственно производить
операции над функциями, заданными не формулами, а таблицами или
единичными
множествами. Булевы операции над формулами, заданными таблицами, сводятся к
подразрядным логическим операциям над столбцами значений функций (табл.5.7).
Пример:
Табл.5.7.
x1
0
0
0
0
1
1
1
1
x2
0
0
1
1
0
0
1
1
x3
0
1
0
1
0
1
0
1
f
0
1
0
0
1
1
0
0
g fvg fg f
0 0 0 1
1 1 1 0
1 1 0 1
0 0 0 1
0 1 0 0
1 1 1 0
0 0 0 1
1 1 0 1
§ 5.11: ДНФ. Интервалы и покрытия
Теоретико - множественная интерпретация булевой алгебры функций оказывается
очень удобным языком для изучения дизъюнктивных нормальных форм ДНФ и методов их
упрощения.
Если функция f (х1,.., хm) представляет собой элементарную конъюнкцию всех m
переменных, то Mf содержит один элемент множества Bm (т.е. это двоичный вектор длины
69
m, на котором функция f принимает значение 1). Если же f - элементарная конъюнкция k
переменных, k < m, то Mf содержит 2m
- k
двоичных наборов (т.к. m - k переменных, не
вошедших в эту конъюнкцию, несущественны для f и могут принимать любые 2 m
- k
значений, не изменяя f). Множество Мf такой функции f называется интервалом.
Например: m = 4, f (x1, x2, x3, x4) = x2 x 4
Mf = {0100, 0110, 1100, 1110} |Mf| = 24 - 2 = 4
В этом случае говорят, что конъюнкция х2 x 4 (а точнее интервал M x
2 x4
) покрывает
множество Мf ( и все его подмножества).
Если f  g  1, то Mf  Mg (Mf - множество единичных наборов функции f). Из
определения импликации следует, что ни для какого набора  не может быть одновременно
f () = 1 и g () = 0. Поэтому, если f () = g () = 1, т.е. если   Mf то   Mg и,
следовательно, Mf

Mg. Говорят, что функция f имплицирует функцию g. Если f -
элементарная конъюнкция, то f называется импликантом g, и если после удаления буквы
(вхождения переменной) из f, f перестает быть импликантом g, то f называется простым
импликантом g.
Например, для функции x(yz) xy и xz - простые импликанты, x,y,z- импликант, но не
простой.
Любая конъюнкция любой ДНФ является импликантом этой функции.
Представление f в виде ДНФ соответствует представлению ее единичного множества
в виде объединения интервалов. В совокупности все конъюнкции ДНФ покрывают все
единичное множество f. Верно и обратное: если Mk  Mf то существует ДНФ функции f,
содержащая конъюнкцию k. В частности СДНФ функции f соответствует просто
перечислению элементов Mf. Отношение покрытия между конъюнкциями ДНФ и
элементами Mf
наглядно задается таблицей покрытия (табл.5.8), строки которой
соответствуют конъюнкциям, т.е. интервалам, столбцы - элементам Mf, а на их пересечении
1, если i - ая конъюнкция покрывает (поглощает) j -ый элемент Mf.
Например: ДНФ F = xz  yz  xy.
Табл.5.8.
x y z x y z xy z xyz
010 101 110 111
xz
1
1
yz 1
1
xy
1
1
70
Интервал Mxy покрывается Mxz  Myz. Поэтому исключение xy из формулы F не изменит
единичного множества данной функции: xxy=x. Интервал Mxy всегда покрывается Мх. Этот
закон в терминах ДНФ можно сформулировать: любой импликант в ДНФ, не являющийся
простым, можно заменить простым импликантом k0, покрывающим k; импликант k0
получается из k вычеркиванием нескольких букв.
Т.о. для любой функции f существует ДНФ F, состоящая из простых импликантов
ДНФ F  k, где k - простой импликант f, не содержащийся в F, также представляет f.
Поэтому дизъюнкция всех простых импликантов f, называется сокращенной ДНФ, и также
представляет f.
Методы упрощения ДНФ состоят из 2-х этапов:
1) получают список всех простых импликантов, т.е. сокращенную ДНФ
2)
используя
таблицу
покрытия,
удаляют
импликанты,
покрываемые
другими
импликантами. ДНФ, из которой нельзя удалить ни одного импликанта, называется
тупиковой.
§ 5.12: Релейно-контактные схемы
Рассмотрим одно из приложений логических функций к релейно-контактным схемам.
Пусть x1, x2, ..., xn – набор контактов в электрической схеме. Контакты могут быть
замыкающими и размыкающими. Контакт называется размыкающим, если он размыкается
при подаче напряжения на обмотку реле, к которому он подключен, а когда напряжение не
подается, контакт замкнут. Контакт называется замыкающим, если он замыкается при подаче
напряжения на обмотку реле, к которому он подключен, а когда напряжение не подается,
контакт разомкнут. В схеме один и тот же контакт может неоднократно быть как
размыкающим, так и замыкающим. Будем считать, что xi=1, если на обмотку контакта
подается напряжение и xi=0, если на обмотку контакта не подается напряжение.
Каждой последовательно-параллельной схеме с контактами x1, x2, ..., xn поставим в
соответствие ее функцию проводимости:
1, если схема проводит ток,
f ( x1 ,..., x n )  
0, если схема не проводит ток.
Тогда функция проводимости схемы, состоящей из одного контакта xi, есть X i i , где
i=1, если контакт замыкающий, и i=0, если контакт размыкающий. Функция проводимости
71
схемы из последовательно соединенных контактов xi и xj есть X i i & X j j (рис.5.2), а
функция проводимости схемы из параллельно соединенных контактов xi и xj есть
X i i  X j j (рис.5.3).
xi
xj
:
X i i & X j j ,
Рис. 5.2. Последовательное соединение контактов.
xi
: X i i  X j j .
xj
Рис. 5.3. Параллельное соединение контактов.
Следовательно, каждой последовательно-параллельной контактной схеме
можно поставить в соответствие булевую формулу, реализующую функцию проводимости
этой схемы. Две схемы эквивалентны, если они имеют одинаковую функцию проводимости.
Применяя основные равносильности (5.4)-(5.18), можно упрощать контактные схемы,
заменив их эквивалентными, содержащими меньшее число контактов.
Пример: Упростить электрическую схему (рис.5.4):
Y
X
Z
Y
X
Z
Y
Z
Рис5.4. Исходная схема.
Функция проводимости: YZX Y Z  X Y Z= YZ( Y Z) (X X )= YZ Y Z=
= Z(Y Y )=Z
Эквивалентная схема (рис.5.5):
Z
Рис.5.5. Упрощенная схема.
72
73
§ 5.13: Минимизация булевых формул в классе дизъюнктивных нормальных форм
Выше было показано, что произвольная булевая функция может быть представлена
булевой формулой в дизъюнктивной и конъюнктивной нормальной форме. Равносильными
преобразованиями можно получить формулу, содержащую меньшее, чем исходная, число
переменных. Например:
а) х1х2 х1 x 2 =х1
б) х1х2х1=х1
в) х1х2х1х3=х1(х2х3).
Заметим что последнее преобразование выводит формулу из класса дизъюнктивных
нормальных форм. Будем минимизировать формулы в классе ДНФ.
Дизъюнктивная нормальная форма называется минимальной,
если она содержит
наименьшее общее число вхождений переменных по сравнению со всеми равносильными ей
дизъюнктивными нормальными формами.
Следовательно,
минимальную ДНФ данной формулы можно найти,
конечное число равносильных ей ДНФ и,
выбрав среди них ту,
перебрав
которая содержит
минимальное число переменных. Однако при большом числе переменных такой перебор
практически невыполним.
Существуют эффективные способы нахождения минимальной ДНФ.
5.13.1: Метод минимизирующих карт
Рассмотрим один из них - метод минимизирующих карт. Хотя этот метод и не
отличается большой эффективностью, зато он прост для изложения и не требует введения
дополнительных понятий.
Пусть булевая функция задана таблицей истинности или СДНФ. Составим
следующую карту.
Утверждение 5.1: Если конъюнкция x11...хn n, i{0, 1}i=1,..., nпринадлежащая j-й
строке табл.5.8не входит в СДНФ,
выражающую функцию f(Х1,..., Хn) то любая
конъюнкция j-й строки не входит ни в какую ДНФ, выражающую исходную функцию.
Замечание:
x , если   1
x = 
x , если   0
74
Действительно,
если конъюнкция x11...хnn не входит в СДНФ, выражающую
функцию f(х1,...,хn) то по алгоритму построения СДНФ (см. §5.4) f(1,...,n)=0. Если бы
какая-то конъюнкция j-й строки вошла в некоторую ДНФ функции fто f(1,...,n)=1.
Опишем способ построения минимальной ДНФ :
1. Отметим в табл. 5.8 строки в которых соответствующая им конъюнкция x11...хnn
не принадлежит СДНФ выражающей функцию f(х1,..., хn). Вычеркнем все конъюнкции в
этих строках.
2. Вычеркнутые в этих строках конъюнкции вычеркнем также во всех остальных
строках таблицы.
3. В каждой строке выберем из оставшихся конъюнкций лишь конъюнкции с
наименьшим числом сомножителей, а остальные вычеркнем
4. В каждой строке выберем по одному оставшемуся элементу и составим из них
ДНФ
5. Из всех ДНФ, полученных в п.4, выберем минимальную.
Заметим что в п.5 предусматривает
перебор различных ДНФ для нахождения
минимальной из них Однако при этом число вариантов перебора, как правило, меньше
чем в случае когда перебираются все равносильные.
Таблица 5.9
x1
x2
…
xn-1
xn
x 1x 2
x 1x 3
…
xn-2xn
xn-1xn
…
x1x2…xn-1 xn
x1
x2
…
xn-1
xn
x 1x 2
x 1x 3
…
x n 2 x n
xn-1 x n
…
x1x2…xn-1 x n
x1
x2
…
x n 1
xn
x 1x 2
x 1x 3
…
xn-2xn
x n-1 xn
…
x1x2… x n-1 xn
…
…
…
…
…
…
…
…
…
…
…
…
x1
x2
…
x n 1
xn
x1 x 2
x1 x 3
…
x n 2 x n
x n-1
…
x1 x 2 … x n-1 x n
xn
Действуя в соответствии с пп. 1-5получим минимальную ДНФ выражающую
функцию f(х1,...,хn).Пусть F-формула в ДНФ полученная в п.5. Тогда еслиf(1,..., n)=1 то
F(1,...,n)=1. Действительно если конъюнкция x11...хnn
соответствует j-й строке
табл5.8.то эта строка осталась невычеркнутой ; любая конъюнкция в этой строке на наборе
<1,..., n > принимает значение 1. Следовательно и формула F содержащая одну из таких
конъюнкций в качестве дизъюнктивного члена принимает на наборе <1,..., n > значение
75
1т е.F(1,..., n)=1.Если f (1,..., n)=0то на наборе <1,..., n > все не вычеркнутые в
табл.5.1. конъюнкции принимают значение 0так как все конъюнкции которые на этой
оценке принимают значение 1вычеркнуты. Следовательно составленная из этих
конъюнкций ДНФ принимает на этой оценке значение 0т.е. F(1,..., n)=0.
Пример:. Пусть f (х1, х2, х3)=х1 х2 x 3  х1 x 2 х3  х1 x 2 x 3  x1 x 2 х3.
Составим табл.5.10.
Отметим значком * вычеркнутые строки. После применения пп.4 и 5 получим
минимальную ДНФ  х1 x 3  x 2 х3.
Таблица 5.10.
х1
х2
х3
х1 х2
х1 х3
х2 х3
х1 х2 х3
х1
х2
x3
х1 х2
х1 x 3
х2 x 3
х1 х2 x 3
х1
x2
х3
х1 x 2
х1 х3
x 2 х3
х1 x 2 х3
х1
x2
x3
х1 x 2
х1 x 3
x2 x3
х1 x 2 x 3
x1
х2
х3
x 1 х2
x 1 х3
х2 х3
x 1 х2 х3
*
x1
х2
x3
x 1 х2
x1 x 3
х2 x 3
x 1 х2 x 3
*
x1
x2
х3
x1 x 2
x 1 х3
x 2 х3
x 1 x 2 х3
x1
x2
x3
x1 x 2
x1 x 3
x2 x3
x1 x 2 x 3
*
*
Таблица 5.11.
х1 x 3
х1 x 2
х1 x 2
x 2 х3
х1 x 3
x 2 х3
Поскольку алгоритмы нахождения минимальной ДНФ довольно сложны иногда
применяют алгоритмы упрощения получая некоторые приемлемые для дальнейшего
использования ДНФ среди которых содержатся и минимальные. К таким типам ДНФ
76
относятся и сокращенные ДНФ. Сокращенная ДНФ формулы может быть получена 
например по следующему алгоритму.
Рассмотрим произвольную конъюнктивную нормальную форму исходной формулы.
Воспользуемся законом обобщенной дистрибутивности
(а1... 
ar) & (b1...  bi)=
=(a1 & b1)... (a1 & bi)...  (ar & bi) и "раскроем" скобки. Затем произведем
полученной
формулы;
пользуясь
равносильностями
(a&b)a=aaa=a
упрощения
и
удаляя
тождественно ложные дизъюнктивные члены. В результате получим ДНФ которая
называется сокращенной

5.13.2: Метод таблицы различий
Пусть функция f(x1, x2, …, xn), задана таблицей 5.12:
Табл. 5.12.
x1
0
x2
0
x3
0
f
1
0
0
0
1
0
1
1
0
1
0
1
0
1
1
1
0
1
1
1
0
1
1
1
0
1
0
0
1
Часто двоичные наборы задают десятичными эквивалентами (1,
2, ... n) 
n
  i 2 n i .Данная функция может быть задана перечислением десятичных эквивалентов
i 1
единичных наборов: f(x1, x2, …, xn)|1=(0, 1, 2, 3, 7). СЭК в СДНФ будем называть
конституентами. Интервалом называется множество конституент, образующих гиперкуб
некоторой размерности. Очевидно, что мощность интервала равна степени 2 (20, 21,...)
Множество вершин гиперкуба,
на которых функция принимает значение 1,
которые в свою очередь образуют гиперкуб,
называется единичным интервалом,
и
а
множество вершин гиперкуба, на которых функция принимает значение 0, и которые в
свою очередь образуют гиперкуб, называется нулевым интервалом.
77
Единичный интервал Ia называется максимальным,
если не существует никакого
другого интервала Ib, содержащего в себе Ia. Например, для функции, заданной таблицей,
гиперкуб имеет вид (рис.5.6)
111
110
101
011
100
010
001
000
Рис.5.6. Единичный гиперкуб.
Выделены вершины,
где функция принимает значение 1. В данном единичном
гиперкубе интервалами будут следующие множества вершин: {0}, {1}, {2}, {3}, {7}, (0, 1,
2, 3}, {3, 7}.Среди них максимальными будут - (0, 1, 2, 3}, {3, 7}. Кроме перечисления,
интервалы можем задать с помощью символов 0, 1, -. Например, {0, 1, 2, 3} - это интервал
0--,
где прочерк соответствует 0 или 1. Таким образом,
данное множество содержит
вершины 000, 001, 010, 011, которые и соответствуют десятичным числам 0, 1, 2, 3. Тогда
{3, 7} - - это интервал -11.
Каждому единичному интервалу соответствует конъюнкция переменных или их
отрицаний, прочерк означает отсутствие переменной в конъюнкции. Например, 0 - -
x1 , -
11 x2x3.
Конъюнкция, соответствующая максимальному единичному интервалу функции f,
называется простой импликантой этой функции.
Дизъюнкция всех простых импликант и будет сокращенной ДНФ.
Если функция задана СКНФ,
раскрывая скобки по дистрибутивному закону,
получаем сокращенную ДНФ.
Рассмотрим понятие слабо определенных
булевых функций f(x1, x2, …, xn),
обладающих следующими свойствами:
1)
число переменных n велико;
2)
мощность объединения единичной V1 и нулевой V0 областей намного
меньше,
чем 2n,
где единичную и нулевую области образуют наборы
значений переменных,
соответственно.
на которых функция принимает значение 1 и 0
78
единичная и нулевая области задаются интервалами, где интервал – это
3)
вершины гиперкуба, которые в свою очередь также образуют гиперкуб.
Рассмотрим нахождение сокращенной ДНФ слабо определенной булевой функции.
Таблица различий - это двумерная таблица размером n|V0|, каждой строке которой взаимно
однозначно соответствует разряд рассматриваемого единичного интервала,
нулевой интервал,
столбцу -
а на пересечении i-ой строки и j-го столбца находится результат
операции:
00=0 01=1 0-=0 10=1 11=0 1-=0 -0=0 -1=0 --=0,
причем в качестве первого аргумента берется значение i-го разряда единичного
интервала,
а в качестве второго - значение i-го разряда
нулевого
интервала,
соответствующего j-му столбцу.
Выделение максимальных интервалов сводится к покрытию столбцов строками
таблицы различий.
Пример: Рассмотрим нахождение минимальной ДНФ булевой функции
1 на интервалах 0 - 0 - 0 - 0, 11 - 0 - 01, 0 - - 001 -,
f ( x1 , x 2 ,..., x 7 )  
0 на интервалах 10 - 0 - 01, 00 - -10-, 1101 - 0 - .
Выделим множество максимальных интервалов, содержащих единичный интервал
0-0-0-0, по таблице различий 5.13, у которой строки заданы буквами: a, b, c, d, e, g, h.
Табл.5.13.
Единичный
интервал
Нулевой интервал
10 - 0- 01
00 - - 10 -
1101 - 0 -
a 0
1
0
1
b -
0
0
0
c 0
0
0
0
d -
0
0
0
e 0
0
1
0
f -
0
0
0
g 0
1
0
0
Объединение строк а и е создает покрытие. Максимальный единичный интервал
будет иметь вид 0 - - - 0 - - или x1 x5
79
Табл.5.13. (продолжение)
Единичный
интервал
a
b
c
d
e
f
g
a
b
c
d
e
f
g
1
1
0
0
1
0
0
0
1
-
Нулевой интервал
10 - 0 - 01 00 - - 10 - 1101 - 0 0
1
0
0
0
0
0
1
0
0
0
0
1
0
1
1
0
0
0
0
0
0
0
0
0
1
1
0
0
0
0
1
0
0
0
1
0
0
1
0
1
0
Составляем сокращенную ДНФ:
~
f (x1, x2,..., x7)= x1 x5  x 2 x 4  x6
Данный метод применим и для нахождения ДНФ полностью определенной функции,
тогда вместо интервалов записываем конкретные наборы значений переменных.
Чтобы от сокращенной ДНФ перейти к минимальной,
(табл.5.14). Это двумерная таблица,
строим таблицу Квайна
каждой строке которой взаимно однозначно
соответствует максимальный интервал, столбцу – конституента, а на пересечении i-й строки
и j-го столбца находится 1, если j-я конституента входит в i-ый максимальный интервал,
или 0 в противном случае.
Табл.5.14.
Максимальный
интервал
0---0--
Конституента
0-0-0-0-0 11-0-01
0--0011
0
1
-1-0---
0
1
0
-----1-
0
0
1
Данная таблица полностью покрывается первой и второй строкой. Следовательно,
~
f (x1, x2,..., x7)= x1 x5  x 2 x 4 .
минимальная ДНФ будет иметь вид:
Максимальный интервал называется обязательным,
(единичный интервал), принадлежащая ему и только ему.
если найдется конституента
80
Множество обязательных интервалов образуют ядро покрытия. В данном случае
обязательным является, например, максимальный интервал -1-0---.
Интервалы 0---0--и -1-0--- образуют ядро покрытия.
§ 5.14: Синтез логических схем в заданном базисе
Техническая реализация базисных функций может быть основана на
использовании различных физических явлений, например, импликация и коимпликация магнитных, функции Шеффера и Вебба - явлений в полупроводниках. Согласно Гост 2.743 72, базисные элементы графически изображают в виде прямоугольников, в которых
инверсные входы и выходы изображают в виде незаштрихованных кружков, и сверху ставят
1, если внешняя связка дизъюнкция, и & - если конъюнкция; если сложение по mod 2 сверху
ставят М2, эквивалентность -  (рис.5.7).
Константа
Элемент
Отрицание
Дизъюнкция
Конъюнкция
Элемент
Элемент
x
xy
xy
Вебба
Шеффера
x y
xy
нуля
1
1
Обозначение
x
x
0
1
y
Элемент
Импликация
x
&
y
Коимпли-
Сложение
Экв
кация
по mod 2
ивален
x y
x y
x Vy
1
x
y
y
Константа
eдиницы
тность
x y
&
1
x
x
x
y
y
y
M2

x
Обозначение
Рис.5.7. Базовые элементы.
y
&
x
1
1
81
Более
сложные
элементы
графически
изображаются
в
виде
композиций
перечисленных элементов на основе представления реализуемой ими булевой функции в
виде ДНФ или КНФ.
Например, функцию f (a, b, с, d) = a d  b c графически можно представить в виде
прямоугольника (рис.5.8):
a
&
1
d
b
c
&
Рис.5.8. Графическое представление функции f (a, b, с, d).
Рассмотрим синтез логических схем в заданном базисе. Приведем метод
непосредственного моделирования связок , ,  с помощью связок заданного базиса.
1) Для заданной булевой функции находят ее оптимальную, в смысле количества
связок , ,  скобочную форму.
2) Выражают классические связки , ,  в виде суперпозиции заданного базиса.
3) Подставляют результаты п. 2 в выражение, полученное в п. 1, отмечая пунктиром
при этом стыки блоков, моделирующих , ,  в заданном базисе.
4) Анализируя стыки, устраняют избыточность логической схемы, используя закон
двойного отрицания.
Пример: Синтезировать логическую схему, реализующую булевую функцию.
1на  0  10,10  11,0  101
(x1, x2, x3, x4, x5)= 
0на1  10,1  001,0  100
в базисе В=, 0 .
1. Покрывая таблицы различий (табл. 5.15), найдем сокращенную ДНФ полностью
~
~
~
определенной булевой функции f , единичная M 1 и нулевая M 0 области которой включают
соответственно единичную и нулевую области заданной функции ,
~
f  .
~
Сокращенная ДНФ функции f имеет следующий вид:
~
f (х1, х2,..., х5)= х4  x1 x5
2. Выражаем связки , ,  через связки импликативного базиса : a =a0,
a b = a  b = (a  0)  b,
ab= a  b  a  b  a  (b  0)  (a  (b  0))  0
82
Табл.5.15.
Интервалы нулевой области функции 
Интервалы
единичной
области функции 
-
-
x2
1-10-
1-001
0-100
0
0
0
0
0
0
0
-
-
0
0
0
х4
1
1
1
1
x5
0
0
1
0
x1
1
0
0
1
x2
0
0
0
0
-
-
0
0
0
х4
1
1
1
1
х5
1
0
0
1
0
1
1
0
-
-
0
0
0
x3
1
0
1
0
x4
0
0
0
0
х5
1
0
0
1
x1
вершины которого взвешены ,
Пункт 3 представим в виде графа,
,
хi, 0,
(рис 5.9 а). В данном базисе закон двойного отрицания можно изобразить так, как показано
на рис. 5.9 б.
x5
1
x1
1
1
1
1
1
0
~
f
0
0
0
x4
a)

x5
1
1
A
B
0
A
0
B
1
1
x1
x4

б)
б)
~
f
83
Рис.5.9.
Устраняя избыточность, получаем логическую схему S (рис. 5.9 в).
Описанный метод синтеза можно с успехом применять при проектировании простых
схем.
§ 5.15: Производная булевой функции
Определение 5.24: Производная первого порядка
f
от булевой функции  по
x i
переменной хi
f
=(х1, х2,..., хi-1, 1, хi+1, ..., хn)   (х1, х2,..., хi-1, 0, хi+1,..., хn), (5.29)
x i
где (х1, х2,..., хi-1, 1, хi+1,..., хn) - единичная остаточная функция ;
(х1, х2, ..., хi-1, 0, хi+1,..., хn) -нулевая остаточная функция ;
 - здесь и далее сумма по модулю два.
Единичная остаточная функция получается в результате приравнивания переменной
хi к единице, нулевая - приравниванием хi к нулю.
Пример: Вычислим производную
f
от булевой функции
x1
(х1, х2, х3)1=(0,4, 7),
где 0, 4, 7 -десятичные эквиваленты двоичных наборов, на которых функция  равна 1.
(х1, х2, х3) = x2 x3  х1 х2 х3. Согласно определению,
f
=( x2 x3
x1
 х2 х3)  x2 x3 = ( x2 x3
 х 2х 3) x 2 x 3
 ( x 2 x3  x 2 x3 )
x 2 x3 =
=( x2 x3  х2 х3) (х2  х3) (х2  х3)( x2  x3 ) x2 x3 = х2 х3
Производная первого порядка
условия,
f
от булевой функции (х1,
 xi
х2, ..., хn) определяет
при которых эта функция изменяет значение при переключении переменной х i
(изменении значения хi на противоположное).
В рассмотренном примере функция (х1, х2, х3) изменяет свое значение  на   ,
(  ),
 =0,
1, при изменении значения переменной х 1,   ,
конъюнкция х2 х3 принимает значение «истина» т. е. х2 = х3 =1.
Определение 5.25:Смешанной производной
при условии что
84
k f
от булевой функции  называется выражение вида:
xi1 , xi 2 ,...xik
k f

=
xi1 , xi 2 ,...xik x1k


 k 1 f


 x , x ,..., x , 
ik 1 
 i1 i 2
(5.30)
Смешанную производную -го порядка
k f
вычисляют,
xi1 , xi 2 ,...xik
соотношение (5.30)  раз фиксацией переменных хi1,
xi2,...,
применяя
xik (порядок фиксации
переменных не имеет значения).
Производная -го порядка
переменным хi1,
хi2,...,
k f
от булевой функции (х1,
 ( xi1 , xi 2 ,...xik )
хi определяет условия,
х2, ..., хn) по
при которых эта функция изменяет
значение при одновременном изменении значений переменных х i1, xi2,..., xik.
Определение 5.26(Бохмана): Производная k-го порядка
функции (х1, х2, ...,
хn) по переменным хi1, хi2,...,
производных первого порядка,
k f
от булевой
 ( xi1 , xi 2 ,...xik )
хi равна сумме по модулю два всех
третьих..., -ых смешанных производных при
вторых,
фиксации переменных хi1, хi2,..., хi :
k f
=
 ( xi1 , xi 2 ,...xik )
i
f
2 f


xi i , j ,i  j xi x j i , j , s


i  j ,i  s , j  s
3 f
k f
 ... 
xi x j x s
xi1 , xi 2 ,..., xik
(5.31)
i, j, s,...=i1, i2,..., ik.
Пример: Определим условия переключения выходного канала  логической схемы,
реализующей булеву функцию (х1,
входного канала,
х2, х3) = х1 х2  х1 x3 при переключении каждого
первого и второго каналов одновременно и всех трех каналов
одновременно.
Имеем:
f
= х2  x 3
x1
f
= х1  х1 x3 = х1 (1  x3 ) = х1 х3,
x 2
f
= х1 х2  х1 = х1 (х2  1) = х1 x 2
x3
85
Условие
f
= 1 является условием переключения выходного канала  при
x1
переключении входного канала х1 :при подаче на второй канал -1 или на третий канал -0,
при переключении первого канала х1 с  на  (  ), выходной канал переключается с 
на  (  ,
 = 0, 1). Выходной канал  переключается   ,
  ,
входного канала х2,
если х1= х3 =1,
при переключении
и  переключается   ,
когда
переключается х3,   , при х1=1, х2=0, =0, 1. Далее находим :
2 f

=
x1 , x 2
x 2
 f 

 = 1  x3 = х3,
 x1 
2 f
2 f
f
f
=


=(х2  x3 )  х1 х3  х3 =
 ( x1 , x 2 )
x1
x1 , x 2
x 2
=(х2  x3 )  х3 (х1  1) = (х2  x3 )  x1 х3 = (х2  x3 ) x1 x3  ( x 2  x3 ) x1 x3 =
=(х2  x3 )(х1  x3 )  x 2 x3 x1 х3= x3  x1x2  x1 x 2 x3 = x3  x1x2  x1 x 2
Выходной канал  переключается при любом одновременном переключении входных
каналов х1,
х2,
когда х3 = 0,
или независимо от состояния входного канала х 3, при
переключении х1 и х2 с 1, 1 на 0, 0 или с 0, 0 на 1, 1.
Определим
3 f
 ( x1 , x 2 , x3 )
2 f
  f 

 = х2  1 = x 2
=
x1 , x3
x3  x1 
2 f
  f 

 = х1
=
x 2 ,  x 3
x3  x2 
3 f
  2 f 

 =1
=
x1 , x 2 , x3
x1  x 2 , x3 
3 f
2 f
2 f
2 f
3 f
f
f
f
=






=
 ( x1 , x 2 , x3 ) x1
x1 , x3
x 2 ,  x 3
x1 , x 2 , x3
x1 , x 2
x 2
x3
=(х2  x3 )  х1 х3  х1 x 2  х3  x 2  х1  1 = (х2  x3 )  х3 (х1  1)  x 2 (х1  1)  x1 =
= (х2  x3 )  x1 х3  x1 x 2  x1 = (х2  x3 )  x1 х3  x1 ( x 2  1) =
=((х2  x3 ) x1 x3  x 2  x3 x1 x3 )  x1 x 2 =((х2  x3 ) (х1  x3 )  x 2 х3 x1 х3)  x1 x2=
=( x3  х1 х2 x1 x 2 )  x1 х2=( x3  х1 х2 x1 x 2 ) x1 x2  ( x3  x1 x2  x1 x2 ) x1 x2 =
86
=( x3  х1 х2 x1 x 2 )(х1  x 2 ) x3 ( x1  x 2 )(x1 x2) x1 x2=
= х 1 x 3  х 1 х 2 x 2 x 3  x1 x 2  x1 х 2 x 3 =
=х1 x 2 x3  х1 х2 x3  х1 х2 x3  x1 x 2 x3  x1 x 2 x3 x1 х2 x3.
При переключении входного вектора 4  3,
6  1 и 7  0 выходной канал 
переключается.


k f

 от булевой функции
Определение 5.27: Весом производной p 

(
x
,
x
,...,
x
)
i1
i2
ik 

называется число конституент этой производной, т.е. число совершенных элементарных
конъюнкций в СДНФ, представляющей производную функции.
§ 5.16: Синтез логических схем методом каскадов
Рассмотрим ряд методов проектирования схем, эффективность каждого из которых
увеличивается по сравнению с предыдущими.
Метод каскадов, основанный на разложении Шеннона
(х1, ....., х, х+1, ..... хn)=

 ( 1 ,...,  k )
k
& хi  i(1, ...,
, х+1, ....., хn),
i 1
позволяет при наличии блоков исключения
 переменных свести реализацию булевой
функции от n переменных к реализации функции от n-,   1, переменных. Размерность
остаточных функций (1,..., , х+1,..., хn), в свою очередь, можно понизить, исключая t
переменных и т. д. до тех пор пока остаточные функции не будут иметь простой вид, и их
реализация в заданном базисе не представляет трудности.
Сложность остаточных функций зависит от порядка исключения переменных в
заданной булевой функции (х1,
х2,...,
хn). Число всевозможных способов исключения
переменных растет комбинаторно. Например,
при использовании только блоков,
исключающих одну и ту же переменную на каждом ярусе, это число равно n!, но на каждом
ярусе можно исключать не только одну и ту же переменную, но и различные переменные;
далее, можно исключать на каждом шаге различное число переменных (одну, две, три, и
т. д.). Выбрать оптимальное исключение переменных перебором всех способов исключения трудоемкий процесс.
Оптимальное исключение переменных ищут,
используя эвристические критерии,
один из которых основан на использовании понятия производной от булевой функции.
87
Критерий оптимального исключения переменных в методе каскадов заключается в
исключении сначала переменных,
при переключении которых булева функция
переключается при максимальном числе условий. Это максимальное число определяется
весом производной.
При использовании блоков, исключающих k переменных, находят производные k-го
порядка от реализуемой функции и ищут максимальное значение веса производной


k f
 , которое и определяет исключаемые переменные. Для получения
p 
 ( xi1 , xi 2 ,..., xik ) 
остаточных булевых функций снова находятся производные,
производная от рассматриваемой остаточной функции,
определяются веса,
а
имеющая максимальный вес,
определяет соответствующие переменные, которые исключаются на этом ярусе для этой
остаточной функции и т.д., пока остаточные функции не будут иметь простую реализацию.
Пример: Синтезируем логическую схему, реализующую булеву функцию
(х1, х2, х3, х4, х5) = х1 x 2 х3  x 1 x 3 х4  х1 х3 x 5  х1 х2 х4  x 2 х3 х5  x 3 x 4 х5,
используя блоки исключения одной переменной (рис.5.10).
Определим переменную хi, по которой производная
f
имеет максимальный вес, т.
x i
е. функция (х1, х2,..., х5) зависит от нее наиболее существенно.
Имеем
f
= ( x 2 х 3  х 3 x 5  х 2 х 4  x 2 х 3 х 5  x 3 x 4 х 5) 
x1
 ( x 3 х4  x 2 х3 х5  x 3 x 4 х5).
Для вычисления веса производной
f
, зависящей от четырех переменных х 2, х3, х4,
x1
х5, представим 4-мерное пространство с образующими  х2, х3, х4, х5  в виде декартова
произведения двух 2-мерных пространств
 х2, х3    х4, х5  с образующими  х2, х3  и
 х4, х5  соответственно. Тогда производную
каждому значению 2 3 переменных х2,
f
можно задать в виде двумерной таблицы :
x1
х3 взаимно однозначно соответствует строка
таблицы, столбцу - значения 4 5 переменных х4, х5, и на пересечении i-ой строки и j-го
столбца,
взаимно однозначно соответствующем точке 4- мерного пространства с
образующими  х2, х3, х4, х5 , записываем значение
равен числу единиц в этой таблице (табл. 5.16, а)
f
f
в этой точке. Вес производной
x1
x1
88
x1
x5
1
f(0)
x2
f(0)
& 1
x4
&
x1
&
f
xi
& 1
f(0,1)
& 1
f
f(1,0)
x3
&
&
f(1)
1
a)
x4
& 1
f(1,1)
x1
&
x5
б)
Рис.5.10.
Таблица 5.16 а
х2 х3
0
1
2
3
Итак p(
х4 х5
0
1
2
3
0
1
0
1
0
0
0
0
1
1
0
1
1
0
0
1
f
) =7
x1
Аналогично вычислим веса производных
f
x i
, i = 2, 3, 4, 5 (табл. 5.16, б, в, г, д)
Имеем:
f
= ( x 1 x 3 х4  х1 х3 x 5  х1 х4  x 3 x 4 х5)  (х1 х3  x 1 x 3 х4  х1 х3 x 5 х3 х5  x 3 x 4 х5)
x 2
Таблица 5.16 б
х4 х5
х1 х3
0
1
0
1
2
3
0
0
0
1
0
0
0
1
89
2
3
p(
0
0
0
1
1
0
1
0
f
) =5
x 2
f
= (х1 x 5  х1 х2 х4  x 2 х5)  ( x 1 х4  х1 х2 х4  x 4 х5)
x3
Таблица 5.16 в
х4 х5
х1 х2
0
1
2
3
p(
0
1
2
3
0
0
1
0
0
1
0
1
1
1
1
0
0
1
1
0
f
) =8
x3
f
= (х1 x 2 х3  x 1 x 3  х1 х3 x 5  х1 х2  x 2 х3 х5)  (х1 x 2 х3  х1 х3 x 5  x 2 х3 х5  x 3 х5)
x 4
Таблица 5.16 г
х3 х5
х1 х2
0
1
2
3
p(
0
1
2
3
1
1
0
1
0
0
1
0
0
0
0
0
0
0
0
1
f
)=5
x 4
f
= (х1 x 2 х3  x 1 x 3 х4  х1 х2 х4  x 2 х3 х3 x 4 )  (х1 x 2 х3  x 1 x 3 х4  х1 х3 х1 х2 х4)
x5
Таблица 5.16 д
х 3х 4
х1 х2
0
1
2
3
p(
f
)=7
x5
0
1
2
3
1
1
1
1
0
0
0
0
1
0
0
1
1
0
0
0
90
Максимальное значение max p(
i
f
) получено при дифференцировании функции  по
x i
переменной х3. Исключая эту переменную, получаем две остаточные функции : единичную
(х1, х2, х3 = 1, х4, х5) = (1) и нулевую (х1, х2, х3 = 0, х4, х5) = (0) :
f(1)= x1 x 2 x1 x 5  х1 х2 х4 x 2 x5
(0) = x1 x4 х1 х2 х4 x 4 x 5
Аналогично определяем оптимальное исключение переменных на следующем ярусе
логической схемы (табл. 5.17 а, б, в, г; 5.18 а, б, в, г) :
f (1)
= ( x 2  x 5  х 2 х 4 x 2 x 5)  x 2 x 5
x1
Таблица 5.17 а
х4 х5
х2
0
1
f (1)
p(
)=5
x1
0
1
2
3
1
1
0
0
1
1
0
1
f (1)
= (x1 x 5  х1 х4)  (x1x1 x 5 x5)
x 2
Таблица 5.17 б
х4 х5
х1
0
1
p(
0
1
2
3
0
0
1
1
0
0
1
0
f (1)
)=3
x 2
f (1)
= (x1 x 2 x1 x 5  х1 х2 х4 x 2 x5)  (x1 x 2 x1 x 5  x 2 x5)
x 4
Таблица 5.17 в
х2 х5
х1
0
1
0
1
2
3
0
0
0
0
0
0
0
1
91
p(
f (1)
)=1
x 4
f (1)
= (x1 x 2  х1 х2 х4 x 2 )  (x1 x 2  х1 х1 х2 х4)
x 5
Таблица 5.17, г
х 2х 4
х1
0
1
p(
0
1
2
3
1
0
1
0
0
1
0
0
f (1)
)=3
x 5
Исключаем переменную х1, получаем остаточные функции вида:
(х1 = 1, х2, х3 = 1, х4, х5) = (1, 1) = х2  х5  х2 х4 х2 х5 = х2  х5  х4
(х1 = 0, х2, х3 = 1, х4, х5) = (1, 0) =х2 х5
(0) = х1 х4  х1 х2 х4 х4 х5 = х1 х4  х2 х4 х4 х5
f ( 0 )
= (х2х4  х4 х5)  (х4  х2 х4  х4 х5)
x1
Таблица 5.18 а
х4 х5
х2
0
1
2
3
0
0
1
0
f ( 0 )
p(
)=2
x1
0
0
1
0
1
0
f ( 0 )
= (х1 х4  х4 х4 х5)  (х1 х4 х4 х5)
x 2
Таблица 5.18 б
х4 х5
х1
0
1
p(
0
1
2
3
0
0
0
0
0
1
0
1
f ( 0 )
)=2
x 2
f ( 0 )
= (х1  х2)  х5
x 4
92
Таблица 5.18, в
х2 х5
х1
0
1
p(
0
1
2
3
1
0
0
1
1
1
0
0
f ( 0 )
)=4
x 4
f ( 0 )
= (х1 х4 х2 х4 х4)  (х1 х4  х2 х4)
x 5
Таблица 5.18, г
х 2х 4
х1
0
1
p(
0
1
2
3
1
1
0
0
1
1
0
0
f ( 0 )
)=4
x 5
Исключая переменную х4, получаем остаточные функции следующего вида
(х1, х2, х3 = 0, х4 =1, х5) = (0, 1) = х1  х2
(х1, х2, х3 = 0, х4 =0, х5) = (0, 0) = х5
В результате получаем логическую схему, реализующую функцию
(х1, х2,...х5) (рис
5.10 б)
Критерий оптимального исключения переменных имеет эвристический характер, что
основано на предположении о том, что чем больше вес производной p(
f
), тем больше
x i
функция  зависит от переменной хi. Если имеются блоки исключения k-переменных, то
построение схемы проводят аналогично,
p(
вычисляя вес производных k-го порядка
k f
).
( xi1 , xi 2 ,...xik )
§ 5.17: Разложение булевой функции в ряд
В дискретной математике отсутствует понятие предела, однако в выражениях (5.29) (5.31) используется термин «производная». Это связано с разложением булевой функции в
93
ряд, аналогичный ряду Маклорена в точке
00...0 или ряду Тейлора в произвольной точке
пространства. Рассмотрим данные разложения булевой функции (х1, х2,...хn).
Две функции  и  называются взаимно ортогональными, если их конъюнкция
  = 0
Выражение (5.32) эквивалентно равенству
n
f(x1, x2, …, xn) =
x

&
  
(  ( 1 , 2 ,..., n )) i 1
( f ( 1 , 2 ,...,  n ) 1)
i
i
,
(5.32)
так как    =      , и конституенты единицы функции
(х1, х2,...хn)
попарно взаимно ортогональны.
Заменим в выражении (5.19) в каждой конституенте xi на (хi  1).
Применяя следующие тождества:
коммутативности
   =   ;
ассоциативности
  (  ) = (  )  ;
дистрибутивности конъюнкции относительно сложению по модулю два
 (  ) = ()  ();
(5.33)
действия с константами
   = 0,   1 =  ,   0 = ,    = 1,
получаем представление функции (х1, х2,...хn) в виде
(х1, х2,...хn) = 0 
f i xi   f

i 1
i j
i , j 1
...12....n x1 x2...xn,
ij x i
x j ... 
f i ,i ,...,i xi1 xi 2 ...xik ...

i i ,i  i ,...i  k
1 2
1 2 1 3
k 1
i1 ,i2 ,...,ik 1
k
(5.34)
0, i, ij, ..., i1 i2...ik,...., 12...n= 0, 1.
Выражение (5.34) называется полиномом Жегалкина функции (х1, х2,...хn).
Последовательно продифференцируем полином Жегалкина функции (х1, х2,...хn) по
переменным х1, х2, ..., хk и определим значение этой производной в точке 00...0. Учитывая
что
( f   )
f


=
x
x x
(5.35)
94
и

xi





xj  

j 1

n
&
n
&
(5.36)
xj
j 1, j i
после дифференцирования по переменным х1, х2, ..., хk получаем, что
k f
00...0 = 12....k.
x1x 2 ...x k
Действительно, после дифференцирования по переменным х 1, х2, ..., хk все члены
разложения в выражении (5.34) до 12....k обращаются в нуль, а в результате подстановки
хk+1 = хk+2 =... = хn = 0 остальные члены этого разложения, кроме 12....k, также будут равны 0.
Отсюда получаем теорему о разложении любой булевой функции (х1, х2, ... хn) в точке
00...0.
Теорема 5.11: Любая булева функция (х1, х2, ... хn) представима своим значением в
точке 00...0 и значениями всех производных
f
x i
,
n f
2 f
, ...,
, i, j (i  j), ..., = 1, 2, ..., n, в этой точке в виде
x1x 2 ...x n
xi x j
f
(х1,х2,...хn)=(0,0,..., 0)  
00...0 & xi 
i 1 x i
n
2 f
00...0 & xixj ...

i  j xi x j
n
i , j 1
n f
k f
... 
00...0 & xi1xi2...xik ...
00...0 & x1x2...xn

x1x 2 ...x n
i1  i2 ,i1  i3 ,... ik 1  k xi 1x i 2 ...xi k
n
i1 ,i2 ,..., ik 1
(5.37)
Для получения разложения булевой функции в ряд, аналогичный ряду Тейлора в точке
1 2... n, введем новые координаты х1, х2, ..., хn,
точка 1 2... n в координатах х1 x2, ..., xn
где
хi = хi  i, i = 1, 2,..., n. Тогда
будет соответствовать точке 00...0 в координатах
х1, х2, ..., хn. Используя разложение (5.37) булевой функции в точке 00...0 в координатах
х1, х2, ..., хn и заменяя каждую переменную хi  на
хi  i, i = 1, 2, ..., n, получаем
теорему о разложении булевой функции  (х1 x2, ..., xn) в точке 1 2... n.
Теорема 5.12: Любая булева функция  (х1 x2, ..., xn) определяется своим значением в
точке 1 2... n и значениями всех своих производных
f
x i
,
n f
2 f
, ...,
, i, j (i  j), ..., = 1, 2, ..., n,
x1x 2 ...x n
xi x j
в этой точке в этой точке согласно выражению
95
(х1,х2,...хn)=(1, 2,..., n) 
n
f
 x
i 1
1, 2,..., n & (xi  i) 
i
2 f
 
1, 2,..., n & (xii)(xjj) ...
i  j xi x j
n
i , j 1
k
k f
... 
1, 2,..., n & ( xi   i ) ...

j
j
j 1
i1  i2 ,i1  i3 ,... ik 1  k xi 1x i 2 ...xi k
n
i1 ,i2 ,..., ik 1
n
n f
... 
1, 2,..., n & ( xi   i )
x1x 2 ...x n
i 1
(5.38)
96
Раздел 6: Элементы теории графов
§ 6.1: Определение графа. Ориентированные и неориентированные графы
Определение 6.1: Совокупность двух множеств - точек и линий, между элементами
которых определено отношение инцидентности, называется графом G=<V,E>, причем
каждый элемент еЕ инцидентен не более чем двум элементам v1, v2 V.
При этом элементы множества V называются вершинами графа, а элементы множества Е ребрами графа. И вершины и ребра являются элементами графа, и правомерна запись: vG
eG.
Синонимом понятия инцидентность является принадлежность. Ребро инцидентно не
более чем двум вершинам.
Две вершины называются смежными, если они инцидентны одному и тому же ребру,
два ребра называются смежными, если они имеют общую инцидентную вершину.
Напомним, что бинарным отношением , определенным на множестве V, является
подмножество его прямого произведения  V2=VV.
Элементы vi,vjV находятся в отношении , если пара (vi,vj) .
Определение 6.2 (2-ое определение графа): Совокупность множества V с заданным
на нем бинарным отношением  называется графом G=<V,>, где множество вершин V
называется носителем графа, а множество ребер  - сигнатурой графа.
В
некоторых
задачах
инцидентные
ребру
вершины
не
равноправны,
а
рассматриваются в определенном порядке. Тогда каждому ребру можно приписать
направление от первой вершины ко второй. Конец такого ребра помечается стрелкой.
Направленные ребра называются дугами, а содержащий их граф – ориентированным
или оргафом. Рассмотренный ранее граф - не ориентирован. Будем называть его просто
графом.
В дальнейшем неориентированный граф (или просто граф) будем обозначить
G=<V,E>, его ребра – {vi,vj}, а ориентированный – D<V,E>, его ребра – (vi,vj).
Граф, содержащий и ребра, и дуги, называются смешанным.
Примеры графов: неориентированные графы (Рис. 6.1)
а) Если каждая вершина графа соединена ребром с каждой из оставшихся вершин, то
такой граф называется полным и обозначается КI V I . Для примера а) - К4
97
б) Несколько различных ребер могут быть инцидентны одной и той же паре вершин.
В этом случае, они называются кратными ребрами. Граф, содержащий кратные ребра,
называется мультиграфом.
в)
б)
a)
v1
.
. . .
. .
.
г)
v4
v3
v5
v1
v2
K2,3
д)
Рис.6.1.Примеры неориентированных графов.
Граф, содержащий кратные ребра и петли, называется псевдографом.
в) Ребро может быть инцидентно одной вершине, т.е. соединять ее саму с собой.
Такое ребро называют петлей. Граф без петель и кратных ребер называют простым.
г) Множество ребер Е может быть пустым. Если же и множество вершин V пусто, то E
тем более пусто. Граф, состоящий из единственной вершины, называют тривиальным.
д) Если множество вершин V простого графа допускает разбиение на два
подмножества V1,V2V
(V1  V2=V, V1  V2=) и не существует ребер, соединяющих
вершины из одного и того же подмножества, то граф называется двудольным или биграфом
и обозначается K V1 , V2
Пример: Пусть V = {v1,v2,v3,v4,v5} (рис.6.1. д)
V1 = {v1, v4}, V2 = {v2,v3,v5}, I V1 I =2 , I V2 I =3
a)
б)
.
. . .
. .
в)
.
г)
е)
д)
Рис.6.2. Примеры ориентированных графов.
98
Ориентированные графы (рис.6.2): б), в) Как и неориентированный, орграф может
иметь кратные ребра - дуги. В этом случае дуги называются параллельными. Параллельные
дуги, одинаково направленные по отношению к некоторой вершине, называются строго
параллельными.
е) Определение ориентированного биграфа аналогично, но необходимо учесть, что
начало каждой дуги принадлежит множеству V1, а конец - множеству V2.
§ 6.2: Способы задания графов
Пусть задан граф G = <V,E>, I V I = n, I E I = m. Тогда граф можно задать в виде :
1) в виде матрицы смежности U размером n  n, где каждый элемент матрицы ui,j
равен количеству ребер, инцидентных вершинам v i и v j.
2) в виде матрицы инцидентности W размером m  n, где
а) для неориентированного графа G = <V,E> каждый элемент wij
1, если вершина v j инцидентна ребру e i ,
w ij  
0, в противном случае.
б) для ориентирования D = <V,E> графа
 1, если вершина v j начало ребра e i ,

w ij  1, если вершина v j конец ребра e i ,

0, в противном случае.
Если ei является петлей при вершине vj , то элемент wi,j равен любому числу,
отличному от 1, -1 и 0.
Матрица смежности неориентированного графа симметрично относительно главной
диагонали. Матрица ориентированного графа - не симметрична.
Пример. Рассмотрим два графа - неориентированный и ориентированный (рис. 6.3,
6.4). Зададим их матрицами смежности и инцидентности.
99
v7
v2
v1
e9
e8
1
e8
e7
e6
v3
e4
v1
v4
v1
v1
e3
e1
e2
e1
v5
e4
e5
v1
ee12
v1
e1
v1
v1
v4
e2
e1
v6
v55
e3
v1
e1
v1
e5
v7
v
e2
e1
e1
1
e1
1
e7
1
e1e
vv1 ``2
v6
``2
v2
v1
v3
e6
v1
Рис.6.3 Неориентированный граф G
|V|=7 |E|=10
Рис.6.4. Ориентированный граф D
|V|=7 |E|=7
Матрицы смежности и инцидентности неориентированного графа:
v1
v2
v3
v4
v5
v6
v1
0
1
1
0
1
0
v2
1
0
0
1
0
1
v3
1
0
0
1
1
0
v4
0
1
1
0
0
1
v5
1
0
1
0
0
0
v6
0
1
0
1
0
0
v7
0
0
0
0
1
1
v7
0
0
0
0
1
1
0
e1
e2
e3
e4
e5
e6
v1
1
1
0
1
0
0
v2
1
0
1
0
1
0
v3
0
1
0
0
0
1
v4
0
0
1
0
0
1
v5
0
0
0
1
0
0
v6
0
0
0
0
1
0
v7
0
0
0
0
0
0
e7
e8
e9
e10
0
0
0
0
0
0
0
0
1
0
0
0
0
1
0
0
1
0
1
0
0
1
0
1
0
0
1
1
Матрицы смежности и инцидентности ориентированного графа:
v1
v2
v3
v4
v5
v6
v7
v1
v2
v3
v4
v5
v6
0
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
0
1
0
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
v7
0
0
0
0
0
0
1
v1
v2
v3
v4
v5
v6
v7
e1
e2
e3
e4
e5
e6
-1
-1
0
0
0
0
1
0
-1
0
0
0
0
1
0
-1
-1
-1
0
0
1
0
0
0
0
0
0
1
0
0
0
0
0
0
1
0
0
0
0
0
0
1
e7
0
0
0
0
0
0
3
3) Граф может быть задан списком ребер.
Таким образом, графы могут быть заданы различными способами.
Рис.6.5.Изоморфные графы.
Иногда сложно понять, одинаковы ли графы, изображенные разными чертежами.
100
Вид матриц графа зависит от нумерации вершин и ребер графа.
Строго говоря, граф считается полностью заданным, если нумерация его вершин
зафиксирована.
Графы, отличающиеся только нумерацией вершин, называются изоморфными
(Рис.6.5).
Перенумерация вершин графа задается строкой 1,...,..,...,.n новых номеров вершин,
расположенных в исходном порядке.
§ 6.3: Степени вершин графа
Пусть G - неориентированный граф, V  n, E  m .
Определение 6.3: Количество v ребер графа, инцидентных вершине v графа,
называет ее локальной степенью или просто степенью вершины .
Если степени всех вершин графа конечны, то граф называется локально конечным.
Когда заданы матрицы смежности и инцидентности графа, можно определить
локальные степени всех его вершин.
В частности, если задана матрица смежности, то vj=
инцидентности, то vj=
n
u ij , а если задана матрица

i 1
m
w
ij
.
i 1
В неориентированном графе необходимо учесть, что петля дает вклад в локальную
степень вершины, равный двум. Чтобы таким образом учитывать вклад петель в степень,
нужно усложнить формулы для ее вычисления:
1) vj=
n
u
ij
i 1
2)
vj=
 u jj 
n
u
jk
 u jj .
k 1
n


w ij   3 
w ik  .
i 1
k 1


m


n
Когда
i-е
ребро
w
обычное,
k 1
ik
2
и
соответствующее слагаемое внешней суммы равно wik, т.е. 1 для ребер, инцидентных
n
вершине vj, и 0 для остальных. Если же оно является петлей, то
w
k 1
ik
 1 , а слагаемое
внешней суммы равно 2wij, т.е. 2 для петель, инцидентных вершине vj , и 0 для остальных.
101
Если степени всех вершин графа равны k, то граф называется однородным степени k.
В этом случае, если граф имеет n вершин и m ребер, то n=2m/k.
Рассмотрим теперь орграф, для его вершин определены две локальные степени.
Определение 6.4: Число 1v, равное количеству дуг с началом в вершине v,
называется полустепенью исхода вершины v.
Определение 6.5: Число 2v, равное количеству дуг с концом в вершине v,
называется полустепенью захода вершины v.
Петля дает вклад в каждую из полустепеней по 1.
Локальные степени вершин ориентированного графа просто выражаются через
коэффициенты матрицы смежности:
1vi=
n
u
j1
ij
, 2vi=
n
u
hi
.
h 1
Если полустепени исхода и захода всех вершин орграфа равны k, то
называется однородным степени k и
орграф
n=m/k
§ 6.4: Изоморфизм и гомеоморфизм графов
Пусть даны два неориентированных графа
G1=<V1, E1> , G2=<V2, E2> , V1= n1, V2= n2 ,E1= m1, E2= m2.
Графы G1 и G2 изоморфны, если существует биективное (взаимнооднозначное)
отображение : V1 V2, сохраняющее смежность вершин, т. е. если ребро (v', v")E1, то
ребро ((v'), ( v"))E2 и наоборот.
Аналогично определяется изоморфизм для орграфов.
Замечание: Изоморфные графы (орграфы) отличаются только обозначением вершин.
Свойства изоморфных графов:
а) Если G1 и G2 изоморфные графы и  - биективное отображение, то для любой
вершины vV1 n1= n2, m1= m2, (v)=((v)), степень вершины равна степени образа этой
вершины.
б) Если G1 и G2 изоморфные орграфы и  - биективное отображение, то для любой
vV1 n1= n2, m1= m2, 1(v)=1((v)), 2v2v.
а)
Рис. 6.6.
б)
в)
102
На рис.6.6 графы а) и б) изоморфны, но они неизоморфны графу в).
Изоморфизм графов (орграфов) является отношением эквивалентности на множестве
графов (орграфов).
Операция подразбиения ребра
(v', v") графа G=<V, E> состоит в удалении из
множества E ребра (v', v"), добавление к множеству V вершины v, добавление ко множеству
E\{(v', v")} ребер (v', v) и (v, v").
Граф G1 называется подразбиением графа G2, если G1 может быть получен из G2
путем последовательного применения операции подразбиения ребра (рис.6.7).
G1
G2
Рис.6.7.
Графы (орграфы) называются гомеоморфными, если существуют их подразбиения
являющимися изоморфными.
§ 6.5: Часть. Суграф. Подграф
Пусть дан граф G с множеством вершин V и множеством ребер Е : G =<V,E>.
Граф Н называется частью графа G (H  G), если множество его вершин V(H)
содержится во множестве вершин V(G), а множество его ребер E(H) содержится во
множестве ребер E(G).
Если V(H)=V(G), то часть Н называется суграфом.
Например, суграфом графа G будет являться граф с тем же множеством вершин,
множество ребер которого пусто.
Определение 6.6: Суграф Н покрывает вершины неориентированного графа G и
называется покрывающим граф G, если любая вершина последнего инцидентна хотя бы
одному ребру графа Н.
v3
v3
v1
v1
v2
v1
v4
v4
v1
v1
v1
v4
v4
v1
v1
v1
v1
v1
v2
v1
v3
v3
v1
v1
v1
v1
v1
v1
103
Таким образом, если в графе G есть изолированная вершина v, не инцидентная ни
одному ребру, то не существует покрывающего суграфа.
Любое множество В графа G можно считать множеством ребер некоторой части Н.
Множество вершин этой части состоит из вершин, инцидентных элементам множества В.
Если В является множеством ребер другой части Н, то Н Н, причем вершины Н, не
принадлежащие Н, в графе Н изолированы.
Подграфом G(U) графа G с множеством вершин UV называется часть, которой
принадлежат все ребра с обоими концами из U.
Если V(H)=V(G) (множество вершин подграфа Н совпадает с множеством вершин
G),то Н называется еще остовным подграфом графа G.
Если же V(H) V(G) (множество вершин подграфа Н не совпадает с множеством
вершин G), то Н называется собственным подграфом графа G.
Звездный граф для вершины vG состоит из всех ребер с началом или концом в
вершине v. Множество вершин звездного графа состоит из вершины
инцидентных его ребрам вершин.
v2
v3
v1
v4
Рис.6.9. Звездный граф для вершины v1.
§ 6.6: Маршруты. Цепи. Циклы
Пусть G - неориентированный граф.
v и других,
104
Определение
6.7:
Маршрутом
называется
конечная
или
бесконечная
последовательность ребер (...,e 0,e1,...,en,...) такая, что каждые два ребра ei-1 и ei имеют общую
инцидентную вершину (т.е. являются смежными).
Одно и тоже ребро может встречаться в маршруте несколько раз. В дальнейшем
будем рассматривать только конечные маршруты (e1,...,en), в которых имеется первое ребро
e1 и последнее en.
Определение 6.8: Вершина v0, инцидентная е1 и не инцидентная е2 , называется
началом маршрута.
Если какие-либо ребра еj и еj+1 являются кратными, то в маршруте необходимо указать
одно из них.
Вершины, инцидентные ребрам маршрута, кроме начальных и конечных, называются
внутренними.
Т.к. различные ребра могут оказаться инцидентными одной вершине, то начало и
конец маршрута могут оказаться одновременно внутренними точками.
v1
v1
v0=v4
v5
e5
v4
v2
v2
e4
e3
e4
e2
e1
e2
e1
e3
v3
v3
Рис.6.10.Маршруты.
Пусть маршрут M(е1,...,еn) имеет начало v0 и конец vn. Его называют соединяющим
вершины v0 и vn.
Длиной маршрута М является количество входящих в него ребер. Если v0 = vn, то
маршрут называется циклическим.
Отрезок маршрута (еi,еi+1,...,еj) также является маршрутом и называется участком
маршрута М.
Определение 6.9:. Маршрут М называют цепью, если каждое ребро в нем встречается
не более одного раза. Маршрут является простой цепью, если любая вершина графа
инцидентна не более чем двум ребрам (Рис.6.11.)
v3
v3
v1
e1
e2
e3
e2
e1
v4
v2=v6
e4
v1
e3
v2
v6
v4
e4
105
Циклический маршрут называется циклом, если он является цепью и простым циклом,
когда это простая цепь.
Но фактически циклом (соответственно, простым циклом) считают циклически
упорядоченное множество ребер, в котором два соседних ребра имеют общую инцидентную
вершину. Т.о. последовательность (e1,e2,e3,e4),(e2,e3,e4,e1),(e3,e4,e1,e2),(e4,e1,e2,e3) считают
одним и тем же циклом.
Участок цепи, или цикла, является цепью. Участок простой цепи, или цикла - простой
цепью.
§ 6.7: Связные компоненты графа
Определение 6.10:. Вершины v’ и v’’G называются связными, если существует
маршрут М с началом в v’ и концом в v’’.
Пусть вершина vG инцидентна более чем двум ребрам маршрута М, связывающего
v’ и v’’. И пусть ei - первое из этих инцидентных ребер, а ej - последнее (j>i+1).
Тогда из маршрута М можно удалить участок от i+1-го ребра до j -1-го. Получим
новый маршрут М’=(e1,...,ei,ej,...,en). Если М’ - не простая цепь, то этот процесс можем
повторять до тех пор, пока не получим простую цепь. В конце концов, получим простую
цепь М*, связывающую v’ и v’’ (рис.6.12). Т.о. связанные маршрутом вершины связаны и
простой цепью.
ei
ei+1
v
ej
ej-1
e1
en
v’
v”
Рис.6.12. Выделение простой цепи из маршрута.
106
Если вершина vG связана с вершиной v’G, то считается, что она связана и сама с
собой.
Пусть вершины v и v’ связывает маршрут М(e1,...,en). Тогда вершины v и v связывает
маршрут М(e1,...,en,...,e1). Обычно считают, что и изолированная вершина связана сама с
собой. Следовательно, отношение связности 2-х вершин, заданное на множестве вершин
графа G, рефлексивно. Оно так же симметрично и транзитивно. Т.о., отношение связности
является отношением эквивалентности, и определяет разбиение множества вершин V на
подмножества Vi . Вершины одного и того же подмножества Vi связаны друг с другом, а
вершины принадлежат разным подмножествам Vi и Vj не связанны. Поэтому в графе G не
будет ребер, концы которых принадлежат различным множествам Vi и Vj. Следовательно
граф G может быть представлен в виде объединения подграфов G=  G(Vi), которые
называются связными компонентами графа.
Определение 6.11: Граф G называется связанным, если все его вершины связаны
между собой.
Следовательно, все его подграфы так же являются связными.
Можно дать еще одно определение компоненты связности - это связный подграф, не
являющийся собственным подграфом никакого другого связного графа.
Рассмотрим теперь ориентированный граф G. Вершина v орграфа достижима из
вершины u , если существует ориентированный маршрут (путь), исходящий из вершин u и
заходящий в вершинy v.
Определение 6.12:. Орграф называется сильно связанным, если любая его вершина
достижима из любой другой вершины.
v2
v2
v3
v3
v1
v2
v1
v3
v1
сильно связанный  одностороннe связанный слабо связанный
Рис. 6.13. Связность графа.
107
Определение 6.13: Орграф называется односторонне связанным, если для любых
двух вершин по крайней мере одна вершина достижима из другой.
Пусть дан орграф. Построим соответствующий ему
неориентированный граф
следующим образом: множество вершин то же самое, а каждую дугу заменяем ребром. Такой
граф будем называть каноническим.
Определение 6.14: Орграф называется слабосвязанным, если его канонический граф
является связанным.
Тривиальный случай, когда орграф состоит из одной вершины, считается сильно
связанным.
Из сильной связанности графа следует односторонняя связанность, а из нее – слабая
связанность графа (Рис. 6.13).
§ 6.8: Расстояния
Пусть G - связанный неориентированный граф, вершины v’, v’’G. Тогда существует
связывающая эти вершины простая цепь М(e1,...,eg).
Если количество ребер g этой цепи не является минимально возможным, то
существует цепь М(e1,...,eg’), связывающая те же вершины v’ и v’’ и имеющая меньшее число
ребер (g’<g) и т.д. Этот процесс уменьшения можно повторять, но не более g раз. Поэтому
существует цепь,
связывающая v’ и v’’ : M(e1,...,ep), имеющая минимальное количество
ребер p.
Определение 6.15: Минимальная длина простой цепи с началом в v’ и концом в v’’
называется расстоянием d(v’, v’’) между вершинами v’ и v’’.
Т.к. каждая вершина связана сама с собой, то d(v,v)=0.
Рассмотренное d(v’, v’’), где v’ и v’’G, удовлетворяет следующим аксиомам :
1.d(v’,v’’)  0 , d(v’,v’’)=0v’=v’’
2.d(v’,v’’)=d(v’’,v’)
3.d(v’,v’’)+d(v’’,v’’’)  d(v’,v’’’) - неравенство треугольников.
§ 6.9: Диаметр, радиус и центр графа
Пусть G - конечный неориентированный граф.
108
Определение
6.16:
Диаметром
графа
G
называется
величина,
равная
d(G)= max
(d(v’,v’’)) , v’, v’’G.
' ''
v ,v G
Кратчайшие простые цепи, связывающие вершины v’ и v’’, с максимальным
расстоянием между ними называется диаметрально простыми цепями.
Пусть v - произвольная вершина графа G. Максимальным удалением в графе G от
вершины v называется величина r(v )= max (d(v,v’)).
v ' G
Определение 6.17: Вершина v называется центром v,v’G графа G, если
максимальное удаление от нее принимает минимальное значение, т.е. r(G)= min (r(v)).
v ' G
Определение 6.18:. Максимальное удаление r(G) называется радиусом графа, а любая
кратчайшая цепь от центра v до максимально удаленной от него вершины v называется
радиальной цепью.
Центр не обязательно единственный. Так, в полном графе К IVI, в котором любые
вершины v’ и v’’ соединены ребром, радиус равен 1, а любая вершина является центром.
v3
v1
v2
v5
v4
Рис. 6.14.
Для графа, изображенного на рис.6.14 имеем:
d(G)=3, r(v1)=3, r(v2)=2, r(v3)=2, r(v4)=2, r(v5)=3, r(G)=2, v1, v2, v3- центры графа G.
§ 6.10: Эйлеровы и гамильтоновы цепи и циклы
Рассмотрим задачу о кенигсбергских мостах. Необходимо выйти из какой-либо
части города, пройти по каждому мосту не более одного раза, побывав во всех частях города,
и вернуться в исходную часть города (рис 6.15.).
Обходу мостов будет соответствовать последовательность ребер графа, маршрут,
причем он является простым циклом, содержащим все ребра графа.
Такой цикл называется эйлеровым, а графы, содержащие эйлеровы циклы, называются
C
эйлеровыми графами.
c
f
c
C
d
d
e
f
B
D
109
Эйлеровый цикл считается следом пера, вычерчивающего этот граф, не отрываясь от
бумаги, т.е. эйлеровый граф можно изобразить одним росчерком пера, начиная и заканчивая
в одной и той же точке.
Теорема 6.1 (Эйлера):. Конечный неориентированный граф G является эйлеровым
тогда и только тогда, когда он связан и степени всех его вершин являются четными.
Следовательно, задача о кенигсбергских мостах не разрешима.
Определение 6.19: Эйлерова цепь – это цепь, включающая все ребра одного не
ориентированного графа G, но имеющая различные начало и конец v’ и v’’.
Чтобы в графе существовала эйлерова цепь, необходима его связанность и четность
степеней всех вершин, кроме начальной и конечной v’ и v’’, которые
должны иметь
нечетную степень.
Чтобы в конечном орграфе существовала эйлерова цепь необходимо и достаточно,
чтобы 1(v)=2(v).
Определение 6.20: Гамильтоновым циклом называется простой цикл, проходящий
через все вершины графа.
Такой цикл существует не всегда. Через любые 2-е вершины графа может проходить
простой цикл (графа G является циклическим связанным), а гамильтоновый цикл при этом
отсутствует (рис.6.16).
Теорема 5.2 (Теорема Дирака): Если граф G=<V,E> , |V|3, является связным и
1

степень каждой вершины viV, (vi)  | V | , где
2

является гамильтоновым.
Данный граф является циклически
связанным,
но не содержит гамильтонова цикла.

- ближайшее целое число, то граф
110
§ 6.11: Операции над частями графа и графами
Пусть Н - часть графа G.
Дополнение H части Н до графа G определяется множеством всех ребер графа G, не
принадлежащих Н.
Пусть даны две части Н1 и Н2.
Объединением Н1Н2 называется граф, множество вершин которого V1V2
, а
множество ребер Е1Е2.
Пересечением Н1Н2 называется граф с множеством вершин V1V2 и ребер Е1Е2.
Части Н1 и Н2 не пересекаются по вершинам, если они не имеют общих вершин, а
следовательно и общих ребер. Объединение не пересекающихся по вершинам частей
называются прямой суммой по вершинам.
Части Н1 и Н2 не пересекаются по ребрам , если Е1Е2=0. Например, для любой
части H и Н не пересекаются по ребрам.
Рассмотрим операции над графами.
Пусть даны графы G1=<V1,E1> и G2=<V2,E2>.
1) Объединение двух графов - граф G1G2=<V1V2,E1E2>
2) Симметрическая разность двух графов - граф G1 G2=<V1V2,E1  E2>
3) Сумма двух графов - граф G1 + G2= G1G2KIV1I,IV2I
При построении суммы графов определяется их объединение
и каждая вершина
viV1, не вошедшая в пересечение V1V2 соединяется со всеми вершинами из множества
V2\(V1V2 ), а каждая вершина vjV2, не вошедшая в пересечение V1V2 соединяется со
всеми вершинами из множества V1\(V1V2).
Будем говорить, что вершина v конусирует граф G, если она смежна со всеми
вершинами графа G.
111
Вершины, не вошедшие в пересечение V1V2 при суммировании графов G1 и G2
конусирует соответственно V1\(V1V2) и V2\(V1V2 ) .
4) Прямое произведение G1  G2=<V1 V2,E> .
Множество вершин данного графа содержит пары вида (vw), где vV1 и
w V2 , а
множество Е содержит ребра, соединяющие вершины (vv) и (v’v’) , если v и v’1 смежны
в графе G1 , а v2 и v’2 cмежны в графе G2 (Рис.6.17).
Под операцией удаления вершины из графа G понимается операция, заключающаяся в
удалении некоторой вершины v из множества V и инцидентных ей ребер.
Под
операцией
удаления
ребра
из
графа
G=<V,>
понимается
удаление
соответствующей двойки отношения из .
Если существует такая вершина в графе G, удаление которой превращает связный
граф в несвязный, то она называется точкой сочленения.
Ребро с таким же свойством называется мостом.
Граф, содержащий хотя бы один точку сочленения, называется сепарабельным.
а
а
1
3
3
=
b
2
а
1
а
1
b
(a,1)
(a,2)
1
3
+
2
а
1
3
=
2
b
2
(a,3)
3

b
=
2
( b,1)
(b,2)
(b,3)
Рис. 6.17.
§ 6.12: Деревья и лес
Неориентированное дерево - это связный неориентированный граф, не содержащий
циклов, а следовательно, петель и кратных ребер.
Несвязный неориентированный граф без циклов называется лесом (Рис.6.18).
Любая часть леса или дерева также не содержит циклов и кратных ребер, т.е. является
деревом или лесом. Любая часть дерева представляет собой дерево.
112
Любая цепь в дереве является простой.
Вершина v графа G называется концевой или висячей, если её локальная степень равна
1. Инцидентное концевой вершине ребро так же называется концевым.
Если конечное дерево состоит более чем из одной вершины, то оно содержит хотя бы
две концевые вершины и хотя бы одно концевое ребро.
дерево
дерево
дерево




лес
Рис. 6.18.
Цикломатическим числом графа называется число равное r+m-n, где m- число ребер,
n- число вершин, r- число компонент связности графа.
Для
связанного
графа
цикломатическое
число
равно
m-n+1,
кроме
того
цикломатическое число связанного графа равно количеству ребер, которые необходимо
удалить из связанного графа, чтобы получить остовное дерево графа (остовным деревом
графа G называется подграф графа G с тем же множеством вершин, являющийся деревом).
Рассмотрим случай орграфа.
Пусть в графе G отмечена вершина v0. Ее называют корнем дерева G, а само дерево деревом с корнем. В таком дереве можно естественным образом ориентировать ребра в
направлении от корня и получим ориентированное дерево.
Если изменить направление всех ребер на противоположное ( к корню ), то получим
тоже орграф, ориентированное дерево, которое называется сетью сборки (Рис.6.19.).
Ориентированное дерево
v0
Сеть сборки
v0
Рис.6.19.
В каждую вершину ориентированного дерева входит только одно ребро, в корень не
входит ни одно ребро. В любом конечном дереве число вершин на 1 больше числа ребер.
113
Любое дерево можно ориентировать, выбрав в качестве корня любую его вершину.
§ 6.13: Взвешенные графы
Определим понятие взвешенного (помеченного) графа. При этом сопоставим каждой
вершине viV графа G =<V,E> некоторый вес wiW, а каждому ребру eiE также
сопоставим некоторый вес piP.
Т.о., получим граф, содержащий взвешенные вершины (vi,wi) и взвешенные ребра (ei,
pi), т.е. граф G =<(V,W),(E,P)>.
Строго говоря, G представляет собой уже не граф, а функцию, определенную на
вершинах и ребрах графа, т.е. если f:VW, g:EP, то G = <f,g>.
Пример. В графе помеченными могут быть только вершины, или только ребра, или и
вершины и ребра (Рис. 6.20).
Взвешенный граф полностью определяется матрицей инцидентностии матрицами
весов:
w1
p1 000...0
w2
Sv = ...
w |V|
и SE =
0p 2 00...0
......
0000...p |E|
Кишинев
Бендеры
60
15
Тирасполь
100
Одесса
Рис. 6.20. Пример взвешенного графа.
Поиск остовного дерева минимальной длины во взвешенном графе.
Данный алгоритм (Алгоритм Крускаля) применяется при разработке различных
коммуникационных сетей. Суть его состоит в том, чтобы сумма весов ребер полученного
дерева была минимальной.
Пусть дан граф G с помеченными ребрами.
114
1. Выбирают ребро с минимальным весом.
2. Из оставшихся выбирают ребро с минимальным весом.
Проверяют, не образует ли выбранное ребро цикла с выбранными ранее ребрами.
3.
Если да, то отбрасывают его и переход к п 4 . Если нет, то включают его в отобранную
совокупность ребер.
Если не все вершины графа еще связаны, то повторяем все действия, начиная с
4.
п.2. В противном случае – конец алгоритма.
Пример: В заданном
взвешенном графе (Рис. 6.21) выделить остовное дерево
минимальной длины.
Ребра расположены в порядке возрастания следующим образом: AC, FG, EF, EH, IJ,
CD, GJ, AD, DG, BC, CF, FI, HI, AB, BE, FD, BF, CH. Алгоритм Крускаля позволяет
последовательно сохранять ребра AC, FG, EF, EH, IJ, CD,CJ, а ребро AD исключается, т.к.
оно образовывало бы цикл с уже включенными в дерево ребрами AC и
CD. Затем
добавляются ребра DG и BC. Как можно заметить, все вершины уже связаны и минимальное
дерево получено.
A
460
B
400
420
C
610
150
D
380
435
475
415
E
310 F
330
G
170
390
690
445
J
H
450
360
I
Рис.6.21.
§ 6.14: Планарные графы
Определение 6.21:. Граф G называется планарным, если он может быть изображен на
плоскости таким образом, чтобы его ребра не пересекались. Такой рисунок называется
картой графа (Рис.6.22)
G
Рис.6.22.
Карта G
115
Графы К5 и К3,3 не являются планарными (Рис.6.23).
К5
K3,3
Рис.6.23.
Карта G называется связной, если граф G связный.
Каждая картина делит плоскость R2 на области, ограниченные и неограниченные.
Множество таких областей обозначаются через R.
Теорема 6.3(Эйлера): Для произвольной связной карты выполняется равенство :
IVI+IRI - IEI = 2 (Рис.6.24).
r1
r2
r3
r4
4 + 4 - 6 =2
Рис.6.24
Каждая область карты ограничена замкнутым маршрутом .
Определение 6.22: Пусть G=<V,E> - планарный граф. Для карты G определим r степень области r, как длину замкнутого маршрута, ограничивающего область r.
Для графа, изображенного на рис. 6.20, имеем:
r1=3
r3=3
r2=3
r4=3
Имеют место следующие соотношения:

rG
r=2 |E|
если |V|3, то |E|3|V| - 6
63*4-6
66
116
Рассмотрим операцию стягивания графа G как слияние двух смежных вершин после
удаления ребра между ними.
Граф называется стягиваемым к G’, если G’ может быть получен из G путем
последовательного выполнения элементарных стягиваний.
Теорема 6.4 (Куратовского):. Граф является планарным, тогда и только тогда, когда
он не содержит подграфов, стягиваемых к К5 и К3,3.
Определение 6.23: Раскраской графа G называется задание цвета вершинам таким
образом, что если вершины v и w- смежные, v,w V, то они имеют различные цвета.
Величина (G) называется хроматическим числом графа G и равна минимальному
числу цветов, необходимых для раскраски графа.
Граф G называется
р-хроматическим, если его вершины можно раскрасить р
различными цветами.
Одно-хроматический граф  тривиальный граф. Дву-хромотический граф тогда и
только тогда, когда он не содержит циклов нечетной длины.
Теорема 6.5: Для любого планарного графа G хроматическое число не более 4.
Пусть М - карта графа G. Определим карту M’ следующим образом: внутри каждой
области карты М выберем внутреннюю точку. Если две области имеют общее ребро, то
между выбранными внутренними точками проведем дугу. Этот процесс определяет карту М’,
называемую двойственной карте М’ (Рис. 6.25).
v1
v2
1
2
1
3
2
2
2
4
2
2
v4
2
v3
3
2
2
4
2
2
M
M’
2
2
2
2
Рис. 6.25.
Раскраска карты М’ соответствует раскраске областей карты М т.о., что
области, имеющие общее ребро, имеют разные цвета.
Теорема 6.6: Если области карты М необходимо раскрасить таким образом, чтобы
смежные области имели различные цвета, то необходимо не более 4-х цветов.
117
Толщиной графа G называется наименьшее число планарных графов, объединение
которых дает G. Толщина планарного графа равна 1. Нижняя оценка толщины t(G) графа
G=<V,E> определяется неравенством:
 n

 i  2 
 , где
t(G)1+  i 1
 6( n  2) 





  -целая часть, |V|=n, 
i–
степень i-ой вершины.
§ 6.15: Задача поиска маршрутов (путей) в графе (орграфе)
Рассмотрим алгоритм поиска маршрута в связном графе G=<V, E>, соединяющего
вершины v,wV причем vw.
Алгоритм Тэрри:
Если, исходя из вершины v и осуществляя последующий переход от каждой
доступной вершины к смежной ей вершине, следовать следующим правилам
1-4, то всегда
можно найти маршрут в связанном графе, соединяющим две заданные вершины.
Правило 1: Идя по произвольному ребру, отмечать направление, в котором оно было
пройдено.
Правило 2: Исходя из некоторой вершины v' всегда следовать только по тому ребру,
которое не было пройдено или пройдено в противоположном направлении.
Правило 3: Для всякой вершины v'v отмечать первое заходящее в v' ребро, если v
встречается в первый раз.
Правило 4: Исходя из некоторой вершины v'v по первому заходящему в v' ребру
идти лишь тогда, когда нет другой возможности.
Пример:
v3
v2
v2
x
v4
v3
2
3
6
1
v1
v5
4
x
x
5
x
v4
v1
v5
Рис. 6.26.
а)
б)
118
Найти маршрут из v1 в v5 (рис.6.26)
 помечены первые заходящие в вершины ребра возле той вершины, в
Знаком
которую это ребро заходит. По рисунку видно, что маршрут имеет вид: v1 v2 v1 v3 v4 v3 v5.
После того как из v1 зашли в v3 по правилу 4 в v1 вернуться не можем, т. к. имеются
другие возможности, а ребро v1v3 является первым заходящим в v3 ребром. После того как из
v4 зашли в v3 по дуге 5 по правилу 2 в v4 вернуться не можем, а в силу правила 4 не можем
идти и к v1, остается идти к v5.
Замечание 6.1: Алгоритм Тэрри остается в силе, когда G связный граф.
Замечание 6.2: Если G не связный псевдограф, то с помощью алгоритма Тэрри,
исходя из любой вершины v и помечая пройденные вершины и ребра, можно выделить
компоненту связанности псевдографа, содержащую вершину v. Алгоритм закончит свою
работу, когда в первый раз невозможно будет выполнить правило 2, т. е. пришли в вершину u
такую, что все инцидентные ей ребра пройдены в направлении из u, при этом получим, что u
= v.
Замечание 6.3: Из полученного с помощью алгоритма Тэрри маршрута всегда можно
выделить простую цепь, соединяющую v и w.
§ 6.16: Поиск путей (маршрутов) с минимальным числом дуг (ребер)
Путь в орграфе D из вершины v в вершину w, где vw называется минимальным, если
он имеет минимальную длину среди всех путей в орграфе из v в w.
Рассмотрим свойства минимального пути(маршрута):
Утверждение 6.1: Любой минимальный путь (маршрут) является простой цепью.
Утверждение 6.2: (о минимальности подпути минимальность пути) Пусть М=v1, ...,
vk - минимальный путь (маршрут) из v1 в vk, где v1vk, тогда для любых номеров i, j таких,
что
1 i j  k путь (маршрут) M0=vi, vi+1, ..., vj также является минимальным .
Пусть D=<V, E> орграф, где vV , V1V.
Mножество D(v)={w| (v, w)E} называется образом вершины v.
Mножество D1(v)={w| (w, v) E} прообраз вершины v.
D(V1)=
 D(v)  образ множества вершин V1.
vV1
D(V1)
 Dv) прообраз множества вершин V1.
vV1
Пусть G=<V, E> граф, где vV , V1V.
119
Mножество G(v)={w| (v, w)E} называется образом вершины v.
G(V1)=
 G(v)  образ множества вершин V1.
vV1
Рассмотрим алгоритм поиска минимального пути в орграфе с n   вершинами из v в
w, где vw.
Алгоритм фронта волны:
Шаг 1: Помечаем вершину v индексом 0, затем помечаем вершины принадлежащие
образу вершины v индексом 1. Множество вершин с индексом 1 обозначаем FW1(v)  фронт
волны 1-го уровня. Полагаем k=1.
Шаг 2: Если FWk(v)= или k= n и w  FWk(v), то вершина w недостижима из v и
алгоритм прекращает работу, иначе шаг 3.
Шаг 3:Если wFWk(v) перейти к шагу 4, иначе существует путь из v в w длиной k и
этот путь является минимальным. При этом последовательность вершин v w1 w2 ... wk-1 w, где
wk-1FWk(v)D(w)
wkFWk(v) D(wk)
(6.1)
.................
w1FW1(v) D(w2)
и является искомым минимальным путем из v в w. На этом алгоритм прекращает свою
работу.
Шаг 4: Помечаем индексом k+1 все непомеченные вершины, которые принадлежат
множеству вершин с индексом k. Множество вершин с индексом k+1 обозначим FW k+1(v),
присваиваем k:= k+1 и переходим к шагу 2.
Замечание 6.4: Множество FWk(v) называют фронтом волны k-ого уровня.
Замечание 6.5: Вершины w1 w2 ... wk-1 из (6.1) могут быть выделены неоднозначно, т.
е. могут существовать несколько минимальных путей из v в w.
Пример: Определить минимальный путь из v1 в v6 в орграфе, заданном матрицей
смежности.
v1
v2
v3
v4
v5
v6
v1
0
0
0
1
1
0
v2
1
0
0
1
1
1
v3
1
1
0
1
1
1
v4
v5
v4
vv46
0
1
1
0
1
0
1
1
1
1
0
0
1
1
1
1
1
0
120
Следуя данному алгоритму, последовательно получаем, что:
FW1(v)={v4, v5}
FW2(v)=D(FW1(v))\{v1, v4, v5}={v2, v3}
FW3(v)=D(FW2(v))\{v1, v2, v3, v4, v5}={v6}
v6 FW3(v), т. е. существует путь из v1 в v6 длиной 3 этот путь минимальный.
Определим множество
FW2(v)D (v6)={v2, v3}{v2, v3}={v2, v3} Выберем любую вершину из найденного
множества, например v3.
Далее определяем множество
FW1(v) D (v3)={ v4, v5}{ v4, v5, v6}={ v4, v5}
Из полученного множества выбираем любую вершину, например v5. Таким образом
получим, что искомым минимальным путем будет v1 v5 v3 v6.
Замечание 6.6: Если выражения D( ), D-1( ) заменить на G( ), G-1( ), то данный
алгоритм применим и к неориентированному графу.
§ 6.17: Минимальный путь (маршрут) во взвешенном орграфе (графе)
Пусть каждой дуге взвешенного орграфа D=<V, E> приписан некоторый вес  число
l(e), где eE.
Для любого пути М через l(M) обозначим сумму длин входящих в него дуг и назовем
длиной пути М во взвешенном орграфе.
Любой не взвешенный граф можно считать взвешенным, длина каждой дуги которого
равна 1.
Пусть во взвешенном орграфе существует путь из v в w, где vw. Он называется
минимальным, если имеет минимальную длину среди всех возможных путей из v в w.
Рассмотрим свойства минимального пути взвешенного орграфа.
1) Если для любой дуги eE l(e)>0, то любой минимальный путь (маршрут) является
цепью.
2) Если v1, ..., vk минимальный путь (маршрут) из v1 в vk, то для любых i, j таких, что
1 i  j  k путь (маршрут) vi, vi+1, ..., vj также минимальный.
3) Если v, ..., u, w минимальный путь (маршрут) из v в w, содержащий не более k+1
дуг (ребер), то v, ..., u также минимальный путь (маршрут), содержащий не более k дуг
(ребер).
121
Рассмотрим задачу поиска минимального пути (маршрута) во взвешенном орграфе
(графе).
Если орграф содержит ребро с отрицательным весом, то минимального пути может и
не существовать.
Замечание 6.7: Если необходимо найти максимальный путь, то достаточно будет
поменять знаки длин дуг на противоположные.
Пусть D=<V, E> взвешенный орграф с n2 дугами. Введем величины i(k) , где i =1, 2,
..., n
k=1, 2, ...  длина минимального пути из v1 в vi, содержащего не более k дуг. Если
таких путей нет, то i(k) =. Если произвольную вершину v считать путем нулевой длины из v
в v, то можем ввести величины:
1(0)=0 и i(0)= для i =2, 3, ..., n.
(6.2)
Рассмотрим квадратную матрицу nn каждый элемент которой
Cij=
l , если (v i , v j )  E

, если (v i , v j )  E
(6.3)
Такую матрицу назовем матрицей длин дуг взвешенного орграфа.
Утверждение 6.3: При i =2, ..., n, k0 выполняется равенство
i(k+1)= min {j(k)+ Cj i},
1 j n
(6.4)
a при i =1, k0 справедливо равенство
1(k+1)=min{0, min (j(k)+ Cj,1)}
1 j n
(6.5)
Используя данное утверждение можно описать алгоритм нахождения таблицы
значений величин i(k) в виде матрицы из i строк и (k+1) столбцов, начиная с k=0 и
увеличивая k по мере необходимости.
Предположим, что в орграфе отсутствуют простые циклы отрицательной длины.
Утверждение 6.4: Из всякого замкнутого пути отрицательной длины можно выделить
простой цикл отрицательной длины.
Утверждение 6.5:. Если во взвешенном орграфе отсутствуют простые циклы
отрицательной длины, то в нем нет и замкнутых путей отрицательной длины.
Утверждение 6.6: Во взвешенном орграфе, в котором нет простых циклов
отрицательной длины, из всякого незамкнутого пути можно выделить простую цепь с теми
же началом и концом, длина которой не превосходит длину исходного пути.
Рассмотрим алгоритм, который позволяет по таблице i(k), где i =2, ..., n k=0, 1,...,n-1,
определить минимальный путь во взвешенном орграфе из v1 в любую достижимую вершину,
причем из всех возможных путей выбирается путь с минимальным числом дуг.
122
Алгоритм Форда-Беллмана нахождения пути во взвешенном орграфе из v1 в v i1
i11
Шаг 1: Пусть таблица величин i(k) где i =2, ..., n k=0, 1, ... уже составлена. Если
(in1 1) =  то вершина vi не достижима из v1 и алгоритм заканчивает свою работу. В данном
алгоритме принимают, что l(e), eE  конечное число.
Шаг 2: Пусть (in1 1) < тогда (in1 1) выражает длину любого минимального пути из v1
в vi1. Определим минимальное число k11 при котором выполняется равенство: (ik1 1 ) = (in1 1) .
По определению чисел i(k) получаем, что k1 - это минимальное число дуг в пути среди всех
минимальных путей из v1 в v i1 .
Шаг 3: Последовательно определяем номера i2, i3, ..., i k1 1
( k1 1)
i2

i1
+ C i2 , = (i1k1 )
(ik31  2) + C i3 , i2 = (ik21 1)
(6.6)
.......................
(i0( k)
1 1)
+C i( k
,i
1 1) k1
= (i1k)
1
эти номера находим в соответствии с равенством (2). С учетом того, что
(in1 1) = (ik1 1 ) < имеем, что C i 2 , i1 <, ..., C i( k
,i
1 1) k1
получаем ребро(v i 2 ,v i1 ),...,( v i( k
1 1)
(i0( k)
1 1)
=0, i k1 1 =1, v i( k
1 1)
, (i0( k)
1 1)
, откуда, используя (6.2)
, v i( k ) )E, l(v i 2 ,v i1 )= C i 2 , i1 ,..., l( v i( k
1
1 1)
, v i( k ) )= C i( k
,i
1 1) k1
1
= v1.
,
(6.7)
Складывая (6.6) и учитывая (6.7) имеем, что длина маршрута l(v1, v i k , ..., v i 2 ,
1
v i1 )= (ik1 1 ) , т. е. v1, v i k , ..., v i 2 ,v i1  искомый минимальный путь из v1 в v i1 в орграфе D с k1
1
дугами.
Замечание 6.8: Номера i2, i3,...i k1 , удовлетворяющие (6.6) могут быть выделены
неоднозначно, т. е. может существовать несколько минимальных путей из v1 в v i1 .
Замечание 6.9:Данный алгоритм можно модифицировать т.о., чтобы определить
минимальный путь из v1 в v i1 , содержащий не более k0 дуг, где k01 – заданное число. Для
этого в алгоритме вместо (in1 1) необходимо рассматривать (ik1 0 ) . При этом, если в орграфе
D имеются простые циклы отрицательной длины, может выполняться неравенство (1k0 )  0 .
123
Замечание 6.10: Алгоритм Форда-Беллмана и его модификация, описанная выше,
после соответствующего изменения в терминологии и обозначениях применимы и к
неориентированному графу.
Пример: Определим минимальный путь из v1 в v6 во взвешенном орграфе (рис.6.27),
матрица длин дуг которого имеет вид:
v4
2
2
5
v2
2
5
v1
2
2
1
v5
v3
12
v6
Рис.6.27.
v1
v2
v3
v4
v5
v6
(i0)
(i1)
(i2)
(i3)
(i4)
(i5)
v1


5
5
2
12
0
0
0
0
0
0
v2





2


7
5
5
5
v3

2





5
3
3
3
3
v4

2





5
4
4
4
4
v5


1
2



2
2
2
2
2
v6







12
12
9
7
7
Величина 6(5) выражает длину минимального пути из v1 в v6. Найдем минимальное
число k11 дуг, при котором выполняется равенство 6(5) = 6(k1) Из таблицы получаем k1=4,
значит минимальный маршрут будет содержать самое меньшее 4 дуги. Определим теперь
последовательность номеров i1, i2, ..., i5, где i1=6, в минимальном пути, удовлетворяющую
(6.6). Из таблицы получаем, что это последовательность номеров 6,2,3,5,1, так как:
2(3)+С2,6=5+2=7=6(4)
3(2)+С3,2=3+2=5=2(3)
5(1)+С5,3=2+1=3=3(2)
1(0)+С1,5=0+2=2=5(1).
Тогда v1 v5 v3 v2 v6  минимальный путь из v1 в v6, содержащий наименьшее число дуг.
124
Раздел 7: Теория алгоритмов
§ 7.1: Понятие алгоритма и необходимость его математического уточнения.
Проблема разрешения, проблема уточнения, проблема вычисления. Предикаты
До середины 19 века единственной областью математики, работающей не с
числовыми объектами, была геометрия, которая отличалась повышенными требованиями к
точным рассуждениям.
Во 2-ой половине 19 века эти требования стали еще более жесткими в связи с
возникновением неевклидовой геометрии и абстрактных теорий, типа теории групп. Кроме
того, Кантором была создана теория множеств, понятия которой лежат в основе всей
математики. Но данная теория в своих рассуждениях приводила к неразрешимым
противоречиям. Все это потребовало точного изучения принципов математических
рассуждений
теми
же
математическими
средствами.
Возникла
так
называемая
метаматематика, использующая рассуждения с помощью финитных методов. Финитный
подход заключался в том, что он допускал только конечные действия над конечным числом
объектов. Поэтому необходимо выяснение, какие объекты и действия следует считать точно
определенными, какими свойствами обладают комбинации элементарных действий, что
можно или нельзя сделать с их помощью. Все это стало предметом изучения теории
алгоритмов и формальных систем. Главным внутриматематическим приложением теории
алгоритмов является доказательство невозможности алгоритмического, т. е. точного и
однозначного
решения
некоторых
математических
проблем.
Такие
доказательства
невозможны без понятия алгоритма.
Необходимость уточнения понятия алгоритма была обусловлена тем, что сравнение
различных алгоритмов решения одной и той же задачи нужно было проводить не только по
качеству решения задачи, но и по характеристикам самого алгоритма.
Из курса информатики средней школы известно, что алгоритм – это точно
определенная последовательность действий, приводящая к результату.
Основные требования, предъявляемые к алгоритмам.
1) Каждый алгоритм имеет дело с данными входными, промежуточными и
выходными, т. е. существует вход и выход алгоритма, объекты, используемые алгоритмом в
качестве данных, должны быть различимы и четко определены. В теории алгоритмов
фиксируют конечные конкретные наборы исходных объектов, называемые элементарными, и
125
конечный набор средств построения других объектов из элементарных. Набор элементарных
объектов образует алфавит.
2) Данные для размещения требуют память, которая должна быть однородной и
дискретной, т. е. состоять из одинаковых ячеек, каждая из которых может содержать не
более одного символа алфавита. Память может быть конечной или бесконечной, одна или
несколько.
3) Дискретность алгоритма  алгоритм состоит из отдельных элементарных действий,
число которых конечно.
4)
Последовательность шагов алгоритма детерминирована (определена),
после
каждого шага точно можно сказать, какой шаг следующий или дается команда остановки
алгоритма.
5) Массовость – алгоритм должен
быть применим к классу однотипных задач,
различающихся исходными данными.
6) Результативность алгоритма
результат.
- за конечное число шагов должен быть получен
Не существует общего метода проверки алгоритма на результативность для
любых данных.
Следует различать:
- описание алгоритма - инструкция,
- механизм реализации алгоритма, содержащий средства пуска, остановки, реализации
элементарных шагов, выдачи результатов и обеспечение детерминированности.
- процесс реализации алгоритма  это последовательность шагов,
которая
порождается при применении алгоритма к конкретным данным.
Будем полагать, что описание и механизм его реализации конечны.
Примером описания является блок-схема (орграф), где вершина - это шаги алгоритма,
а дуги - направление потоков данных, тогда реализация алгоритма - это нахождение пути в
графе от начальной до конечной вершины. Но блок-схема не содержит сведений ни о
памяти, ни об использованном наборе элементарных шагов. Исходя из требований 16,
алгоритм можно определить как общий метод решения элементарных задач, обладающий
свойствами массовости и т.д.
Определение алгоритма, приводимое в курсе информатики, не является точным
математическим понятием, т.к. входящие в это определение слова в свою очередь не
обозначают точные математические понятия.
Рассмотрим
необходимость
математического
уточнения
понятия
алгоритма.
Постоянно встает проблема поиска алгоритмов для решения новых классов задач,
126
возникающих внутри и вне математики. Если поиск оканчивается успешно, то понятие
алгоритма не требует уточнения, в противном случае возникают две гипотезы:
1) алгоритм существует, но описывается не теми средствами, которые необходимы
для его представления, и поиск следует продолжить;
2) алгоритм не существует, но необходимо доказать, что искомый алгоритм не
существует, а для этого точно необходимо знать (в точном математическом смысле), что
такое алгоритм;
Т.е. возникает необходимость построения математической теории алгоритма.
Были построены различные модели такой теории: машина Тьюринга, рекурсивные
функции, нормальные алгорифмы Маркова.
Введем некоторые понятия:
Рассмотрим общий вопрос: имеет ли действительные корни уравнение ax 2+6x+c=0,
где
a, b, c  Z, а  0.
Этот общий вопрос объединяет однотипные частные вопросы, отличающиеся
значениями a, b, c. Ответ на поставленный вопрос формулируется в виде «да» или «нет». Т.о.,
общий вопрос содержит в себе счетный класс частных вопросов: P={p1,p2,...,pn,...}.
Определение 7.1: Вопрос о существовании общего метода, позволяющего за
конечное число шагов ответить «да» или «нет» на любой вопрос piP, называется проблемой
разрешения для этого класса вопросов.
Определение 7.2: Проблема разрешения может решаться положительно, тогда класс
P, называется разрешимым, а сам метод - разрешающей процедурой, или алгоритмом. В
противном случае класс Р неразрешим.
Рассмотрим теперь следующий вопрос: найти корни уравнения ax 2+6x+c=0. В
качестве ответа необходимо предъявление какого-то объекта. Общий вопрос содержит в себе
счетное множество частных вопросов Q={q1,q2,...,Qn,...}, например, найти корни уравнения
3х2+2х-1=0.
Вопросы данного класса формулируются, начиная со слов: чему равно, найти,
вычислить, решить и т.п.
Определение 7.3: Вопрос о том, существует ли общий метод, позволяющий для
любой задачи qi Q за конечное число шагов дать ответ, называется проблемой вычисления
для класса Q.
Определение 7.4: Если эта проблема решается положительно, то данный класс задач
называется вычислимым, а общий метод - вычислительной процедурой или алгоритмом. В
противном случае класс задач считается невычислимым.
127
Отсутствие вычислительного алгоритма для класса однотипных задач не означает,
что частная задача класса не разрешима (не вычислима).
Пример не существует общего метода для решения уравнений 5-ой степени:
ax5+bx4+cx3+dx2+еx+f = 0, но частное уравнение x5 - 4x3+x2 - 4=0 имеет решение:
x3(x2 -4)+(x2 -4)=0
(x2 - 4)(x3 + 1)=0
(x-2)(x+2)(x+1)(x2 -x+1)=0
x1=2, x2= -2, x3= -1
Кроме того, в настоящее время в вычислительной математике разрабатываются
методы приближенных вычислений.
Говоря далее «функция», будем иметь в виду арифметическую функцию, т.е. функцию
вида f : M1nM2, где M1, M2   - множество натуральных чисел.
Функция f называется вычислимой, если существует алгоритм для вычисления ее
значений при любых значениях аргументов.
Вычисляемая функция - это интуитивное понятие, т.к. в ее определении содержится
интуитивное понятие алгоритма. Поэтому употребляется термин интуитивно вычисляемая
функция.
Определение 7.5: Функция Р(x1,x2,...,xn), аргументы которой принимают значения из
некоторого множества D, а сама функция принимает значения из множества B={0,1},
называется предикатом (в данном случае n - местным).
Иными словами, предикат можно рассмотреть как некоторые предложение, о котором
можно сказать, истинно оно или ложно.
Пример: P(x)={x - простое число} – одноместный предикат.
P(3)=1
P(22)=0 (22 не простое число)
P(x, y)={x+y=5} – двуместный предикат.
P(2,3)=1
P(0,4)=0
Определение 7.6: Предикат называется тождественно истинным, если для любых
значений аргумента он принимает значение 1; и называется тождественно ложным, если
для любого значения аргумента его значение 0. Предикат называется выполнимым, если
существует хотя бы один набор значений, при которых значение предиката равно 1.
Утверждение 7.1: Любой алгоритм, разрешающий или вычисляющий, может быть
сведен к алгоритму для вычисления значений некоторой функции.
128
Рассмотрим счетный класс задач P={pi| iN}, требующих ответа «да» или «нет». На
множестве N определим предикат P, порождающий логическую функцию f : N{0,1}
следующим образом:
1, если ответ на Pn утвердительный
P(n)= 
0, если ответ на Pn отрицательный
Если класс задач P разрешим, то и предикат Р разрешим и обратно. Таким
образом, проблема разрешения для класса Р сводится к проблеме разрешения для предиката
Р.
Теперь построим для предиката Р представляющую функцию fp следующим
образом:
0, если P(n)  1
fp(n)= 
1, если P(n)  0
Теперь проблема разрешения для предиката Р, а следовательно, и для класса Р,
сводится к проблеме вычисления для функции fp.
Действительно, если fp вычислима, то применив соответствующий алгоритм к
произвольному значению n аргумента, получим значение fp(т), т.е. 0 или 1. Если fp=0, то
Р(n)=1 и ответ на Р(n) – «да», если fp=1, то Р(n)=0 и ответ на Р(n) – «нет».
Итак, любой разрешающий алгоритм для задач класса Р сводим к алгоритму
для вычисления значений некоторой функции.
Рассмотрим счетный класс задач Q={qi| iN}, требующих в
качестве ответа
предъявление некоторого объекта, т.е. задачи типа «Чему равно?». Пусть объекты,
предъявляемые в качестве объектов, берутся из некоторого счетного множества, которое
можно перечислить, например:
y0,y1, y2,…,ya,…
(7.1)
Теперь построим функцию f следующим образом: f(n)=a, если ответ к задаче q n есть
ya.
Таким образом, проблема вычисления для задач класса Q сведется к проблеме
вычисления для функции f.
Если f вычислима, то , применив вычисляющий алгоритм к произвольному значению
n аргумента, получим соответствующее значение функции и по этому значению a
восстановим объект ya , являющийся ответом к задаче qn. Это восстановление возможно в
силу
перечислимости множества (7.1), означающей, что по номеру
восстанавливается и сам элемент.
элемента
129
В итоге получаем, что всякий алгоритм сводим к алгоритму для вычисления значений
некоторой
функции. Поэтому, решая проблему уточнения понятия алгоритма, можно
ограничиваться алгоритмами для вычисления значений функции, а это равносильно
уточнению класса вычислимых функций.
Эту проблему решают по следующей схеме:
1) вводят класс точно определенных функций;
2) убеждаются, что все функции данного класса вычислимы. Встает вопрос: "Все ли
вычислимые функции принадлежат введенному классу?”. С помощью доказательства
ответить на этот вопрос принципиально невозможно, так как в нем содержится интуитивное
понятие «вычислимая функция». Поэтому
3) принимают гипотезу, или тезис, что «класс интуитивно-вычислимых функций
совпадает с классом точно определенных функций».
§ 7.2: Машина Тьюринга
Характеризуя понятие алгоритма, отмечалось, что предписание, задающее алгоритм,
должно быть однозначно осуществимым и, недопустимы никакие свободно принимаемые
решения, т.е. исполнитель должен действовать механически, без инициативы. В наибольшей
степени этим свойством обладают машины. Английский математик Тьюринг предложил
уточнение понятия алгоритм в виде воображаемой вычислительной машины. Основное
отличие машины Тьюринга (МТ) в том, что она:
1)не может ошибаться;
2)обладает бесконечной памятью;
Рассмотрим составные части МТ:
1) Лента (память) - бесконечная вправо и влево лента, поделенная на ячейки.
2) Внешний алфавит МТ - конечное множество символов:
А={a0,a1,...,ak}
В каждый момент времени в одной ячейке ленты может находиться только один
символ из внешнего алфавита А.
Стмвол а0 имеет строго определенный смысл - пустой символ.
Почти все ячейки ленты могут быть пустыми. В процессе работы МТ символы в
ячейках могут меняться: старый стирается,
вписывается новый. Если ячейка пуста, то
подразумевается, что в ней находится символ а0.
3) Внутренний алфавит - множество состояний МТ :
130
Q={q0,q1,q2,...,qm}
Данное множество конечно. В каждый момент времени МТ может находиться лишь в
одном из состояний qi. За один такт работы МТ может изменить свое состояние и в
следующий момент времени воспринимать ячейку в новом состоянии. При этом различают:
q0 - конечное состояние, МТ останавливается.
q1 - начальное состояние.
4) Управляющая головка (устройство) - способно воспринимать информацию из
ячейки, изменять ее и двигаться по ленте. При этом: 1) в каждый момент времени головка
обозревает только одну ячейку ленты; 2) за один такт работы головка может передвинуться
влево на одну ячейку и обозревать соседнюю слева ячейку, либо передвинуться на одну
ячейку вправо, либо остаться на месте и тогда обозреваться будет та же самая ячейка.
Множество направлений движения головки МТ обозначим:
T={Л, П, Н}
4) Программа МТ - описывает порядок работы МТ с внешним алфавитом А и
множеством внутренних состояний Q.
Рассмотрим команду ajqiaqteqp :
Если в некоторый момент времени управляющая головка обозревает ячейку,
содержащую символ aj, находясь в состоянии qi, то она должна выполнить следующую
работу:
1) символ aj в этой ячейке заменить на символ aq.
2) осуществить сдвиг в направлении teT;
3)перейти в состояние qp.
Программой МТ называется совокупность подобных команд, причем их число не
более m(k+1).
Представим программу МТ в виде таблицы, состоящей из k+1 строк и m столбцов.
q1
q2
…
qi
a1
.
a2
.
…
aj
…
ak
.
aqteqp
…
…
…
…
qm
Каждая пара вида (aj, qi) представляет собой элемент прямого произведения множеств
AQ\{q0}, а каждая тройка (aq,te,qp)
представляет собой элемент прямого произведения
131
ATQ. Таким образом, МТ ставит в соответствие каждой паре (aj,qi) тройку (aq,te,qp), т.е.
является отображением. F: AQ\{q0}ATQ, которое полностью определяет МТ.
Пусть в некоторый момент времени t самая левая непустая ячейка ленты с1 содержит
символ ajs, а самая правая непустая ячейка ленты сs, s2 содержит символ ajs. Между с1 и сs
содержится s-2 ячейки. В этом случае говорят, что в момент времени t на ленте записано
слово
p=aj1aj2...ajk...ajs
(7.2).
При s=1, т.е. когда на ленте лишь один непустой символ, p=aj1.
Если МТ в некоторый момент времени находится в состоянии qi и головка обозревает
символ ajv слова (7.2), где 2vs, то слова aj1aj2...qiajv...ajs называются конфигурацией МТ в
момент времени t.
Если лента МТ пуста, то конфигурация МТ будет иметь вид: qia0 .
В дальнейшем будем понимать: пусть МТ начинает работать в некоторый момент
времени. Слово, записанное в этот момент на ленте, называется исходным, или начальным.
Чтобы МТ действительно началa работу, необходимо поместить считывающую головку
напротив какой-либо ячейки и указать, в каком состоянии МТ находится в начальный
момент.
Если P1 - исходное слово, то МТ, начав работу на слове P1 , либо остановится через
определенное число шагов, либо никогда не остановится. В первом случае говорят, что МТ
применима к слову P1 и результатом применения является слово P, соответствующее
заключительной конфигурации МТ: P=T(P1)
Во втором случае МТ не применима к слову P1 .
В дальнейшем условимся:
1) исходное слово - не пустое,
2) МТ начинает работу, находясь в состоянии q1.
Зоной работы МТ на слове P1 называется множество всех ячеек, которые за время
работы хотя бы один раз обозревались головкой.
МТ Т1 и Т2 называются эквивалентными в алфавите А ( Т1(P) Т2(P)), если для любого
исходного слова Р Т1(P) и T2(P) определены или не определены одновременно, и если они
определены, то Т1(P) =Т2(P).
МТ Т определена (не определена), если МТ Т применима (не применима) к слову Р.
Пусть машины Т1 и Т2 имеют соответственно программы П 1 и П 2. Предположим, что
внутренние алфавиты этих машин не пересекаются и что q1 - некоторое заключительное
132
состояние машины Т1, а q 2 - какое-либо начальное состояние машины Т2. Заменим всюду в
программе П 1 состояние q1 на состояние q 2 и полученная программа П определяет машину
Т, называемую композицией машин Т1 и Т2 (по паре состояний ( q1 , q 2 )) и обозначаемую
через
Т1 Т2 или Т1Т2 (более подробно: Т=Т(Т1,Т2, ( q1 , q 2 )). Внешний алфавит композиции
Т1Т2 является объединением внешних алфавитов машин Т1 и Т2.
Пусть q  - некоторое заключительное состояние
состояние
машины Т, а q  - какое-либо
машины Т, не являющееся заключительным. Заменим всюду в программе П
машины Т символ q  на q  . Получим программу П  , определяющую машину Т  ( q  , q  ).
Машина Т  называется итерацией машины Т (по паре состояний ( q  , q  )).
Пусть машины Т1 , Т2, Т3 имеют соответственно программы П 1, П2, П3. Предположим,
что внутренние алфавиты этих машин не пересекаются. Пусть q1 и q 1 - некоторые
различные заключительные состояния
машины Т1. Заменим всюду в программе П1
состояние q1 некоторым начальным состоянием q 2 машины Т2, а состояние q 1 - некоторым
начальным состоянием q 3 машины Т3. Затем новую программу объединим с программами П2
и П3. Полученная программа П определяет машину Т= Т(Т1( q1 , q 2 ),Т2( q 1 , q 3 ),Т3),
называемую разветвлением машин Т2 и Т3, управляемым машиной Т1 .
§ 7.3: Вычислимость функции по Тьюрингу. Тезис Тьюринга
~ =(1, ..., n), n1- произвольный набор целых неотрицательных чисел. Слово
Пусть 
~ в
11+1012+10...01n+1 называется основным машинным кодом или просто кодом набора 
алфавите {0,1} и обозначается k(). Слово 1+1 также является основным машинным кодом.
Для ясности 13 это 111.
Определение 7.7: Функция
f(x1,...,xn), n1,
называется частичной числовой
функцией, если переменные xi принимают целые неотрицательные значения из натурального
~ функция определена, т.е. f( 
~ )=f(1,...,n), и также
ряда N={0,1,2,…,m,…} и на наборе 
принимаeт целые неотрицательные значения.
Определение 7.8: Частичная числовая функция называется вычислимой по Тьюрингу,
если существует МТ Тf, обладающая следующими свойствами:
~ ) определена, то результатом применения МТ к коду будет
1) если функция f( 
являться код целого неотрицательного числа.
~ ))=k(f( 
~ ))
Тf(k( 
133
2) если
~ ), либо
f() не определенна, то либо МТ Tf не применима к слову k( 
~ )) не является кодом никакого целого неотрицательного числа.
Tf(k( 
Предполагается, что в начальный момент времени головка МТ Tf обозревает самую
~ ).
левую крайнюю единицу слова k( 
Если функция f вычислима по Тьюрингу с помощью МТ Tf , то говорят, что МТ
вычисляет функцию. Кроме того, т.к. понятие вычислимой функции дано нами через понятие
МТ, которое еще математически точно не определено, будем говорить об интуитивно
вычисляемой функции.
Тезис Тьюринга: Всякий интуитивный алгоритм может быть реализован с помощью
МТ.
Тезис Черча-Тьюринга: Всякая интуитивно вычисляемая функция вычислима по
Тьюрингу.
134
МТ как математическое понятие алгоритма.
В каждой МТ имеются : три конечных множества A, Q, T, выделенные элементы
a0A, q0,q1Q и программа, представляющая собой отображение вида F: AQ\{q0}A TQ.
(7.3)
Определение 7.9: МТ называется система вида <A, a0, Q, q0, q1, T, >, где  программа МТ.
Какую бы МТ ни взяли, можно считать, что имеется алгоритм, исходным объектом,
промежуточным и окончательным результатами которого являются слова в алфавите А.
Предписанием,
задающим
этот
алгоритм,
является
программа

математическое понятие отображения. Т.о., с математической точки зрения
-
точное
МТ - это
алгоритм переработки слов, заданных в алфавите этой машины.
Применительно к МТ можно рассматривать все свойства, рассматриваемые
применительно к интуитивному понятию алгоритма. В частности, результативность
алгоритма и его конечность - это остановится ли МТ за конечное число тактов работы и в
какое слово перерабатывается исходное.
Чтобы доказать, что функция вычислима по Тьюрингу, необходимо построить МТ,
вычисляющую данную функцию.
Пример: 1) Построить МТ, вычисляющую функцию f(x,y)=x+y. В качестве внешнего
алфавита возьмем
A={a0, 1} , где a0- пустой символ.
Тогда в этом алфавите
0-1
1 - 11
2 - 111
3 - 1111, и т.д.
Q={q0,q1,q2,q3,q4}
X и Y будут записаны на ленте и разделены одной ячейкой, содержащей пустой
символ. МТ обозревает самую левую крайнюю непустую ячейку.
Программа, вычисляющая данную функцию будет иметь вид:
1q11Пq1
a0 q11Пq2
1q21Пq2
a0q2 a0Лq3
135
1q3 a0Лq4
1q4 a0Лq0
Можно показать, что все арифметические функции вычислимы по Тьюрингу.
§ 7.4: Существование невычислимых функций
Принимая тезис Тьюринга для доказательства существования невычислимых в
интуитивном смысле функций достаточно доказать существование функции не вычисляемой
по Тьюрингу.
Предварительно рассмотрим некоторые утверждения , которые примем без
доказательств:
1) множество МТ счетное.
2) множество всех арифметических функций не счетно.
Из этих двух утверждений следует, что существует функция, не вычислимая по
Тьюрингу, т.е. невозможно для каждой арифметической функции построить вычисляющую
ее МТ.
Невычислимость (неразрешимость) означает отсутствие единого способа решения для
всего класса задач, в то время как частная задача может быть решена.
В числе общих требований, предъявляемых к алгоритмам, имеется требование
результативности.
Наиболее уместной формулировкой было бы требование, чтобы по любому алгоритму
А и исходным данным  можно было бы определить, приведет ли работа алгоритма А при
исходных данных  к результату или нет, т.е. необходимо построить алгоритм В такой, что
В(A, )=истина, если A() дает результат и B(A, )=ложь, если A() не дает результата.
В силу тезиса Тьюринга эту задачу можно сформулировать, как задачу построения
МТ: построить МТ Т0 такую, что для любой МТ Т и исходных данных  Т0(T, )= истина,
если МТ Т остановится и Т0(T, )=ложь, если не остановится. Эту задачу называют
проблемой остановки МТ.
Теорема 7.1: Не существует МТ Т0, решающих проблему остановки для произвольной
МТ Т.
В силу тезиса Тьюринга невозможность построения МТ означает отсутствие
алгоритма решения данной проблемы, и данная теорема является примером неразрешимой
проблемы. Следовательно, проблема результативности алгоритма неразрешима, т.е. нельзя
создать программу, которая бы по тексту любой программы и по ее исходным данным
определяла бы, зациклится она или нет.
136
137
§ 7.5: Рекурсивные функции
Класс рекурсивных функций определим индуктивно: в первой части определения
перечислим исходные функции, во второй укажем правила образования новых функций из
уже имеющихся.
Определение 7.10:
1. Следующие функции называются исходными.
А) Нуль-функция: Z(x)=0 x.
Б) Функция прибавления единицы: N(x)=x+1 x.
В) Проектирующие функции: U in ( x 1 , x 2 ,..., x n )  x i xi , i=1,2,…,n, n=1,2,….
2. Следующие правила служат для образования новых функций, исходя из уже
имеющихся.
Г)
Подстановка: функция f получена с помощью подстановки из функций
g(y1,y2,…,ym),
h1(x1,x2,…,xn),…,
hm(x1,x2,…,xn),
если
f(x1,x2,…,xn)=g(h1(x1,x2,…,xn),…,
hm(x1,x2,…,xn)).
Д) Рекурсия: функция f получена из функций g и h с помощью рекурсии, если:
f ( x 1 ,..., x n ,0)  g( x 1 ,..., x n )
, где x1,x2,…,xn – параметры рекурсии,

f ( x 1 ,..., x n , y  1)  h ( x 1 ,..., x n , y, f ( x 1 ,..., x n , y))
n. Кроме того, если n=0, то f(0)=k (k – фиксированное число), f(y+1)=h(y,f(y)).
Е) -оператор: функция f получена из функций g и h с помощью ) -оператора если
f(x1,x2,…,xn)= y(g(x1,x2,…,xn,y)=0) – наименьшее значение у, при котором g(x1,x2,…,xn,y)=0
и выполняется условие:  x1,x2,…,xn существует по крайней мере одно значение у, для
которого g(x1,x2,…,xn,y)=0.
Определение 7.11: Функция f называется рекурсивной (общерекурсивной), если она
может быть получена из исходных функций с помощью конечного числа применения правил
подстановки, рекурсии и -оператора. В частности, если рекурсивная функция может быть
получена без применения -оператора, она называется примитивно-рекурсивной.
Таким образом, всякая примитивно-рекурсивная функция рекурсивна, но обратное
неверно.
Следовательно, классом рекурсивных функций называется класс, содержащий
исходные функции а)-в) и замкнутый относительно правил г)-е).
Введение фиктивных переменных, перестановка и отождествление переменных не
выводит из класса рекурсивных функций.
138
Предложение 7.1: Если функция g(y1,y2,…,yk) – рекурсивна и x1,x2,…,xn – различные
переменные, причем при любом i (1 i k) zi есть одна из переменных x1,x2,…,xn , то функция
f(x1,x2,…,xn)=g(z1,z2,…,zk) тоже рекурсивна.
Предложение 7.2:
А) Нуль-функция Zn(x1,x2,…,xn)=0 примитивно-рекурсивна.
Б) Постоянная функция C nk (x1,x2,…,xn)=k примитивно-рекурсивна.
В) Правило подстановки может быть распространено и на случай, когда функции h i
являются функциями лишь от некоторых из переменных x1,x2,…,xn. Аналогично, правило
рекурсии распространяется и на случаи, когда функция g не зависит от некоторых из
переменных x1,x2,…,xn, а функция h может не зависеть от некоторых из переменных
x1,x2,…,xn, y, f(x1,x2,…,xn,y).
Пример:
Рассмотрим функцию f(x,y)=xy и покажем, что она примитивно-рекурсивна
x 0  1
g( x,0)  C11 ( x )
или
или
 y 1

x  x y  x
g( x, y  1)  p(g( x, y), x )
g( x,0)  C11 ( x )
, где p(x,y)=xy

g( x, y  1)  p( U 33 ( x, y, g( x, y)), U 13 ( x , y, g( x , y)))
Тезис Черча: Всякая вычислимая функция рекурсивна.
Понятие рекурсивных функций оказалось исчерпывающей формализацией понятия
вычислимой функции. Объединив тезисы Черча и Тьюринга, получим, что функция вычислима с
помощью МТ тогда и только тогда, когда она рекурсивна.
Это утверждение об эквивалентности двух алгоритмических моделей может быть
строго математически доказано. Из него вытекают следующие теоремы.
Теорема 7.2: Всякая рекурсивная функция вычислима с помощью МТ.
Теорема 7.3: Всякая вычислимая с помощью МТ функция – рекурсивна.
Теорема 7.4: Любая рекурсивная функция f(x) представима в виде: f(x)=
F(y(G(x,y)=0)), где F,G – примитивно-рекурсивные функции.
Т.о. класс
рекурсивных функций оказался эквивалентным классу функций,
вычислимых с помощью МТ. Это позволяет получить следующий объединенный тезис:
Всякий алгоритм, описанный в терминах рекурсивных функций , можно реализовать с
помощью МТ и наоборот.
139
§ 7.6: Нормальные алгоритмы Маркова
Дадим точное определение нормального алгоритма.
Пусть А – некоторый алфавит, не содержащий в качестве букв « » и «  » .
Обычной формулой подстановки в алфавите А называют слово PQ, где P,QA*, а
заключительной формулой подстановки в алфавите А – слово P  Q, где P,QA*. P
называется левой частью формулы подстановки P  Q, где {} ( - пустой символ в
алфавите А) , а Q- ее правой частью.
Конечная непустая упорядоченная система подстановок
P1   1Q1
P   Q
 2
2 2
называется нормальной схемой в алфавите А. Здесь k1, i {},

...

Pk   k Q k
Pi, QiA* (i=1,2,…,k).
Нормальный алгоритм в алфавите задается алфавитом А и нормальной схемой в этом
алфавите.
Он и преобразовывает слова в алфавите А следующим образом.
Пусть дано слово Р в алфавите А (PA*).
Выясним, имеется ли среди формул подстановок нормальной схемы хотя бы одна с
левой частью, входящей в слово Р. Если таких нет, то процесс применения алгоритма к слову
Р заканчивается и результатом считается само слово Р. Если же в нормальной схеме имеются
формулы подстановок, левые части которых входят в слово Р, то берем самую верхнюю
формулу из подходящих. Применяем ее, заменив первое вхождение левой части формулы
подстановки в слове Р на ее правую часть. Пусть Р1 – результат этого применения. Если
применимая формула подстановки была заключительной то то процесс применения
алгоритма к слову Р заканчивается с результатом Р1, иначе применяем к Р1 тот же поиск,
который был только что применим к Р и т.д. Если в конце концов получим такое слово Р i , к
которому неприменима ни одна из формул подстановки нормальной схемы, то процесс
применения алгоритма заканчивается и Рi является результатом работы алгоритма над
словом Р. при этом возможно, что описанный процесс никогда не закончится. В таком случае
говорят, что алгоритм неприменим к слову Р.
Нормальные алгоритмы применимы к любому слову Р A*, т.е. процесс применения
этих алгоритмов к слову Р заканчивается результативно.
Пример:
140
Рассмотрим нормальный алгоритм с алфавитом А={|} и нормальной схемой { .
... | в алфавите А={|} с результатом
Этот алгоритм применим к любому слову вида ||
n
||
... | , т.е. функция f(n)=n+1 вычислима для nN.
n 1
Функцию, для которой существует нормальный алгоритм, вычисляющий ее значения
(для любых значений аргумента), называется вычислимой по Маркову.
Тезис Маркова: Всякая интуитивно-вычислимая функция вычислима по Маркову.
Любая функция, вычислимая по Маркову, вычислима и с помощью МТ и наоборот.
141
Раздел 8: Элементы теории кодирования
§ 8.1: Основные понятия
В теории передачи информации чрезвычайно важным является решение проблемы
кодирования и декодирования, обеспечивающее надежную передачу по каналам связи с
«шумом».
Передача информации сводится к передаче по некоторому каналу связи символов
некоторого алфавита. Однако в реальных ситуациях сигналы при передаче практически
всегда могут искажаться, и
переданный символ будет восприниматься неправильно.
Например, в системе ЭВМ – ЭВМ одна из вычислительных машин может быть связана с
другой через спутник. Канал связи в этом случае физически реализуется электромагнитным
полем между поверхностью Земли и спутником. Электромагнитные сигналы, накладываясь
на внешнее поле, могут исказиться и ослабиться. Для обеспечения надежности передачи
информации в таких системах разработаны эффективные методы, использующие коды
различных типов.
Рассмотрим одну из таких моделей, связанную с групповыми кодами.
Алфавит, в котором записываются сообщения, считаем состоящим из двух символов
{0,1}.
Он
называется
двоичным
алфавитом.
Тогда
сообщение
есть
конечная
последовательность символов этого алфавита. Сообщение, подлежащее передаче, кодируется
по определенной схеме более длинной последовательностью символов в алфавите {0,1}. Эта
последовательность называется кодом или кодовым словом. При приеме можно исправлять
или распознать ошибки, возникшие при передаче по каналу связи, анализируя информацию,
содержащуюся в дополнительных символах. Принятая последовательность символов
декодируется по определенной схеме в сообщение, с большой вероятностью совпадающее с
переданным.
Сообщение
E Кодированное
сообщение
T
Модель канала связи
Рис.8.1. Математическая модель системы связи.
Принятое D
Декодированн
сообщени
ое сообщение
е
142
Блочный двоичный (m, n)-код определяется двумя функциями:
E: {0,1}m{0,1}n и D: {0,1}n{0,1}m, где m<=n и {0,1}n – множество всех двоичных
последовательностей длины n. Функция Е определяет схему кодирования, а функция D –
схему декодирования. Математическую модель системы связи можно представить в виде
схемы.
Здесь Т –«функция ошибок»; E и D выбираются таким образом, чтобы композиция
DTE была функцией, с большой вероятностью близкой к тождественной. Двоичный (m, n)код содержит 2m кодовых слоев.
Коды делятся на два больших класса: коды с обнаружением ошибок, которые с
большой вероятностью могут восстановить посланное сообщение.
Пример:
1. Код с проверкой четности. Это пример простого кода, с большой вероятностью
указывающего на наличие ошибки.
Пусть a=a1...am – сообщение длины m.
Схема кодирования определяется таким образом:
Е(а)=b=b1...bm+1,
где bi=ai при i= 1, ..., m;
b m 1
m

0
,
если
b i  четное число;


i 1

m
1, если  b i  нечетное число,

i 1
Схема декодирования определяется таким образом:
D(b)=c=c1…cm,
где ci=bi при i=1,…, m.
Например, при m=2 E(00)=000, E(01)=011, E(10)=101, E(11)=110. Очевидно,
m 1
поразрядная сума любой кодированной последовательности
b
i 1
b1+ … + bm+10(mod2). Если
i
должна быть четной, т.е.
m 1
b
i 1
i
нечетная, то это означает, что при передаче сообщения
m 1
произошла ошибка. Однако, если
b
i 1
i
четная, то это еще не означает, что ошибки не
143
было. Поразрядная сумма остается четной при двух ошибках и вообще любом четном их
числе.
2. Код с тройным повторением. Это пример весьма неэкономного кода с
исправлением ошибок.
Схема кодирования, т.е. функция Е, определяется таким образом: каждое сообщение
разбивается на блоки длины m и каждый блок передается трижды. Схема декодирования, т.е.
функция D, определяется следующим образом: принятое сообщение разбивается на блоки
длины 3m и в каждом блоке из трех символов bi, bi+m, bi+2m, принимающих значение 0 или 1,
выбирается тот, который встретился больше число раз (два или три раза). Этот символ
считается i-м символом в декодированном сообщении.
Можно определить также (1, r)-код с r-кратным повторением, в котором каждый
символ 0 или 1 кодируется последовательностью из r таких символов. Множество кодовых
..0 и 11
...1 . При декодировании решение принимается
слов состоит из двух слов: 00


r раз
r раз
«большинством голосов», т.е. переданным считается символ. Встречающийся большее число
раз. При больших r мы практически обезопасим себя от ошибок, однако, передача
сообщений будет идти чрезвычайно медленно.
§ 8.2: Расстояние Хемминга
На множестве двоичных слов длины m расстоянием d(a, b) между словами a и b
называют число несовпадающих позиций этих слов, например: расстояние между словами
a=01101 и b=00111 равно 2.
Определенное таким образом понятие называется расстоянием Хемминга. Оно
удовлетворяет следующим аксиомам расстояний:
1)
тогда и только тогда, когда a=b;
2) d(a, b)= d(b, a)
3)
(неравенство треугольника).
Весом w(a) слова a называют число единиц среди его координат. Тогда расстояние
между словами а и b есть вес их суммы a+b: d(a, b)=w(a+b), где символом + обозначена
операция покоординатного сложения по модулю 2.
Интуитивно понятно, что код тем лучше приспособлен к обнаружению и
исправлению ошибок, чем больше различаются кодовые слова. Понятие расстояния
Хемминга позволяет это уточнить.
144
Теорема 8.1: Для того чтобы код позволял обнаруживать ошибки в k (или менее)
позициях, необходимо и достаточно, чтобы наименьшее расстояние между кодовыми
словами было  k +1.
Доказательство этой теоремы аналогично доказательству следующего утверждения.
Теорема 8.2: Для того чтобы код позволял исправлять все ошибки в k (или менее)
позициях, необходимо и достаточно, чтобы наименьшее расстояние между кодовыми
словами было 2 k +1.
Действительно, если наименьшее расстояние между кодовыми словами 2 k +1, то
для любых кодовых слов a и b имеем d(a, c) 2 k +1. Пусть при передаче некоторого слова a
произошло r k ошибок, в результате чего было принято слово с. Тогда d(a, с)=rk. Из
неравенства треугольника (аксиома 3) следует, что d(a, c)+ d(c, b)  d(a, b) 2k+1. Отсюда
растояние от слова с
до любого другого кодового слова b больше k. Значит, для
декодирования посланного слова надо найти кодовое слово а, ближайшее к принятому слову
с в смысле расстояния Хемминга.
Если наименьшее расстояние между кодовыми словами меньше, чем 2k +1, то
найдутся такие два кодовых слова а и b, расстояние между которыми будет d(a, b)  2r.
Тогда, если в кодовом слове a будет k ошибок, принятое cлово c находится от другого
кодового слова b на расстоянии, не большем, чем от а. Поэтому нельзя определить, какое из
слов (a или b) было передано.
В математической модели кодирования и декодирования удобно рассматривать
строки ошибок. Данное сообщение a=a1a2…am кодируется кодовым словом b=b1b2…bn. при
передаче канал связи добавляет к нему строку ошибок e=e1e2…en так что приемник
принимает сигнал c=c1c2…cn где ci=bi+ei. Система, исправляющая ошибки, переводит слово
c1c2…cn в ближайшее кодовое слово b1b2…bn. Система, обнаруживающая ошибки, только
устанавливает, является ли принятое слово кодовым или нет. Последнее означает, что ри
передаче произошла ошибка.
Пример:
1. Рассмотрим (2,3)-код с проверкой четности. Тогда (см. предыдущий пример п.1)
множество кодовых слов есть 000, 101, 011,110. Минимальное расстояние между кодовыми
словами равно двум. Этот код способен обнаруживать однократную ошибку.
2. Рассмотрим (2,5)-код со схемой кодирования Е(00)=00000=b1; Е(01)=01011=b2;
Е(10)=10101=b2; Е(11)=11110=b2.Минимальное расстояние между кодовыми словами равно
трем. Этот код способен исправлять однократную ошибку. Однократная ошибка приводит к
145
приему слова, находящегося на расстоянии 1 от единственного кодового слова, которое и
было передано.
§ 8.3: Матричное кодирование
При явном задании схемы кодирования в (m, n)-коде следует указать 2m кодовых слов,
что весьма неэффективно.
Одним из экономных способов описания схемы кодирования является методика
матричного кодирования.
Пусть G=||gij|| матрица порядка mn с элементами gij, равными 0 или 1. Символ +
обозначает сложение по модулю 2. Тогда схема кодирования задается системой уравнений
m
bi  a1 g1 j  a 2 g 2 j  ...  a m g mj   ai g ij , j=1, …, n,
i 1
Или в матричной форме
b=aG
где a=a1…bn – вектор, соответствующий передаваемому сообщению; b=b1…bn –
вектор, соответствующий кодированному сообщению; G – порождающая матрица кода.
Порождающая матрица кода определена неоднозначно. Код должен приписывать
различным словам-сообщениям одно и то же кодовое слово. Можно доказать, что этого не
произойдет, если первые m столбцов матрицы G образуют единичную матрицу.
Заметим, что вместо 2m кодовых слов достаточно знать m слов, являющихся строками
матрицы G.
Пример:
1. Порождающей матрицей (1, r)-кода с повторением является матрица.
G=[1…1],
Так как 1…1=1G, 0…0=0G
2. Порождающей матрицей (2,3)-кода с проверкой четности является матрица.
101
G 
011
Рассмотрим матрицу G порядка 3х6;
100110
G  010011
001111
Сообщения a1=100, a2=010, a3=001 кодируются соответствено первой, второй и
третьей строками матицы G. Полный список кодирования следующий:
146
а0=000000000;
a1=100100110;
a2=010010011;
a3=110110101;
a4=001001111;
a5=101101001;
a6=011011010;
a7=111111010;
§ 8.4: Групповые коды
Двоичный (m, n)-код называется групповым, если его кодовые слова образуют группу.
Заметим, что множество всех двоичных слов длины m образует коммутативную
группу с операцией покоординатного сложения по модулю 2, в которой выполняется
соотношение а+а=0. Следовательно, множество слов-сообщений а длины m есть
коммутативная группа.
Пусть G—порождающая матрица кода порядка mn: Тогда множество кодовых слов
b=aG есть группа, так как если b1=a1G, b2=a2G, b1+b2= a1G+ a2G=( a1+ a2)G, т.е. матричные
коды являются групповыми.
В групповом коде наименьшее расстояние между кодовыми словами равно
наименьшему весу ненулевого кодового слова, что видно из соотношения d(bi ,bj)=w(bi+bj).
Следовательно, код, рассмотренный в примере 2.11, п.2, способен исправлять однократную
ошибку и обнаруживать двойную, так наименьший вес кодового слова равен 3.
Пусть задан групповой код с порождающей матрицей G и кодирование происходит
по схеме b=aG.
При передаче кодовые слова могут исказиться, в результате чего будет принято
сообщение c=c1...cn, где c=b+e и e=e1...en – вектор (строка) ошибок.
Предложим схему декодирования, при которой вероятность того, что D(aG)a, будет
минимальной.
Обозначим через С множество всех слов, которые могут быть приняты. Это есть
множество вех двоичных слов длины n. Оно образует коммутативную группу. Множество B
всех кодовых слов есть подгруппа С. Рассмотрим множество смежных классов С по B, т.е.
фактор-группу C/B. Лидером смежного класса назовем слово, имеющее наименьший вес.
Поскольку смежные классы либо не пересекаются, либо совпадают, то любой элемент сС
однозначно представляется в виде суммы c=e+b лидера e и кодового слова b. Декодирование
147
слова c состоит в выборе кодового слова b в качестве переданного и в последующем
переходе к слову a, где b=E(a).
Данный метод кодирования удобно реализовать с помощью таблицы, первая строка
которой представляет собой множество кодовых слов, т.е. смежный класс 0+B, состоящий из
элементов 0, b1, ..., b2m-1, а остальные строки соответствуют остальным смежным классам по
B, причем первый столбец этой таблицы есть столбец лидеров.
Для примера из § 8.3 п. 3 таблица декодирования выглядит таким образом:
000000
100000
010000
001000
000100
000010
000001
000101
100110
000110
110110
101110
100010
100100
100111
100011
010011
110011
000011
011011
010111
010001
010000
010110
011100
111100
001100
010100
011000
011110
011101
011001
001111
101111
011111
000111
001011
001101
001110
001010
101001
001001
111001
100001
101101
111011
101000
101100
110101
010101
100101
111101
110001
110110
110100
110000
111010
011010
101010
110010
111110
111000
111011
111111
Чтобы декодировать принятое слово c=ei+bi, где ei – лидер, следует отыскать его в
таблице и выбрать в качестве переданного кодовое слово bj, находящееся в первой строке
того же столбца, что и с. Например, если принято слово 110011, то считается, что передано
слово 010011; если принято слово 100101, то считается, что оно и было передано.
Покажем, что при таком способе декодирования:
1) исправляются все строки ошибок, являющиеся лидерами;
2) кодовое слово, состоящее в данном столбце, является ближайшим кодовым словом
ко всем словам этого столбца.
Действительно:
1. Если при передаче слова b произошла ошибка e, где e – лидер, то c=b+e и есть
искомое представление слова с, и при декодировании считается, что передано кодовое слово
b, т.е. ошибка e исправляется.
2. Пусть с - слово, стоящее в том же столбце, что и кодовое слово bi. Тогда c= bi+e,
где e - лидер соответствующего смежного класса. Имеем d(c, bi)=w(e) . Если bi - другое
кодовое слово, то c= bi+e’ и, поскольку bi- biB, e’= bi - bi+e лежит в том же смежном классе,
что и e. Следовательно, d(c, bi)=w(e’)w(e).
§ 8.5: Коды Хемминга
Опишем один из классов групповых кодов - коды Хемминга, которые исправляют
однократную ошибку, поскольку минимальный вес кодового слова равен 3. Это (m, n) коды, где m=2r-1-r, n=2r-1 для любого r2.
148
Схема кодирования:
1. Сообщения - слова длинны 2r-1-r, где r2; кодовые слова имеют длину 2r-1.
2. В каждом кодовом слове b=b1...b2r-1 символы, индексы которых являются степенью
двойки, т.е. b20,b21, ...,b2r-1 - контрольные, а остальные - символы сообщения, расположены в
том же порядке. Например, при r=4 b1, b2, b4, bs,- контрольные символы, b3, b5, b6, b7, b9, b10,
b11, b12, b13, b14, b15, - символы сообщения.
3. Рассмотрим матрицу M при r=2,3,4 имеют соответственно вид
011
M 2,3    ; M 3,7
101
000000011111111
0001111
000111100001111


.
 0110011 ; M 4,5  
011001100110011
1010101


101010101010101
4. Запишем систему уравнений
bMТ=0
(8.1)
Например, при r=3 эта система имеет вид.
B4+ b5+ b6+ b7=0;
(8.2)
b2+ b3+ b6+ b7=0;
b1+ b3+ b5+ b7=0.
Заметим, что по построению матрицы M в каждое из уравнений системы (8.1) входит
один и только один символ b2i, индекс которого есть степень двойки.
При кодировании сообщения значения контрольных символов b20, b21, …, b2r-1,
получим из системы (8.1).
Схема декодирования.
Пусть принято слово c=b=e, где b- кодовое слово, e- ошибка. Тогда bMT=0, и,
следовательно, (b+e)MT=bMT+eMT=eMT.
Если eMT=0, то считается, что ошибки не было. Это действительно так при e=0.
Если произошла ошибка ровно в одной позиции, т.е. вектор ошибок e имеет только
одну единицу в i—й позиции, то eMT есть вектор, совпадающий с i—ым столбцом матрицы
М, являющимся двоичным разложением числа i. В этом случае в переданном слове c=b+e
надо изменять символ в i-ой позиции и вычеркнуть контрольные символы. Тогда полученное
слово будет результатом декодирования.
Если ошибка допущена более чем в одной позиции, декодирование дает неверный
результат. Например, если строка ошибок e, будет кодовым словом, то (b+e)MT=0, и,
следовательно, в результате декодирования слово не изменится.
149
Пример: Найдем порождающую матрицу для (4,7)-кода Хемминга. Определим
фундаментальную систему решений системы уравнений (8.2):
а1=1110000, а2=1001100, а3=0101010, а4=1101001.
Порождающей будет матрица, составленная из этих векторов:
1110000 
1001100 

G
0101010 


1101001 
Пример: Рассмотрим (4,7)-код Хемминга. Пусть с=0011111. Тогда с=b+e, где
b=0001111 – кодовое слово, e=0010000 – строка ошибок, и сMT=(b+e) MT= eMT=011. Число
011 есть двоичное разложение числа 3. Следовательно, ошибка совершена в третьей
позиции. Исправляя ее получим кодовое слово 0001111, декодируя которое, получаем слово
a=0111.
150
Литература:
1. Кузнецов О.П., Адельсон-Вельский Т.М. «Дискретная математика для инженера» М.: Энергоатомиздат, 1988- 480 с.
2. Горбатов В.А. «Основы дискретной математики»- М.: Высшая школа, 1988- 311 с.
3. Кук Д., Бейз Г. «Компьютерная математика»- М.: Наука, 1990 – 384 с.
4. Варпаховский Ф.П., Солодовников А.С. «Алгебра (Элементы теории множеств)»
Учебное пособие для студентов заочников - М.: Просвещение, 1994.
5. Игошин В.И. «Задачник-практикум по математической логике»- М.: Просвещение,
1986 – 159 с.
6. Лавров И.А., Максимов Л.Л. «Задачи по теории множеств, матлогике и теории
алгоритмов» -М.: Наука, 1984 – 224 с.
7. Гаврилов Г.П., Сопоженко А.А. «Сборник задач по дискретной математике» - М.:
Наука, 1977.
8. Мощенский В.А. «Лекции по математической логике»- Минск: Изд-во БГУ, 1973.
9. Шнеперман Л.Б. «Курс алгебры в задачах и упражнениях»- Минск, 1973.
10. «Математическая логика», п/р Столяр А.А., Минск: Высшая школа, 1991 г.
11. Нефедов В.Н., Осипова В.А. «Курс дискретной математики».: Учебное пособие,
М.: Изд-во МАИ, 1992 г. – 264 с.
151
Содержание:
ВВЕДЕНИЕ ...................................................................................................................................................................... 2
РАЗДЕЛ 1. МНОЖЕСТВА ............................................................................................................................................ 3
1.1: МНОЖЕСТВА И ИХ СПЕЦИФИКАЦИИ ....................................................................................................................... 3
1.2: ПРОСТЕЙШИЕ ОПЕРАЦИИ НАД МНОЖЕСТВАМИ. ДИАГРАММЫ ЭЙЛЕРА – ВЕННА ................................................. 6
1.3: ПОДМНОЖЕСТВА И ДОКАЗАТЕЛЬСТВА. СВОЙСТВА ОПЕРАЦИЙ НАД МНОЖЕСТВАМИ ............................................ 9
1.4: ПРОИЗВЕДЕНИЕ МНОЖЕСТВ .................................................................................................................................. 11
РАЗДЕЛ 2. ОТНОШЕНИЯ ......................................................................................................................................... 13
2.1: ОСНОВНЫЕ ПОНЯТИЯ ............................................................................................................................................ 13
2.2: СВОЙСТВА БИНАРНЫХ ОТНОШЕНИЙ ..................................................................................................................... 17
2.3: ОПЕРАЦИИ НАД БИНАРНЫМИ ОТНОШЕНИЯМИ ..................................................................................................... 18
2.4: РАЗБИЕНИЯ И ОТНОШЕНИЯ ЭКВИВАЛЕНТНОСТИ .................................................................................................. 19
2.5: ОТНОШЕНИЕ ПОРЯДКА .......................................................................................................................................... 24
2.6: СОСТАВНЫЕ ОТНОШЕНИЯ ..................................................................................................................................... 27
2.7: ФУНКЦИИ И ОТОБРАЖЕНИЯ................................................................................................................................... 28
2.8: CЧЕТНОСТЬ МНОЖЕСТВ. МОЩНОСТЬ................................................................................................................... 29
РАЗДЕЛ 3. ЭЛЕМЕНТЫ ОБЩЕЙ АЛГЕБРЫ ....................................................................................................... 31
3.1: АЛГЕБРАИЧЕСКАЯ ОПЕРАЦИЯ. АЛГЕБРА ............................................................................................................... 31
3.2: СВОЙСТВА БИНАРНЫХ АЛГЕБРАИЧЕСКИХ ОПЕРАЦИЙ .......................................................................................... 33
3.3: ГОМОМОРФИЗМ И ИЗОМОРФИЗМ АЛГЕБРЫ ........................................................................................................... 34
3.4: ПОЛУГРУППЫ ........................................................................................................................................................ 35
3.5: ГРУППЫ ................................................................................................................................................................. 37
3.6: КОЛЬЦО ................................................................................................................................................................. 38
3.7: ПОЛЕ ...................................................................................................................................................................... 40
РАЗДЕЛ 4. РЕШЕТКИ................................................................................................................................................. 43
4.1: РЕШЕТКИ ............................................................................................................................................................... 43
РАЗДЕЛ 5. АЛГЕБРА ЛОГИКИ................................................................................................................................ 47
§ 5.1: ЛОГИЧЕСКИЕ ФУНКЦИИ...................................................................................................................................... 47
§ 5.2: СУПЕРПОЗИЦИИ И ФОРМУЛЫ ............................................................................................................................. 50
§ 5.3: БУЛЕВА АЛГЕБРА ФУНКЦИЙ И ЭКВИВАЛЕНТНЫЕ ПРЕОБРАЗОВАНИЯ В НЕЙ ....................................................... 51
§ 5.4: ПРИВЕДЕНИЕ ФОРМУЛЫ К НОРМАЛЬНОЙ ФОРМЕ. СОВЕРШЕННЫЕ НФ ............................................................. 54
§ 5.5: ДВОЙСТВЕННОСТЬ .............................................................................................................................................. 58
§ 5.6: РАЗЛОЖЕНИЕ БУЛЕВОЙ ФУНКЦИИ ПО ПЕРЕМЕННЫМ......................................................................................... 59
§ 5.7: ПОЛНОТА И ЗАМКНУТОСТЬ ................................................................................................................................. 60
§ 5.8: АЛГЕБРА ЖЕГАЛКИНА И ЛИНЕЙНЫЕ ФУНКЦИИ ................................................................................................. 62
§ 5.9: МОНОТОННЫЕ ФУНКЦИИ ................................................................................................................................... 64
§ 5.10: БУЛЕВА АЛГЕБРА И ТЕОРИЯ МНОЖЕСТВ ........................................................................................................... 67
§ 5.11: ДНФ. ИНТЕРВАЛЫ И ПОКРЫТИЯ ...................................................................................................................... 68
§ 5.12: РЕЛЕЙНО-КОНТАКТНЫЕ СХЕМЫ ....................................................................................................................... 70
§ 5.13: МИНИМИЗАЦИЯ БУЛЕВЫХ ФОРМУЛ В КЛАССЕ ДИЗЪЮНКТИВНЫХ НОРМАЛЬНЫХ ФОРМ................................ 73
5.13.1: МЕТОД МИНИМИЗИРУЮЩИХ КАРТ .................................................................................................................. 73
5.13.2: МЕТОД ТАБЛИЦЫ РАЗЛИЧИЙ ............................................................................................................................ 76
§ 5.14: СИНТЕЗ ЛОГИЧЕСКИХ СХЕМ В ЗАДАННОМ БАЗИСЕ .......................................................................................... 80
§ 5.15: ПРОИЗВОДНАЯ БУЛЕВОЙ ФУНКЦИИ ................................................................................................................. 83
§ 5.16: СИНТЕЗ ЛОГИЧЕСКИХ СХЕМ МЕТОДОМ КАСКАДОВ ......................................................................................... 86
§ 5.17: РАЗЛОЖЕНИЕ БУЛЕВОЙ ФУНКЦИИ В РЯД .......................................................................................................... 92
РАЗДЕЛ 6: ЭЛЕМЕНТЫ ТЕОРИИ ГРАФОВ......................................................................................................... 96
§ 6.1: ОПРЕДЕЛЕНИЕ ГРАФА. ОРИЕНТИРОВАННЫЕ И НЕОРИЕНТИРОВАННЫЕ ГРАФЫ.................................................. 96
§ 6.2: СПОСОБЫ ЗАДАНИЯ ГРАФОВ .............................................................................................................................. 98
§ 6.3: СТЕПЕНИ ВЕРШИН ГРАФА ................................................................................................................................. 100
§ 6.4: ИЗОМОРФИЗМ И ГОМЕОМОРФИЗМ ГРАФОВ ...................................................................................................... 101
§ 6.5: ЧАСТЬ. СУГРАФ. ПОДГРАФ ............................................................................................................................... 102
§ 6.6: МАРШРУТЫ. ЦЕПИ. ЦИКЛЫ ............................................................................................................................. 103
§ 6.7: СВЯЗНЫЕ КОМПОНЕНТЫ ГРАФА ....................................................................................................................... 105
152
§ 6.8: РАССТОЯНИЯ .................................................................................................................................................... 107
§ 6.9: ДИАМЕТР, РАДИУС И ЦЕНТР ГРАФА .................................................................................................................. 107
§ 6.10: ЭЙЛЕРОВЫ И ГАМИЛЬТОНОВЫ ЦЕПИ И ЦИКЛЫ .............................................................................................. 108
§ 6.11: ОПЕРАЦИИ НАД ЧАСТЯМИ ГРАФА И ГРАФАМИ ............................................................................................... 110
§ 6.12: ДЕРЕВЬЯ И ЛЕС ............................................................................................................................................... 111
§ 6.13: ВЗВЕШЕННЫЕ ГРАФЫ ..................................................................................................................................... 113
§ 6.14: ПЛАНАРНЫЕ ГРАФЫ........................................................................................................................................ 114
§ 6.15: ЗАДАЧА ПОИСКА МАРШРУТОВ (ПУТЕЙ) В ГРАФЕ (ОРГРАФЕ).......................................................................... 117
§ 6.16: ПОИСК ПУТЕЙ (МАРШРУТОВ) С МИНИМАЛЬНЫМ ЧИСЛОМ ДУГ (РЕБЕР) ........................................................ 118
§ 6.17: МИНИМАЛЬНЫЙ ПУТЬ (МАРШРУТ) ВО ВЗВЕШЕННОМ ОРГРАФЕ (ГРАФЕ) ....................................................... 120
РАЗДЕЛ 7: ТЕОРИЯ АЛГОРИТМОВ .................................................................................................................... 124
§ 7.1: ПОНЯТИЕ АЛГОРИТМА И НЕОБХОДИМОСТЬ ЕГО МАТЕМАТИЧЕСКОГО УТОЧНЕНИЯ.
ПРОБЛЕМА РАЗРЕШЕНИЯ, ПРОБЛЕМА УТОЧНЕНИЯ, ПРОБЛЕМА ВЫЧИСЛЕНИЯ. ПРЕДИКАТЫ.................................... 124
§ 7.2: МАШИНА ТЬЮРИНГА ....................................................................................................................................... 129
§ 7.3: ВЫЧИСЛИМОСТЬ ФУНКЦИИ ПО ТЬЮРИНГУ. ТЕЗИС ТЬЮРИНГА....................................................................... 132
§ 7.4: СУЩЕСТВОВАНИЕ НЕВЫЧИСЛИМЫХ ФУНКЦИЙ ............................................................................................... 135
§ 7.5: РЕКУРСИВНЫЕ ФУНКЦИИ ................................................................................................................................. 137
§ 7.6: НОРМАЛЬНЫЕ АЛГОРИТМЫ МАРКОВА ............................................................................................................. 139
РАЗДЕЛ 8: ЭЛЕМЕНТЫ ТЕОРИИ КОДИРОВАНИЯ ........................................................................................ 141
§ 8.1: ОСНОВНЫЕ ПОНЯТИЯ ....................................................................................................................................... 141
§ 8.2: РАССТОЯНИЕ ХЕММИНГА ................................................................................................................................ 143
§ 8.3: МАТРИЧНОЕ КОДИРОВАНИЕ ............................................................................................................................. 145
§ 8.4: ГРУППОВЫЕ КОДЫ ............................................................................................................................................ 146
§ 8.5: КОДЫ ХЕММИНГА ............................................................................................................................................ 147
ЛИТЕРАТУРА: ........................................................................................................................................................... 150
Download