- •Предисловие
- •Введение
- •Глава 1. Множества
- •§ 1. Множества н их спецификация
- •§ 2. Простейшие операции над множествами
- •X ∉ ø при любом х.
- •§ 3. Диаграммы Венна
- •§ 4. Подмножества и доказательства
- •Глава 2. Отношения
- •§ 5. Произведения множеств
- •§ 1. Основные понятия
- •§ 2. Графические представления
- •§ 3. Свойства отношений
- •§ 4. Разбиения и отношения эквивалентности
- •§ 5. Отношения порядка
- •§ 6. Отношения на базах данных и структурах данных
- •§ 7. Составные отношения
- •§ 8. Замыкание отношений
- •Глава 3. Функции
- •§ 1. Функции и отображения
- •§ 2. Обратные функции и отображения
- •§ 3. Мощность множеств и счетность
- •§ 4. Некоторые специальные классы функций
- •§ 5. Аналитические свойства вещественных функций
- •§ 6. Операции
- •Глава 4. Основные понятия арифметики
- •§ 1. «Малая» конечная арифметика
- •§ 2. «Большая» конечная арифметика
- •§ 3. Двоичная арифметика
- •§ 4. Логическая арифметика
- •Глава 5. Алгебраические структуры
- •§ 1. Алгебраические структуры и подструктуры
- •§ 2. Простейшие операционные структуры
- •§ 3. Кольца и поля
- •§ 4. Линейная алгебра
- •4.1. Векторные пространства о линейные преобразования.
- •§ 5. Решетка и булевы алгебры
- •§ 6. Замкнутые полукольца
- •Глава 6. Матрицы
- •§ 1. Матрицы и бинарные отношения на конечных множествах
- •§ 2. Матрицы над другими алгебраическими структурами
- •§ 3. Матрицы и векторные пространства
- •Глава 7. Теория графов
- •§ 1. Вводные понятия
- •§ 2. Маршруты, циклы и связанность.
- •§ 3. Планарные графы
- •3.1. Теоремы Эйлера и Куратовского.
- •3.2. Раскраска карт и графов.
- •§ 4. Структуры данных для представления графа
- •§ 5. Обход графа
- •5.2. Обход графа по глубине.
- •5.4. Остовные леса обходов по глубине и ширине.
- •§ 6. Ориентированные графы
- •6.2. Маршруты и связность в орграфах.
- •Глава 8. Языки и грамматики
- •§ 1. Основные понятия
- •§ 2. Грамматики с фразовой структурой
- •2.1. Основные определения.
- •§ 3. Контекстно-свободные языки
- •§ 4. Понятия грамматического разбора и грамматических модификаций
- •§ 5. Грамматики операторного предшествования
- •Глава 9. Конечные автоматы
- •§ 1. Общие понятия
- •§ 2. Конечные автоматы
- •§ 3. Регулярная алгебра
- •Глава 10.Компьютерная геометрия
- •§ 1. Системы координат для подмножеств r3
- •§ 2. Преобразования
- •§ 3. Кривые и поверхности
§ 5. Решетка и булевы алгебры
Булева алгебра является одним из математических объектов, с которыми мы уже сталкивались во введении. Мы покажем, что существует не одна булева алгебра, а много. Следовательно, любое преждевременное использование этого объекта может привести к недоразумению. Тем не менее мы начнем изучение с введения более общей структуры, называемой решеткой.
Некоторые из решеток имеют важное значение в абстрактной теории вычислений, возникшей из понятия аппроксимации. Одна программа аппроксимирует другую, если она осуществляет те же самые вычисления на подмножестве данных, доступных той программе. Если же рассматривать результат работы программы как множество, то одна программа аппроксимирует другую, когда для некоторых входных данных она выдает' в качестве результата подмножество В ⊆ А, где А — множество выходных данных второй программы. Это достаточно простые и, вероятно, очевидные способы аппроксимации программ. При этом возникает множество элементов, связанных некоторым отношением порядка.
Вычисление является результатом выполнения программы (на некоторых данных), которая написана на каком-либо языке (см. гл. 8). Для общности рассмотрений свойства вычислений падо выводить не в терминах рассматриваемой программы, а в терминах языка, используемого для записи программы. В то же время мы должпы быть в состоянии определить результат выполнения программы «язык X» с помощью формального определения. К сожалению, количество деталей, требующихся для описания даже простых примеров, достаточно велико и, следовательно, ничего не определяет. Однако в п. 5.1 мы дадим теоретические обоснования некоторых ключевых результатов. Это будет следовать (п. 5.2) из формального использования булевой алгебры, а затем (п. 5.3) из краткого рассмотрения некоторых общих приложений.
5.1. Решетки. Напомним! что бинарное отношение р на множестве S является частично упорядоченным отношением, если оно рефлексивно, транзитивно и антисимметрично. Следовательно, (S, ρ) — частично упорядоченное множество, и, если не возникает двусмысленности, р можно записать как ≤, а (S, ≤) обозначить просто через s. Частично упорядоченное множество называется линейно упорядоченным (или цепью), если для любых х, у ∊ S или х ≤ у, или у ≤ х, или же выполнены оба эти отношения. На самом деле любой частичный порядок можно представить в виде объединения линейных порядков. Поэтому возникает естественный и полезный способ изображения отношений порядка.
Заметим, что любое конечное, линейно упорядоченное множество (А, ≤) можно представить следующим образом:
а1 ≤ а2 ≤... ≤ аn,
здесь рефлективность и транзитивность не требуют доказательств. Легко видеть, что рис. 5.7 является «очевидным» представлением (A, ≤). Другими словами, мы записываем А как (а1, а2, ... , аn)
Предложение. Частичное упорядочение на конечном множестве может быть представлено как объединение линейных порядков на некоторых подмножествах.
20
Рис.
5.8
Рис.
5.7
Доказательство этого факта оставляем в качестве упражнения. //
Используя этот результат, можно представить любой частичный порядок (конечный или бесконечный, однако бесконечные отношения сложно изобразить на конечных листах бумаги за конечное время!) изображением множества соответствующей цепей. Полученная диаграмма называется диаграммой Хасса.
Пример 5.1. Отношение ρ = {(х, у): х — множитель у}, определенное на множестве (1, 2, 3, 4, б, 10, 12, 20), дает диаграмму Хасса (изображенную на рис. 5.8) и может быть разбито на линейно упорядоченные под множества {(1, 2, 4, 12), (1, 3, 6, 12), (2, 6), (4, 20), (2, 10, 20)}. Этому разбиению эквивалентно следующее множество линейных порядков: {(2, 6, 12), (1, 3, 6), (1, 2, 10, 20), (2, 4, 20), (4, 12)}. Заметим, что по сравнению с отношениями, изображенными на диаграммах в § 2 гл. 2, хотя 1ρх для всех х ∊ {1, 2, 3, 4,6,10,12, 20}. па этом рисунке отсутствуют восемь стрел, выходящих из 1. Это достигается неявным представлением свойств рефлективности и транзитивности. //
Пусть дано (А, ≤) и В ⊆ А. Разумно задать вопрос: будет ли В ограничено сверху (снизу) элементами множества А? Далее мы можем искать наименьшую верхнюю грань (наибольшую нижнюю грань), которая обозначается sup (inf) (читается супремум (инфимум)). Эти понятия были полностью определены в § 5 гл. 2. Будем их использовать для характеристики решетки.
Определение. Решеткой называется частично упорядоченное множество (A, ≤), в котором каждая пара элементов имеет супремум и инфимум. Для заданных x, y ∊ A эти грани будем записывать следующим образом:
x /\ у = inf ({x, y}), х \/ у = sup ({x, у}). //
Не всякое частично упорядоченное множество является решеткой. Например, частично упорядоченное множество из примера 5.1 но является решеткой, поскольку 12V20 не определено.
Определив операции Д и V между парами элементов в частично упорядочеппом лшожестве, расширим это понятие естественным образом. Положим
/\X = /\х∊Х х = inf X, \/X = \/ х∊Х х = sup X,
Это обозначает sup X и inf X конечного непустого множества X.
Легко показать, что существует много специальных видов решеток, в которых можно производить различные операции. Ограничимся рассмотрением трех таких типов.
Определение. Решетка L, обозначаемая (L, /\, \/), дистрибутивна, если она подчиняется дистрибутивным законам
для всех х, у, z е Г,. S
Не все решетки являются дистрибутивными,
Пример 5.2. Решетка, изображенная на рис. 5.9, не является дистрибутивной, поскольку
b /\ (d \/ c) = b /\ e = b,
тогда как
(b /\ d) \/ (b/\c) = a \/ a=a. //
Предложение. Пусть в дистрибутивной решетке (L, /\, \/) выполнены соотношения
x \/ y = x \/ z x /\ y = x /\ z
Тогда у = z.
Доказательство. Сначала заметим, что из определения inf и sup
а
)
а/\b
= b/\а,
a\/b
= b\/a;
б) а/\b ≤ а ≤ а\/b;
в) (a/\b) \/c
Поэтому
//
Определение. Предположим, что (L, /\, \/) — решетка и 0, 1 ∊ L такие, что 0 ≤ х ≤ 1 для всех (об элементах 0 и 1 скажем немного позже). Тогда
X \/ 1=*1, х /\ 1 = х, х /\ 0 = 0, х \/ 0 = х
для любого х ∊ L. Такая решетка называется решеткой с дополнениями, если для любого х ∊ Z, существует х ∊ L в такой, что
х /\
= 0, х
\/
= 1
( называют дополнением х). /
Предложение. Если (L, /\, \/)— дистрибутивная решетка с дополнениями, го дополнения единственны.
Доказательство. Предположим, что х, у, z ∊ L и
х \/ у = х \/ z(=1), х /\ y = х /\ z(=0).
Тогда из предыдущего предложения следует, что y = z.//
Третий, и последний специальный тип решеток, который мы определим, необычен в том смысле, что он не дает нам ничего нового для конечных решеток. Чтобы подчеркнуть ключевой момент исследования, дадим другое определение решетки в форме предложения.
Предложение. L является решеткой тогда и только тогда, когда \/Х и /\Х существуют для любого непустого конечного подмножества X из L.
(Этот факт можно доказать индукцией по числу элементов множества X; оставляем его в качестве упражнения,) //
Если L — решетка и в ней определен элемент /\L, то он обозначается символом 0 и называется наименьшим элементом L. Аналогично, если в L существует элемент \/L, то он обозначается символом 1 и называется наибольшим элементом L; по определению /\ = 0.
Определение. Решетка L называется полной, если \/X и /\Х существуют для всех подмножеств X из L. //
Все конечные решетки являются полными. Рассмотрим, однако, множество Q с обычным отношением порядка ≤ и бесконечное множество аппроксимаций числа π, каждое из которых имеет на один десятичный внак больше. Верхняя грань этой последовательности, очевидно, есть π, однако π ∊ R\Q, и, следовательно, (Q, ≤) не является полной решеткой. Решетка (R, является полной, и Q ⊆ R,
Можно показать, что любая решетка может быть расширена до полной решетки, однако мы не будем заниматься этим вопросом.
5.2. Булевы алгебры. Мы уже интенсивно занимались алгеброй множеств и упоминали об относительно «логичной» арифметике. Сейчас дадим формальное определение общей булевой алгебры, названной так в честь математика XIX в. Дж. Буля. Алгебра множеств — это частный случай булевой алгебры, и, хотя различные булевы алгебры структурyно подобны, следует заметить, что не все они включают в себя множества обычным образом.
Определение.
Булевой алгеброй
называют множество B
вместе с тремя операциями \/, /\ и -
(\/ называют операцией
или, /\ — операцией
или,
— операцией
дополнения или же
операцией не; кроме того, первые две
операции часто называют дизъюнкцией и
конъюнкцией соответственно). Бинарные
операторы \/
и /\ и унарный
оператор -
(обычно записывается над операндом,
например
)
вместе с двумя различными элементами
B,
которые обозначаются символами 0 и 1,
удовлетворяют следующим аксиомам.
Для произвольных элементов а, b и с в B:
a) a \/ b = b \/ a;
б) a \/ (b \/ с) = (а \/ b) \/ с;
в) a \/ 0 = а;
г) a \/ = 1; д) а /\ b = b /\ а; е) a /\ (b /\ с) = (а /\ b) /\ с;
ж) а /\ 1=а; з) а /\ а = 0; и) а /\ (b\/с) = (а /\ b) \/ (а /\ с);
к) a \/ (b/\ c) = (a \/ b) /\ (a \/ c).
Таким образом, и и или коммутативны, ассоциативны и дистрибутивны одна по отношению к другой. Каждая из этих операций имеет единичный элемент, и, когда элемент комбинируется вместе со своим дополнением посредством и/или, в результате получается единица по отношению к или/и соответственно.
Названия операторов, использованные выше, являются именами, которые непосредственно связаны с компьютерной логикой, используемой при построении схем. В других булевых алгебрах может быть более подходящим читать \/ как объединение, наименьшая верхняя грань или supremum, а /\ как пересечение, наибольшая нижняя грань или infimum. (Иногда операцию /\ обозначают также &). //
Булеву алгебру можно определить как дистрибутивную решетку с дополнением. Поэтому по аналогии с булевой алгеброй (ρ(X), , , ') для данного непустого множества X из результатов предыдущего параграфа можно вывести ряд следствий. Доказательства некоторых из них оставлены в качестве упражнений. Наиболее важными из этих следствий являются следующие.
Инволютивный закон (или закон двойного отрицания). Дополнение дополнения х, x ∊ B (т. е. в рассматриваемой булевой алгебре), есть х.
Закон поглощения. Для любых а, b ∊ В справедливы соотношения
a /\ (a\/b) = a, a \/ (a/\b) = а.
Закон идемпотентности. Любой элемент B идемпотентен по отношению к операциям Д и V.
Законы де Моргана. Для любых а, b ∊ В справедливы соотношения
Из инволютивного закона и законов Моргана следует, что если мы берем булеву алгебру B (более точно (B, /\, \/, -)) и образуем новую систему или путем отображения каждого х ∊ B в , или использованием операций /\ и \/, то (B, /\, \/, -) также булева алгебра. Этот факт известен как принцип двойственности. Действительно, каждый из законов Моргана может быть получен из других путем отображения каждого элемента в его дополнение.
Сейчас мы выведем теорему, которая показывает, в какой стандартной форме могут записываться булевы выражения; непосредственным следствием этого является утверждение, что достаточно двух операторов, чтобы описать все бинарпые функции. Как всегда, введем вначале необходимую терминологию.
Определим две общеупотребительные
логические связки следующим образом.
Говорят, что булевы формулы А
и В эквивалентны
(записывается в виде
А
В или А
В), если они выражают
одну и ту же функцию. В простейшем случае
это — отношение эквивалентности.
Таблица 5.3
-
А
В
А В
0
0
1
0
1
1
1
0
0
1
1
1
Аналогично говорят, что формула А имплицирует формулу В (записывается*) А → В), если имеют место условия, изображенные в табл. 5.3. (Таблицы такого тана часто называют таблицами истинности.)
Заметим, что стрелки используются во многих различных контекстах. Поэтому надо обращать особое внимание на расшифровку их значения. Таким образом, А → В это то же самое, что и (⌐А) \/ В это то же самое, что и (А → В) /\ (B → A). Логически А → В означает «если А, то В» (т. е. если А справедливо, то В также справедливо и обычно так и читается. Другие названия для символов → и это условный и безусловный операторы соответственно.
Обычно вводят операции, которые обозначают отрицания бинарных связок, такие, как
А
В=⌐(А
В),
А
В = ⌐(А /\ В),
А
В=⌐(А
В),
А
В = ⌐(А \/ В),
Сейчас можно описать все бинарные операции {0, 1}2 → {0, 1} (здесь стрелка находится между двумя множествами и, следовательно, обозначает множества, которые являются областью определения и множеством значений; не следует путать с логическим оператором -»-) в краткой форме, как показано в табл. 5.4. Более того, мы
Таблица 5.4
А |
0 1 0 |
1 |
Функция |
А |
0 1 0 |
1 |
Функция |
В |
0 0 1 |
1 |
|
В |
0 0 1 |
1 |
|
f8 |
|
0 |
0 |
0 |
0 |
0 |
f8 |
1 |
0 |
0 |
0 |
А В |
f9 |
|
0 |
0 |
0 |
1 |
A /\ B |
f9 |
1 |
0 |
0 |
1 |
А В |
f10 |
|
0 |
0 |
1 |
0 |
В ↛ А |
f10 |
1 |
0 |
1 |
0 |
⌐А |
f11 |
|
0 |
0 |
1 |
1 |
В |
f11 |
1 |
0 |
1 |
1 |
А → В |
f12 |
|
0 |
1 |
0 |
0 |
А ↛В |
f12 |
1 |
1 |
0 |
0 |
⌐B |
f13 |
|
0 |
1 |
0 |
1 |
А |
f13 |
1 |
1 |
0 |
1 |
В → А |
f14 |
|
0 |
1 |
1 |
0 |
А≢В |
f14 |
1 |
1 |
1 |
0 |
A В |
f15 |
|
0 |
1 |
1 |
1 |
А \/ В |
f15 |
1 |
1 |
1 |
1 |
1 |
можем описать все отображения из {0, 1}2 в {0, 1}, используя только или только (первая из них называется штрихом Шеффера и обозначается «|»; в вычислительном контексте t называют «не и», а называют *) «не или»). Заметим, что операции и являются удобными сокращениями, но они, например, неассоциативны. Следовательно, по определению A В С есть ((A /\ B)' /\ С)', а, например, не ((А/\В)'/\С)'. Говорят, что множества операторов { } и { } адекватны. Сейчас мы сформулируем теорему и дадим ее конструктивное доказательство, т. е. не только докажем справедливость утверждения теоремы, но и дадим метод получения результата.
Теорема. Любое отображение {0, 1}2 → {0, 1} может быть представлено в виде формулы, содержащей только оператор или только оператор .
Пример 5.3. Получим представление для функции f, используя только операцию ; таблица истинности функции f дана в виде табл. 5.5.
Таблица 5.5
x |
y |
z |
f |
x |
y |
z |
f |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
5.3. Некоторые приложения булевой алгебры. Существует ряд проблем, например в комбинаторике, которые можно решить наилучшим образом в подходящей булевой алгебре. Другой путь применения булевой алгебры заключается в моделировании реальной ситуации, или, другими словами, в интерпретации булевой алгебры в терминах, относящихся к рассматриваемой задаче.
Э
тот
метод может быть применен в областях,
которые так широко распространены, что
у них отсутствует классификация. Мы
рассмотрим только одно приложение, а
именно комбинационные и переключательные
схемы). Другие области приложений будут
представлены в виде отдельно выбранных.С
этой точки зрения необходимо подчеркнуть,
что мы занимаемся только некоторыми
вопросами построения и преобразования
схем; формальное исследование лежит за
пределами этой книги. Сначала давайте
посмотрим, как выражения булевой алгебры
могут быть использованы для описания
и определения схемы, состоящей из
проводников и переключателей. Схема,
изображенная па рис. 5.10, состоит из пяти
переключателей, источника питания,
лампы и соединяющих проводников. Из
диаграммы нетрудно видеть, что ток
течет по замкнутой цепи тогда и только
тогда, когда переключатель
А замкнут и (или)
переключатели В
и С
оба замкнуты
или переключатели D и Е оба замкнуты. Алгебраически это можно записать в виде
.
П
еред
тем как продолжить изложение, сделаем
несколько замечаний о
представлены
элементов электрических схем с
переключателями в виде диаграмм.
Единственный сегмент схемы, в котором
будет отличие между рассматриваемыми
примерами,— это верхняя часть схемы,
содержащая переключатели; следовательно,
можно не изображать остальной части
схемы. Внутри схемы некоторые
переключатели могут быть взаимосвязаны
(рпс. 5.11, а)
и, возможно, могут работать так, что
когда один переключатель включен, то
другой должен быть выключен и наоборот
(рис. 5.11, в). Основные методы расположения
переключателей — это последовательный
(рис. 5.11, с), что соответствует связке
и (т. е. A
/\ B),
и параллельный (рис. 5.11,
d),
что соответствует связке или
(т. е. А \/ В),
Отметим, наконец, что на диаграмме есть
совершенно лишние переключатели, и их
для удобства можно обозначать теми
же «именами» (рпс. 5.11,
е).
Таким образом, любую операцию в булевой алгебре можно представить при помощи схемы и наоборот. Следовательно, для получения эквивалентных схем надо перейти от первоначальной схемы к соответствующему ей выражению в булевой алгебре, затем к «более простому» (или более желаемому) выражению и, наконец, к схеме, соответствующей этому выражению.
Пример 5.4. Упростить схему, изображенную на рис. 5.12. Этой схеме соответствует следующее выражение:
М
ы
уже уделили достаточно внимания схемам
с переключателями. Перейдем теперь
к комбинационным схемам. Основные
компоненты таких схем — элементы. В
наиболее общей форме
элемент является
устройством, имеющим n
входов и m
выходов (m,
n
∊
N),
На каждый вход может подаваться один
из двух бинарных сигналов; представим
их как 0 и 1, однако любая другая система
из двух различных значений также нам
подходит. В реальной ситуации обычно
мы имеем сигналы в окрестности 0 вольт
(например, от 0 до 0,8 вольта), которые
представляются нулем, и в другой
окрестности — в районе 4 вольт (скажем,
между 3 и 5 вольтами), которые представляются
единицей. Отсюда определяются выходные
значения (0 и 1). Можно ожидать, что нам
понадобится достаточно много различных
элементов, чтобы представить все
возможные функции {0, 1}2
→ {0, 1}, однако, как мы увидим далее, это
не так. Схемам, не имеющим временных
задержек (в дальнейшем только такие
схемы мы и будем рассматривать),
соответствует единственный тип
элементов. Однако это не очевидно.
Структура схем станет более ясной,
если вначале мы рассмотрим три типа
элементов, изображенных на рис. 5.14. Самым
Р
ис.
5.14
простым является элемент не; его действие определяется тождеством
с = ⌐ а (с = не a), определяемым табл. 5.6.
Таблица 5.6
INPUT(a) |
OUTPUT(c) |
0 1 |
1 0 |
Элементы и и или могут также иметь несколько входов; в этом случае они определяются аналогично, т. е. выходной сигнал элемента и равен 1 тогда и только тогда, когда на всех входах сигнал равен 1, и выходной сигнал элемента или равен 1 тогда и только тогда, когда какой-либо из входных сигналов равен 1. Алгебраически выходной сигнал элемента не имеет вид: (входной сигнал), выходной сигнал элемента о имеет вид: ⌐ (сигнал первого входа) ∧ (сигнал второго входа) ∧… и, наконец, выходной сигнал элемента или имеет вид: (сигнал первого входа) ∨ (сигнал второго входа) ∨… Чтобы представить более сложные функции, элементы можно «соединять» различными способами.
Пример 5.5. Рассмотрим схему (более точно, часть схемы, которая нас интересует), изображенную на
Рис. 5.15
рис. 5.15. Возвращаясь «назад» от выходов схемы, получаем
х = ((a∨(a ∧ b’))∧(y)) ’,
y = (b ∧ c) ’
Поэтому
x = (((a ∨ a) ∧ (a ∨ b’)) ∧ (b ∧ c)’)’ = ((a ∧ (a ∨ b’)) ∧ (b ∧ c)’)’ = (a∧(b∧c)’)’
(по закону поглощения). Таким образом, одно из возможных упрощений схемы изображено на рис. 5.16. //
Рис. 5.16
Следовательно, мы можем использовать булевы выражения для анализа и упрощения сложных схем. Рассмотренный пример показывает, как можно осуществлять такие операции.
Существуют также устройства, которые реализуют другие логические операции. Наиболее важными являются элементы ие и и не или; опи изображены на рис. 5.17. Используя множество таких элементов, при помощи булевых выражений можно получить требуемую схему непосредственно по таблице истинности.
Пример 5.5 (продолжение). Не останавливаясь на формальностях, заметим, что каждое выражение в скобках в окончательной форме f (см. выше) представляет вход для последнего элемента на рис. 5.18 и может быть вычислено с помощью элементов предшествующего ряда
Р
ис.
5.17
(Части схемы, обведенные штриховыми линиями, практически не требуются, поскольку для многих электрических элементов дополнение к выходу также доступно из вспомогательного выхода.) Отметим, что полученная схема в общем случае не будет минимальной в смысле числа используемых элементов. //
В
завершение рассмотрим два примера,
которые показывают, как булева алгебра
может быть использована в задачах иного
рода.
Рис. 5.18
Пример 5.6. Предположим, что справедливы следующие утверждения:
а) знание структур данных необходимо для совершенствования дисциплины ума;
б) только опыт программирования может создать дисциплинированный ум;
в) для того чтобы написать компилятор, надо иметь возможность анализировать задачи;
г) недисциплинированный ум не может анализировать задачи;
д) всякий, кто писал структурные программы, может рассматриваться как опытный программист.
Можно ли из этих предположений определить справедливость нижеследующих утверждений:
а') опыт написания структурных программ необходим для того, чтобы быть в состоянии написать компилятор;
б') знание структур данных является частью опыта программирования;
в ) анализ задач невозможен теми, кто игнорирует структуры данных;
г') опытный программист, который писал структурные программы, в состоянии анализировать задачи и имеет дисциплинированный ум, является программистом, который мог бы написать компилятор?
Чтобы ответить на эти вопросы, мы могли бы исследовать логические следствия утверждений, однаки для того, чтобы проиллюстрировать используемую техпику в более сложных ситуациях, воспользуемся нашим знанием булевой алгебры. Сначала необходимо закодировать наши утверждения. Пусть
E— множество всех программистов,
U — те из них, кто знает структуры данных,
V—те из них, кто имеет дисциплинированный ум,
W — те из них, кто является опытными программистами,
X — те из них, кто мог бы написать компилятор,
Y — те из них, кто может анализировать задачи,
Z — те из них, кто может писать структурные программы. Тогда имеем
a)
U
б) W
;
в) X
;
г) V ⊇ Y; д) W Z;
a')
Z
⊇
X;
б') U
⊇
W;
в')
U;
г') W∩Z∩Y∩V⊇X.
Теперь видно, что а') непосредственно следует из в), г), б) и д) до транзитивности; аналогично в') следует из г) и а). Также
W∩Z∩Y∩V = W∩Y∩V = Y∩V = Y⊇ X
Таким образом, г') также справедливо. Утверждение б') не может быть выведено из а)—д), поскольку мы только внаем, что W Z, и цепочка на этом заканчивается. //
Пример 5.7. Алиса сказала, что Барбара и Клара говорят правду, а Клара сказала, что Элспет и Фиона или обе говорят правду, или обе лгут. С другой стороны, Деби считает, что по крайней мере или Алиса, или Барбара говорят правду, тогда как Барбара утверждает, что только одна из двух — Алиса или Фиона — была правдивой. Элспет считает, что Алиса и Барбара всегда говорят правду, однако Фиона уверена, что Барбара и Клара обе не могли сказать правду. Кому мы должны верить?
Рассмотрим множество утверждений вида «Алиса (не) говорит правду», «Барбара (не) говорит правду»,
в пусть А содержит только те утверждения, в которых Алиса говорит правду. Пусть В, С, D, Е и F определены аналогично. Тогда, если S — непустое множество пересечений таких, что
S ⊆ A ∩ B’ ∩ C,
то S включает утверждения, в которых
«Алиса говорит правду», «Барбара лжет»,
«Клара говорит правду».
Из первого утверждения следует, что можно вывести следующий факт: если Алиса говорит правду, то же самое делают Барбара и Клара. Это можно закодировать следующим образом:
если х ∊ А, то x ∊ B ∩ C;
следовательно,
ПРЕДИСЛОВИЕ 7
ВВЕДЕНИЕ 8
ГЛАВА 1. МНОЖЕСТВА 11
§ 1. Множества н их спецификация 11
§ 2. Простейшие операции над множествами 17
§ 3. Диаграммы Венна 24
§ 4. Подмножества и доказательства 27
§ 5. Произведения множеств 36
ГЛАВА 2. ОТНОШЕНИЯ 39
§ 1. Основные понятия 40
§ 2. Графические представления 44
§ 3. Свойства отношений 48
§ 4. Разбиения и отношения эквивалентности 50
§ 5. Отношения порядка 54
§ 6. Отношения на базах данных и структурах данных 57
§ 7. Составные отношения 65
§ 8. Замыкание отношений 68
ГЛАВА 3. Функции 71
§ 1. Функции и отображения 71
§ 2. Обратные функции и отображения 75
§ 3. Мощность множеств и счетность 76
§ 4. Некоторые специальные классы функций 86
§ 5. Аналитические свойства вещественных функций 95
§ 6. Операции 110
ГЛАВА 4. ОСНОВНЫЕ ПОНЯТИЯ АРИФМЕТИКИ 120
§ 1. «Малая» конечная арифметика 120
§ 2. «Большая» конечная арифметика 125
§ 3. Двоичная арифметика 131
§ 4. Логическая арифметика 137
ГЛАВА 5. АЛГЕБРАИЧЕСКИЕ СТРУКТУРЫ 141
§ 1. Алгебраические структуры и подструктуры 142
§ 2. Простейшие операционные структуры 145
§ 3. Кольца и поля 148
§ 4. Линейная алгебра 160
§ 5. Решетка и булевы алгебры 180
§ 6. Замкнутые полукольца 202
ГЛАВА 6. МАТРИЦЫ 205
§ 1. Матрицы и бинарные отношения на конечных множествах 205
§ 2. Матрицы над другими алгебраическими структурами 212
§ 3. Матрицы и векторные пространства 216
Глава 7. Теория графов 227
§ 1. Вводные понятия 227
§ 2. Маршруты, циклы и связанность. 236
§ 3. Планарные графы 241
§ 4. Структуры данных для представления графа 248
§ 5. Обход графа 252
§ 6. Ориентированные графы 257
ГЛАВА 8. ЯЗЫКИ И ГРАММАТИКИ 273
§ 1. Основные понятия 273
§ 2. Грамматики с фразовой структурой 281
§ 3. Контекстно-свободные языки 292
§ 4. Понятия грамматического разбора и грамматических модификаций 298
§ 5. Грамматики операторного предшествования 314
ГЛАВА 9. КОНЕЧНЫЕ АВТОМАТЫ 318
§ 1. Общие понятия 319
§ 2. Конечные автоматы 337
§ 3. Регулярная алгебра 349
ГЛАВА 10.КОМПЬЮТЕРНАЯ ГЕОМЕТРИЯ 358
§ 1. Системы координат для подмножеств R3 360
§ 2. Преобразования 366
§ 3. Кривые и поверхности 387
Как и раньше, А = и Е = , и поэтому Алиса и Элепет никогда не говорят правду. Из (2а), (4а) и (6а) следует, что F = E. Таким образом, из (За) и (4а) получаем D = В = F = E, откуда с помощью подстановки в (2а) следует С = .
Отсюда следует, что возможно только одно утверждение такое, что
х∊
'
;
это означает, что Алиса, Клара и Элспет лгут, а Барбара, Деби и Фиона говорят правду. //
Упражнение 5.5.
Показать, что в булевой алгебре (B, *, +, ') для х, у, z ∊ B справедливы соотношения:
а) (х + y) * (х'+у)*=у;
б) (z + x) * (z' + y) = (z * y) + (z' * x);
в) ((x * z) + (y * z')) ' = (x' * z) + (y' * z');
2. Доказать, что если в (B, *, +, ') выполняются соотношения х * у = х * z и х + у = х + z, то у = z.
3. Из схем, изображенных на рис. 5.19 и 5.20, получить «простые» схемы, эквивалентные исходным.
4. Получить алгебраическое представление схемы, изображенной на рис. 5.21, и дать табличное представление выходов х и у в зависимости от значений а и b на входе. Использовать две такие схемы для построения схемы,
соответствующей функции, определяемой табл. 5.8. Связать это с арифметикой из § 3 гл. 4.
5. Построить схему, реализующую операцию не и, которая имеет четыре входа и выдает на выходе 1 тогда и
Рис. 5.21
только тогда, когда все входы равны 0.
6. Пусть выполнены указанные здесь условия:
а) все гонщики импульсивны;
б) все хорошие программисты меланхоличны;
в) никто не может быть и импульсивным и меланхоличным;
г) читатель меланхоличен.
Таблица 5.8
|
Входы |
|
Выходы |
|
Входы |
|
Выходы |
||
P |
Q |
R |
S |
T |
P |
Q |
R |
S T |
|
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 1 |
|
0 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
1 0 |
|
0 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
1 0 |
|
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 1 |
|
Является ли читатель хорошим программистом и/или гонщиком?
7. Организаторы международной конференции по компьютерам решили, что для того, чтобы на встрече не доминировали коммерческие интересы, будет только один магазин, которым будут пользоваться вместе все производители компьютеров. Сами производители будут ответственны за определение того, кто принимает участие в представительстве. Десять компаний — пять европейских и пять американских — дали знать, что они хотят принять участие в конференции. (Обозначим эти компании через А, В, С, D, Е и F, G, Н, I, J соответственно.) Однако из-за обязательств цо контрактам и торговой политики должны появиться различные ограничения. Европейские предписания требуют, чтобы G и I не могли одновременно принимать участие в конференции; аналогично не могут одновременно принять участие F, G и Л Ограничения американских производителей исключают участие А и D, пока G не примет участия; аналогично исключаются С и D. Если Е присутствует на конференции, то должно присутствовать и J, однако если они принимают участие вдвоем, то В не может быть там. И наконец, В и С не могут вместе принимать участие в конференции.
Может ли быть достигнуто соглашение, по которому по три компании из каждой группы могут собраться вместе, не нарушая условий? Если так, то кто именно примет участие?
