- •Предисловие
- •Введение
- •Глава 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. Кривые и поверхности
§ 4. Некоторые специальные классы функций
В этом параграфе мы несколько отойдем от основной темы обсуждения для того, чтобы кратко рассмотреть следующие четыре важных класса функций: подстановки, последовательности, функционалы и отображения, сохраняющие эквивалентность. Эти функции часто используются; особо отметим их приложения к теории графов, к трассировке вычислений, к определению языков программирования и переводу, к машинной графике.
Определение. Подстановкой множества А называется биекция на А. //
Подстановки конечных множеств представляют особый интерес в вычислениях. Когда А конечно, мы в состоянии вычислить число различных подстановок А.
Пусть
.
Обозначим через
„Р„
число таких подстановок. Значение
„Р„
легко вычислить.
Можно
рассматривать задачу построения
биекции на А
как
задачу
заполнения ящиков, пронумерованных от
1 до п
(рис.
3.6), объектами a1,...,
an.
Порядок,
в котором заполняются ящики, несуществен
(любой другой порядок можно получить
перемешиванием ящиков). Поэтому будем
заполнять их слева направо. Первый ящик
может быть заполнен га способами, так
как мы имеем свободный выбор из всего
множества А.
Убирая
выбранный
Рис. 3.6
элемент из А, получим множество из n — 1 элементов. Следовательно, второй ящик может быть заполнен n — 1 способами, третий ящик – n – 2 способами и т. д. Продолжая этот процесс, получим, что (n — 1) й ящик может быть заполнен двумя способами, а ящик с номером п — единственным оставшимся элементом из А. Следовательно, число различных подстановок из А равно
Это произведение называется факториалом п (обозначается n!). Следовательно, пРп = п!.
Так как А ~ Nn, то можно свести наше рассмотрение к Nn. Любая подстановка на Nn должна определять образ каждого элемента в Nn (который, конечно, должен быть единственным и отличным от других). Пусть — подстановка на Nn. Тогда можно определить как множество из n пар следующим образом:
Где
Не обязательно, конечно, должно быть x1 — 1 и т. д. Можно также представить следующим образом:
Пример 4.1. Пусть — подстановка на N5:
Тогда (1) = 5, (3) = 3 и т. д. //
Достоинством этого обозначения является простота, с которой могут быть вычислены сложные подстановки, Предположим, что — подстановка на N n, определенная выше, а — другая подстановка на том же самом множестве. Тогда подстановка может быть записана как совокупность пар в порядке, определяемом х1, хг, хn. Если две последовательности записать одну над другой (первая применяемая подстановка должна быть записана первой), то верхняя и нижняя строки дадут результирующую подстановку.
Пример
4.2. Пусть
подстановка пз примера 4.1 и
Можно
переписать
в виде
Следовательно,
например,
р° (2)(=р( (2)) = р(6)) = 5 и т. д. // Отсюда следует, что представление обратной (конечной) подстановки получается перестановкой строк, представляющих исходную подстановку. Хотя такое представление полезно в вычислениях, оно требует много лишпего места, особенно в тех случаях, когда многие элементы не меняются в процессе подстановки. Существует более простое обозначение, которое может употребляться непосредственно для некоторых простых подстановок а косвенно для всех конечных.
Определение. Пусть А = {а1, ап). Подстановку называют циклом (циклической подстановкой), если
Предположим,
что
и
В
конечно.
Расширяя
на все В,
можно
определить подстановку
так,
что
В этом случае ведет себя подобно во всех случаях, когда элементы В не остаются на месте. Применение к А передвигает элементы по кругу циклическим образом, и, если известна область А, мы можем обозначить подстановку как (а1, а2, ..., ап). Эта подстановка называется циклом длины п. //
Пример 4.3. Рассмотрим опять подстановку
Подстановка является циклом длины 5 и может быть записана как
(1, 3, 6, 5, 4). //
Не все подстановки являются циклами. Например, подстановка в примере 4.1 не является циклом. Напомним, что имела вид
(1)=5, (5)=4, (4)= 1, откуда следует, что содержит цикл (1, 5, 4). Начиная с 2, получаем другой цикл —(2, 6). Таким образом, имеем —(1, 5, 4)•(2, 6) и =(2, 6) •(1, 5, 4).
В действительности любая конечная подстановка может быть представлена как произведение циклов, при этом циклы могут располагаться в любом порядке. Из построения следует, что один элемент не может встретиться более чем в одном цикле, т. е. циклы не пересекаются.
Теорема. Каждая подстановка р на конечном множестве А выражается в виде произведения непересекающихся циклов.
Доказательство. Поскольку |A|=n N, то А ~ Nn. Поэтому без потери общности мы можем ограничиться рассмотрением подстановки на Nn.
В
теореме утверждается, что
где каждое
является циклом и циклы не пересекаются.
Для доказательства теоремы построим
требуемые циклы. Сначала найдем наименьший
элемент
такой,
что
и
для
всех х,
.
Если
такого х1
не
существует,
(т. е.
является тривиальным пустым
произведением циклов). В противном
случае вычислим
и т. д. Все эти элементы находятся в Nn.
Поэтому элементы в этой последовательности
должны содержать повторения. Предположим,
что ph(x1)—первый
такой элемент (который уже повторялся
в последовательности). Покажем, что
.Предположим,
что это соотношение не выполняется.
Тогда
для некоторого l,
0<1<
k.
Следовательно,
и т.д.
Поэтому
,
т. е.
,
что противоречит минимальности к
(так
как k-l<k).
Таким
образом,
,
и
подстановка
задает цикл внутри .
Если
все элементы
такие, что
(будем называть такие элементы
нестационарными),
содержатся
в
,
то
—
единственный
цикл (который, естественно, не
пересекается). В противном случае найдем
следующий наименьший элемент
такой, что
и
x2
не
встречается в
.
Из
строим множество различных степеней
:
Это
цикл длины не менее 2, и он не пересекается
с
,
(Доказательство оставляем в качестве
упражнения.) Если все нестационарные
элементы исчерпаны, то
.
Очевидно, что множество нестационарных
элементов, не входящих в эти циклы, можно
уменьшить, и в конце концов придем к
.
Следовательно,
,
для некоторого
.
//
Рассмотрим
теперь несколько иную ситуацию. Возьмем
множества А:
|А|=n
и
,
|В| =
.
Возникает вопрос: сколько биективных
функций существует из А
в
В?
Или,
что эквивалентно, сколько существует
инъективных отображений из В в A?
Число перестановок (без повторений)
из п
элементов
по r
обозначается
,
и вычисляется так же, как и
,
за
исключением того факта, что процесс
прекращается после заполнения r
ящиков.
Таким образом,
Легко видеть, что, продолжая процесс заполнения ящиков, оставшиеся п — r элементов можно разместить по последним n-r ящикам n-rPn-r, способами. Поэтому и
При вычислении nР, мы находим число биективных функций из А в В. Подсчитаем числа таких функций.
Определение.
Пусть А
—
конечное множество и
,
.
Множество
В
называется
сочетанием
(без
повторений) из п
элементов
по r.
Число таких сочетаний обозначается
через
.//
Вычисление
производится следующим образом. Положим
.
Возьмем произвольное подмножество
такое,
что
.
Тогда
В
является
образом подстановки из n
элементов по r.
Число
инъективных функций на А,
имеющих
В
своим
образом, есть nPr.
Если
f
является такой функцией и g
—
другая такая функция, имеющая ту же
самую область значений, то g
связано
с f
соотношением
,
где
— подстановка на В.
Функции
g
и f
определяют одну и ту же комбинацию, и в
действительности число функций,
определяющих эту комбинацию, равно
числу подстановок
на В.
Следовательно,
n
r
откуда
Поскольку
относительные дополнения единственны
и |A\B|=n-r,
то
отсюда следует, что
.
Вернемся теперь к математическим объектам, которые должны быть знакомы читателю, но которые, вероятно, не рассматривались как функции.
Определение.
Последовательностью
на
множестве S
называют
отображение
.
Если
:
- заданная последовательность и
,
то обычно обозначают последовательность
не
,
a
(
)
или (s1,
S2,
s3,
...).
В этом случае sn
называют
n-м
членом последовательности. //
Часто
при изучении свойств последовательностей
возникает понятие «расстояние» между
соседними элементами последовательности
(скажем,
и
)
и между элементами
при
(где n0
—
некоторый фиксированный элемент N)
и фиксированным элементом из S,
Мы вернемся к этим вопросам несколько позже, поскольку в настоящий момент у нас в общем случае нет понятия расстояния.
Особый интерес в задачах, связанных с трансляцией языков программирования, представляют функционалы. Существуют функции, которые определены не на множествах простых объектов (таких, как чнсла), а, например, на множестве функций.
Определение.
Пусть даны множества А,
В и
С. Обозначим
через
множество
всех функций из В
в
С.
Функция
называется
функционалом.
Следовательно,
—
функция, и
.
Далее,
.
//
На первый взгляд такая комбинация, как f(a)(b), выглядит настолько необычной, что может казаться незаконной. Это в основном потому, что рассматриваемые функции использовались как объекты особого рода, в ряде случаев отличные от элементов, которые были в области определения и области значения функций. Конечно, множества функции могут рассматриваться так же, как и любые другие множества.
В развитых языках программирования имена целых переменных не отличаются от имен переменных функций и могут изучаться аналогичными способами. Хотя эти функции являются обычно довольно сложными, языки программирования редко дают примеры важности функционалов.
Пример
4.4. Пусть Р
—
множество программ, т. е. текстов программ
(строк символов), которые должны быть
обработаны компилятором. Аналогично
пусть l
и О
—
множества соответственно входных и
выходных значений, которые доступны
программе для ввода и вывода. Тогда
компилятор (с соответствующего языка)
является функционалом типа
;
для данной
он пытается создать машинный код, который
при выполнении будет читать
и выдавать
.
Из
дальнейшего изложения будет видно, что
определение функций (или
функционалов)
сложности компилятора длинное и сложное.
Тем не менее эти понятия можно изучать
в более простых ситуациях.
Пример
4.5. Пусть все данные принадлежат R.
Тогда, если
,
то
и
,
то
время как
и
и т. д. //
Обращение
с функционалами не вызывает трудностей
ори условии, что ссылка делается па
основной функционал (т. е.
или
).
Следовательно,
в дальнейшем мы будем рассматривать их
просто как функции, имеющие нетривиальные
области значений, и будем обращаться
с ними соответствующим образом.
В заключение параграфа определим функции, которые сохраняют некоторые структуры. Из дальнейшего будет видно, что в некоторых ситуациях желательно сохранить многие из алгебраических свойств, которыми множества могут обладать. Ограничимся вначале рассмотрением простейшего случая.
Определение. Пусть X — множество, на котором задано отношение эквивалентности р. Тогда X разбивается отношением на - эквивалентные классы; множество классов обозначается как Х/ .
Определение.
Пусть X
и
Y
—
множества,
а
и
—
отношения
эквивалентности на них, и пусть
—
отображение. Обозначим через
отношение
такое, что
где
[х]
— класс
эквивалентности х.
Если
— функция, то
и f является отображением, сохраняющим эквивалентность. В этом случае говорят, что индуцирует отображение
Наглядный способ представления такого отображения дан на рис. 3.7.
Если
рассмотреть отображение f,
согласованное с отношением эквивалентности,
то можно переходить от х1
к
у2
или
через х2,
используя
соотношения у2
=
f(x2)
и
,
или
через у1,
используя
соотношения
и
.
Пример
4.6. Пусть Х = {1, 2, 3}, Y={1,4,9},
и пусть
и
таковы, что
,
и
такое, что
.
Тогда
,
,
.
В
этом случае
и
.
Поэтому f
является функцией и f
сохраняет отношения эквивалентности.
//
Пример
4.7. Пусть X,
У
и f
те же, что и раньше, и отношение
эквивалентности
и
,
индуцируют разбиения {{1}, (2, 3}} и {{1,
4}, {9}} соответственно. В этом случае
индуцированные отношения дают
.
Так
как 2
3,
то [2] = [3] в Х/
,
но
(4, 9)
,
поскольку [4] ≠ [9] в У/
.
По сравнению с рис. 3.7 этот пример дает
отношения, показанные на рис. 3.8. Так как
нельзя соединить стороны прямоугольника во всех случаях, то отношения эквивалентности не сохраняются. //
В гл. 5 и далее будет показано, как эти диаграммы могут быть использованы для определения операций таким образом, чтобы соединить углы прямоугольника. После этого можно будет объединять диаграммы подобно строительным блокам.
