МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ Государственное образовательное учреждение высшего профессионально...
7 downloads
243 Views
425KB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ Государственное образовательное учреждение высшего профессионального образования САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ
ДИСКРЕТНАЯ МАТЕМАТИКА Программа, методические указания и контрольное задание для самостоятельной работы студентов
Ñàíêò-Ïåòåðáóðã 2004
Составитель кандидат технических наук, доцент Л. А. Прокушев Рецензент кандидат технических наук, доцент В. П. Попов
Приведены программа, методические указания и контрольные задания для самостоятельного изучения курса “Дискретная математика”. Предназначены для студентов заочной формы обучения по специальности 2203 “Системы автоматизированного проектирования”. Подготовлены к публикации кафедрой компьютерных систем автоматизации и рекомендованы к изданию редакционно-издательским советом Санкт-Петербургского университета аэрокосмического приборостроения.
© ГОУ ВПО СПбГУАП, 2004
Подписано к печати . .04. Формат 60×84 1/16. Бумага офсетная. Печать офсетная. Усл. печ. л. . Уч. -изд. л. . Тираж экз. Заказ № Редакционно-издательский отдел Отдел электронных публикаций и библиографии библиотеки Отдел оперативной полиграфии СПбГУАП 190000, Санкт-Петербург, ул. Б. Морская, 67
ПРЕДИСЛОВИЕ Программа по учебной дисциплине «Дискретная математика» разработана в соответствии с требованиями государственного образовательного стандарта высшего профессионального образования. Изучение курса базируется на знаниях, полученных в результате освоения дисциплин «Высшая математика» и «Информатика». Цели и задачи курса: – ознакомить с основами таких направлений дискретной математики, как теория множеств, теория графов и теория булевых функций; – дать представление о теоретических основах и методах дискретной математики как математических моделях для описания и исследования объектов реального мира, полезных для решения инженерных задач. В результате изучения дисциплины студенты должны: – получить представление о понятиях и теоретических моделях изучаемых направлений дискретной математики; – освоить приемы применения теоретических моделей для описания предлагаемых заданий и получения результатов; – приобрести практические навыки по отработке формализованных описаний объектов методами дискретной математики. Лекционные занятия по данной дисциплине являются установочными, базовыми – для самостоятельной работы студентов. Каждый студент выполняет контрольную работу и проходит лабораторный практикум, завершающийся зачетом. Знания теории и практики программирования проверяются на экзамене. Объем дисциплины Виды учебной работы
Всего часов
Семестр
Общая трудоемкость дисциплины
121
4
Аудиторные занятия
36
36
Л ек ц и и
8
8
Лабораторные работы (ЛР)
16
16
1
Окончание таблицы Виды учебной работы
Всего часов
Семестр
Индивидуальная работа с преподавателем
12
12
Самостоятельная работа
85
85
Контрольная работа
1
Вид итогового контроля (зачет, экзамен...)
э к з.
1. СОДЕРЖАНИЕ КУРСА ДИСЦИПЛИНЫ Раздел 1. Множества и их спецификации Понятие множества; основные понятия теории множеств; операции над множествами; декартово произведение; диаграммы Эйлера–Венна; алгебра множеств. Литература: [1, c. 5, 6]. Интуитивное понятие множества: множество есть любое собрание определенных и различимых между собой объектов нашей интуиции или интеллекта, мыслимое как единое целое. Эти объекты называются элементами, или членами множества. Множества обозначаются прописными латинскими буквами (A, B, C, …), а их элементы – строчными (a, b, c, …). Множество как совокупность дискретных объектов обозначается A = {a, b, c}. Можно использовать индексы: А1, А2, …; а1, а2, … Множества могут быть конечными (группа студентов) или бесконечными (натуральные числа). Множества, элементами которых являются тоже множества, называют классом (семейством, системой) множеств. Для конечного множества А = {а1, a2,…, an} количество элементов n называется мощностью множества и обозначается |A| (|A| = n). По конкретному элементу а и множеству А всегда можно определить, принадлежит элемент а множеству А (а ∈ А) или не принадлежит (a ∉ A ). Множество, состоящее из одного элемента, обозначается {a}. Множество, не содержащее элементов, называется пустым и обозначается ∅ (например, А = ∅). 2
Операции над множествами позволяют получить новые множества. Вложенность множеств (подмножество, надмножество): операция ⊆. Пусть А = {а, b}, B = {a, b, c}, тогда А ⊆ В (А есть подмножество В, т. е. А вложено, содержится в В; В есть надмножество над А, т. е. В содержит А). Объединение множеств: операция ∪ (сумма). Пусть А = {a, b}, B = = {b, c}, тогда А ∪ В = {a, b, c} (все элементы множеств А и В без повторения элементов). Пересечение множеств: операция ∩. Пусть А = {a, b}, B = {b, c}, тогда A ∩ B = {b} (элементы общие для множеств А и В). Дополнение множеств: операция \ (разность). Пусть A = {a, b}, B = ={b, c}, тогда A \ В = {a} (все элементы множества А, не принадлежащие В, т. е. из А вычитаются элементы, общие с В). Симметрическая разность: операция –. Пусть А = {a, b, c}, B = {a, c, d}, тогда А – В = {b, d} (все элементы А, не принадлежащие В, и все элементы В, не принадлежащие А). Равенство множеств: операция =. A = B справедливо тогда и только тогда, когда A ⊆ B и B ⊆ A. Справедливы отношения: A ∩ B ⊆ A, A ∩ B ⊆ B, A ⊆ A ∪ B, B ⊆ A ∪ B. Например, если A ⊆ B, B ⊆ C, то A ⊆ C, поэтому из приведенных выше соотношений следует, что A ∩ B ⊆ A ∪ B. Справедливы также формулы дистрибутивности: (A ∪ B) ∩ C = (A ∩ B) ∪ (B ∩ C), (A ∩ B) ∪ ∪ C = (A ∪ C) ∩ (B ∪ C). Диаграммы Эйлера–Венна иллюстрируют операции над множествами, что будет показано при объяснении контрольного задания. Булеаном называется множество всех подмножеств множества М и обозначается В(М), а множество М называется универсумом, или универсальным. Каждое множество М ≠ ∅ имеет, по крайней мере, два различных элемента: само М и ∅. Пусть М = {x, y, z}, тогда его булеан В(М) = {∅, {x}, {y}, {z}, {x, y}, {x, z}, {y, z}, M}. Мощность булеана от универсума |B(M)| = 2|M | . Например |M| = 3, |B(M)| = 23 = 8. Алгебра множеств определяет правила выполнения операций над множествами. Множество М вместе с заданной на нем совокупностью операций О = {o1, o2, …,om}, т. е. система А = (М; o1, o2, …, om} называется алгеброй; М называется основным множеством (носителем) алгебры А. Пусть задано универсальное множество U; его булеан B(U). Совокупность операций ∪ (объединения), ∩ (пересечения), ↓ (дополнения, отрицания) называются булевыми операциями. Алгебра B = (B(U); ∪, ∩, ↓) называется булевой алгеброй множеств над U. Элементами ос3
новного множества этой алгебры являются подмножества А, В, С, … множества U. Операция А эквивалентна операции дополнения U \ A. Для универсума U и его подмножеств при использовании булевых операций выполняются следующие свойства (тождества алгебры множеств): Идемпотентность (удаление одинаковых операндов): а) А ∪ А = А; б) А ∩ А = А. Коммутативность (перестановка операндов): а) А ∪ В = В ∪ А; б) А ∩ В = В ∩ А. Ассоциативность (возможность бесскобочной записи): а) (А ∪ В) ∪ С = А ∪ (В ∪ С); б) (А ∩ В) ∩ С = .А ∩ (В ∩ С). Дистрибутивность (раскрытие скобок): а) ∪ относительно ∩: б) ∩ относительно ∪: А ∪ (В ∩ С ) = (А ∪ В ) ∩ (А ∪ С); А ∩ (В ∪ С ) = (А ∩ В ) ∪ (А ∩ С). Поглощение: а) А ∪ (А ∩ В ) = А; б) А ∩ (А ∪ В ) = А. Законы (правила) де Моргана: б) А ∩ В = А ∪ В . а) А ∪ В = А ∩ В ; Обобщение правила де Моргана для совокупности множеств: а)
∪ Ai = ∪ Ai ; i∈I
i∈I
б)
∩ A i = ∪ Ai ;
i∈I
i∈I
Свойства универсума: а) A ∪ U = U; б) A ∩ U = A. Свойства пустого множества: а) А ∪ ∅ = А; б) А ∩ ∅ = ∅. Свойства дополнения (отрицания): а) А ∪ A = U; б) А ∩ A = ∅. Свойства двойного дополнения (отрицания): =
A = А. Пары свойств двойственны друг другу в том смысле, что если в одном из них заменить ∪ на ∩, U на ∅, и наоборот, то получим парное свойство. С целью упрощения формул предполагается, что знак дополнения (отрицания) играет роль скобок, а при отсутствии скобок порядок выполнения операций следующий: дополнение; пересечение; объединение. 4
Раздел 2. Отношения на множествах Основные виды отношений; функции и отображения; свойства отношений; отношения эквивалентности и порядка. Литература: [1, c. 7, 8]. Отношение используется как термин для обозначения связи между предметами или понятиями (а ∈ А, р делится на 2). Отношение, называемое бинарным, относится к связи пары объектов, рассматриваемых в определенном порядке, и обозначается (х, у), где х – первая, а у – вторая координата упорядоченной пары. Бинарное (двуместное) отношение ρ определяется как множество упорядоченных пар. Выражения (х, у)∈ρ и хρу взаимозаменяемы, и говорят, что хρ – относится к у. Для некоторых отношений (равенства, принадлежности, включения, сравнения и др.) приняты специальные обозначения (х = у, х ∈ А, A ⊆ B, х < y). Областью определения бинарного отношения ρ (обозначается Dρ) называется множество {x | существует у, (х, у) ∈ ρ} (символ | читается “если”). Областью значений бинарного отношения с (обозначается Rρ) называется множество {y | существует x, (х, у)∈ρ}. Иными словами, область определения – это множество первых координат элементов из ρ, а область значений – множество вторых координат элементов из ρ. Например, отношение равенства целых чисел (Z) есть множество {(x, y) | x, y ∈ Z и x = y}. Область определения Dρ совпадает с областью значений Rρ и является множеством целых чисел Z. Прямое (декартово) произведение: операция ×. Пусть А и В – два множества. Через А×В обозначим множество, состоящее из упорядоченных пар (a, b), таких, что а ∈ А, b ∈ В. Иначе говоря, р ∈ А × В тогда и только тогда, когда р есть пара (a, b), причем а ∈ А, b ∈ B. Пусть |A| = m, |B| = n – количество элементов множеств А, В, тогда |A × B| = |A|⋅|B| = m⋅n. Например, пусть A = {a, b}, B = {c, d, e}, тогда А × В = {(a, c), (a, d), (a, e), (b, c), (b, d), (b, e)}. Упорядоченным произведением множества V самого на себя (V × V = V2) называется множество всех упорядоченных пар (s, t), где s ∈ V и t ∈ V. Здесь (s, t) и (t, s) рассматриваются как различные элементы, исключая случай s = =t. Если число элементов |V| = n, то |V × V| = n2 упорядоченных пар. Например, пусть V = {v1, v2, v3}, тогда V × V = {(v1, v1), (v1, v2), (v1, v3), (v2, v1), (v2, v2), (v2, v3), (v3, v1), (v3, v2), (v3, v3)}. 5
Пусть x, y ∈ R, где R – множество действительных чисел, тогда = R × R представляет собой множество всех пар (х, у), каждой из которых можно сопоставить точку декартовой плоскости с координатами (абсцисса, ордината). Неупорядоченным произведением множества V самого на себя (обозначим как V&V) называется множество всех различных неупорядоченных пар [s, t], при этом пары [s, t] и [t, s] эквивалентны и так же, как при декартовом произведении, допускается совпадение элементов пары, т. е. s = t. При |V| = n мощность множества |V&V| = n(n+1)/2 различных неупорядоченных пар. Например, пусть V = {v1, v2, v3}, тогда V&V = ={[v1, v1], [v1, v2], [v1, v3], [v2, v2], [v2, v3], [v3, v3]}. Бинарное отношение ρ выделяет в декартовом произведении Х × Y некоторое подмножество ρX,Y ⊆ Х × Y, задаваемое определяющим свойством отношения ρ, такого, что Dρ ⊆ Х, Rρ ⊆ Y. Если с такое отношение, что ρ ⊆ Х × Y, то говорят, что ρ есть отношение из Х в Y. Если Х = Y, т. е. ρ ⊆ Х × Х, то говорят, что ρ есть отношение на множестве Х. Бинарные отношения можно представлять различными способами: перечислением пар, таблицей, ориентированным графом, графиком на координатной плоскости, функцией. Функция и отображение. Пусть f – отношение из X в Y такое, что ∀x ∈ X (x, y) ∈ f и (x, z) ∈ f → y = z (символ ∀ означает “любой”, → означает “следует”). Такое свойство отношения называется однозначностью, или функциональностью. Само отношение называется отображением из X в Y, или функцией, и обозначается f : X→Y или y = f(x), где х – аргумент, у – значение функции. Область определения функции: fX = {x ∈ X | ∃ y ∈ Y y = f(x)}; область значения функции: fY = {y ∈ Y | ∃ x ∈ X y = f(x)} (символ ∃ означает “существует”). Если fX = Х, т. е. для каждого элемента х имеется один элемент у вида (x, y) ∈ f, то функция называется полностью определенной, а если fX ≠ Х – частично определенной. Образ и прообраз. Пусть f : X→Y, Х1 ⊂ Х, Y1 ⊂ Y, тогда множество f(Х1) = {y ∈ Y | ∃ x ∈ X1 y = f(x)} называется образом множества Х1, а множество f –1(Y1) = {x ∈ X | ∃ y ∈ Y1 y = f(x)} – прообразом множества Y1. В записи у = f(x) значение у является образом элемента х при отображении f , при этом аргумент х – прообразом элемента у. Отображение называется взаимнооднозначным, если f(X)=Y и для любого y ∈ Y множество f –1({y}) состоит из одного элемента f –1({y}) = {x}. Тем самым определено отображение f –1 : Y → X. 6 R2
Свойства бинарных отношений. Отношение ρ называется рефлексивным, если (x, x) ∈ ρ; антирефлексивным, если (x, x) ∉ ρ; симметричным, если (x, y) ∈ ρ ↔ (y, x) ∈ с; антисимметричным, если (x, y) ∈ ρ и (y, x) ∈ ρ → x = y; асимметричным, если (x, y) ∈ ρ → (y, x) ∉ ρ; транзитивным, если (x, y) ∈ ρ и (y, z) ∈ ρ → (x, z) ∈ ρ; линейным, если (x, y) ∈ ρ или (y, x) ∈ ρ. Из множества всех отношений выделяется класс отношений, одновременно симметричных, транзитивных и рефлексивных. Такие отношения называются отношениями эквивалентности. К отношениям порядка относятся: а) отношение квазипорядка, обладающее свойствами рефлексивности, транзитивности; б) отношение частичного порядка на множестве Х (часто обозначаемое =), обладающее свойствами рефлексивности, антисимметричности, транзитивности; в) отношение строгого порядка на множестве Х (часто обозначаемое < или >), обладающее свойствами антирефлексивности, асимметричности, транзитивности; г) отношение линейного (полного) порядка, обладающее наряду со свойствами отношения частичного порядка свойством линейности. Раздел 3. Основные понятия теории графов Понятие графа как математической модели; геометрическое и абстрактное представление графов; типы графов (неориентированный и ориентированный); понятие смежности и инцидентности; матрицы смежности. Литература: [1, c. 8 –10, 21, 24]. Теория графов, являясь разделом дискретной математики, используется для описания и изучения отношений между дискретными объектами. При этом объекты геометрически можно представить в виде множества точек, называемых вершинами графа (V = {vi}), а отношения между ними представляются самонепересекающимися линиями, связывающими вершины. Если линии не ориентированы, то их называют ребрами ( u ), а сам граф – неориентированным (рис. 1, а), а если линии ориентированы, то их называют дугами (u), а граф – ориентированным (рис. 1, б), или орграфом. Если множество вершин и ребер (или дуг) конечно, то граф называется конечным. Вершины, соединенные ребром или дугой, называются смежными. Ребра, имеющие общую вершину, также смежны между собой. Говорят, 7
а)
б)
v3
v1
u4
v2
u3
v1 u2
v4
u1
u1 u3
u6
v2
u2
u4 u5 v3
Рис. 1. Геометрическое представление графов: а) неориентированный граф; б) ориентированный граф
что ребро (дуга) и его граничные точки инцидентны друг другу, иначе говоря, вершины, инцидентные ребру (дуге), являются его концевыми точками. Понятие инцидентности ребер (дуг) и их концевых вершин является фундаментальным в теории графов, которая построена с учетом именно этой особенности и не учитывает реальной природы вершин и ребер (дуг). Структурное различие между неориентированным графом и орграфом состоит в том, что в первом случае граничные точки ребра образуют неупорядоченную, а во втором – упорядоченную пару вершин. Ребро эквивалентно противоположно направленным дугам. Геометрическое представление графов, являясь наглядным, трудно поддается математической обработке, поэтому описание графа формализуют и представляют в общем виде: G = (V, U ) или G = (V, U), где V – непустое множество вершин графа vi ∈ V; U – множество ребер для неориентированного графа; U – множество дуг орграфа. Любой граф в абстрактном смысле эквивалентен (по отношению к свойствам, изучаемым в теории графов) некоторому геометрическому графу. Для удобства обработки графов с использованием ЭВМ лучше всего подходит матричная форма представления структурных свойств графа. Матрица смежности вершин графа – это квадратная матрица || S || размера n×n (n – количество вершин), где строки и столбцы соответствуют вершинам графа, а элемент sij для неориентированного графа равен числу ребер, соединяющих одновременно вершины i и j, а для орграфа sij равен количеству дуг (vi, vj). Матрица смежности неориентированного графа без петель (ребер, замкнутых на одну вершину) симметрична относительно главной диагонали, 8
поскольку пара вершин vi и vj соединяются одинаковыми ребрами [vi, vj] = =[vj, vi], т. е. достаточно рассматривать только половину матрицы выше главной диагонали. Очевидно, что матрица смежности графа без петель и кратных ребер является булевой матрицей, состоящей из нулей и единиц. Раздел 4. Основные понятия неориентированного графа Абстрактное описание; степень вершины; разбиение графа на составляющие части; маршруты и циклы; связность графа; разновидности графов. Литература: [1, c. 10–21]. Пусть V – непустое множество вершин графа v ∈ V. В неориентированном графе ребром, соединяющим две вершины vi и vj , называется неупорядоченная пара [vi, vj] или [vj, vi], при этом ребро обозначается u = [vi, vj]. Множество ребер является конечным подмножеством (возможно пустым) неупорядоченного произведения V&V (т. е. u ⊂ V&V ) с элементами вида [v, w], где v, w ∈ V и допустимо совпадение элементов пары v = w. Тогда граф G можно определить как совокупность G = (V, U ). Можно ввести отображение инцидентности графа – Г. Если вершины v, w ∈ V являются граничными точками ребра u ∈ U , то это можно обозначить u ~[v, w] (читается “ребро u соединяет вершины v и w”) и ввести отображение Г(u) = [v, w] – это означает, что ребро инцидентно каждой из вершин v и w и, наоборот, вершины инцидентны ребру. Поскольку отображение инцидентности графа Г включает множество ребер графа U , постольку описание графа как совокупности множества вершин V и отображения Г множества U в V&V вида G = (V, Г) полностью определяет граф. Степенью вершины δ (v) называется число концов ребер, инцидентных вершине v (т. е. петля учитывается дважды). Для изолированной вершины δ (v) = 0. Вырожденным называется граф, у которого все вершины изолированы. Разбиение графа на составляющие Суграфом графа G называется граф G’ = (V, U ′ ), где U ′ ⊂ U , т. е. суграф получается из исходного графа удалением некоторого числа ребер (с сохранением вершин). 9
Подграфом графа G называется граф G’ = (V ′ , U ′ ), где V ′ ⊂ V, U ′ = = U ∩ (V’ & V’), т. е. подграф получается из исходного графа удалением некоторого числа вершин вместе со всеми ребрами, инцидентными удаленной вершине. Частью (частичным графом) графа G называется граф G’ = (V’, U ′ ), где V ′ ⊂ V, U ′ ⊂ U , т. е. часть графа получается из исходного графа применением обеих описанных операций. Маршрутом называется конечная последовательность n ребер графа
u 1, u 2,..., u n (не обязательно различных), если существует последовательность v0, v1, ..., vn из n + 1 (не обязательно различных) вершин таких, что ui ~ [vi-1, vi], для i = 1, 2, ..., n. Длиной маршрута (n) называется число ребер, которые он содержит. Маршрут замкнут, если v0 = vn, и незамкнут, если v0 ≠ vn. Цепью называется незамкнутый маршрут, если все его ребра различны. Циклом называется цепь, которая начинается и заканчивается в одной и той же вершине. Простой цепью называется цепь, в которой все n + 1 вершин v0, v1, ..., vn различны (в этом случае ребра обязательно различны). Простым циклом называется цикл, если v0 = vn, но все остальные вершины различны. Связным называется граф G = (V, U ), если для всех vi и vj∈V (vi ≠ vj) всегда существует цепь из vi в vj, т. е. если каждая пара различных вершин может быть соединена, по крайней мере, одной цепью. В противном случае граф называется несвязным. Разновидности графов Деревом называется связный граф без циклов. Граф является деревом тогда и только тогда, когда каждая пара различных вершин соединяется одной и только одной цепью. Лесом из K деревьев называется граф без циклов, состоящий из K компонент. Обыкновенным называется граф, который не содержит петель и параллельных ребер. Полным называется граф, в котором любые две различные вершины являются смежными, т. е. соединяются ребром. 10
Раздел 5. Основные понятия для ориентированного графа Абстрактное описание орграфа; отображение инцидентности и смежности; части графа; перемещения в орграфе; разновидности орграфов; орграфы и бинарные отношения; транзитивные замыкания; связность орграфа. Литература: [1, c. 23–35]. Орграф G можно определить как совокупность G = (V, U), где V = ={v1, …, vn} – множество вершин графа, а U ⊂ V × V – конечное подмножество упорядоченного (декартова) произведения, образующее множество дуг графа. Дугу (стрелку), соединяющую вершины vi, vj, обозначают (vi, vj), где vi – начало дуги, а vj – конец дуги. Говорят, что дуга направлена от вершины vi к вершине vj или дуга исходит из вершины vi и входит в Для удобства дуги также обозначают одной буквой: uij = вершину vj. =(vi, vj), uk = (vi, vj) или u = (vi, vj). Пусть задан граф G = (V, U) и подмножество V1 ⊂ V. Говорят, что дуга u = (vi, vj) заходит в V1, если vi∉V1, а vj ∈V1 (конец дуги vj находится в V1). Если vi∈V1, а vj∉V1, то говорят, что дуга исходит из V1 (начало дуги vi находится в V1). В обоих случаях дугу u называют инцидентной подмножеству V1. Если подмножество сводится к одной вершине, то дугу называют инцидентной этой вершине (заходящей в нее или исходящей из нее). Обозначим через Гv подмножество вершин V, смежных с v, в которые можно прийти по инцидентным дугам (стрелки исходят из v), или иначе подмножество концов дуг, имеющих началом вершину v. По матрице смежности S можно выделить подмножество Гvi по i-й строке, где ненулевые элементы sij указывают на вершины vj ∈ Гvi. Это отображение инцидентности и смежности позволяет определить граф как пару G = (V, Г), образованную множеством вершин V и многозначным отображением Г множества V в себя. Элемент vi ∈ V называют вершиной, а пару (vi, vj), где vj ∈ Гvi, – дугой. Граф G имеет порядок n, если число вершин V = n. Обозначим через Г -1v подмножество вершин, смежных с v, из которых можно зайти в вершину v по инцидентным дугам, при этом матрица смежности графа G-1 = (V, Г-1) образуется транспонированием (перестановкой строк и столбцов) матрицы смежности графа G. 11
Части графа Суграфом G’ = (V, Г’) графа G = (V, Г) называется граф, если (∀vi ∈ V) (Г’vi ⊆ Гvi), т. е. из исходного графа удаляется некоторое количество дуг (с сохранением вершин). Подграфом G’ = (V’, Г’) графа G = (V, Г) называется граф, если V’ ⊂ V и (∀vi ∈ V) (Г’vi = V’ ∩ Гvi), т. е. из исходного графа удаляются некоторые вершины вместе со всеми дугами, инцидентными удаленной вершине. Частичным подграфом G’ = (V’, Г’) графа G = (V, Г) называется граф, если V’ ⊂ V, Г’ ⊂ Г, т. е. к исходному графу применены обе описанные выше операции. Путем длины n является последовательность (не обязательно различных) дуг (u1, u2, …, un) таких, что для соответствующей последовательности n + 1 вершин v0, v1, …, vn справедливо ui = (vi-1, vi) для i = 1, 2, …, n (т. е. конец предыдущей дуги совпадает с началом следующей). Путь можно задать последовательностью дуг или вершин, через которые он проходит. Путь называется замкнутым, если v0 = vn, и незамкнутым, если v0 ≠ vn. Простым называется путь, в котором нет повторяющихся дуг. Элементарным называется путь, если все его вершины различны. Контуром называется замкнутый путь, когда v0 = vn. Элементарным контуром называется контур с различными вершинами (кроме начальной и конечной, которые совпадают). Орграф называется циклическим (контурным), если он содержит, по крайней мере, один контур, и ациклическим (бесконтурным) в противном случае. Ориентированным деревом (прадеревом), растущим из корня v0, называется граф G = (V, U), если: 1) существует единственная вершина v0 (корень дерева), в которую не заходит ни одна дуга; 2) в каждую другую вершину заходит только одна дуга (только одна вершина предшествует вершине vi); 3) граф не содержит контуров. Вершина vi называется висячей, если Гvi = ∅, т. е. из vi не исходит дуга (нет следующей вершины), её также называют листом. Прадеревом является граф без контуров и петель, в котором из корня дерева в любую другую вершину можно прийти только по одному элементарному пути. Двоичным деревом называется прадерево, если из каждой невисячей вершины исходит две дуги. Ветвящимся называется граф, все связные компоненты которого являются прадеревьями. 12
Орграфы и бинарные отношения Пусть V – множество объектов попарного (бинарного) сравнения. Множество всех упорядоченных пар v, v’∈V обозначается V × V (декартово произведение). Подмножество B ⊆ V × V называется бинарным отношением, т. е. (v, v’) ∈ B. Бинарные отношения легко представляются в виде орграфа, при этом вершины графа соответствуют объектам сравнения vi ∈ V, а дуги отображают бинарное отношение между объектами. Если (v, v’) ∈ B, то проводится дуга из v в v’, при этом v – начало, а v’ – конец дуги, т. е. дуга определяется парой (v, v’). Описания специальных классов орграфов, не имеющих параллельных дуг, аналогичны терминологии бинарных отношений. Рефлексивным называется граф, имеющий петлю (v, v) в каждой вершине; симметрическим является граф, в котором каждой дуге u = (v, w) соответствует встречная дуга u’ = (w, v); транзитивным называется граф, в котором из существования дуг u1 = (v, v’) и u2 = (v’, v’’) следует существование дуги u3 = (v, v’’). Выше были обозначены через Гv подмножество смежных вершинконцов дуг, имеющих началом вершину v, а через Г-v подмножество смежных вершин-начал дуг, имеющих концом вершину v. Обозначим через Гnv подмножество тех вершин, в которые можно прийти из вершины v, используя пути длины n (или меньшей), а через Г- n v подмножество тех вершин, из которых можно прийти в вершину v, используя пути длины n (или меньшей). Транзитивным замыканием называется многозначное отображение, определяемое следующей формулой: Γˆ vi = {vi } ∪ Γvi ∪ Γ 2 vi ∪…, т. е. множество вершин, в которые можно прийти из вершины vi по некоторому пути без повторения дуг. Аналогично определяется обратное транзитивное замыкание: Γˆ − vi = {vi } ∪ Γ −1vi ∪ Γ −2 vi ∪…, т. е. множество вершин, из которых попадают в вершину vi по некоторому пути без повторения дуг. Сильно связным графом G = (V, Г) называется граф, если, ˆ i =V, (∀vi ∈V ) Гv т. е. для любых двух вершин vi, vj существует путь, идущий из vi в vj. Сильно связный граф – это граф, содержащий контуры. 13
Раздел 6. Булевы (переключательные) функции Понятие о булевых функциях (БФ); булевы операции и булева алгебра; способы задания БФ; представление БФ дизъюнктивными и конъюнктивными нормальными формами; эквивалентные преобразования формул; минимизация БФ; получение простых импликантов; теорема о функциональной полноте. Булевыми (переключательными) функциями f(x1, x2, …, xn) называют такие функции, у которых все аргументы, как и сами функции, могут принимать лишь два значения. Эти значения, называемые булевыми, представляют двумя системами обозначений: {ложь, истина}, {0, 1}. Последнюю систему удобно использовать при разработке дискретных элементов преобразователей информации с двумя устойчивыми состояниями, например “высокое или низкое напряжение”. Булеву функцию f(x1, x2, …, xn) называют n-местной с областью значений из множества {0, 1} и со значениями аргументов из этого же множества. Область определения n-местной булевой функции может состоять максимум из 2n различных наборов значений n ее аргументов (кортежи (последовательности) из 0 и 1). Конечность области определения и области значения булевой функции позволяет задавать функцию с помощью таблиц. Так как число наборов аргументов равно 2n, а на каждом наборе функция может принимать значения 0 или 1, то существует точно 22n различных булевых функций от n переменных. Число булевых функций от n переменных растет очень быстро: при n = 1 число функций равно 4; при n = 2 число функций равно 16; при n = 3 число функций равно 256 и т. д. Поэтому представляют таблицы одно- и двухместных булевых функций (табл. 1 и 2), а на основе этих элементарных функций с помощью формул создают булевы функции любой сложности. Множество булевых функций от n переменных обозначим Pn. Булева функция f ∈ Pn существенно зависит от переменной xi, если существует такой набор значений x1, …, xi-1, xi, xi+1, …, xn, что f (x1, …, xi-1, 0, xi+1, …, xn) ≠ f (x1, …, xi-1, 1, xi+1, …, xn). В этом случае xi называют существенной переменной, или фиктивной (несущественной) переменной, т. е. изменение значения фиктивной переменной не меняет значения функции. Например, f(x1, x2, x3) = g(x1, x2) означает, что при любых значениях x1, x2 f = g независимо от значения x3. Фиктивные переменные можно удалять из функции. Однако бывает полезно вводить их, чтобы обеспечить полный набор переменных. 14
Булевы функции одной переменной
Таблица 1 Функция
Название
Обозначение
Значения x 0 1
f0
Нуль
0
0
0
f1
Тождественн ая
х
0
1
f2
Отрицание
x
1
0
f3
Единица
1
1
1
Фиктивные х
х
Булевы функции двух переменных
Таблица 2 Функция
f0 f1 f2 f3 f4 f5 f6 f7 f8
Название Нульконстанта Конъюнкция (И) Прямая антиимпликация Переменная х Обратная антиимпликация Переменная у Сложение по mod 2 Дизъюнкция (ИЛИ) Стрелка Пирса
Значения x: Обозначе0 0 1 1 Фиктивные ние Значения y: 0 1 0 1 x, y
Формула
0
0 0 0 0
x&y
0 0 0 1
xy, х⋅у
x→y
0 0 1 0
xy
x
0 0 1 1
x←y
0 1 0 0
y
0 1 0 1
x⊕y
0 1 1 0
xy v xy
x∨y
0 1 1 1
x vy
x ↓y
1 0 0 0
xy
y
0
x
xy x
y
15
Окончание таблицы 2 Функция
Название
f12
Эквивалентность Отрицание у (НЕ у) Обратная импликация Отрицание х (НЕ х)
f13
Импликация
f9 f10 f11
f14 f15
Штрих Шеффера Единицаконстанта
Значения x: Обозначе0 0 1 1 Фиктивные ние Значения y: 0 1 0 1
Формула
x≡y
1 0 0 1
y
1 0 1 0
x←y
1 0 1 1
x
1 1 0 0
x→y
1 1 0 1
x vy
xy
1 1 1 0
x vy
1
1 1 1 1
xy v xy x
y x vy
y
x, y
x
1
Более удобный аналитический способ задания булевых функций основан на использовании булевой алгебры функций с операцией суперпозиции. Суперпозицией функций f1, f2, …, fm называется функция f, полученная с помощью подстановок этих функций друг в друга и переименования переменных, а формулой называется выражение, описывающее эту суперпозицию, например, ( х ⊕ у )→ х у ∨ ху . Формулу можно вычислить, если уже вычислены значения всех ее подформул. П р и м е р . Вычислить формулу ( х3 ∨ х2 ) ⊕ ( х1 & ( x1 ⊕ x2 )) на наборе х1 = 1, х2 = 1, х3 = 0. Используя табл. 2, получим: х3 ∨ х2 = 1; х1 & ( x1 ⊕ x2 ) = х1 ⋅ 0 = 0; ( х3 ∨ х2 ) ⊕ ( х1 & ( x1 ⊕ x2 )) = 1 ⊕ 0 = 1. О формуле, задающей функцию, говорят, что она реализует или представляет функцию. В отличие от табличного задания представление данной функции формулой не единственно. Например, используя множество функций {f1, f7, f12} (И, ИЛИ, НЕ), функцию f8 (стрелка Пирса) можно представить формулами: 16
х ↓ y = х y и х ↓ y = х ∨ y, а функцию f14 (штрих Шеффера) – формулами: х | y = х ∨ y и х | y = хy. Формулы, представляющие одну и ту же функцию, называются эквивалентными, или равносильными, что обозначается знаком равенства: f8 = x y = x ∨ y, f14 ( x, у ) = х ∨ у = ху. Алгеброй булевых функций будем называть множество всех конечноместных булевых функций, рассматриваемое вместе с заданными на нем операциями отрицания, конъюнкции и дизъюнкции, т. е. алгебра вида (Pn, −, &, ∨ ), где Pn – множество n-местных булевых функций. Пусть буквы латинского алфавита (с индексами или без них) обозначают произвольные элементы булевой алгебры (булевы функции). Одной из основных задач булевой алгебры является установление тождественных соотношений вида A(x, y, z, …) = B(x, y, z, …), где через А и В обозначены формулы булевой алгебры. Для упрощения формул вводятся следующие правила: 1) соблюдается старшинство операций (отрицание, конъюнкция и дизъюнкция), а при необходимости изменить порядок действий применяются скобки; 2) знак конъюнкции (умножения) может быть опущен; 3) отрицание над всем выражением позволяет не заключать его в скобки; 4) при выполнении подряд одноименных операций скобки можно опускать. Правила и законы булевых операций аналогичны свойствам операций алгебры множеств, рассмотренным выше: Ассоциативность (возможность опускать скобки): а) х(уz) = (xу)z = xyz б) ( x v y ) v z = x v ( y v z ) = x v y v z (1) Коммутативность (перестановка операндов): а) ху = ух б) x v y = y v x (2) Идемпотентность (отсутствие степеней и коэффициентов): а) хх = х б) x v x = x (3) Дистрибутивность конъюнкции относительно дизъюнкции: x v yz = ( x v y ) v ( x v z ) (4) Дистрибутивность дизъюнкции относительно конъюнкции: (5) x( y v z ) = xy v z Закон двойного отрицания: x = x (6)
17
Закон противоречия: xx = 0 Закон “исключенного третьего”: x v x = 1 Свойства констант: х&1 = x, x&0 = 0, x v 1 = 1, x v 0 = 0, 1 = 0, 0 = 1. Правила де Моргана (для трех операций булевой алгебры): а)
ху = х ∨ у,
(7) (8) (9) (10) (11) (12) (13) (14) (15)
(16) х ∨ у = х у. Рассмотренные свойства булевых операций используются для упрощения и доказательства тождественности формул булевой алгебры на базе дизъюнктивных и конъюнктивных нормальных форм. Пусть для множества переменных X = {x1, …, xn} через (∀х с волной”) обозначается х или x . Элементарной конъюнкцией (произведениб)
ем) называется конструкция вида: U = xi1 xi2 … xik , если в ней каждая буква встречается не более одного раза. Например, x1 x2 , x1 x2 x3 – элементарные конъюнкции, а x1 x1, x3 x2 x3 – неэлементарные. Конституентой 1 называется n-местная элементарная конъюнкция, включающая все переменные из набора Х (в виде либо xi ... xik, либо xi) в точности по одному разу. Общее число таких конституент равно 2n, т. е. числу наборов n-переменных. Дизъюнктивной нормальной формой (ДНФ) называется дизъюнкция элементарных конъюнкций Ui: D = U1 ∨ U2 ∨ … ∨ Um, не содержащая двух одинаковых конъюнкций, например:
х1 х2 ∨ х1 х2 х3 ∨ х2 х3 . Совершенная ДНФ (СДНФ) – это ДНФ, состоящая только из конституент 1, например: х1 х2 х3 ∨ х1 х2 х3 ∨ х1 х2 х3 ∨ х1 х2 х3 . В булевой алгебре вследствие того, что при замене нуля единицей, а единицы нулем, дизъюнкция превращается в конъюнкцию, и наоборот, 18
возникает двойственность свойств дизъюнкции и конъюнкции. Выполнив в приведенных определениях подобные замены, получим соответствующие определения для конъюнктивной нормальной формы. Например, для функции f(x1, x2, x3) элементарная дизъюнкция получается из элементарной конъюнкции инвертированием переменных и заменой операции конъюнкции на дизъюнкцию: элементарная конъюнкция: элементарная дизъюнкция:
х1 х2 конституента 1:
х1 ∨ х2 конституента 0:
х1 х2 х3 х1 ∨ х2 ∨ х3 Конъюнктивной нормальной формой (КНФ) называется конъюнкция
различных элементарных дизъюнкций: ( х1 ∨ х2 ) ⋅ ( х1 ∨ х3 ). Совершенной КНФ (СКНФ) называется КНФ, состоящая только из конституент 0: ( х1 ∨ х2 ∨ х3 ) ⋅ ( х1 ∨ х2 ∨ х3 ). Осуществляя такую замену, можно автоматически для любого выведенного впоследствии свойства (соотношения) получить двойственное ему свойство. Поэтому ограничимся рассмотрением утверждений лишь для ДНФ. Теорема 1 (о приведении формулы к СДНФ). С помощью соотношений (1–16) любая формула булевой алгебры может быть приведена к СДНФ. Пример . Преобразовать формулу f ( x, y, z ) = x ∨ yz ∨ xyz к СДНФ. На основании соотношений (8, 9) приведем формулу к виду: f ( x, y, z ) = x( y ∨ y )( z ∨ z ) ∨ yz( x ∨ x ) ∨ xyz. Используя соотношения (4, 1, 2, 3), последовательно придем к следующей формуле: f ( x, y, z ) = ( xy ∨ xy )( z ∨ z ) ∨ yzx ∨ yzx ∨ xyz = = xyz ∨ xyz ∨ xyz ∨ xyz ∨ xyz ∨ xyz ∨ xyz = = xyz ∨ xyz ∨ xyz ∨ xyz ∨ xyz ∨ xyz.
Полученная СДНФ эквивалентна исходной формуле и все выполненные шаги обратимы, т. е. от СДНФ с помощью соотношений (1–16) можно перейти к исходной формуле.
19
Те о р е м а 2 (о представлении функции в СДНФ). Всякая булева функция f ( x1, x2 ,…, xn ) может быть единственным образом представлена в СДНФ. По таблице истинности функции f ( x1, x2 ,…, xn ) легко получить ее СДНФ и СКНФ в соответствии с теоремой 2 и двойственностью свойств дизъюнкции и конъюнкции. Каждому двоичному набору таблицы α = (α1, α2 ,…, αn ) соответствует единственная конституента 1 вида: х1 х2 … хn , обращающаяся на этом наборе в 1 по правилу: xi , если αi = 1, xiαi = xi , если αi = 0 . Все остальные конституенты 1 на данном наборе обращаются в 0.
Например, для функции f ( x1, x2 , x3 ) набору (0, 1, 0) соответствует конституента 1: x1 x2 x3 , а набору (1, 1, 0) – x1 x2 x3 . Образуя дизъюнкцию конституент 1, соответствующих всем наборам, на которых функция обращается в 1, получим СДНФ, равную данной функции. x 0 0 1 1
y 0 1 0 1
f(x, y) 0 1 1 0
Каждому двоичному набору таблицы α = (α1, α2 ,…, αn ) соответствует единственная конституента 0 вида: х1 ∨ х2 ∨ … ∨ хn , обращающаяся
20
x
y
f(x, y)
0
0
0
1
1 1
конституенты 1
x
y
f(x, y)
0
0
0
0
1
0
1
1
0
1
1
0
1
1
0
1
1
0
конституенты 0
на этом наборе в 0 по правилу: xi , если αi = 0, xiαi = xi , если αi = 1 . Все остальные конституенты 0 на данном наборе обращаются в 1. Например, для функции набору (0, 1, 0) соответствует конституента 0:
x1 ∨ x2 ∨ x3 . Образуя дизъюнкцию конституент 0, соответствующих всем наборам, на которых функция обращается в 0, получим СКНФ, равную данной функции. Пример. Представим параллельно алгоритмы получения СДНФ и СКНФ для функции, заданной следующей таблицей истинности: Получение СДНФ: Получение СКНФ: 1. По правилам, определенным выше, рядом со строками, где f(x, y) = 1, записать конституенты 1, а где f(x, y) = 0, записать конституенты 0. 2. Все полученные выражения для конституент связать операцией: дизъюнкции для СДНФ: конъюнкции для СКНФ: xу ∨ ху ( x ∨ у) ⋅ ( х ∨ у ) Покажем, что полученные по двум алгоритмам СДНФ и СКНФ эквивалентны. Преобразуем СКНФ по правилам булевой алгебры: ( x ∨ у ) ⋅ ( х ∨ у ) = хх ∨ ху ∨ ху ∨ уу = ху ∨ ху . Рекомендуется использовать тот из двух алгоритмов, в котором меньше конституент, а затем упростить формулу, используя булевы операции. Эквивалентные преобразования и минимизация формул базируются на следующих теоремах, вытекающих из теорем 1 и 2. Теорема 3 (о представлении булевой функции формулой). Любая булева функция может быть представлена в виде формулы булевой алгебры, т.е. как суперпозиция конъюнкции, дизъюнкции и отрицания. Действительно, в качестве формулы, представляющей любую булеву функцию f(x1, x2, . . . , xn) можно выбрать ее СДНФ. Теорема 4 (об эквивалентных формулах). С помощью соотношений (1 – 16) всякую формулу булевой функции можно преобразовать в любую другую, эквивалентную ей, т. е. представляющей ту же самую булеву функцию. Преобразовать формулу А в эквивалентную ей формулу В всегда можно через СДНФ F, которая в силу теоремы 2 будет общей для формул А и В, но на практике этот способ оказывается громоздким. 21
Упрощение булевых формул состоит в уменьшении количества входящих в них букв. Как известно, любую булеву функцию, отличную от 0, можно представить ее СДНФ. Элементарную конъюнкцию можно представить выражением: 0 1 U i = xiσ11 … xirσr , где σ j ∈ {0,1}, x j = x j , x j = x j , и все xij ( j = 1,2,…, r ) различны. Число r называется рангом конъюнкции. Константа 1 считается конъюнкцией нулевого ранга. Минимальной ДНФ (МДНФ) функции f(x1, x2, . . . , xn) называется ДНФ N = U1 ∨ … ∨ U k , содержащая наименьшее число букв по сравнению с другими ДНФ, представляющими эту функцию. Минимизация булевой формулы состоит в том, чтобы для всякой булевой функции найти представление в виде МДНФ. Все методы минимизации в классе ДНФ основываются на понятии простого импликанта. Импликантом функции f(x1, x2, . . . , xn) называется элементарная конъюнкция если выполнено соотношение:
U → f ( x1,…, xn ) ≡ 1, где xij ∈ {x1,…, xn }, j = 1,…, r. Переменные, не вошедшие в конъюнкцию, являются несущественными для данного импликанта. Импликант можно представить как булеву функцию g = U, которая обращается в 1 на тех наборах значений переменных, на которых равна 1 функция f. Дизъюнкция импликантов g1 ∨ ∨ gm , накрывающая в совокупности все 1 функции f, совпадает с функцией f. При уменьшении ранга (длины) элементарной конъюнкции за счет отбрасывания несущественных переменных количество накрываемых импликантом 1 увеличивается. Конституента 1 (длины n) обращается в 1 лишь в одной точке, а элементарная конъюнкция длины n – k – в 2k точках. Выгодно поэтому накрывать функцию f элементарными конъюнкциями минимальной длины. Простым импликантом функции f(x1, . . . , xn) называется импликант, если элементарная конъюнкция, получающаяся из него удалением любой буквы, не является импликантом функции. Сокращенной ДНФ функции f(x1, . . . , xn) называется дизъюнкция всех простых импликантов функции. Теорема 5 . Сокращенная ДНФ функции f(x1, . . . , xn) представляет эту функцию. 22
Действительно, так как для простого импликанта то дизъюнкция всех простых импликантов представляет эту функцию. Тупиковой ДНФ функции f называется дизъюнкция простых импликантов, из которых ни один простой импликант нельзя удалить так, чтобы полученная ДНФ все еще представляла функцию f. Булева функция f(x1, . . . , xn) может иметь несколько тупиковых ДНФ, а среди них обязательно содержатся все ее минимальные ДНФ (их тоже может быть несколько), т. е. такие ДНФ, которые содержат наименьшее число букв по сравнению с остальными ДНФ этой функции. Получение МДНФ можно разбить на два этапа: 1) получение сокращенной ДНФ; 2) получение тупиковых ДНФ и выбор из них МДНФ. Получение сокращенной ДНФ основано на использовании соотношений (1–16), рассмотренных теорем и понятий, а также следующих правил эквивалентных преобразований и минимизации формул с целью их упрощения. 1. Правило подстановки формулы вместо переменной. При подстановке формулы F вместо переменной х все вхождения переменной х в исходное соотношение должны быть одновременно заменены формулой F. Например, соотношение F ∨ F = 1 , полученное из закона “исключенного третьего” ( х ∨ х = 1 ), верно для любых F. 2. Правило замены подформул. В булевой алгебре равенство F1 = F2 означает, что формулы F1 и F2 эквивалентны, т.е. описывают одну и ту же функцию f. Следовательно, если какая-либо формула F содержит F1 в качестве подформулы, то замена F1 на F2 не изменяет элемента функции f, над которым производят операции в формуле F. Поэтому формула F ‘, полученная из F такой заменой, эквивалентна исходной формуле F. Пример. Возьмем соотношение правила де Моргана х1 х2 = х1 ∨ х2 и подставим вместо х1 формулу х1 х3 . Получим х1 х3 х2 = х1 х3 ∨ х2 , т. е. две формулы, не эквивалентные исходным, но эквивалентные между собой. Используя снова правило де Моргана и закон двойного отрицания ( х = х ), можно получить цепочку преобразований формул, которые экви- валентны между собой: х1 х3 х2 = х1 х3 ∨ х2 = х1 ∨ х3 = х2 = х1 ∨ х2 ∨ х3. 2. Правила упрощения формул:
23
Поглощение:
х ∨ ху = х,
(17)
(18) х( х ∨ у ) = х. Докажем равенство (17), используя соотношения (9, 4, 11): х ∨ ху = х ⋅ 1 ∨ ху = х(1 ∨ у ) = х ⋅ 1 = х. Равенство (18) доказывается с помощью соотношений (4, 3, 17): х( х ∨ у ) = хх ∨ ху = х ∨ ху = х. Склеивание / расщепление: ху ∨ ху = х. (19) Доказательство склеивания: ху ∨ ху = х( у ∨ у ) = х ⋅ 1 = х. Расщепление обратно склеиванию и используется для доказательства эквивалентности преобразований сложных формул. Обобщенное склеивание (исключение лишних членов дизъюнкции) / расщепление: хz ∨ уz ∨ xy = хz ∨ уz . (20) Доказывается (20) с помощью расщепления (19) и поглощения (17):
хz ∨ уz ∨ xy = хz ∨ уz ∨ xy ( z ∨ z ) = = хz ∨ уz ∨ xyz ∨ xyz = хz ∨ уz . Исключение отрицания: (21) Доказывается (21) с помощью расщепления, идемпотентности ( х ∨ х = х ) и закона “исключенного третьего” ( х ∨ х = 1 ):
х( у ∨ у ) ∨ ху = ху ∨ ху ∨ ху = ху ∨ ху ∨ ху ∨ ху = = х( у ∨ у ) ∨ у ( х ∨ х ) = х ⋅ 1 ∨ у ⋅ 1 = х ∨ у. Приведение булевой формулы к ДНФ (в том числе к СДНФ) выполняется с помощью соотношений и правил (1–21). Сначала с помощью правила двойного отрицания (6) и правил де Моргана (15, 16) все отрицания “спускаются” до переменных. Затем раскрываются скобки, с помощью правила идемпотентности (3), законов противоречия (7) и “исключенного третьего” (8) удаляются лишние конъюнкции и повторения переменных в конъюнкциях, а с помощью свойств констант (9–14) удаляются константы. С помощью правил упрощения формул (17–21) приводят формулу к сокращенной ДНФ, которая может оказаться тупиковой ДНФ или, возможно, минимальной ДНФ. Пример . Упростить булеву формулу: 24
ху ∨ x ( y ∨ xz )( x( y ∨ z ) ∨ yz ) = хy ∨ ( xy ∨ xxz ) ⋅ ⋅( x( y ∨ z )) ⋅ y z = xy ∨ xy ( x ∨ ( y ∨ z ))( y ∨ z ) = = xy ∨ xy ( x ∨ yz )( y ∨ z ) = xy ∨ xy ( x y ∨ yyz ∨ x z ∨ yz ) = = xy ∨ xyy ∨ xyyz ∨ xyz ∨ xyz = xy ∨ xyz = y ( x ∨ x z ) = = y ( x ∨ z ) = xy ∨ yz .
Всякую ДНФ можно привести к СДНФ расщеплением конъюнкций, которые содержат не все переменные. Получим СДНФ для предыдущего примера:
хy ∨ уz = хy ( z ∨ z ) ∨ ( x ∨ x ) yz = xyz ∨ xyz ∨ xyz ∨ xyz = = xyz ∨ xyz ∨ xyz. Получение тупиковой ДНФ состоит в нахождении простых импликантов с помощью алгоритма Блейка, суть которого заключается в следующем. 1. Формула обобщенного расщепления (21), записанная в виде: (22) Х z ∨Y z = X z ∨Y z ∨ X Y, где z – буква, X, Y – элементарные конъюнкции, позволяет вводить в ДНФ новый член. После применения соотношения (22) несколько раз к исходной формуле F (пока получаются новые члены), ее можно привести к формуле F1, которая будет содержать все простые импликанты представляемой ею булевой функции f. 2. Формулу F1 необходимо освободить от всех членов, не являющимися простыми импликантами, используя операцию поглощения (17), и прийти к сокращенной ДНФ, представляемой формулой F2. 3. Если некоторый член в формуле F2 может быть получен с помощью применения соотношения (22), возможно, неоднократного из остальных членов, то его можно исключить как лишний. В результате процесса исключения лишних членов придем к некоторой тупиковой ДНФ F3. 4. Для получения всех тупиковых ДНФ, описанный способ исключения следует применить несколько раз, изменяя порядок исключения разных членов. Нахождение минимальных ДНФ требует громоздкой работы по перебору всех тупиковых ДНФ. Поэтому на практике ограничиваются нахождением какой-нибудь одной тупиковой ДНФ, принимая ее за МДНФ. Пример. Покажем процесс минимизации ДНФ, заданной формулой: F = хyz ∨ xу ∨ xyz . 25
1. По формуле расщепления (22) для пар членов 1 и 2, 2 и 3 получим: F1 = хyz ∨ xу ∨ yz ∨ xyz ∨ xz . Применение соотношения (22) к любым парам членов формы F1 не приводит к появлению новых членов. Следовательно, в форме F1 содержатся все простые импликанты функции f, представляемой формой F. 2. Применение операции поглощения (17) к форме F1 (3-й член поглощает 1-й, 5-й поглощает 4-й) приводит к сокращенной ДНФ: F 2 = xу ∨ yz ∨ xz . 3. По операции обобщенного склеивания (20) 1-й член получается из двух других, т. е. является лишним, поэтому исключается: F 3 = yz ∨ xz . Форма F3 не содержит лишних членов и, следовательно, является искомой тупиковой ДНФ. В данном случае тупиковая ДНФ является единственной – значит это минимальная ДНФ функции f. 3. КОНТРОЛЬНОЕ ЗАДАНИЕ Контрольное задание по курсу “Дискретная математика” состоит из трех частей: основные понятия теории множеств; обработка ориентированного графа; работа с булевыми функциями. При выполнении каждой части задания в соответствии с индивидуальным вариантом, приведенным в таблицах, по каждому пункту задания необходимо привести теоретические сведения и представить его решение. Номер варианта задания соответствует последней цифре шифра студента. Основные понятия теории множеств Общие понятия теории множеств приведены в п. 4.2 (разд. 1). Определение множества состоит в том, чтобы указать, какие элементы ему принадлежат. При этом элементы множества заключаются в фигурные скобки. Существуют три основные способа определения множеств. Перечисление элементов Например, А = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} – множество десятичных цифр. Этот способ пригоден для определения конечных множеств небольшого числа легко различимых элементов. Обычно в конкретных рассуждениях элементы всех множеств берутся из некоторого одного дос26
таточно широкого множества U (своего для каждого случая), которое называется универсальным множеством, или универсумом. Описание характеристического предиката Характеристический предикат (свойство, признак) – это некоторое логическое утверждение (условие) в виде формы Р(х), возвращающее логическое значение (истина или ложь). Любая форма Р(х) определяет некоторое множество А следующим образом: А = {x | P(x)}, что читается так: “множество всех х, если Р(х) – истинно”. Таким образом, элемент а ∈ {x | P(x)}, если Р(а) – истинное высказывание, т. е. форма Р(х) является селектором (свойством), определяющим принадлежность проверяемого предмета данному множеству. Это наиболее общий способ определения множеств. Например, пусть N0 = {0, 1, 2, …} – множество натуральных чисел, включая 0, тогда можно задать множество десятичных цифр следующим образом: D = {x | x ∈ N0 и x < 10}. Возможны видоизменения основной скобочной записи. Вместо {x | x ∈ А и Р(x)} часто пишут {x ∈ А | Р(x)} – это множество всех элементов из А, обладающих свойством Р(х). Определение множества с помощью порождающих процедур Множество может быть определено с использованием элементов уже известных множеств в результате применения к ним некоторого правила (алгоритма, процедуры, формулы, операций). Если Р(х) есть некоторое свойство, а f – функция, то через { f(x) | P(x)} можно обозначить множество всех таких у, для которых имеется х, обладающий свойством Р(х) и такой, что y = f(x). U A 2 | x ∈ Z} – Например, пусть Z – множество целых чисел, тогда C = {x B А∪B множество квадратов целых чисел. Такие обозначения допускают естественные обобщения. Например, множество всех Uпар, P = {(x, y) | x ∈ {a1, …, ak}, y ∈ {b1, …, bk}} – это A первая компонента которых принадлежит множеству А = {a1, …, akB}, а А∩В вторая – множеству В = {b1, …, bk}. Операции над множествами с целью получения новых множеств можA U но представлять характеристическими предикатами и иллюстрировать с помощью диаграмм Эйлера-Венна, которые используют геометричесB А\ В кие фигуры. Универсальное множество изображают прямоугольником, 27
его подмножества – в виде кругов или другой простой области внутри прямоугольника, а результат операции – заштрихованной областью. U Пример. Пусть универсальное множество U A= {a, e, i, o, u} – гласные буквы английского алфавита; множества A = {a, i, u}, B = {e, i}. Объединение множеств: А ∪ В = {x | x ∈ A или x ∈ B}, А ∪ В = {a, i, u} ∪ {e, i} = {a, e, i, u}. Пересечение множеств: A ∩ B = {x | x ∈ A и x ∈ B}, A ∩ B = {a, i, u} ∩ {e, i} = {i}.
A
U
А—В
B
Дополнение (разность) множеств: A \ В = {x | x ∈ A и x ∉ B}, A \ В = {a, i, u}\ {e, i} = {a, u}. Абсолютное дополнение множества ( А ) – это элементы универсума без элементов множества А: А = U \ A = {x | x ∉ A}, Операции над множествами
Таблица 3 A x∈A
B x∈Β
0 0 1 1
0 1 0 1
A∪B A∩B x∈A∪B x∈A∩B 0 1 1 1
0 0 0 1
А = {a, e, i, o, u}\ {a, i, u} = {e, o}.
28
Симметрическая разность множеств: А — В = {ξ | (x ∈ A и x ∉ B) или (x ∈ В и x ∉ А)}, А — В = (A \ В) ∪ (В \ А), А— В = {a, i, u} — {e, i} = {a, e, u}.
x∈ 1 1 0 0
A\B AB x∈A\B x∈AB 0 0 1 0
0 1 1 0
Очевидны следующие отношения включения результатов операций с множествами: A ∩ B ⊆ А ⊆ А ∪ В и A ∩ B ⊆ В ⊆ А ∪ В. Аналогично можно показать соотношения результатов других операций. Определение множества в виде характеристического предиката (логического высказывания) А = {x | P(x)}, где х ∈ A, если P(x) – истинное высказывание, можно использовать для более компактного представления операций над множествами. Если закодировать предикат х ∈ A как 1, а x ∉ A как 0, то можно представить операции над множествами в виде табл. 3, в которой для множеств, указанных в заголовке, приведены значения соответствующих предикатов. С помощью этой таблицы можно доказывать как свойства других операций над множествами, так и различные тождественные формулы с операциями над множествами, используемые в алгебре множеств. Варианты множеств X и Y
Таблица 4 № варианта 0 1 2 3 4 5 6
X {a, 1, a2, 9, 2, 19, c} {b, 4, 3, c, 8, d, r2} {5, a, 6, 7, p, t, 1} {b, c, 2, 5, t, 0, 4} {b1, 6, 3, c, d, 1, 2} {8, b2, a1, 7, 3, p, 1} {1, d, 3, 6, c, 2, s}
Y {r, 1, t, 8, 9, d, 0} {7, 9, r, 1, p, 2, 23} {t, 1, 5, p, 4, 0, 17, 16} {3, p, 4, 1, 9, s, t} {c, 2, 0, 1, p, r, 6} {2, c, 7, t2, 0, 6, 21} {5, p, r, 1, 14, 0, 11}
7
{2, p, 13, 4, t, 6, 21}
{3, 13, r, p, 1, 5, 17}
8 9
{4, 9, p2, 31, 2, 3} {12, a1, 5, t, 2, 8, 4}
{{2, t1, 3, 8, 26, 5, s} {7, t, 4, 31, 1, 3, p, r}
Основные понятия теории множеств Пусть множество цифр U = {0, 1, …,9} – это универсальное множество в данной работе. Используя множества U, а также X и Y, соответствующие варианту задания в табл. 4, требуется описать необходимые понятия теории множеств (словами и формулами) и получить новые множества согласно пунктам задания: 1. C1 = {x | x∈X и x∈U }; C2 = {x | x ∈X и x∉U }. 2. D = {9 – x | x ∈Y и x ∈U }. 3. Семейство множеств (булеан) B(D) и его мощность |B(D)|. 29
4. С1 ∪ D. 5. С1 ∩ D. 6. D. 7. C1 \ D.
v2
u1 u2
v1 u7
v1 v2 v3 v4 v5
V1 u4
u6 v4 u8 v5
u3 v3 u9
u5
v1 v2 S5×5 = v3 v4 v5
0 1 0 1 0
1 0 0 0 0
0 2 1 0 0
0 0 1 0 1
0 0 0 0 1
Рис. 2. Орграф и его матрица смежности
8. C1 ↓ D. 9. Показать отношение включения между множествами: C1, D, С1 ∪ D, С1 ∩ D, C1 \ D, C1 ↓ D. Для пояснения пунктов 4–8 использовать диаграммы Эйлера-Венна. Обработка ориентированного графа Общие методические указания по обработке орграфа приведены (разд. 5). Пусть орграф G = (V, U) состоит из множества вершин V = ={v1, v2, v3, v4, v5} и множества дуг U = {u1 = (v1, v2), u2 = (v2, v1), u3 = =(v2, v3), u4 = (v2, v3), u5 = (v3, v3), u6 = (v3, v4), u7 = (v4, v1), u8 = (v5, v4), u9 = (v5, v5)}. Множество дуг можно для краткости задать также в виде множества пар номеров начала и конца дуг: U = {(1, 2), (2, 1), (2, 3), (2, 3), (3, 3), (3, 4), (4, 1), (5, 4), (5, 5)}. Количество вершин графа n = |V| = 5, а количество дуг |U| = 9. Геометрическое и матричное представление заданного графа приведено на рис. 2. Орграф можно описать квадратной матрицей смежности Snґn, где n – количество вершин графа, а элемент sij равен количеству дуг (vi, vj), т. е. стрелок, идущих от вершины vi к vj . Дуга может быть инцидентна не только вершинам, представляющим ее начало и конец, но и множеству вершин. На рис.1 выделена область, включающая подмножество вершин V1 = {v2, v3} (V1 М V). Говорят, что дуга u = (vi, vj) заходит в V1, если конец дуги vj находится в V1, и дуга u исходит из V1, если начало дуги vi находится в V1. В обоих случаях дугу u называют инцидентной подмножеству V1, причем она должна 30
а)
б)
в)
г)
v2
v2 v1
v2 v3
v3 v4
v2
v1
v1 v4
v4
v4
Рис. 3. Разделение орграфа на подчасти: а – орграф; б – суграф; в – подграф; г – частичный граф
пересекать границу выделенной области. Обозначим через U + (V1) и U - (V1) множества дуг, заходящих в V1 и исходящих из него. Например, для графа на рис. 2 U + (V1) = {u1 = (v1, v2)}, U - (V1) = {u2 = (v2, v1), u6 = (v3, v4)}. Разделение орграфа (рис. 3, а) заключается в удалении некоторых его частей. Суграф получается из исходного графа удалением некоторых его дуг, но с сохранением числа вершин. На рис. 3, б показан суграф без петель и параллельных дуг. Такой граф называется обыкновенным. Для
а)
б)
v2 v3
v1 v4
v1
в)
v2
1
v3
v1
v4
Рис. 3. Разновидности орграфов: а – симметрический; б – антисимметрический;
v2
v3
1 v4 в – полный
него сохраняется связность исходного графа. Подграф образуется из исходного графа удалением некоторых вершин вместе с инцидентными им дугами (например, вершины v3 на рис. 3, в). Частичный подграф получится, если к исходному графу применены обе операции, описанные выше (рис. 3, г). Некоторые специальные классы орграфов могут быть получены дополнительной трансформацией исходного графа. 31
Симметрическим называется граф G = (V, U), в котором (∀vi∈V, ∀vj∈V) (vi, vj) ∈U ⇒ (vj, vi) ∈U (любые две смежные вершины vi и vj соединены двумя встречными, т. е. противоположно направленными дугами) (рис. 3, а). Антисимметрическим называется граф G = (V, U), в котором (∀vi∈V, ∀vj∈V) (vi, vj)∈U ⇒ (vj, vi) ∉U (пара смежных вершин может быть соединена лишь в одном направлении, петли отсутствуют) (рис. 4, б). Полным называется граф G = (V, U), в котором (∀vi∈V, ∀vj∈V) (vi, vj) ∉ U ⇒ (vj, vi) ∈U (i ≠ j) (любые две вершины соединены по крайней мере одной дугой, т. е. смежны) (рис. 4, в). Рефлексивным называется граф, имеющий петлю в каждой вершине (vi, vi). Транзитивным называется граф, в котором из наличия дуг u1 = (v, v’) и u2 = (v’, v”) следует существование дуги u3 = (v, v”). Полным графом с петлями называется граф G = (V, Г), если (∀vi∈V) Гvi = V (каждая пара вершин, различных или нет, соединяется дугой, т. е. это симметрический, рефлексивный и транзитивный граф). Очевидно, что каждому графу можно сопоставить полный граф с петлями. v2 v1
Корень дерева v3 v4
1-й уровень 2-й уровень
Рис. 5. Прадерево
Элементарный контур в орграфе образует замкнутый путь с различными вершинами, кроме первой и последней. При поиске контуров следует исключить петли, которые не позволяют сдвинуться от начальной вершины. Контур можно задавать по вершинам и по дугам. Например, в графе рис. 2 можно выделить три элементарных контура: по вершинам: (v1, v2, v1), по дугам: (u1, u2); по вершинам: (v1, v2, v3, v4, v1), по дугам: (u1, u3, u6, u7); по вершинам: (v1, v2, v3, v4, v1), по дугам: (u1, u4, u6, u7). Прадерево – это бесконтурный иерархический орграф. Его построение можно начинать от любой вершины исходного графа, принимая ее за корень дерева, если из нее исходит хотя бы одна дуга. На каждом следующем уровне располагаются смежные вершины, отстоящие от вершины предыдущего уровня на одну дугу, при этом вершины не повторяются. Вершины каждого уровня упорядочиваются по возрастанию их 32
номеров слева направо. Построение следующего уровня начинается с вершины с меньшим номером. Например, для графа на рис. 2 построим дерево от вершины v2 как корня (рис. 5). Путь от корня прадерева до других вершин – это элементарный путь минимальной длины (по количеству дуг). ˆ – есть процесс нахождения Получение отображений Гv, Г n v, Гv множества вершин, в которые можно прийти от вершины v. Аналогично, обратные отображения Г - v, Г - n v, Гˆ − v представляют множества вершин, из которых можно прийти в вершину v (дуги (стрелки) сходятся к вершине v). Например, для графа на рис. 2 получим множества вершин, смежных с вершинами графа, в которые можно придти за одну дугу: Гv1 = {v2}; Гv2 = {v1 , v3}; Гv3 = {v3, v4}; Гv4 = {v1}; Гv5 = {v4 , v5}. Эти же множества можно получить по матрице смежности графа на рис. 2. Для каждой строки vi не нулевые значения в строке указывают смежные вершины (обозначения столбцов), в которые можно прийти из вершины vi за одну дугу. Множества вершин, в которые можно прийти за две дуги от вершин v1, v2: Г 2 v1 = Г{Гv1} = Г{v2} = {v1, v3}; Г 2 v2 = Г{Гv2} = Г{v1, v3} = Гv1 ИГv3 = {v2} И {v3, v4} = {v2, v3, v4}. Множества вершин, в которые можно прийти за три дуги от вершин v1, v2: Г 3 v1 = Г{Г 2 v1} = Г{v1, v3} = Гv1 ∪Гv3 = {v2}∪{v3, v4} = {v2, v3, v4}; Г3v2 = Г{Г2 v2) = Г{v2, v3, v4} = Гv2 ∪ Гv3 ∪ Гv4 = {v1, v3} ∪ {v3, v4} ∪ {v1} = {v1, v3 , v4}. Транзитивные замыкания вершин v1, v2, т. е. множества вершин, в которые можно придти от этих вершин без повторения дуг: Γˆ v1 = {v1} ∪ Γv1 ∪ Γ 2 v1 ∪… = {v1} ∪ {v2} ∪ {v1, v3} ∪ {v2, v3, v4} = ={v1, v2, v3, v4}; Γˆ v2 = {v2 } ∪ Γv2 ∪ Γ 2 v2 ∪… = {v2} ∪ {v1, v3} ∪ {v2, v3, v4} ∪ {v1, v3, v4} = {v1, v2, v3, v4}; Из вершин v1, v2 в вершину v5 нельзя придти никаким путем. Для графа на рис. 2 получим множества вершин, смежных с вершинами графа, из которых можно придти за одну дугу: Г - v1 = {v2, v4}; Г - v2 = {v1}; Г - v3 = {v2, v3}; Г - v4 = {v3, v5}; Г - v5 = {v5}. 33
Эти же множества можно получить по матрице смежности графа на рис. 2. Для каждого столбца vi не нулевые значения в столбце указывают смежные вершины (обозначения строк), из которых можно придти в вершину vi за одну дугу. Множества вершин, из которых можно придти за две дуги к вершинам v1, v2: Г -2 v1 = Г -{Г - v1} = Г - {v2, v4} = Г -{v2} ∪ Г – {v4} = {v1} ∪ {v3, v5} = {v1, v3, v5}; Г -2 v2 = Г -{Г - v2} = Г -{v1} = Г -{v2, v4} = Г – v2 ∪ Г – v4 = {v1} ∪ {v3, v5} = {v1, v3, v5}. Множества вершин, из которых можно придти за три дуги к вершинам v1, v2: Г –3 v1 = Г –{Г –2 v1} = Г –{v1, v3, v5} = Г – v1 ∪ Г – v3 ∪ Г – v5= {v2, v4} ∪ {v2, v3} ∪ {v5} = {v2, v3, v4, v5}; Г –3 v2 = Г –{Г –2 v2}=Г –{v1, v3, v5} = Г – v1 И Г – v3 ∪ Г – v5 ={v2, v4} ∪ {v2, v3} ∪ {v5} = {v2, v3, v4, v5}. Обратные транзитивные замыкания вершин v1, v2, т. е. множества вершин, из которых можно прийти к этим вершинам без повторения дуг: Γˆ − v1 = {v1} ∪ Γ − v1 ∪ Γ −2 v1 ∪… = {v1} И {v2, v4} И {v1, v3, v5} = {v1, v2, v3, v4, v5}; Γˆ − v2 = {v2 } ∪ Γ − v2 ∪ Γ −2 v2 ∪… = {v2} И {v1} И {v1, v3, v5} И {v2, v3, v4, v5} = {v1, v2, v3, v4, v5}; Вершины v1, v2 доступны из любых вершин графа. Обработка ориентированного графа Варианты множества дуг графа
Таблица 5 № вар. 0 1 2 3 4
34
Дуги графа { U } { (0,1), (0,2), (0,5), (1,0), (1,0), (1,4), (1,5), (2,1), (2,3), (2,5), (3,0), (3,3), (3,4), (3,5), (4,1), (4,0), (4,4), (5,0), (5,1), (5,2), (5,4), (5,5) } { (0,0), (0,2), (0,4), (1,2), (1,3), (1,5), (2,2), (2,4), (2,5), (3,0), (3,2), (3,3), (3,5), (4,0), (4,1), (4,3), (4,5), (5,0), (5,2), (5,3), (5,4), (5,4) } { (0,0), (0,3), (0,5), (1,1), (1,3), (1,5), (2,2), (2,3), (2,3), (3,0), (3,1), (3,4), (3,5), (4,0), (4,2), (4,5), (5,0), (5,2), (5,3), (5,4), (5,4), (5,5) } { (0,2), (0,4), (0,5), (1,1), (1,2), (1,4), (1,5), (2,0), (2,3), (2,4), (2,5), (3,0), (3,0), (3,1), (3,3), (4,2), (4,4), (4,5), (5,0), (5,3), (5,4), (5,5) } { (0,3), (0,5), (1,1), (1,3), (1,5), (1,5), (2,0), (2,4), (2,5), (3,0), (3,1), (3,2), (3,4), (3,5), (3,5), (4,1), (4,2), (4,4), (4,5), (5,0), (5,2), (5,3) }
Окончание таблицы 5 № вар. 5 6 7 8 9
Дуги графа { U } { (0,0), (0,2), (0,4), (0,5), (1,2), (1,4), (1,5), (2,0), (2,2), (2,5), (2,5), (3,0), (3,1), (3,3), (3,5), (3,5), (4,1), (4,3), (4,5), (5,0), (5,3), (5,5) } { (0,2), (0,4), (0,5), (1,1), (1,2), (1,4), (1,5), (2,0), (2,3), (2,5), (2,5), (3,0), (3,0), (3,1), (3,5), (4,2), (4,4), (4,5), (5,1), (5,3), (5,4), (5,5) } { (0,0), (0,1), (0,5), (1,3), (1,5), (1,5), (2,0), (2,4), (2,5), (3,0), (3,0), (3,2), (3,4), (3,5), (4,0), (4,2), (4,5), (4,5), (5,1), (5,2), (5,3), (5,5) } { (0,0), (0,2), (0,5), (1,0), (1,1), (1,4), (1,5), (2,1), (2,5), (2,5), (3,0), (3,3), (3,4), (3,5), (4,0), (4,1), (4,5), (5,0), (5,1), (5,3), (5,4), (5,5) } { (0,1), (0,4), (0,6), (1,1), (1,3), (1,4), (1,5), (2,0), (2,4), (2,5), (2,5), (3,0), (3,1), (3,3), (3,5), (4,2), (4,3), (4,5), (5,1), (5,3), (5,4), (5,4) }
В соответствии с вариантом задания, приведенным в табл. 5, построить геометрическое и матричное представление графа и выполнить пункты задания по обработке графа G = (V, U), где V – множество вершин, U – множество дуг графа; количество вершин n = |V| = 6; вершины имеют нумерацию от 0 до 5. Пункты задания должны содержать формульные и словесные пояснения. 1. Определить входящие и исходящие дуги для множества вершин {1, 3, 5}. 2. Для множества вершин {0, 1, 2, 3} выделить подграф и из него получить симметрический, антисимметрический, полный и обыкновенный графы. 3. Выделить 4 элементарных контура графа. 4. От вершин i = 2, 5 как от корней построить прадеревья. Определить Г i, Г - i, Г 2 i, Г – 2 i, Гˆ i Гˆ − i для i = 0, 1, 2. Работа с булевыми функциями Общие методические указания по обработке булевых функций приведены в п. 4.2 (раздел 6). Как было показано выше, для n-местной булевой функции f(x1, x2, …, xn) можно составить m=2n различных наборов аргументов из 1 и 0. Поскольку функция на любом наборе может принимать значение 0 или 1, то количество различных функций |Pn| = 2m. Например, при n = 3 m =23 = 8, |P3| = 28 = 256. 35
Таблица 6 x
y
z
i
Ni
0
0
0
1
1
0
1
1
7
128
0
0
1
1
1
1
0
1
6
64
0
1
0
0
1
1
0
1
5
32
0
1
1
0
1
0
1
1
4
16
1
0
0
1
1
0
1
1
3
8
1
0
1
1
1
1
0
1
2
4
1
1
0
0
0
1
0
0
1
2
1
1
1
0
0
0
1
1
0
1
Функции можно пронумеровать и задавать их десятичным номером (см. табл. 1 и 2). По таблице истинности функции f(x1, x2, …, xn) ее номер определяется столбцом значений функции на всех наборах аргументов следующим образом: N ( f ) = f 0 ⋅ 20 + f1 ⋅ 21 + … + f n −1 ⋅ 2n −1, где fi – значение функции f на наборе i, N i = 2i – множитель (“вес”) для набора i = 0, 1,…, n -1, причем нумерация значений функции в таблице идет снизу вверх. Таким образом, функцию можно задать, как fN (x1, x2, …, xn). Пример. Построить таблицу истинности и определить номер функции f ( x, y, z ) = ( x → y ) ∨ y ⊕ z . Для построения таблицы истинности заданной функции (табл. 6) следует использовать таблицы булевых функций одной и двух переменных (табл. 1 и 2), последовательно вычисляя компоненты формулы, представляющей функцию: Вычислим десятичный номер функции: N(f) = 1⋅20 + 0⋅21 + 1⋅22 +1⋅23 +1⋅24 + 1⋅25 + 1⋅26 + 1⋅27 = 1 + 4 + 8 + 16 + 32 + 64 + 128 = 253, т. е. это функция f253 (x, y, z). Для восстановления булевых значений функции по ее номеру необходимо разложить N(f) в двоичный код последовательным делением по
36
модулю 2. Остатки от деления (0 или 1), начиная с младшего по номеру разряда, и последнее частное (1 – как старший разряд) определяют значения функции. Незаполненные вверху таблицы значения функции дополняются нулями. Например, для функции f253 (x, y, z) определим последовательность ее булевых значений: 253/2 = 126 (остаток 1 – младший разряд); 126/2 = 63 (0); 63/2 = 31 (1); 31/2 = 15 (1); 15/2 = 7 (1); 7/2 = 3 (1); 3/2 = 1 (1). Последовательность цифр: 1 0 1 1 1 1 1 1 (старший разряд) определяет булевы значения заданной функции, что видно из таблицы истинности функции для предыдущего примера. На практике мы говорим о булевых функциях, а пишем формулы, хотя это не одно и то же. Количество n-местных булевых функций конечно, а количество представляющих их формул безгранично. Например, функции для двух переменных f8 (стрелка Пирса) и f14 (штрих Шеффера) можно представить двумя формулами (см. с. 15). Тождественность соотношений A (x, y, z, …) = B (x, y, z, …) для формул, представляющих одну и ту же булеву функцию, можно доказать или опровергнуть построением таблиц истинности для формул А и В и проверкой совпадений или несовпадений значений этих представлений на всех наборах значений переменных x, y, z, …. Это общий алгоритм проверки любых тождественных соотношений в булевой алгебре, поскольку ввиду конечности числа наборов значений для любого конечного множества булевых переменных описанная процедура всегда заканчивается через конечное число шагов. На практике тождественность формул доказывается аналитически путем приведения их к ДНФ с помощью правил булевой алгебры, суперпозиции (т.е. замены одних формул другими равносильными формулами согласно таблицам булевых функций одной и двух переменных (табл. 1 и 2)), эквивалентных преобразований и минимизации формул (1–22). Пример. Рассмотрим функцию предыдущего примера. Из табл. 6 видно, что она содержит одну конституенту 0 вида: x ∨ y ∨ z, т. е. функцию можно представить следующей формулой f ( x, y , z ) = x ∨ y ∨ z . Докажем аналитически тождественность двух формул представления функции: 37
f ( x, y, z ) = ( x → y ) ∨ y ⊕ z = ( x ∨ y ) ∨ ( yz ∨ yz ) = x ∨ y ∨ ( yz ⋅ yz ) = = x ∨ y ∨ (( y ∨ z ) ⋅ ( y ∨ z )) = x ∨ y ∨ ( yy ∨ zy ∨ yz ∨ zz ) = = x ∨ y ∨ yz ∨ yz = x ∨ y (1 ∨ z ) ∨ yz = x ∨ y ∨ yz = x ∨ y (1 ∨ z ) ∨ yz = = x ∨ y ∨ yz ∨ yz = x ∨ y ∨ z( y ∨ y ) = x ∨ y ∨ z. 1
2
3
4
x
y
z
f31 (x, y, z)
0 0 0 0 1 1 1 1
0 0 1 1 0 0 1 1
0 1 0 1 0 1 0 1
0 0 0 1 1 1 1 1
5 Конституенты 1
6 Конституенты 0
7
8
0 0 0 1 0 0 0 1
0 0 0 1 1 1 1 1
Для функции, заданной своим номером fN (x1, x2, …, xn), значения для каждого набора в таблице истинности однозначно определяются двоичным кодом номера N согласно алгоритму, описанному выше (с. 32). По значениям функции определяются конституенты 1 и конституенты 0, а по ним создаются СДНФ и СКНФ функции в соответствии с алгоритмом, представленным в примере на с.18. Для дальнейшего упрощения рекомендуется выбирать форму с меньшим числом конституент, но, как показывает практика, формулы ДНФ упрощаются быстрее. Используя соотношения (1–22), исходную форму приводят к одной из тупиковых ДНФ, которая может оказаться минимальной ДНФ. Пример. Для функции f31 (x, y, z) построить таблицу истинности, получить ее СДНФ и СКНФ, упростить одну из форм до формулы тупиковой ДНФ и проверить, что ее значения на всех наборах соответствуют значениям исходной функции. Двоичный код числа 31 имеет вид: 1 1 1 1 1 0 0 0 (старший разряд), что отражено в таблице истинности функции (столбец 4): Из конституент 1 можно получить СДНФ функции: f 31 ( x, y, z ) = xyz ∨ xyz ∨ xyz ∨ xyz ∨ xyz, а из конституент 0 получим СКНФ функции: 38
f 31 ( x, y, z ) = ( x ∨ y ∨ z ) ⋅ ( x ∨ y ∨ z ) ⋅ ( x ∨ y ∨ z ). Для упрощения выберем СДНФ функции: f 31 ( x, y, z ) = xyz ∨ xyz ∨ xyz ∨ xyz ∨ xyz = = yz ∨ xz ∨ xz ∨ xy = yz ∨ x ∨ xy = x ∨ yz. Дадим пояснения по шагам упрощения булевых формул. На первом шаге, используя свойство идемпотентности (3), добавим 4-й и 5-й члены, а затем по правилу (19) склеим последовательно 1-й, 3-й и 4-й члены с 5-м, а также 2-й с 4-м. На втором шаге (из четырех членов) склеиваются 2-й и 3-й. На третьем шаге (из трех членов) 2-й член поглощает 3-й. В результате упрощения получается тупиковая ДНФ из двух членов, которая является минимальной ДНФ для данной функции. Для проверВарианты булевых функций
Таблица 7 1 № вар. 0 1 2 3 4 5 6 7 8 9
2 f (x, y, z)
3 fN (x, y, z) f95 (x, y, z) f249 (x, y, z) f63 (x, y, z) f125 (x, y, z) f59 (x, y, z) f62 (x, y, z) f111 (x, y, z) f94 (x, y, z) f89 (x, y, z) f68 (x, y, z)
ки последней формулы вычислены значения ее компонентов и формулы в целом (столбцы 7 и 8). Значения столбцов 4 и 8 совпадают, следовательно, упрощенная ДНФ представляет исходную функцию. Работа с булевыми функциями В соответствии с вариантом задания, приведенным в табл. 7, выполнить следующие пункты задания. 1. Для булевой функции f (x, y, z), представленной формулой в столбце 2, построить таблицу истинности, вычислить десятичный номер 39 функции.
Содержание Предисловие ............................................................................................ 1. Цели и задачи курса ............................................................................ Объем дисциплины ..................................................................... 2. Содержание курса дисциплины ....................................................... Раздел 1. Множества и их спецификации ...................................... Раздел 2. Отношения на множествах ............................................... Раздел 3. Основные понятия теории графов .................................. Раздел 4. Основные понятия неориентированного графа ............ Раздел 5. Основные понятия для ориентированного графа ......... Раздел 6. Булевы (переключательные) функции (БФ) ................... 3. Контрольное задание ........................................................................ Основные понятия теории множеств ....................................... Перечисление элементов ........................................................... Описание характеристического предиката .............................. Определение множества с помощью порождающих процедур Основные понятия теории множеств ....................................... Обработка ориентированного графа ........................................ Обработка ориентированного графа ........................................ Работа с булевыми функциями ................................................. Работа с булевыми функциями ................................................. Библиографический список ..............................................................
40
1 1 1 2 2 5 7 9 10 13 26 26 26 26 27 28 29 34 35 39 39