/
Теги: вычислительная математика численный анализ математика компьютерные технологии компьютерная математика
ISBN: 5-02-014216-6
Год: 1990
Текст
Д. КУК, Г. БЕПЗ
КОМПЬЮТЕРНАЯ
МАТЕМАТИКА
Перевод с английского Г. М. КОБЕЛЬКОВА
<0
МОСКВА «НАУКА»
ГЛАВНАЯ РЕДАКЦИЯ
ФИЗИКО-МАТЕМАТИЧЕСКОЙ ЛИТЕРАТУРЫ
1990
ББК 22.18
К89
УДК 519.6
COMPUTER
MATHEMATICS
D. J. COOKE AND H. E. BEZ
Cambridge University Press
Cambridge
LONDON • NEW YORK • NEW ROCHELLE .
• MELBOURNE•SYDNEY
Кук Д., Бейз Г. Компьютерная математика: Пер, с англ.—
М.: Наука, Гл. ред. физ.-мат. лит., 1990,—384 с—
ISBN 5-02-014216-6.
На основе фундаментальных понятий математики, введенных
в начале, математически строго описывается ряд проблем и
дается их решение. Изложение, где это возможно, носит строгий
математический характер. Доказательства утверждений
проводятся па конструктивном уровне. Дается большое количество
примеров и упраншений, результаты которых, как правило, исполь-
вуются в дальнейшем.
Для студентов, аспирантов и научпых работников,
занимающихся вопросами компьютерной математики и ее приложениями.
Табл. 28. Ил. 164.
1602110000-056
К 053(02)-90 20ЭО
ISBN 5-02-014216-6
©Cambridge University
Press. 1984
©«Наука». Физматлит,
перевод ва русский язык, 1990
ОГЛАВЛЕНИЕ
Предисловие 5
Введение 7
Глава 1. Множества 10
§ 1. Множества и их спецификация 10
§ 2. Простейшие операции над множествами ... 15
§ 3. Диаграммы Венна 22
§ 4. Подмножества и доказательства 24
§ 5. Произведения множеств 33
Глава 2. Отношения 35
§ 1. Основные понятия 36
§ 2. Графические представления 40
§ 3. Свойства отношений 43
§ 4. Разбиения и отношения эквивалентности . . .46
§ 5. Отношения порядка 50
§ 6. Отношения на базах данных и структурах данных 53
§ 7. Составные отношения 62
§ 8. Замыкание отношений 64
Глава 3. Функции 68
§ 1. Функции и отображения 68
§ 2. Обратные функции и отображения 72
§ 3. Мощность множеств п счетность 73
§ 4. Некоторые специальные классы функций ... 83
§ 5. Аналитические свойства вещественных функций . 91
§ 6. Операции , , 105
Глава 4. Основные понятия арифметики 114
§ 1. «Малая» конечная арифметика 141
§ 2. «Большая» конечная арифметика 119
§ 3. Двоичная арифметика . 123
§ 4. Логическая арифметика 125
Глава 5. Алгебраические структуры 134
§ 1. Алгебраические структуры и подструктуры . . . 137
§ 2. Простейшие операционные структуры .... 139
§ 3. Кольца и поля 140
§ 4. Линейная алгебра 154
§ 5. Решетки а булевы алгебры 172
§ 6. Замкнутые полукольца 192
1*
3
Глава 6. Матрицы . . ■ • • 1*»
§ 1. Матрицы и бинарные отношения на конечных
множествах • • • ••«•••••t 1«/0
| 2. Матрицы над другими алгебраическими CTpyKTypa-
J^JI ( ....... cSjZ
§ 3. Матрицы и векторные пространства , , , 206
Глава 7. Теория графов 217
§ 1. Вводные понятия 217
§ 2. Маршруты, циклы и связность 224
§ 3. Пленарные графы 228
§ 4. Структуры данных для представления графа , , 234
§ 5. Обход графа 238
§ 6. Ориентированные графы ........ 242
Глава 8. Языки в грамматики , . « 257
§ 1. Основные понятия 257
§ 2. Грамматики с фразовой структурой 264
§ 3. Контекстно-свободные языки ....... 276
§ 4. Понятия грамматического разбора и
грамматических модификаций 283
§ 5. Грамматики операторного предшествования , , 298
Глава 9. Конечные автоматы . , 302
§ 1. Общие понятия 302
§ 2. Конечные автоматы 320
§ 3. Регулярная алгебра 335
Глава 10. Компьютерная геометрия 344
§ 1. Системы координат для подмножеств R3 . . , 345
§ 2. Преобразования . . , , 350
§ 3. Кривые и поверхности 370
Предметный указатель ,,,,,, 383
ПРЕДИСЛОВИЕ
Вычисления являются точной наукой, и
систематическое изучение всех аспектов, включая
такие различные области, как разработка баз
данных, проверка систем и создание
математического обеспечения, с необходимостью
вызывает использование математических моделей.
С этой точки зрения многие учебные
программы по вычислениям в университетах и
институтах содержат специальные курсы,
знакомящие студентов с соответствующими
математическими структурами и методами. Содержание
этой книги является таким курсом и занимает
примерно 100 лекционных часов; курс читался
студентам факультета компьютерных наук
Технологического университета в Лафбаро.
Материал книги соответствует первым двум
годам обучения. Лекции первого года посещают
все студенты. Курс лекций второго года
является необязательным; он обеспечивает основу
для курсов, читающихся на последнем году
обучения. Содержание книги
совершенствовалось в течение ряда лет. В течение этого
времени мы ощущали помощь многих из
окружающих нас людей, включая многочисленных
коллег (как в Лафбаро, так и в других
местах) и студентов, которые помогали при
5
подготовке п проверке материала. Мы особенно
хотим поблагодарить наших жеп — Крис и Кэ-
рис — за постоянную поддержку и понимание в
течение всего процесса написания книги.
Особо благодарим Крис Кук за многочисленные
часы, которые она провела, помогая нам в
создании проекта рукописи, Орнеллу Ларднер за
аккуратно напечатанный окончательный
вариант и Алана Бенсона, который прочитал всю
работу и сделал много конструктивных
предложений. Ответственность за все оставшиеся
ошибки и неточности принадлежит
исключительно нам.
Д. Кук, Г. Вейз
Лафбаро, 1982
ВВЕДЕНИЕ
Книга в основном представляет собой курс лекций по
компьютерной математике для университетов и
институтов; однако она также может быть полезной для
специалистов, работающих в этой области и желающих
получить более глубокие знания предмета.
Книга содержит материал из тех областей
современной математики, которые имеют отношения к
вычислениям, и, как следствие, обеспечивает читателя средством
для сжатого и точного описания многих проблем
компьютерной науки. Несмотря на нашу приверженность
излагать материал, непосредственно относящийся к
компьютерной науке, в книге сделана попытка дать его разумное
и строгое представление, приемлемое с математической
гочки зрения. Изложение по возможности носит
конструктивный характер. Везде, где возможно, в каждой новой
теме используются понятия и термины из предыдущих
тем; материал сопровождается многочисленными
упражнениями и примерами. Следует подчеркнуть, что разбор
примеров и решение упражнений являются составной
частью изучения предлагаемого материала.
Преследуя эту цель, мы должны с чего-то начать.
Нашим исходным неопределяемым понятием является
понятие множества, описываемое перечислением свойств,
которыми оно обладает. Исходя из этого, можно
определить все последующие понятия конструктивным и
математически приемлемым образом. Такой подход необходим,
поскольку любую ошибку легко можно проследить,
вернувшись назад к неправильному предложению где-то в
цепочке рассуждений. Это также означает, что часть или
же вся рассматриваемая теория может быть
запрограммирована.
Множества обсуждаются в гл. 1 и используются
далее во всей книге. Главы 2, 3 и 5—7 образуют основу
7
строгого обсуждения многих разделов компьютерной
математики; материал этих глав выбран таким образом,
чтобы его можно было широко использовать. В гл. 4
описывается математическая модель арифметической системы,
используемой в цифровых компьютерах при работе с
целыми числами. Главы 8—10 связывают математическую
теорию из предыдущих глав с разделами компьютерной
математики. В частности, здесь выделены такие области,
как теория языков, теория автоматов и компьютерная
геометрия. Эти темы отражают одновременно и
интересы авторов, и их желание изложить важные разделы
современной математики, представляющие общий
интерес, а не только прикладной. Другие области, где может
применяться излагаемый в книге материал, включают в
себя базы данных, сети, программную проверку и
численный анализ. Главы 8—10 являются исходными для
дальнейшего изучения таких тем, как компиляция,
системы моделирования, теория вычислений, компьютерная
графика, вычислительная геометрия и автоматическое
проектирование. Логические внутренние связи между
главами и другими изучаемыми областями показаны на
следующей диаграмме:
1. Множества ■
у
2. Отношения
У
3. Функции
У
"5. Алгебраические
структуры
>4. Арифметика
I
1
Численный
анализ
т
6. Матрицы
-> 10. Компьютерная
геометрия
8. Языки——— 7. Теория графов
у У I '
9. Теория —*■ Компиляторы
автоматов
'Сети
I
-~ -*• Диагностика
программ
у
Формальная теория
вычислений
!•■»■ Искусственный
интеллект
Терминология и обозначения обычно строго вводятся
в соответствующем месте текста. Однако иногда в
примерах мы используем термины, которые раньше не опре-
делялись. В таких случаях обычно следует
руководствоваться интуицией, а не формальными соображениями.
Так, в одном из случаев в гл. 1 используется термин
«конечная машина», в то время как определение дано
лишь в гл. 9. В § 5 гл. 3 некоторые свойства
действительных чисел используются без доказательства.
Например, мы используем неравенство треугольника |z + j/l «5
<Ы + 1у1, где |«| обозначает абсолютную величину
числа, в некоторых доказательствах, относящихся к
пределам. При желании читатель может опуститв эти
доказательства до прочтения из п. 3.4 гл. 5. Повсюду в книге
символ / будет озпачать конец определения, примера,
доказательства и т. п., а символ #— обнаружение
логической ошибки, т. е. противоречие. Также по причинам,
которые станут ясными в § 5 гл. 1, мы обычно будем
использовать для обозначения операции умножения символ
• (а не X), хотя, когда мы будем иметь дело с
обычными числами, символ • иногда будет опускаться с целью
упрощения записи в больших выражениях.
ГЛАВА 1
МНОЖЕСТВА
§ 1. Множества и их спецификация
Как уже отмечалось во введении, нам хотелось бы
построить математическую теорию достаточно строго,
однако при этом возникают некоторые трудности с
обоснованием. Вместо этого мы начнем с описания таких
начальных понятий, как множество. Хотя материал может
показаться простым, это делается для того, чтобы
читатель мог свободно разобрать примеры, приведенные в
конце параграфа.
Множество — это совокупность определенных
различаемых объектов таких, что для любого объекта можно
установить, принадлежит этот объект данному
множеству или нет.
Множество, которое подчиняется лишь такому
ограничению, может содержать объекты почти любой природы.
Например:
— множество всех подземных станций Лондона;
— множество левых ботинок;
— множество натуральных чисел: 1, 2, 3, 4 и т. д.;
— множество символов, доступных специальному
печатающему устройству;
— множество кодов операций конкретного
компьютера;
— множество зарезервированных слов языка Паскаль.
В конечном счете нас будут интересовать следующие
множества:
— множество идентификаторов, встречающихся в
определенной программе;
— множество операций в той же самой программе;
— множество операций, которые могут быть
выполнены после данной инструкции в той же программе.
Однако эти множества также являются достаточно
сложными для исследования. Поэтому для большинства
примеров мы будем использовать некоторые абстрактные
множества, такие как множества чисел,
10
Множества обычно обозначают прописными буквами,
например А, и специфицируют одним из двух путей.
Если множество содержит несколько элементов, то мы
просто записываем все его элементы. Например, если мы
определим А как множество всех целых чисел строго
между 6 и 10, то это можно записать следующим
образом:
А - (7, 8, 9}
в прочитать как
«А — множество, содержащее 7, 8, 9».
Здесь символ «=» используется в определенном
смысле: А равно множеству... Далее будет использоваться
высказывание «равно ли А., л. Поэтому мы должны
предложить процедуру установления справедливости
этого утверждения. Другими словами, множество можно
охарактеризовать определенными свойствами, и,
следовательно, множество А можно определить как
А — [х: х — целое число и 6 < х < 10)
и прочитать как
«А есть множество всех х таких, что .. л.
Множеству А принадлежат только те элементы, которые
являются целыми числами, большими 6 и меньшими 10,
т. е. 7, 8 и 9, и, следовательно, мы имеем 7, 8, 9, как и
ранее.
Множества часто рассматривают как
«неупорядоченные совокупности элементов», хотя иногда полезно
подчеркнуть, что, например,
{7, 8, 9} = {8, 9, 7} = (9, 8, 7} = ...;
мы не делаем никакой оговорки о порядке, в котором
рассматриваются элементы, поэтому было бы
неправильным допускать какой-либо определенный порядок.
Для любого заданного объекта можно определить,
принадлежит ли он множеству А. В частности, если
число принадлежит множеству, то будем говорить, что «оно
является элементом множества». Так, например, если 7
является элементом множества А, то это утверждение
может быть записано следующим образом:
«7 е ^4».
Утверждение «6 не является элементом А» будем
обозначать как
«6£Л»,
11
Символ е происходит от греческой буквы е.
Отрицание обозначается через &. Такое обозначение отрицания
операции (или операционного символа) является общим
в математике и часто будет использоваться в дальнейшем.
Надо подчеркнуть, что следовало бы обратить
большее внимание на спецификацию множеств. Для каждого
множества должна быть записана его спецификация.
Процесс образования множества может продолжаться
бесконечно долго. В результате получается множество,
соответствующее определению. Частичная спецификация
может быть полезной в том случае, когда не ясно,
принадлежит данный элемент множеству или нет.
До сих пор нам встречались символы {;}, {,„}, s и Ф.
Их применение кажется достаточно простым, однако оно
требует определенных навыков, которые будут
проиллюстрированы на следующих примерах.
Пример 1.1. Какие из приведенных определений
множества являются правильными:
Л-И, 2, 3),
В = {5, 6, 6, 7>,
С = {х: хФА),
D - U, С),
Е — {х\ х = 1 или i = (j} oys E),
F = (множества, которые не являются элементами самих
себя) = {х: х — множество ъ хФ х)1
Если число членов множества А легко вычисляется и
среди элементов множества нет повторений, то
определение верно.
Множество В выглядит также правильным, за
исключением лишь того, что число б встречается дважды. Мы
можем проверить, принадлежит ли элемент множеству
или нет. Таким образом, это наиболее важное требование
в определении множества выполнено. Следовательно, мы
может рассматривать ату запись как верную и
эквивалентную {5, 6, 7}. Однако в этой ситуации возникают
следующие проблемы. Если мы рассмотрим первоначальное
определение В и выбросим одно из чисел в из множества,
то мы, очевидно, будем иметь 6еВ и 6& В. Возникает
противоречие. Поэтому мы будем рассматривать
повторение символов в определении множеств как упоминание
одного и того же символа, а его дублирование как недо-
12
смотр; удаление повторяющихся символов образует
основу для некоторых дальнейших математических
рассуждений.
Множество А содержит числа; это может вызвать
недоумение, так как числа не существуют. Более точно, мы
используем символы чисел; эти символы называются так
же, как и числа. Поэтому В — множество имеп, и мы
обычно используем имена, чтобы представить объекты
(элементы), на которые ссылаемся. В вычислениях
имена имеют особое значение, особенно в изучении
семантики программных языков (смысла программ). Здесь не
место входить в детальное обсуждение этих проблем;
достаточно указать ловушки и необходимость адекватных
спецификаций рассматриваемых объектов.
Возьмем, например, множество
Х = {«Введение в Паскаль»,
«Основы структурных данных», «Введение в Паскаль»}.
Это — множество названий двух книг с одним элементом,
по невнимательности записанным дважды, или же это —
множество трех книг, две из которых имеют одно и то же
название? Если верно последнее, то две книги «Введе
ние в Паскаль» следует разделить каким-либо способом.
Из данной информации нельзя выяснить правильный
ответ, поэтому в данном случае следует быть осторожным.
Определение С также справедливо как А, так как,
если х е А, то х 9= С и, если х & А, то х^С. Множество
С очень велико: оно содержит «всё», за исключением
чисел 1, 2 и 3. Обозначение «всё» выделено и, как мы
скоро увидим, «опасно» с математической точки зрения.
Так как определения D, А и С представляют
множества, то отсюда получаем, что определение D также
справедливо. Заметим, что это — множество множеств
(ничего неверного в этом нет!) такое, что оно имеет только
два элемента, в частности 1Ф D, даже если 1 е А и
А е D. Это легко проверить, так как l^A, \ФС а
только А а С являются элементами D.
Множество Е является первым примером рекурсивно
определяемого множества; оно определяется (частично)
в терминах самого себя. Конструктивный процесс
продолжается бесконечно, поэтому мы должны иметь правило
для определения элементов. Мы не можем записать их
явно. Заметим, что Е не определяется полностью в
терминах Е. Мы должны знать о множестве что-то, что не
13
зависит от определения; в данном случае это то, что
1е£, Имеем:
1е£, поэтому Ш e E,
{1)е=Е, поэтому {(Ш е Е,
{{1)}^Е, поэтому {{{1}}}е£ и т. д.
Хотя конструктивный процесс неограничен, беря любой
элемент и располагая достаточным временем, можно
определить, содержится ли этот элемент в Е.
Перейдем теперь к F; это достаточно трудная задача.
Чтобы увидеть, почему F не может существовать, мы
сначала допустим существование, а затем
продемонстрируем, что существует особый элемент (обозначим его
через у) такой, что мы не можем определить, у & F или
y&F, Вообще исследование «неудобного» примера, па
котором мы можем показать логический изъян,
проводится нелегко; однако в данном случае мы можем
использовать само множество F. Чтобы прояснить дело, давайте
обозначим это множество через G, Если, как мы
предполагаем, F — искомое множество, то или G е F, или
G Ф F, Рассмотрим два возможных случая:
а) G&F, Тогда G удовлетворяет условию
содержания, т. е. G Ф G, и, следовательно, G &F\
б) G&F говорит о том, что G не удовлетворяет
условию вхождения в F, и, следовательно, G е F,
Следовательно, во всех случаях мы приходим к
противоречию. Поэтому F не может существовать. Где же
была сделана ошибка? Множества множеств, вероятно,
разрешаются, и бесконечно большие множества
(например, рассмотренное выше множество Е) также
разрешаются; однако с «множеством всех множеств» нельзя
работать в обычной теории множеств — это требует другого
рода математики. Эта аномалия теории множеств
известна как парадокс Рассела. Если мы уже имеем
множество Я, то можно определить /:
Таким образом, мы будем использовать только
множества, которые могут быть явно записаны или же
построены путем хорошо определенных процессов. Поэтому
множества не так тривиальны, как они могли вначале
показаться. Однако, следуя приведенным выше правилам,
работа с ними не будет особо трудной. Попытайтесь
сделать самостоятельно следующее упражнение.
14
Упражнение 1.1.
1. Рассмотреть по крайней мере две возможные
интерпретации множества
{Смит, Смит, Браун).
Определить каждую из них настолько однозначно,
насколько это возможно.
2. Рассмотреть следующие четыре множества.
Выяснить, как записи этих множеств могут быть упрощены и
какие из них эквивалентны. Предложить все возможные
интерпретации, удовлетворяющие описанным выше
предположениям:
а) (1, 2, 3, 4); б) {I, II, III, ГУ, V);
в) {1, один, one, imo, ein>; г) (5, V, пять, five}.
3. Проверить справедливость утверждений
«Это утверждение неверно» и «я лгун».
Какие слова в утверждении требуют собственного
(т. е. математически точного) определения для того,
чтобы сделать ответы математически строгими?
4. Пусть X — множество (1, 2}, а У —множество
{х: х ==у + г\ у, z e X). Определить в явном виде
множество Y. Какие это множества:
{у: у — х + ъ\ х, z s X) и [у: х — у + z; x, z e X)?
5. Предположим, что х является элементом, а не
множеством. Тогда у Ф х для любого у, и отсюда следует,
что х Ф х. Можно ли упростить множество {х, {х}, {{яШ?
Что можно сказать относительно {х, у, {х, у))?
6. Пусть А — множество всех целых чисел. Описать
словами множество
X = {z: х&А И1 = 1 или (х - 2)е X).
§ 2. Простейшие операции над множествами
Как мы видели из рассмотрения «ошибочного
множества» F в примере 1.1 необходимо проявлять
внимательность при определении множества. Тем не менее, строя
новые множества из старых по простым правилам, можно
безопасно получить много интересных примеров.
Позднее будут выписаны формальные правила,
которым должны удовлетворять операции с множествами, а
сейчас введем некоторые обозначения. Начнем с
простейших операций.
15
Определение. Пусть даны множества А и В.
Пересечением множеств А а В называется множество
всех элементов, принадлежащих А а В, в обозначается
А О В; таким образом,
А (\В = {х: х&А и х е В).
Аналогично объединение А и В обозначается A U В и
определяется следующим образом:
A U В •= {х: х е А или х е В).
Значения этих обозначений нетрудно запомнить, но
иногда бывают ошибки. Один из путей запомнить, какой
символ обозначает какую операцию,— объединить
символы в слова и записать « Пересечение» и «ибъединение».
Эти определения выводятся из слов «и» и «или», и, как
следствие, мы имеем
AUB^BUA, АПВ = В(]А
и, что, вероятно, менее очевидно,
AUA =Л, А ПА =А.
Эти тождества важны по двум причинам. Ьо-первых, из
дальнейших математических рассуждений будет видно,
что иногда следует сводить A U А (соответственно А Л А)
к А или, наоборот, расширять А до A U А
(соответственно А Л А). Во-вторых, можно не обратить на это
внимание из-за того, что, выраженные словами, эти тождества
могут казаться лишенными смысла даже тогда, когда они
логически верны.
Заметим также, что определение объединения
использует включение «или», называемое так потому, что оно
включает «и» так, что
(1, 2) U {2, 3} = И, 2, 3),
{1, 2} Д (2, 3) - (2).
Элементы в пересечении множеств (в данном случае
это — единственное число 2) включаются в объединение.
Это обычная математическая договореппость, и
существует пример, в котором математическое вначепне является
более точным, чем при общем употреблении.
Пример 2.1. В предположении, что каждый день
или дождливый, или ясный, математическим (или
логическим) ответом на вопрос
«Ясно или дождливо сегодня?»
16
будет
«Да».
Определение. Разность множеств А и В (также
называемая дополнением В до А) записывается в виде
А\В и определяется соотношением
А\В = {х: х<=А и х&В),
Поэтому, если А = Н, 2, 3} и Я = {2, 3, 4), то А\В = Ш
и В\А = {4}.
Следующее определение включено для полноты. Хотя
мы будем редко использовать его непосредственно,
однако, как мы увидим в дальнейшем, этот оператор имеет
большое значение в машинной арифметике.
Определение. Симметрическая разность множеств
А и В, т. е. А ДЯ, определяется как
АЬВ=(А \}В)\(А ПЯ).
Возможно, читателя запутали обозначения U, П, \, Д,
или, наоборот, он поверил, что они настолько
элементарны, что не имеют никакого практического применения.
Следующие примеры помогут в этом разобраться.
Пример 2.2. Предположим, что мы имеем две
программы, называемые Р и Q, и что А — множество всех
значений данных, доступных Р, а В — множество всех
значений данных, доступных Q. Тогда А П В — множество
всех данных, доступных Р и Q; A U В — множество всех
данных, доступных по крайней мере или Р, или Q;
А\В •** множество всех данных, доступных Р, но
недоступных Q; В\А — множество всех данных, доступных Q,
но недоступных Р; ААВ — множество всех данных,
доступных только одной из программ Р или Q,
Чтобы полностью определить А и В, мы должны
8нать некоторые данные о вычислениях, связанные с Р
и Q. В нашем случае достаточно сказать, что они
производятся на некоторой конечной ЭВМ.
Перед дальнейшим изложением будет удобно
определить два специальных множества. Первое из них «■»
пустое множество.
Определение. Пустое множество
(обозначается 0) есть множество, обладающее свойством
х £ 0 при любом х.
Второе множество, определение которого зависит от
задачи, называют универсальным множеством.
2 Д. Кук. Г. Бсйа
17
Определение. Универсальное множество
(обозначается <£) есть множество всех рассматриваемых в
данной задаче элементов.
Ограничение & в этом случае помогает избежать
трудностей, подобных тем, которые возникали при
рассмотрении «множества» F примера 1.1; в любом случае
большинство элементов несущественно в каждой данной задаче.
Например, размеры «Английского словаря»,
несомненно, неинтересны, если рассматривается поведение
отдельной программы на Фортране.
Определение. Два множества А я В не
пересекаются, если А П В = 0.
Определение. В каждом случае, когда S задано,
определим дополнение множества А (обозначается А')
как
4' = #\4 = Ь: х&А).
Из определений 0, <§ и А' следует справедливость
тождеств
4 U 4' = «Г, АПА' = 0.
В § 4 будет показано, что для данного <В эти тождества
достаточны, чтобы однозначно определить А'.
Пример 2.3. Пусть
# = {1,2,3,4}, 4-И, 3,4), 5 = {2,3}, С = {1,4}.
Из определений легко найти, например, А', В П С, С\А
и т. д. Однако может понадобиться исследовать более
сложные выражения, включающие две или более
операций. Поскольку в этих случаях встает вопрос, как
определить порядок, в котором мы должны осуществлять
элементарные операции над множествами, будем
использовать скобки. Каждое выражение, заключенное в скобки,
должно быть выполнено перед тем, как его результат
может быть использован в других вычислениях.
Например, в (АГ\В)' пересечение ({3}) вычисляется раньше,
чем дополнение ({1,2,4}). Этого соглашения, очевидно,
достаточно. Однако, чтобы избежать такого множества
скобок, мы не будем требовать скобок, когда хотим пронз*
вести операцию дополнения перед любой из операций с
множествами {U, П, \, Д}. Поэтому А&В' означает А П(5')
и т. д. Следовательно,"
А ПЯ' = А П {1,4} = {1,4},
(А ПВ)' = {3}' = {1,2,4},
(B\A)UC = {2)UC = {1,2,4}.//
18
Читатель может быть удивлен, почему изложение
построено на понятии множества, а не числа.
Действительно, до сих пор мы использовали числа только как
элементы множеств. Это делалось лишь для того, чтобы
читатель познакомился с объектами, с которыми ему
придется работать. Дело в том, что существуют множества
более сложные, чем числа; мы можем получить числа из
множеств, но не паоборот. Одпако для многих
приложений последующей теории необходимо сделать точные
утверждения о пекоторых специальных множествах
чисел. Чтобы обеспечить основу, с помощью которой будут
конструироваться такие множества, определим множество
N целых положительных чисел (натуральных чисел):
N = {1,2,3, ...}.
Точное определение множества N вместе с
арифметическими операциями + и * и его упорядочивание будут
даны ниже. Однако в настоящей главе мы будем
предполагать, что читатель знаком с некоторыми свойствами N.
Аналогично Z определяют как множество всех целых
чисел:
Z = {.,., -2, -1, 0, 1,2,...}.
Конечно, множества N и Z не могут быть выписаны
явно (они достаточно велики), но в настоящее время мы
должны понимать «...» как «и так далее».
Рассмотрим теперь множество
А = {1, 2 n} = |i:ieN, 1<К п).
Оно имеет п элементов. Будем говорить, что мощность
(или размер, норма, длина) этого множества есть п. Это
обозначается как
141 = card (/!)•= п.
Далее любое множество В, которое имеет то же число
элементов, что и А, имеет такую же мощность, и,
конечно, эти элементы не надо пересчитывать. Для небольших
множеств достаточно легко пересчитать элементы, но для
других множеств (например, N) это может быть
невозможно. Далее мы дадим строгое, но в то же время
неформальное правило для вычисления количества
элементов.
Определение. Говорят, что множество X конечно,
если X = 0 или если для некоторого п е N существует
множество {1, 2, .,., п) такое, что оно имзет то же самое
2* 19
число элементов, что и X. Если X Ф 0 и никакого п не
может быть найдено, то X называют бесконечным.
Сейчас, когда мы ввели некоторые определения,
можно сформулировать несколько упражнений. Чтобы
сделать множества легко записываемыми, мы снова будем
использовать числа и буквы для элементов, но будем
помнить, что те же операции могут быть применены к
произвольным множествам.
Упражнение 1.2.
1. Пусть
«•-{1,2,3,4), Х-{1.5J,
Y = {1,2, 4}, Z = {2,5).
Найти множества:
а) ХП Г; б) (XDZ)U Y'\
в) XU(ynZ); г) (XU К)П(ДГиг)';
д) (XU7)';e) ГПГ; ж) (X0Y)';
в) (X U У) U Z; и) Z U (У U Z); к) X\Z;
л) (X\Z)U(AZ).
2. Пусть
«" = {а, Ь, с, d, е,}}, А = {а, Ь, с),
В - {/, е, с, а), С = №, е, /}.
Найти множества:
а) А\С; б) В\С; в) С\В;
г) 4YB; д) 4' U В; е) ЯП 4';
ж) А ПС; з) СП 4; и) СД4.
3. Даны два произвольных множества А а В такие,
что А П5 = 0, Что представляют собой множества А\В
и В\А?
4. Даны два произвольных множества С a D такие,
что С П D' = 0. Что можно сказать oCflDnCUD?
5. Дано произвольное множество X. Найти множества:
а) ХПХ'; б) XUX'; в) Х\Х'.
6. Какие из следующих утверждений справедливы:
а) Оа0; б) 0 = {О); в) |{0}| = 1;
г) {{0» в {{{0}}}; д) |{{0}}|=2?
Это вопрос коварный. Хотя это может показаться простым
или надуманным, пустое множество и его свойства
являются достаточно важными. Если вы не совсем уверены в
ответе, проработайте вопрос, используя аналогию
портфеля вместо множества. Таким образом, {{}, {}} —
портфель, содержащий два пустых портфеля, и,
следовательно, |{{},{}}|=2 и т. д.
20
7. Пусть М ж N — два конечных компьютера (см.
пример 2.2) с фиксированными программами. Далее
пусть А — множество значений данных, доступных М и
таких, что если х е А и машина М работает с входным
словом х, то М останавливается и выдает результат.
Аналогично пусть В — множество значений данных, которые
приводят N к остановке и выдаче результата. Если
любой элемент А доступен М и N, что мы может сказать об
элементах В'? Объяснить эту ситуацию с помощью
символов и пояснить бесполезность этой информации.
8. Объяснить в терминах множеств, почему пример
2.1 верен.
9. При определении операции объединения
подчеркивалось, что мы использовали включение «или». Как
в терминах множеств можно выразить исключающее
«или»?
10. Часто в вычислениях будут использоваться
арифметические операции для образования новых множеств.
Так, если А а В — множества чисел, то
А + В = {х: х = а + Ь, а е А, Ь е £?}.
Аналогично определяются операции *, —, / между
множествами чисел. Найти следующие множества:
а) (1,2)+ {1,3); е) {1,2>\{1,3>;
б) {1,2} U {1,3}; ж) {2,4}/{2};
в) {1,2}. {1,3}; з) {2,4}\{2>;
г) {1,2} П {1,3}; и) {2, 4}-{2}.
д) {1,2}-{1,3};
11. Для того чтобы быть в состоянии применить
технику операций с множествами к конкретной задаче, мы
неизбежно должны на некотором этапе взять
«нематематическое» утверждение и перевести его в математическое.
Обычно (но не всегда) это делает описание более
компактным. Однако математическое выражение будет всегда
математически строгим, тогда как исходное выражение
может таким не быть. (Где это случается, требуется
найти, чего же недостает в первоначальной формулировке.)
Теперь надо:
а) попытаться сформулировать следующие
утверждения на языке множеств:
— дапы множества А, В а С; определить множество,
включающее в себя только два из этих множеств;
— решить предыдущую задачу при условии, что А, В
и С взаимно не пересекаются;
21
— даны множества У, W, У, X и Z. Определить
множество, включающее по крайней мере два из множеств
V, W, X и У и не включающее Z;
б) аналогично описать словами следующие множества:
(Jt){KU L))'U(H\L),
(PURUQ)\(Pt){Q\R))t
((E\F)U(F\E))'UG.
§ 3. Диаграммы Веппа
Уже можно было заметить некоторые специфические
свойства операций над множествами, в особенности то
свойство, что одно и то же множество может быть
определено различными путями. Далее в этой главе мы
обсудим способы доказательства этих свойств формальным
путем, однако часто полезно иметь геометрические
представления множеств. Такие представления не могут
заменить доказательства, но могут быть полезны, чтобы
быстро и просто убедиться, справедливо ли конкретное
утверждение и, следовательно, доказательство его
возможно или же оно неверно.
В этом случае можно
заметить, как следует строить
пример, чтобы доказать, что
оно неверно. Диаграммы,
которые мы будем
использовать, называют диаграммами
Венна (по имени английско-
^и0, *'* го математика Джона
Венна) и строят, как это описано ниже.
Во-первых, начертим большой прямоугольник,
представляющий <$ (рис. 1.1). Во-вторых, начертим круги
(или какие-либо другие подходящие замкнутые кривые)
внутри прямоугольника, чтобы представить множества.
Они должны пересекаться в наиболее общем случае,
требуемом в задаче, и должны быть соответствующим
образом обозначены (рис. 1.2). Точки, которые лежат внутри
различных областей диаграммы, сейчас могут
рассматриваться как элементы соответствующих множеств. Если
число элементов в множествах мало, тогда отдельные
элементы могут быть записаны внутри подходящих
областей, как это показано в примере 3.1.
Пример 3.1. Пусть Ж = {b,c,d,e), A = {b,c,d),
В — {с, е). Соответствующая диаграмма изображена на
22
рис. 1.3. Этот рисунок полностью иллюстрирует
пример 3.1, обеспечивая знание элементов <§. Если же,
например, А е 8, тогда неясно, что предполагалось
изобразить на диаграмме. В тех случаях, когда используются
Рис. 1.2 Рис. 1.3
более сложные конструкции множеств, следует избегать
изображения их в виде диаграмм.
Имея построенную подходящим образом диаграмму,
мы можем заштриховать определенные области для
обозначения вновь образованных множеств.
Пример 3.2. Чтобы представить множество
A U (В' П С), начнем с общей диаграммы, показанной на
рис. 1.4. Заштрихуем В' диагональными линиями в
одном направлении, а С диагональными линиями в другом
Рис. 1.4 Рис. 1.5
направлении (рис. 1.5). Площадь с двойной штриховкой
представляет собой множество В' П С.
На новой копии диаграммы заштрихуем эту область
горизонтальными линиями, а А вертикальными. Вся
заштрихованная на рис. 1.6 область представляет
множество A U (В' П С). Если в отдельных случаях мы имеем
дополнительную информацию о рассматриваемых
множествах, то ее можно использовать для упрощения
диаграммы Венна.
23
Пример 3.3. Пусть АГ\В = 0; это соответствует
диаграмме на рис. 1.7. /
Заметим, что в большинстве случаев множества
содержат довольно много элементов, и, следовательно, эти
элементы не могут быть представлены отдельно, Поэтому
И
/
\
f
1
/'
V
\
\
л
СУ
ч \ /
' ч. | ^
i Г
\
Jo
"■
Рис. 1.6
Рис. 1.7
более удобно в этом случае говорить о каждом из
множеств как о целом и не упоминать отдельных элементов.
Упражнение 1.3.
1. Начертить диаграмму, иллюстрирующую
построение множеств, рассматриваемых в задаче 1
упражнения 1.2.
2. Как можно представить следующие множества,
используя диаграммы Венна;
{А, {А)), {{а}, Ш}, {X, У, Z],
где
Х=*{х: х=1 или (1-2)еД
У = {х: i = 3 шш(х-3)е=У>,
2 = {х: х = 2 или (i-2)eZ)?
§ 4. Подмножества и доказательства
Операции пересечения, объединения, разности и
дополнения позволяют нам формировать новые множества.
Однако, как правило, мы не можем сказать, как одно
множество соотносится с другими. Например, пусть даны
два множества X и У; пересечение X П У в некотором
смысле «меньше» (или по крайней мере не больше), чем
X. Действительно, все элементы множества X П У
принадлежат также множеству X, Из этого наблюдения
можно формально определить равенство множеств и
различных выражений для того же самого множества. С по-
24
мощью этих определений мы также в состоянии написать
подходящие логические доказательства важных фактов,
относящихся к множествам. Эти результаты, хотя и
очевидны, обеспечивают подходящие ситуации, в которых
можно ввести некоторые из основных способов
доказательств, используемых в дальнейшем.
Определение. Пусть множества А ж В таковы,
что из принадлежности х е= А следует, что «efl, Тогда
говорят, что А есть подмножество В, и обозначают это как
A s В. Соответствующая диаграмма Венна изображена
на рис. 1.8. Далее, если
существует элемент В,
который не принадлежит А, то
А называют собственным
подмножеством В и
записывают в виде А сг В. Это
означает, что в некотором
смысле В больше, чем А, но, как
мы впоследствии увидим, та- Рис. 1.8
кие термины могут вводить в
заблуждение. Следовательно, при употреблении этого
термина требуется проявлять осторожность. Эти отношения
могут также быть записаны в обратном порядке, или
Я=>л и Вэл;
тогда говорят, что В — (собственное) надмножество А.
Очевидно, что для любого множества А справедливы
следующие три соотношения:
0S4, AsA, Asg,
Второе из них является наиболее важным. Говорят, что
множества А ж В эквивалентны (записывается как А =■
~В), если
4sfl и В^А.
Это означает, что все элементы А являются элементами
В, а все элементы В — элементами А. II
Используя определение эквивалентности множеств,
докажем теперь идентичность некоторых множеств,
разобрав серию из пяти примеров. Они являются примерами
доказательств. Поэтому мы обязаны кратко рассмотреть
вопрос о том, почему следует заботиться о
доказательствах в компьютерной науке. Строго говоря, как это
обычно делается, мы должны доказать что-либо только
один раз. Затем мы исходим из того, что эта часть инфор*
i
6)
25
мации является правильной и, следовательно, может
рассматриваться как факт. Однако, как бывает в
большинстве аспектов вычислительной науки, метод, которым мы
получаем результат, по крайней мере так же важен, как
и сам результат. После анализа доказательства
становятся ясными сделанные предположения и последствия, к
которым они приводят, а также становятся понятными
процессы вывода, которые можно использовать при
решении других задач. (Аналогично проведению
эксперимента на ЭВМ с подобными структурами данных при их
использовании в программировании.)
Можно также заметить, что доказательства теорем
формируют основу всех решающихся автоматически
задач, но это будет обсуждаться позднее, Рассмотрим
несколько примеров.
В примере 4.1 непосредственно доказывается
справедливость следующих двух соотношений:
а) ЛП(5иС)£(Л ПЯ)и(ЛПС);
б) (А ПВ)[)(А ПС)&А П(ДиС)'.
Каждое из этих доказательств состоит из
последовательности утверждений вида
«если Р, то Q»
(если справедливо Р, то справедливо и Q). Для удобства
запишем это утверждение как «Р =*■ Q» и будем читать
«из Р следует Q».
Следовательно, если имеется последовательность Ро,
Pi Рп такая, что Р0 +• Р\,Pi +-Ра,...,Р«-\ ■»■ Р« (из Р0
следует Pi, из Р\ следует Рг, ..., из P„_i следует Р„), то
мы имеем прямое доказательство Ро =*■ Р„.
Пример 4.1. Относительно множеств А, В и С
докажем, что
А П(ВиС) = (А П5)и(Л ПС).
Доказательство.
ie^n(BUC)=*-ie4 Hie(BUC)*
(Такая группировка необходима, так как скобки
означают, что объединение следует вычислить перед
пересечением.)
■*iei и (iefl или хе С) =*■
■*■ (х s А и iefl) или (х е А и х е С) =*■
•* (х е А П В) или (л е А П С) «* х е (4 П 5) U (Л П С),
26
Таким образом,
A Pi(B\JC)^(A t\B)U(A ПС).
Сейчас необходимо доказать включение s в обратную
сторону:
х<=(А П 5)11(4 ПО*
•*■ (х е А П В) или (х е Л П С) =»■
=*- (х е Л и iefi) или (геЛ и х е С) =>
=*-хеЛ и (геВ или ieC)*
=*- х е 4 и хеВиС=*-геЛП(ВиС).
Следовательно,
(Л (\B)\i{A ПС) = Л П(ЯиС).
Поэтому
Л П (5 U С) = (А П 5) U (Л ПС). /
В этом частном случае вторая часть доказательства
точно совпадает с первой, и, следовательно, можно
записать
хе=АП(ВиС)<*-х^А игеВУСит. д.
Здесь символ «-*=*■» («Р ■*=»■ Q») означает, что Р =*■ Q и
Q => Р. Он может читаться как «тогда и только тогда»
(иногда также читают «если и только если») и означает
эквивалентность двух утверждений Р и Q. Однако не
всегда так просто обратить аргумент и следствие. В
общем случае мы должны провести доказательства в оба
стороны раздельно. Заметим также, что эквивалентность
может быть легко получена (хотя и не доказана) из
подходящей диаграммы Венна, однако не всегда можно
начертить диаграмму, относительно которой можно быть
уверенным, что она настолько отвечает требованиям,
насколько необходимо. Поэтому непосредственное
доказательство необходимо. Это доказательство зависит от
внутренних взаимосвязей между значениями «и» и «или» it,
следовательно, может быть выбрано для каждого случая
своим. Далее, когда будут определены некоторые
алгебраические структуры, мы покажем, что это не
составляет трудностей.
Примеры 4.2—4.5 также используют прямые
доказательства, однако эти доказательства записаны в несколько
другом виде.
Пример 4.2. Относительно данного множества &
дополнение любого множества А(А^<8) единственно.
27
Доказательство. Предположим, что существует
два множества В и С, каждое из которых удовлетворяет
требованиям дополнения Л, т. е.
япл=спл = 0 и яил = сил = <г.
Тогда
В - 5 П # = 5 П (С U Л) = (В П С) U (В П А) -
= (ЯПС)и0 = ЯПС;
поэтому
хеВ^хеВ и ieC<-flsflflC=»-BsB и Я £ С.
Однако мы знаем, что В & В, Поэтому отсюда следует,
что
5 ЕС.
Аналогично (меняя ролями В ж С) получаем
С sB,
откуда
В = С, т. е. В = С = Л', и Л' единственно. /
Приведенный выше пример содержит в себе основной
математический подход, употребляемый для
доказательства единственности,— сначала предполагается, что
существуют два таких объекта, а затем доказывается, что
они совпадают.
В следующем примере мы опять прибегнем к
предположениям об «или», чтобы иметь возможность написать
выражепие Л U В U С как Л U (5 U С) или (Л U В) U С,
когда это будет более удобно для требуемых
преобразований.
Пример 4.3. Дапы множества А, В и С такие, что
Л U5UC = «r
в Л, В и С попарно не пересекаются. Тогда
Л'= 5 U С, 5'= Л UCh С' = Л U С.
Доказательство.
Л иЯиС = Л U(fiUC) = (?,
Л П(ЯиС) = (Л П5)и(Л nC)=0U0 = 0.
Следовательно, 5 U С удовлетворяет условиям для Л',
которое единственно. Поэтому Л' = В U С. Аналогично
проводятся доказательства для #' и С", /
28
A
в
Л
£
Пример 4.4. Для произвольных множеств X и Y
справедливо соотношение
(ХПУ)' = (ХПУ')и(Х'П У)и(Х'П У).
Доказательство. Предположим, что мы имеем
множества А, В и С из примера 4.3 и
C^DUE и ДПЯ = 0.
(Диаграмма Венна на рис. 1.9 может разбить &, как
требуется.) Тогда множества А, В, D и Е взаимно не
пересекающиеся и
AVBVDUE — B. &
Более того,
А'-В U С,
поэтому
А' *=В U D U Е.
Сейчас легко показать, что
если положить
4=ХПУ, Я = ХПУ', Ряс. 1.9
£> = ХПУ
и Е = X' П У, то требуемые условия будут выполнены,
и поэтому нужный результат немедленно следует из
предыдущих рассмотрений. /
Пример 4.5. Для любых множеств X и Y верно
соотношение
(ХПУ)' = Х'иУ.
Доказательство.
ze(Xny)'^*e(Xny)'U(X'ny)U(X'nr)^
<=>■ х е (X П У)' U (X' П Г) U (X' П У) U (X' П Г) <=>
(Один член здесь продублирован. Это разрешается, так
как А = A U А для любого А.)
**-1е((ХП У)и(Х'П У))и((Х'П У)и(Х'ПГ))^-
■с**е((хиХ')ПГ)и(Х'П(УиГ))-~*е(*ПУ')и
U (А" П *j ч* * в У и X' -^ *е X' U У".
Следовательно, (X П У) = X' U У. /
Результат, полученный в примере 4.5, и подобные ему
(см, упражнение 4.5) называют законами де Моргана.
29
Они играют важную роль в математической логике.
Наиболее непосредственные приложения к вычислениям
находятся в области комбинаторных цепей в логике.
Последовательность примеров 4.1—4.5 иллюстрирует,
как можно развивать математическую теорию путем
последовательности доказательств простых теорем и
выводить такие важные результаты, как законы це Моргана.
Перед тем как перейти к заключительной части этой
главы, попытаемся переписать доказательства задач,
разобранных в примерах 4.2—4.5, формальным образом, как
это делалось в примере 4.1. В частности, каждый шаг
должен быть проверен ссылкой на доказанный результат
из предыдущих работ или же непосредственно выведен.
Позднее мы введем необходимую терминологию, которая
позволит использовать более краткие обозначения. Дадим
сначала два определения.
Определение. Говорят, что два множества А и В
неэквивалентны, если они не эквивалентны. Это свойство
равносильно тому, что одно из множеств .4X5 или В\А
непусто.
Определение. Множество всех подмножеств
данного множества X назовем степенью множества X и
будем обозначать через ^(А). (Некоторые авторы
используют обозначение 2х; причина этого будет ясна немного
позднее, когда мы разберем несколько примеров.)
Формально
&{X)={Y: FsXh
В частности, заметим, что поскольку 0 s X и XsX, то
0е^(Х), Хе&(Х). II
Пример 4.6. Пусть А = {1, 2, 3). Тогда
0»(4)-{0, {1}, {2}, {3}, (1,2), (1,3), {2,3}, 4}. //
Завершим этот параграф упоминанием о двух
косвенных методах доказательства. Первый из них —
доказательство от противного. Вспомним парадокс Рассела
(пример 1.1):
F<=F=*F<£F и F<£F=*F<=F.
Если обозначить утверждение F <= F через Р, то получим
Р справедливо =>Р ложно и Р ложно =^Р справедливо.
Основой математики является предположепие о том, что
не может быть утверждения, которое является истинным
и ложным одновременно (т. е. логическая система
должна быть содержательной; мы отвергаем множество Рас-
30
села потому, что его определение несостоятельно в
рассматриваемом смысле), и мы используем это положение
как основу доказательства от противного. Предположим,
что мы имеем совокупность высказываний Р\, Р2, ..., Рп
и хотим доказать (Pi истинно и Р2 истинно и... и Р„
истинно) ■=»■ Q истинно, или же более просто
(PihP2h...hPJ^<?.
Если мы допустим высказывание (Pi и Рг и ... и Рп и не
Q), т. е. что Р], ..., Р„ истинно, a Q ложно, и отсюда
сможем вывести некоторое утверждение Р, которое
одновременно является и истинным, и ложным, то логическая
система, основанная на
(Pi и Р2 и .,. и Рп и не Q),
является недопустимой. Таким образом, доказано, что
если имеет место
(Р1ИР2И...ИРП),
то мы можем заключить, что
(Р, и Р2 и ... и Pn) =* Q,
так как предположение не Q приводит к противоречию.
Для иллюстрации вышесказанного, рассмотрим пример.
Пример 4.7. Докажем, что для произвольных
множеств А и В имеет место соотношение
А^В** В'<=А'.
Доказательство. Допустим, что свойства
(т. е. определения) множеств <5, 0 и т. д. выполнены и
что А ^ В ж В' ф А. (В терминах описанной выше
общей ситуации Q это В' е^'.) Тогда
А ^ В => если х<^ А, то iefl; (*)
В' фА' =*■ существует некоторый элемент у такой, что
jeB' и у Ф- А'.
Из («) следует соотношение
уе=А*>у<=В=*у&В'шуе=В=>уе;В'Г\В = 0
(противоречие),
Следовательно, полученное утверждение В' ф А' ложно,
и поэтому В'^А'. Аналогично можно показать, что В' s
^ А' •=> A s В, и, следовательно,
А ^В<*В'<=А'. II
31
Этот пример также распространяется и на второй ме-«
тод косвенного доказательства.
Пример 4.8. Пусть Р означает высказывание
«сегодня четверг», а (?—-«сегодня день недели». Тогда
(Р «*■ Q) означает «если сегодня четверг, то это день
недели», а (не Q •*■ не Р) означает «если сегодня не день
недели, то это не четверг».
Следует убедиться, что эти два высказывания
эквивалентны (т. е. что они оба одновременно являются либо
истинными, либо ложными). /
С этой точки зрения, хотя диаграммы Венна могут
использоваться для прояснения ситуации, все
результаты должны быть выведены из предположений, данных в
задаче. Следует помнить, что если какое-либо
утверждение истинно, то мы должны быть в состоянии доказать
его. Если это действительно очевидно, то мы легко
докажем его, если же нет, то, по-видимому, это не так
очевидно, как мы думали, и вполне возможно, что это даже
неверно.
Упражнение 1.4.
1. Доказать, что
А П(ЯПС) = (4 ПВ)ПС.
2. Пусть дапы мпожества А, В и С: С £ В. Доказать,
что:
а) 4 П С ^ А П S; б) Ли С s AM В;
в) А\ВвА\С; г) С\А^В\А]
д) B'\AsC\A.
3. Доказать, что если А & В, то 9>(A)s<?(B),
4. Показать справедливость равенства
А 11(ЯПС) = (4 11Я)П(4 UCJ.
5. Доказать, что (A U В)' ■= А' Л В'. (Указание:
показать, что (A U В)М{А' П Я') = & и (Л U 5)П
П(Л'Л5')=0.)
6. Доказать эквивалентность следующих утверждений
т. е. что из каждого следует другое:
a) A U В - <Г; б) A' s В; в) А' П В' - 0.
7. Какие из следующих утверждений справедливы:
а) Ое0; б) {0}s0; в) 0 = {0};
г) 0Е^;д) <0}s{{0}}?
Сравните ответы на этот вопрос с ответами к
упражнению 1.2,6. Существует связь между символами ens
однако это не одно и то же. Как аналогия «портфеля»
связана с символом s ?
32
8. Показать, что для конечного множества А
12А|=2|А|.
(Указание: выписать множество А = lai, ..., а„) и
рассмотреть его подмножества.)
§ 5. Произведения множеств
Пока мы в основном занимались построением из
существующих множеств множеств меньшего размера.
Сейчас будет рассмотрен один из наиболее общих способов
конструирования больших множеств. Рассмотрим для
иллюстрации множество размеченных клеток шахматной
доски (рис. 1.10). Рассмотрим множество столбцов,
которые обозначим буквами а, Ь, ..., h (слева направо), и
{Черные)
8
7
6
5
4
3
г
1
а Ъ a d e f g h (Белые)
Рис. 1.10
множество строк от 1 до 8 (снизу вверх). Следовательно,
каждая клетка может быть однозначно задана двумя
символами: один — из множества F = (а, 6, ..., М, другой —
из множества Д*={1, 2, ..., 8}, например а\, /7, еЗит. д.
Таким образом, из множества столбцов F и множества
строк R мы образовали множество всех клеток доски.
Этот пример содержит в себе новые идеи, которые
используются при построении произведений множеств.
Однако для того, чтобы быть в состоянии обобщить
рассматриваемую ситуацию, следует быть немного более точными.
3 д. Кук, Г. Бейз 33
Определение. Обозначим последовательность из
га элементов хи х2, ..., х„ через (х\, х2, ..., хп). Здесь
круглые скобки испол'зуются для того, чтобы указать на
порядок, в котором з 1исаны элементы. Например, если
Х\ Ф Х2, то последовательность (жг, х\, ..., хп) не
совпадает с исходной. Будем называть такую
последовательность набором длины га; пабор длины 2 будем называть
парой.
Пусть даны га множеств А\, А2, ..., Ап', множество
всех наборов (xi, X2, ..., хп) таких, что х\ е А\, ..., хп <=
еЛ„, называют прямым произведением А\, ..., Ап и
обозначают Ai XA2 X ... X А„. Используя другие обозначе-
п
иия, это произведение запишем более кратко: П Ли II
Пример 5.1. Пусть X = {0, 1>, Y = {x,\), Z =
= (0, 1, 2). Тогда
ХХУ = {(0,*), (0, у), (1,х), (1,у)>,
УХХ = {(*. 0), (*, 1), (у, 0), (у, 1)}.
Таким образом, X X У Ф У X X. При рассмотрении
снова примера с шахматной доской становится яспо, что
будет, если написать выражение Зе. Множества F и R не
пересекаются и (е, 3)&FXR, a (3, e)&FXR.
Например,
XX У = {(0,0), (0,1), (0,2), (1,0), (1,1), (1,2)}
и (0,1) и (1,0)—различные элементы X X У.
Следовательно, с математической точки зрения нам следует
отвергнуть запись Зе как неверную для шахматной доски. II
Мы часто будем использовать прямое произведепие
для одинаковых множеств. В этом случае будет удобнее
записывать А X А X ... X А как А".
Упражнение 1.5.
1. Пусть Х = {а, Ъ,с) и У^= {а, Ь, e,f). Найти XX У
и У2.
2. Доказать: при 4 s X и В s У, 4 X Я s X X У.
3. Доказать, что Л Х(В П С) = (4 X Я)П(4 X С)-
4. Доказать, что для любых непустых конечных
множеств А ж В выполняются соотношения:
а) 0X4 = 0; б) &ХАФА; в) ЛеЛХЛ;
г) |Л X Ь>1 = UI;
д) АХВ=*ВХА тогда и только тогда, когда А = В.
ГЛАВА 2
ОТНОШЕНИЯ
Часто в вычислениях необходимо выбирать элементы
множеств, которые удовлетворяют некоторому
«отношению». Это понятие довольно общее. Поэтому опо
широко применимо. Естественно, что при соответствующем
выборе отношения его аргументы могут быть связаны
достаточно просто. Опи не обязательно должны быть связаны
какой-либо простой или очевидной формулой, хотя в
ситуациях, когда требуется осуществить некоторые
вычисления, иногда можно найти удачное описание
отношения.
Перед тем как подойти к этому вопросу с
математической позиции, рассмотрим несколько идей,
возникающих из рассмотрения следующей простой ситуации
(которая также приводит к возникновению понятий
отношения). Предположим, что для некоторой конечной машины
мы имеем множество программ Р, конечное
множество значений данных D и множество результатов R. Если
мы выберем конкретное значение из D, то оно может
использоваться в некоторых программах из Р, и для
каждой программы из Р существует совокупность значений
из D, которые в ней используются. Таким образом, мы
имеем соответствие между значениями данных и
программами, и, следовательно, существуют элементы в D X Р,
представляющие интерес. Аналогично, если мы сведем
рассмотрение к р^Р, то р связывает соответствующие
значения данных из D с результатами из R. Можно
рассмотреть данные, приводящие р к остановке, или
результаты, которые не могут быть получены из р.
Следовательно, мы приходим к подмножеству D XR. (При
переработке данных от D к R возникают некоторые
ассоциации, которые могут оказаться полезными для
запоминания терминологии.)
Перейдем теперь к формальным рассмотрениям.
3*
35
§ 1. Основные понятия
п-местным отношением R на множествах А\, ..., А„
называется подмножество прямого произведения
AiX...XAn.
Другими словами, элементы х\, ..., хп (где х\^А\, ■. ■)
связаны отношением R тогда и только тогда, когда
(&и хь •••> x„)<=R ((xi, X2, ..., х„) — упорядоченный
набор из п элементов).
Наиболее часто встречаются отношения при п = 2; в
этом случае они называются бинарными отношениями.
Следовательно, бинарное отношение между множествами
А и В является просто подмножеством АХ В. Если эти
множества эквивалентны (скажем, равны А), то будем
говорить, что подмножество А2 определяет отношение
на А.
Отношения не являются чем-то новым. Можно
построить отношения, которые, несомненно, будут знакомы
читателю. Рассмотрим следующие примеры.
Пример 1.1. Пусть
А = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10).
Тогда R = {(х, у): х, у <= А, х — делитель у и х < 5}
может быть записано в явном виде:
Д = {(1, 1), (1,2), (1,3), (1,4), (1,5),
(1,6), (1,7), (1,8), (1,9), (1,10),
(2,2), (2,4), (2,6), (2,8), (2,10),
(3,3), (3,6), (3,9),
(4,4), (4,8),
(5,5), (5,10)}. /
Пример 1.2 (шахматы). Как и выше, пусть
F = {а, Ъ, с, d, е, /, g, h), R = {1, 2, 3, 4, 5, 6, 7, 8}
и пусть S=*FXR.
Таким образом, S — множество всех клеток,
обозначаемых нарами (х, у), где х <= F, у <= R. Определим
бинарное отношение С (для ладьи!) на S так, что (s, f)e С
тогда и только тогда, когда s и t — элементы S и ладья
может пройти от s к t одним ходом на пустой доске.
(Напомним, что ладья может изменять либо горизонтальную
координату, либо вертикальную, но не обе координаты
36
одновременно.) Поэтому С ^ 5X5 и
C-l{{f„ г.), {fur,)): (/.-/, и г.Фг,)
ИЛИ (/. -5* /( И Г, = Г,)}. /
На первый взгляд определение С может выглядеть
сложно, но внимательное исследование показывает, что
значение отношения находится непосредственно и вся
необходимая информация содержится в определении.
В общем случае ряд различных отношений на
множестве А зависит от |Л|. Большая часть этих отношении
не представляет особого интереса. Ниже приведены три
отношения, которые полезны при рассмотрении множеств.
Определение. Для любого множества А
определим тождественное отношение /А и универсальное
отношение Uл следующим образом:
/ = {(а, а): а^А), U = {(a, b): a^A, Ь^А).
Таким образом, UA = A2. Так как 0 s А2, то 0 является
отношением на А и называется пустым отношением. /
Пусть отпошепие R определено в соответствии с
изображением на рис. 2.1. Необходимо сконцентрировать
наше внимание на том, что происходит на концах R, т. е.
Элементы А, не Элементы А и В, Элементы в, не
включенные В R Включенные В R Включенные S R
Рис. 2.1
рассмотреть элементы А и В, которые принадлежат R.
Они являются элементами подмножеств А и В
соответственно и, как следовало ожидать, имеют специальные
названия.
Определение. Свяжем с каждым бинарным
отношением R между А и В два множества — область
определения D(R) и область значений 52(Л). Они
определяются следующим образом:
D(R)-bc: (*, у1еД>, 0l{R)~{y: (z,y)efl>. /
37
Пример 1.3. Пусть отношение R такое же, как и в
примере 1.1. Тогда
0(Д)= И, 2, 3, 4, 5), &{R) = A. II
Пример 1.4. Предположим, что мы имеем
некоторую программу. Она читает два числа из множества А —
= {1, 2, 3, 4, 5), обозначаемых х и у, и, если х<у,
печатает число z (также из А) такое, что а; < z < у. В любом
случае программа останавливается после считывания всех
чисел из А.
Задача определяет отношение Р, Р s AX А такое, что
Р = {((х, у), z): x<y, x^z<y).
Не все входные данные приводят к выдаче результата.
Поэтому область определения Р не совпадает с А2. Ясно,
что
Р = {((1,2), 1), ((1,3), 1), ((1,3), 2),
((1,4), 1), ((1,4), 2), ((1,4), 3),
((1,5), 1), ((1,5), 2), ((1, 5),3), ((1,5), 4),
((2,3), 2), ((2,4), 2), ((2,4), 3),
((2,5), 2), ((2,5), 3), ((2,5), 4),
((3,4), 3), ((3,5), 3), ((3,5), 4),
((4,5), 4)};
Д>(Р)-{(1,2), (1,3), (1,4), (1,5),
(2,3), (2,4), (2,5),
(3,4), (3,5),
(4,5)};
Я (Р) ={1,2, 3,4). /
Хотя каждое отношение является множеством и
может быть обозначено прописной буквой, существует
также практика обозначения отношений строчными
греческими буквами, например р, а и т. Часто используют
следующие обозначения:
а) (а, Ь)е р, т. е. (а, Ь) находится в р;
б) apb, а связано с Ь отношением р;
в) Ьер(о).
Первое из обозначений является естественным (оно
следует из определений теории множеств). Второе
делается более разумным, если мы рассмотрим отношение
порядка (которое будет определено несколько ниже), где
RsN2 и R = {(x, у): х<у).
88
Здесь вместо 6Д7 мы можем написать 6 < 7;
следовательно, мы разрешаем запись любого отношения с
использованием рассмотренных выше символов, если
результирующая последовательность символов будет
однозначно определенной. Третья форма записи является
новой и будет преобразована к более привычным
обозначениям в гл. 3. Из заданного бинарного отношения
можно вывести ряд других отношений, большинство из
которых будут обратными отношениями.
Определение. Пусть R— бинарное отношение.
Определим обратное отношение Я-1 следующим образом:
#-' = <(*, у): {y,x)^R}.
Таким образом, R~i связывает те же пары элементов, что
и R, но «в другом порядке». /
Следовательно, если R £ А X В, то
R~l^BXA, 3){R~1) = ^{R) и #(fl-') = 0(fl).
Чтобы избежать использования большого количества
скобок, будем также использовать обозначения 2>л a 52в
вместо 2)(R) и 52 (Я) соответственно.
Упражнение 2.1.
1. Пусть Х = (2, 4, 6, 8} и р = {(ж, у): х, у <= X и
х <^ у). Выписать все элементы р и р-1.
2. Пусть <8 = 9*{ка, Ь, с)). Найти все элементы
отношений с и е на I.
3. Пусть & — Z2 и р = {(я, у): х<у}. Описать р'—
дополнение р — без использования отрицания отношения
«меньше».
4. Пусть в = 1(х, у): хау}. Может ли о' быть
описано тем же способом, что и р' в 2.1, 3? Ответ проверьте.
5. На улице есть 30 домов, пронумерованных обычным
способом: нечетные номера с одной стороны, а четные с
другой. Пусть hn обозначает жителя, живущего в доме с
номером п. Описать при помощи символов отношепие Л'
на множестве жителей такое, что ht находится в
отношении N к hi, если они являются соседями.
Как будет выглядеть N, если улица является
тупиком?
6. Вернемся к множеству S клеток шахматной доски.
Отношение К связывает клетки, которые определяются
ходом коня (т. е. если копь может перейти с х на у за
один шаг). Определить К при помощи символов.
39
7. Пусть G — отношение на 5 такое, что xGy тогда
и только тогда, когда х есть начальная позиция (белой)
пешки, а у есть клетка, где первый ход игры
заканчивается. Описать G, 2>{G) и 52(G).
§ 2. Графические представления
При решении задачи на первом этапе часто полезно
начертить «рисунок» для того, чтобы более ясно увидеть
компоненты задачи. Особенно это полезно для описания
отношений, так как записанные в виде множества
упорядоченных пар отношения нелегко расшифровываются.
Отношения — это множества, обладающие
определенной структурой; их элементы имеют несколько
компонент, и поэтому, в принципе, мы можем использовать
диаграммы Венна для их изображения. Хотя этим методом
и можно воспользоваться, особенно при описании
некоторых больших множеств чисел, существуют методы,
которые более эффективны в общих ситуациях
(включающих, в частности, бинарные отношения на небольших
множествах). В этом параграфе мы кратко рассмотрим
некоторые из них. Для описания этих методов
используем множество
X — {а, Ъ, с, d)
и отношения Ix, Ux и R, где
R = {(a, Ь), (а, с), (Ь, d), (с, е), (е, Ь)}.
Вначале рассмотрим метод, относящийся к
традиционной аналитической геометрии. Начертим пару взаимно
перпендикулярных осей (ОХ — горизонтальная ось, а
OY — вертикальная ось) и на каждой отметим точки,
представляющие элементы множества X (рис. 2.2, а).
Теперь в правом верхнем координатном углу отметим
точки с координатами (х, у), у которых х^Х и уеГ.
Мпожества, соответствующие lx, Ux и R, изображены на
рис. 2.2, Ъ, с и d.
Основной недостаток этого метода заключается в том,
что при увеличении |Х| трудно увидеть элементы в
области и установить соответствие с точками, обозначающими
отношения. Чтобы преодолеть этот недостаток, можно
опустить точки и соединить стрелкой ie2) и уей,
когда (х, у) принадлежит отношению (рис. 2.3).
Диаграмма, представляющая Ux, получилась довольно
запутанной, но это естественно, поскольку число элементов в
40
Vx увеличилось. С другой стороны, отношения /х и R
представлены наглядно, и легко увидеть их области
определения и значений. Диаграмма для Uz наиболее
неудобна в месте пересечения осей. Теперь, когда не
используются координаты в областях определения и значений для
е -
d-
е -
Ъ-
Ь с
а
Я
Ux
Л
$1
е
d
с
Ъ
а
-
•
•
i
•
i
•
i
R
•
3)
с d
d
Рис. 2.2
расстановки элементов, отношения (как в первом
методе) можно начертить параллельными. Поэтому,
используя параллельные вертикальные линии и двигаясь слева
направо (линия слева является областью определения),
мы получаем диаграмму, изображенную на рис. 2.4.
Здесь стрелки не требуются, так как мы знаем, что
отношения идут от области определения к области
значений. Это приводит к двум возможностям: мы можем или
заменить стрелки прямыми линиями, или заменить две
линии, изображающие области определения и значений,
простой совокупностью точек. (Например, точка с в об-
41
e
d
sac
ь
a
>
>
>■
h
a
—>■
e
d
b
a
Ox
ъ
я
3>
■
R
0
Рис. 2.4
42
ласти определения является той же самой, что и точка,
представляющая с в области значений.) Это показано на
диаграмме, изображенной на рис. 2.5.
Итак, обозначены наиболее важные методы
графического изображения бинарных отношений. Они будут
использоваться в оставшейся части книги. Обсуждение
графических методов, связанных с соотношениями, мы
продолжим в гл. 7.
Упражнение 2.2.
1. Начертить диаграмму, представляющую отношение
р из упражнения 2.1, 1.
2. Начертить диаграмму, представляющую отношение
N (см. упражнение 2.1, 5) на улице, имеющей десять
домов. Как изменится диаграмма, если улица является
тупиком?
§ 3. Свойства отношений
Очевидно, что общие отношения, будучи только
подмножествами произведения множеств, не особенно
интересны, поскольку о них можно сказать очень мало.
Однако, когда отношения удовлетворяют некоторым
дополнительным условиям, относительно них можно сделать
более содержательные утверждения. В этом параграфе
мы рассмотрим некоторые из основных свойств,
которыми могут быть наделены отношения. Говорят, что
свойство имеет место, если только выполнено
соответствующее условие.
Определение. Пусть р — отношение на
множестве А. Тогда:
а) р рефлексивно, если хрх для любого is4;
б) р симметрично, если хру влечет урх;
в) р транзитивно, если хру и уръ влечет xpz;
г) р антисимметрично, если хру и урх влекут х = у.
43
Терминология, введеппая здесь, вероятно, является
новой для читателя, однако он, по-видимому, знаком с
этими понятиями. Поясним их на следующих примерах.
Пример 3.1. Пусть
р = {(х, у): ijeNhi- делитель у),
о = {(х, у): ijeN oi<j|},
т = {(я, у): х,у е N\{U а х а у имеют общий делитель).
Тогда р:
а) рефлексивно, так как х/х ■= 1 для всех i^N;
б) несимметрично, поскольку 2 — делитель 4, но 4 не
является делителем 2;
в) транзитивно, так как если у/хeN и г/уеN, то
z/i=(y/i)«(!/j)eN;
г) антисимметрично, так как если х/у <= N и у/х е N,
то х — у.
Аналогично о:
а) рефлексивно, так как х < х для всех i^N;
б) несимметрично, так как 2 < 3, но 3 ^2;
в) транзитивно;
г) антисимметрично, так как если х < у и у < х, то
х = у.
Наконец, т рефлексивно и симметрично, но не
транзитивно или антисимметрично. /
Пример 3.2. Пусть Р — множество всех людей, а
А и S определяются следующим образом:
А ={(х, у): х, у^Р и х — предок у},
S = {(х, #)е Р и х и у имеют одних и тех же родителей).
Очевидно, что А транзитивно, a S рефлексивно,
симметрично и транзитивно. /
Заметим, что свойства симметричности и
антисимметричности не являются взаимоисключающими. Для
любого множества .X отношение I* является симметричным
и антисимметричным. (Проверьте!) Мы можем также
иметь отношения, которые не являются ни
симметричными, ни антисимметричными.
Пример 3.3. Пусть опять Р есть множество всех
людей. Определим отношение В такое, что хВу тогда и
только тогда, когда х является братом у. В семье,
состоящей из двух братьев р и q и сестры г, мы имеем
ситуацию, изображенную на рис. 2.6. Отношение В не
симметрично, так как рВг, но не гВр. Это отношение также
44
не является антисимметричным, так как pBq и qBp,
хотя р и q различны.
В более общей ситуации мы моя?ем интерпретировать
рассмотренные выше характеристики отношения путем
построения диаграммы:
а) отношение рефлексивно
тогда и только тогда, когда для -*"" ~"—
каждого узла (точки) на
диаграмме существует стрелка, которая
начинается и заканчивается на
этом узле;
б) отношение симметрично то- Рис. 2.6
гда и только тогда, когда для
каждой стрелки, соединяющей два узла, существует
также стрелка, соединяющая эти узлы в обратном
направлении;
в) отношение транзитивно тогда и только тогда, когда
для каждой пары узлов х и у, связанных
последовательностью стрелок от i к ai, от а\ к аг, ..., от ап-\ к ап, от
а„ к у, существует также стрелка от х к у;
г) отношение антисимметрично тогда и только тогда,
когда не существует двух различных узлов, связанных
парой стрелок.
Существует много других свойств отношений,
которые можно было бы рассмотреть. Однако рассмотренные
выше свойства являются наиболее важными и будут
часто использоваться в дальнейшем.
Упражнение 2.3.
1. Являются ли следующие отношения
рефлексивными, симметричными, транзитивными или анситимметрич-
ными:
а) отношение на (1, 2, 3, 4, 5} определяется как
{(а, Ь): а — Ъ четное);
б) отношение на (1, 2, 3, 4, 5) определяется как
{(а, Ь): а + Ь четное);
в) отношение на Р (множестве всех людей)
определяется как
{(а, Ь): а и Ъ имеют общего предка)?
2. Следующее утверждение ошибочно. Симметричное
и транзитивное отношенио на 5 является также
рефлексивным, так как aRb и bRa влекут aRa. Внимательно
"\7
45
изучив определения, найти ошибку. Построить
отношение на (1, 2, 3), которое является симметричным и
транзитивным, но не рефлексивным.
3. Пусть р — отношение между А и В, а е А. Тогда
р(а) определено как множество {b: apb) и является
подмножеством В. Пусть на (—4, —3, —2, —1, 0, 1, 2, 3, 4}
определены следующие отношения:
р = {(а, Ь): а<Ь),
0 = {{а, Ь): Ь-Ка<Ь + 2),
т = {(а, b):a2<b).
Какие это множества:
а) р(0);б) о(0);в) т(0);
г) р(1); д) о(-1);е) т(-1)?
§ 4. Разбиения в отношения эквивалентности
Во многих вычислительных задачах берутся большие
множества и разбиваются таким образом, чтобы все
интересующие нас ситуации можно было исследовать на
нескольких правильно выбранных примерах. Например,
один из путей получения качественной оценки
характеристик языка программирования — это посмотреть
конкретные программы, написанные на этом языке. Однако
каждый интересный язык, включая такие языки
высокого уровня, как Паскаль и Фортран, порождает
бесконечно много программ, и, следовательно, мы должны
выбирать программы так, чтобы они правильно отражали
достоинства и недостатки языка. Чтобы быть более
конкретными, давайте в дальнейшем предполагать, что язык
имеет три основные управляющие структуры и четыре
метода доступа и более у него нет никаких особы к
свойств. Мы могли бы в качестве примера взять семь
программ, каждая из которых включает только одну
характеристику языка (хотя, вообще говоря, каждая
программа может использовать более чем одну
характеристику языка). Исследование этих нрограм тогда могло бы
покрыть большую часть свойств языка. Математически
это можно определить следующим образом.
Определение. Пусть А — непустое множество и
(Л J— совокупность подмножеств (1=1, ..., я, »sN)
таких, что
U At~A.
46
Совокупность этих Подмножеств называется
покрытием А. II
Пример 4.1.
{А, В) — покрытие A U В,
{A, AUB,B,C)- покрытие A U В U С. II
Используя понятие покрытия, можно обеспечить,
чтобы ни одно из свойств пе было пропущено, так как
каждый элемент включен по крайней мере в одно из
подмножеств покрытия. Однако в общем случае могут
встречаться случаи дублирования. Если в дальнейшем
потребовать, чтобы элементы покрытия попарно не
пересекались, то дублирования не будет. Отсюда возникает
понятие разбиения.
Определение. Разбиением непустого множества
А называется совокупность подмножеств £Р(А) таких,
что объединепие всех элементов ^(А) совпадает с А и
все элементы £Р(А) взаимно не пересекаются, т. е. А
разбито таким образом, что каждый элемент А
содержится только в одном подмножестве разбиения. /
Пример 4.2.
{А, А'} — разбиение <8,
{А П В, А П В', А' П В, А' П В') - разбиение <Г,
{А\В, АПВ,В\А}- разбиение A U В. II
Разбиение определяется однозначно, и части разбиения
индуцируют особый род отношения, называемого
отношением эквивалентности. Эти отношения ведут себя
подобно отношению «=» между числами или множествами.
Выделяя основные свойства равенства, мы приходим к
следующему определению.
Определение. Бинарное отношение на
множестве называют отношением эквивалентности, если оно
рефлексивно, симметрично и транзитивно. /
Пример 4.3. На множестве всех треугольников
отношение, определяемое как {(х, у): х а у имеют
одинаковую площадь), является тривиальным отношением
эквивалентности. Более интересно следующее отношение,
определенное на множестве всех программ: {(а, Ь): а и
b вычисляют одпу и ту же функцию на определенной
машине). Это отношение является отношением
эквивалентности. /
Напомним, что мы рассматриваем более простые
способы создания больших множеств, разбивая их на мел-
47
кие части, чем если бы в качестве этих частей брали
элементы множества. В настоящий момент у нас уже
имеется математический аппарат, однако недостает
подходящих простых обозначений. Сейчас это будет сделано,
после чего приведем несколько известных примеров.
Определение. Пусть р — отношение
эквивалентности на мноягестве А. Определим класс
эквивалентности [х] для г е А:
[х] = {у: хру}.
Таким образом, [х] есть множество всех элементов А,
которые р-эквивалентны х. В случаях, когда
рассматривается только одно отношение эквивалентности, мы
можем также использовать обозначение «=»
(эквивалентно), поэтому
[х] = {у: хвв у),
В отдельных специальных случаях для обозначения
эквивалентности иногда используют символ «~». Теперь
вместо проверки всего множества мы можем любым
способом выбрать представителей (по одному от каждого
из классов эквивалентности), что упрощает вычисления.
Следующий пример иллюстрирует вышесказанное.
Пример 4.4. Пусть s — фиксированный элемент N;
^"чеделим отношение р. на Z:
Р« = И*. У) '• х — у** п$, где п е Z).
Рассмотрим случай s = 10. Тогда
[1]-{11, 21, —9, 10 976 631,...},
[1066] - {66, 226, -24, ...}
и т. д.
В действительности существуют только десять
различных классов эквивалентности. Целые 0, 1, 2, 3, 4, 5,
6, 7, 8, 9 принадлежат различным классам. Поэтому мы
можем использовать их в качестве представителей этих
классов. /
В вычислениях отношения эквивалентности
представляют особый интерес, поскольку они ассоциируются с
различными алгоритмами, дающими один и тот же
результат, или приводящими к одной и той же обработке
данных, или же представляющими одну и ту же
информацию о различных эквивалентных структурах данных.
Примером таких очевидных ситуаций является борьба с
трудностями, которые возникают при исследовании раз-
48
решимости. Такие факторы, однако, не вызывают
проблем, если множества образуются путем хорошо
сконструированных процессов с конечной базой. И все же
типичным является случай, когда при описании даже
«хорошего поведения» требуется большое число деталей, в
свяэи с чем они должны быть здесь рассмотрены.
Несмотря на это, мы будем возвращаться к подобным
вопросам в § 6 и в гл. 8 и 9.
По-видимому, наиболее известное отношение
эквивалентности знакомо читателю, хотя он мог и не знать,
что оно — отношение эквивалентности. Это отношение
связано с дробями. Рассмотрим множество Z X N. Пару
(а, Ь) мы можем рассматривать как дробь alb. Эти два
способа обозначения элементов Z X N являютея
различными, но они «изоморфны». Мы будем их рассматривать
далее в § 1 гл. 5. Отметим, что можно переходить от
одной формы обозначения к другой.
До сих пор все было хорошо, однако существуют
различные элементы в Z X N, которые желательно
рассматривать как одни и те же, хотя записываются они по-
разному. Чтобы преодолеть эту трудность, определим
отношение эквивалентности на Z X N следующим образом:
{a, b)™(с, d) тогда и только тогда, когда a*d^=b* с.
Множество всех классов эквивалентности, определяемых
этим отношением на Z X N, называют рациональными
числами и обозначают символом Q. Обычно выбирают тех
представителей классов, у которых самые малые а и Ъ.
Следует упомянуть, что предполагается
существование действительных чисел (множество действительных
чисел обычно обозначают через R). Эти числа можно
представить в форме
. . . О йЛ . . . U2 d\ do 6l 62 . . . бж . • •■
где каждое di и 6j принадлежат множеству
{О, 1, 2, 3, 4, 5, 6, 7, 8, 9) = Z10, dn Ф О,
исключая случай п = 0. В частности, допускается
бесконечная непериодическая десятичная дробь, хотя нули
перед dn обычно опускают. (Отрицательные числа
представляют ненулевыми положительными числами со
знаком минус.)
Заметим, что индекс отношения эквивалентности р
на множестве А — это количество частей А,
индуцируемых р (число р-эквивалентных классов).
4 Д. Кук, Г. Бей» 4Э
Упражнение 2.4.
1. Доказать, что любое отношение эквивалентности
порождает такое разбиение, что для любых х, у ^ А или
[х] = ДО, или [х] П [у] = 0.
2. Пусть А — конечное множество. Какие отношения
эквивалентности дают наибольшее и наименьшее число
эквивалентных классов?
3. Если Mi, Аг, ,.., A J — разбиение А и А
конечное, показать, что
§ 5. Отношения порядка
Поскольку из понятия равенства (скажем, между
числами) возникает математическое понятие
эквивалентности, некоторые неравенства могут также
использоваться как модели для более широкого класса отношений.
Частичным порядком на множестве А назовем
отношение, которое рефлексивно, антисимметрично и транзи-
тивно. Порядок (называемый также отношением
порядка)— это обобщение отношения < на N. Поэтому
можно легко проверить требуемые три свойства. Заметим,
что мы могли бы в качестве определения взять
отношение <. Тогда отношение порядка было бы только тран-
зитивно. Поэтому свойство транзитивности является
наиболее важным для отношения порядка.
Определив отношение =^, можно определить
отношение < следующим образом:
о < Ь ■«■ а<Ъ и а^Ь.
Аналогично, если задано <, то
а ^ Ъ ■**■ а = Ь или а < Ь.
Пример 5.1. Пусть задано произвольное
множество А. Тогда отношение & на !Р(А) есть тривиальное
отношение порядка. (Х^ X для всех X; если X s У и
Y&X, тоХ = У; ХеУ и Y^Z^X^Z.) И
Отношение порядка р на А называется полным, если
для любых я, у е А или хру, или урх (или же
выполняются оба).
Пример 5.2. Очевидно, что порядок на
подмножествах данного множества не является полным.
Естественный порядок чисел на действительной оси R
является полным.
50
По мере достижения прогресса в изучении
математики становится ясным, что математика не набор
разрозненных идей, а совокупность связанных между собой
концептуальных понятий, которые используются во
многих непохожих друг на друга ситуациях. Отсюда
следует, что, если основной принцип установлен и исследован,
он фактически единым образом решает проблемы для
всех этих различных случаев. Следующий пример
является простой иллюстрацией этой идеи.
Пример 5.3. На основе порядка, определенного яа
N, мы можем формально получить обычные отношения
порядка на множествах чисел Z, Q и R. (Как уже
упоминалось, исследование N будет проведено в § 3 гл. 3.)
Вначале рассмотрим Z. Чтобы облегчить
рассуждения, разобьем Z следующим образом:
Z-NlH0>lM.
Поэтому А = {—х: х s N}. Определим отношение
(которое будем называть полным отношением порядка) на Z
рассмотрением всевозможных элементов х я у из
разбиения Щ U (0> U А).
Если х = у, то х < у и у < х. Пусть х ¥• у. Тогда:
а) если х, г/ е N, то порядок в Z тот же самый, что
и в N;
б) если ж, у&А, то
х ^ у тогда и только тогда, когда —у < —х в N
(т. е. —5 < —4, так как 4 < 5);
в) если х = 0 и у е N, то х < у\
г) если х s А и у ■= 0, то х < у;
д) если ieA и jsN, то х < у или в противном
случае у^ х.
На основе порядка на Z и обычных арифметических
операций с целыми числами мы можем определить
порядок на Q:
a/b < c/d тогда и только тогда, когда а • d ^ Ь » с.
Проверку этого утверждения оставляем в качестве
упражнения. Наконец, определим отношение порядка на
множестве действительных чисел R. Рассмотрим деся-
тичиые представления двух действительных
положительных чисел:
D = ... 0dn... d2did08i62 ...,
С = ...Ос1В...с2С1Со1(ф....
4» 51
Если di^Ci и б* = Y< Для всех I, to D — C и,
следовательно, D<C и C<D. В противном случае:
а) если dn Ф О, ст Ф О и пФ т, то D <С, если га < /га,
и С < Д если /га < га;
б) если га = /га и а\Ф Ct, но dj = Cj для всех / таких,
что i <; < га, то из d* < с4 следует, что D < С, и,
обратно, если с( < А, то С <D;
в) если /га = га и d1 = c1 для всех i, но бц^^» для
некоторых к и 6j = fj для всех / таких, что 0 < j < к, тог-
да С < D, если ^» < б», и D< С, если б* < f».
Читатель может проверить это самостоятельно.
Отрицательные числа могут быть исследованы так же, как
в Z. /
Множество X вместе с отношением порядка ^
называется частично упорядоченным множеством
(обозначается (X, <)). Тогда любой элемент ке(Х, <) такой, что
х < и и у < и, называется верхней границей х и у. Ана-
логично^ если 1е(X, <), 1<х и К у, то 1 является
нижней границей х и у. Множество всех верхних границ
х и у является подмножеством X и упорядочено
отношением <. Если существует единственный наименьший
элемент этого множества, т. е. если существует ц е
е(Х, <) такое, что х < ц, у < \i и ц^ц для любой
верхней границы и, то |i называют верхней гранью
(sup) х и у. Аналогично, если существует единственная
наибольшая нижняя граница х и у, ее называют нижней
гранью (inf) x и г/. Мы отложим изучение верхней и
нижней граней до § 5 гл. 5, где будут изучаться
решетки.
Наконец, заметим, что использование естественного
порядка на R определяет новые множества. Их
называют интервалами:
[а, Ь] = {х: х е R, а < х < Ь}
есть замкнутый интервал (отрезок) от а до Ь;
]а, Ь[ = {х: х е R, а < х < Ъ)
есть открытый интервал от а до Ь. В каждом случае
числа а и Ь называются концевыми точками.
Замкнутый интервал включает в себя концевые
точки, а открытый нет. Удобно также определить
полуоткрытые интервалы:
[а, Ь[ = (х: х s R, а < х < Ь),
]а, Ь] = {х; х е R, а < х < Ъ).
52
для удобства будем использовать следующие
обозначения:
]—°°, а] = {х: х < а),
]—°°, а[ = {х: х< а),
[at оо[ = {х: а < х),
]_оо, oo[=»R.
Хотя интервалы и множества чисел в общем-то не
являются центральной частью нашего рассмотрения, мы
увидим, что их удобно использовать время от времени.
Упражнение 2.5.
1. Пусть А — произвольное множество и р —
отношение на множестве 9>(А)ХЗ>(А), определенное
следующим образом:
(Р, Q)p(X, Y) тогда и только тогда, когда
(PAQ)s(XAY).
Является ли р отношением порядка?
2. Пусть А — произвольное множество и о —
отношение на !Р(А)Х!?(А), определенное следующим
образом:
(Р, Q)a(X, Y) тогда и только тогда, когда
Р s X и Q s Y.
Является ли о отношением порядка? Если да, то
является ли этот порядок полным?
3. Пусть тип — отношения на N2, определяемые
соотношениями:
(о, Ъ)х(с, d) тогда и только тогда, когда а^с и Ъ<d;
(о, b)n(c, d) тогда и только тогда, когда а^с в b>d.
Являются ли т и л отношениями порядка?
4. Пусть л определено на положительных элементах
Q следующим образом:
(alb)n(c, d) тогда и только тогда, когда a* d<b • с.
Показать, что л является полным отношением порядка.
§ 6. Отношения на базах данных и структурах данных
Как уже установлено, все вокруг определяется
отношениями. Достаточно лишь взять отношение s на
переменных (xi, ..., х„) так, чтобы можно было построить
53
множество
{(хь хг, ..., хп): s(xi, х2, ..., х») истинно).
Пусть задан набор (х\, ..., хп). Отношение
s(xi, ..., х„) можно разрешить, т. е. выяснить,
s(xi, ..., хп) истинно или ложно. Конечно, s не
обязательно будет представлено «хорошей» формулой.
Нетрудно показать, что вместо отношения s,
определяющего множество наборов длины п, любое множество таких
наборов также определяет отношение (и
содержательные свойства s). Эти два подхода эквивалентны.
Определение. При обработке данных наборы из
п элементов называют записями; элементы этих
наборов называют полями. Записи, определяющие отношение,
обычно содержатся в файле. Если потребовать, чтобы
несколько файлов содержали совокупность записей,
удовлетворяющих некоторым отношениям, то мы
получим (относительную) базу данных.
Замечание. Для случая обработки данных мы
сейчас употребили термин «поле». В гл. 5 мы будем
употреблять этот термин в математическом смысле, однако
в данном случае это не приводит к недоразумению.
Таким образом, это дает нам первый реальный
пример отношений, которые в большей мере связаны с
вычислениями, в частности, с прикладными задачами. Тем
не менее краткое обсуждение некоторых простейших
свойств баз данных не только обеспечивает основу
дальнейшего математического исследования отношений, но и
проясняет некоторые факторы, понимание которых
необходимо для эффективного управления системами баз
данных.
Современная теория баз данных включает в себя
изучение так называемых нормальных форм, однако
обоснование некоторых из них очевидно лишь в простых
случаях. Мы рассмотрим только три формы для
следующих задач:
— вставить новый набор из п элементов;
— удалить набор из п элементов;
— модифицировать набор, содержащий п элементов.
Начнем с простейшей нормальной формы.
Определение. Файлы в первой нормальной
форме (1NF), или — более просто — нормализованные
файлы, имеют записи фиксированной длины, состоящие из
элементов, взятых из множеств, чьи элементы далее не
могут быть разбиты, и в каждый момент времени этот
54
файл может быть представлен как Массив значений
М X N. Каждая запись, будучи набором из п элементов,
может быть записана как строка массива. /
Пример 6.1. Рассмотрим отношение FAM1 (см.
выше), в котором мы собрали вместе родителей и детей.
Каждая запись содержит в указанном порядке фамилию
и имена отца, матери и детей. Следовательно, мы имеем
ваписи
(Смит, Джой, Джойс, (Сэлли, Бен))е FAM1,
(Браун, Фред, Лиза, (Люси))е FAM1.
Теперь, если мы обозначим через F и М множества
отцов и матерей, то из определения следует, что
Джой(Смит)е F, Джойс (Смит) е Л/,
Фред(Браун)е/7, Лиза (Браун) е Л/.
Таким образом, Люси является членом семьи Браун, но
Сэлли и Бен не являются детьми семьи Смит. Так как
в этой семье более одного ребенка, то соответствующая
вапись больше, и, следовательно, нарушены условия
первой нормальной формы.
Из FAM1 мы можем получить отношение FAM2,
построив его из S, F, М и С, где S — множество фамилий,
а С — множество детей, путем конструирования записей:
(Смит, Джой, Джойс, Сэлли),
(Смит, Джой, Джойс, Бен),
(Браун, Фред, Лиза, Люси).
Отношение FAM2 находится в 1NF и может быть
представлено при помощи табл. 2.1.
Таблица 2.1
Фамилия
Смит
Смит
Браун
Отец
Джой
Джой
Фред
Мать
о о
о о ж
Ребенок
Сэллн
Бен
Люси
Однако не совсем ясно, что будет, если, например,
супруги Джонс не имеют детей? Если мы хотим иметь
в файле запись о них, то следует пересмотреть
структуру файла. Это означает, что все следует начать сначала.
Введем следующую терминологию.
55
Определение. При использовании таблицы для
изображения отношения (файла с га-мерными
наборами/записями, записываемыми в виде строк) столбцы
называются атрибутами. //
Следовательно, ФАМИЛИЯ, ОТЕЦ, МАТЬ и
РЕБЕНОК являются атрибутами различных полей в FAM2.
Для получения доступа к записям в файле
используются так называемые ключи. Более точно это может быть
определено в терминах атрибутов.
Определение. Атрибут или (упорядоченное)'
множество атрибутов, чьи значения однозначно
определяют вапись в файле, называются ключом этого файла.
(Заметим, что в файле может быть много различных
ключей.) /
Каждый ключ отношения/файла FAM2 должен
включать атрибут РЕБЕНОК.
Перейдем к другим примерам.
Пример 6.2. Каждый владелец компьютера
должен покупать к нему запасные части. Поэтому мы
можем рассмотреть файл, структура которого показана в
табл. 2.2,
Т а б л ж д а 2.2
КОМПАНИЯ
АСЕ
IBL
DATAMETZ
PRINTACO
WOOLIES
RTX
OXONDATA
ОТДЕЛЕНИЕ
LONDON
LONDON
BIRMINGHAM
MANCHESTER
BIRMINGHAM
LONDON
OXFORD
МЕНЕДЖЕР
SMITH
JONES
JONES
BROWN
BROWN
SMITH
WILSON
Атрибут КОМПАНИЯ является ключом в SUP1;
вся другая информация в файле доступна при
посредстве ключа. Таким образом, например, можно извлечь
атрибут ОТДЕЛЕНИЕ при помощи ключа WOOLIES или
же МЕНЕДЖЕР из RTX. /
Определение. Если запись локализована с
помощью некоторого ключа, то поле, выделяемое из этой
записи, называется проекцией. В данном контексте
проекцией является «из». Будем также говорить, что эти
атрибуты аависят от ключа. И
56
На рис. 2.7 представлен графический пример
зависимостей в SUP1.
Пример 6.3. Модифицируем файл SUP1 с целью
включения туда информации об имеющихся на складе
запасных частях и об их количествах, которые отдельный
^_^г МЕСТО РАСПОЛОЖЕНИЯ
КОМПАНИЯ
МЕНЕДЖЕР
Рис. 2.7
поставщик желает продать в отдельной сделке.
Включим в файл также код поставки, из которого мы можем
выяснить скорость и частоту поставок. Во избежание
излишней детализации введены номер компании и
номер запасной части (табл. 2.3). II
Таблица 2.3
КОМПАНИЯ
1
1
1
2
2
3
3
3
5
5
6
МЕСТО
РАСПОЛОЖЕНИЯ
LONDON
LONDON
LONDON
LONDON
LONDON
B'HAM
B'HAM
B'HAM
B'HAM
B'HAM
LONDON
ПОСТАВЩИК
2
2
2
2
2
4
4
4
4
4
2
ЗАП.
ЧАСТЬ
1
2
3
2
4
2
3
4
1
3
1
КОЛИЧЕСТВО
10
1
10
2
5
2
10
4
10
10
10
Из табл. 2.3 выясним, какие преобразования мы
можем делать с SUP2, а какие нет:
а) вставка. Например, мы не можем добавить в файл
запись, указывающую, что компания 4 (PRINTACO)
находится в Манчестере, без указания деталей, которые
она может поставлять;
б) удаление. Если компания 6 (RTX) прекратила
поставки запчастей 1, тогда мы обязаны удалить все
записи, относящиеся к этой компании и имеющие в
поле ЗАП. ЧАСТЬ код 1;
«7
в) модификация. Если код поставщика для Лондона
изменился, например, из-за транспорта, то
соответствующее поле должно быть изменено в каждой записи, где
есть код LONDON в поле МЕСТО РАСПОЛОЖЕНИЯ.
Что можно сделать для того, чтобы уменьшить или
отодвинуть эти проблемы? С практической точки зрения
мы должны выделить информацию в SUP2 так, чтобы
по возможности избежать повторений. Таким образом,
Таблица 2.4
SUP3
Таблица 2.5
КОМПАНИЯ
1
2
3
5
в
МЕСТО
ПОЛОЖЕНИЯ
LONDON
LONDON
B'HAM
B'HAM
LONDON
ПОСТАВЩИК
2
2
4
4
2
ПАНИЯ
1
2
3
4
5
6
МЕСТО
РАСПОЛОЖЕНИЯ
LONDON
LONDON
B'HAM
M'CHESTER
B'HAM
LONDON
СТАВЩИК
7
7
4
3
4
7
ЗАП. ЧАСТЬ
КОМПАНИЯ
1
1
1
2
2
3
3
3
5
5
6
ЗАП.
ЧАСТЬ
1
2
3
2
4
2
3
4
1
3
1
КОЛИЧЕСТВО
10
1
10
2
5
2
10
4
10
10
10
ЗАП. ЧАСТЬ
КОМПАНИЯ
1
1
1
2
2
3
3
3
5
5
ЗАП.
ЧАСТЬ
1
2
3
2
4
2
3
4
1
3
КОЛИЧЕСТВО
10
1
10
2
5
2
10
4
10
10
мы получаем возможность вставки/удаления части вапи-
си в SUP2. Возможное и, на наш взгляд, разумное
разделение дается в SUP3 (табл. 2.4). Тогда остаток
информации в SUP2 может содержаться в поле
ЗАП.ЧАСТЬ. Используя эту конфигурацию, можно,
например:
а) включить в SUP3 запись, означающую, что
компания 4 находится в Манчестере (код поставщика 3);
68
б) удалить ссылку на компанию 6 как на
поставщика запчасти 1, но оставить соответствующий код в SUP3;
в) изменить код поставщика для LONDON на 7
путем вамены только трех входов, соответствующих
компаниям с кодом 1, а не всех шести.
Результаты этих изменений приведены в табл. 2.5.
Это уже значительно лучше, однако все же может быть
КОМПАНИЯ
МЕСТО РАСПОЛОЖЕНИЯ
^ ПОСТАВЩИК
SUP3
КОМПАНИЯ
ЗАП. ЧАСТЬ
КОЛИЧЕСТВО
ЗАП. ЧАСТИ
Рис. 2.8
еще усовершенствовано. Чтобы увидеть, в каком
направлении продолжать исследования, отделим ключи и
подчиненные части (рис. 2.8). Заметим, что ЗАП. ЧАСТЬ
требует объединенного ключа.
Все не-ключи непосредственно связаны с ключом.
Это дает нам следующее свойство нормальной формы. II
Определение. Файл имеет вторую нормальную
форму (2NF), если он имеет форму 1NF и неключевые
атрибуты полностью независимы от ключа. /
Пример 6.3 (продолжение). Файл SUP3 все еще
является достаточно сложным в том смысле, что для
данной записи ПОСТАВЩИК может быть установлен при
помощи исследования поля КОМПАНИЯ или же поля
МЕСТО РАСПОЛОЖЕНИЯ. Это является причиной
того, что в требовании а) код поставщика для Манчестера
должен быть вставлен перед записью кода 4 компании,
а требование б), возможно, потребует изменить более
одной записи для модификации единственного поля дан-
пых, относящегося к коду поставщика. На практике мы
можем убрать эту проблему проектированием SUP3 в
SUP4 и DEL (табл. 2.6). (Заметим, что коды
поставщика, изменяемые таким образом, препятствуют той
возможности, что любые другие записи в файле вызывают
противоречивую информацию. В SUP3 можно иметь
запись вида «ПОСТАВЩИК КОМПАНИИ 6-2» и «ПО-
59
СТАВЩИК КОМПАНИИ 1-7» на некотором этапе
модификации SUP2, несмотря на тот факт, что обе
компании находятся в Лондоне.)
Зависимость отношений в SUP4 и DEL изображена
на рис. 2.9. /
Нетранзитивность отношения зависимости является
внутренним свойством, из которого возникает понятие
третьей нормальной формы.
Таблица 2.6
КОМПАНИЯ
1
2
3
4
5
в
МЕСТО
РАСПОЛОЖЕНИЯ
LONDON
LONDON
B'HAM
M'CHESTER
B'HAM
LONDON
МЕСТО
РАСПОЛОЖЕНИЯ
LONDON
B'HAM
M'CHESTER
ПОСТАВЩИК
7
4
3
Определение. Файл находится в третьей
нормальной форме (3NF), если оя является файлом 2NF, и
каждый атрибут, не являющийся ключом, нетранзитивным
образом зависит от ключа. /
Возможен и другой путь — каждый атрибут, не
являющийся ключом, зависит только от ключа и ни от
чего другого.
Как было отмечено ранее, существует много других
«нормальных» форм, но мы не ставим изучение файлов
КОМПАНИЯ
МЕСТО РАСПОЛОЖЕНИЯ
SUP4
МЕСТО РАСПОЛОЖЕНИЯ
ПОСТАВЩИК
DEL
Рис. 2.9
своей целью в дальнейшем. Достаточно лишь иметь в
виду, что информация в файлах является одной из
реализаций математического понятия отношения.
Практическое использование отношений SUP4 и DEL
требует явной связи атрибута МЕСТО
РАСПОЛОЖЕНИЯ файла SUP4 с атрибутом МЕСТО
РАСПОЛОЖЕНИЯ файла DEL. Это — отношение эквивалентности
60
(между компонентами различных файлов, имеющих одно
и то же имя). Подобные отношения эквивалентности
могут быть использованы для определения внутренних
связей и других структурных данных. В качестве
иллюстрации рассмотрим рис. 2.10. Диаграмма на рис. 2.10, а
а
1
2
3
4
5
2
а
3
*
Ъ
S
0
с
0
а
d
0
0
е
0
1
г
3
4
5
0
е
. 0
5
Ъ
3
0
в
0
2
а
г
0
d
0
Рис. 2.10
изображает дерево, диаграмма на рис. 2.10, Ь подобна
диаграмме структурных данных, а диаграммы на
рис. 2.10, с и d описывают их возможные применения.
Отметим, что отношения эквивалентности различны, но
результирующие структурные связи сохраняются. С
математической точки зрения это является разбиением на
классы эквивалентности. Следовательно, мы можем
определить произвольное представление этого дерева как
элемент множества Т — DIE, где
£) = {а = (ж, а, р), Ь=*(у, b,z), c = (u, с, v),
d=(9, d, г), e=(s, e, t)),
Е = {(х, Ь), (y,d), (p,c), (2, е)>.
Эти вопросы будут обсуждаться в § 4 гл. 3.
61
§ 7. Составные отношения
Подобно тому как мы устанавливали внутренние
связи в файлах, для выделения некоторых данных из
информации (например, ПОСТАВЩИК и МЕСТО
РАСПОЛОЖЕНИЯ 3 посредством файлов DEL и SUP4 в
примере 6.3) часто приходится связывать бинарные
отношения друг с другом. Руководствуясь предыдущими
рассуждениями, можно определить это понятие
следующим образом.
Определение. Пусть заданы множества А, В а С
и отношения о между А и В и р между В и С.
Определим отношение между А и С следующим образом: опо
действует из А в В посредством о, а затем из В в С
посредством р. Такое отношение называют составным и
обозначают р ° о, т. е.
(р«о)(а)-р(о(а)>. /
Следовательно, (х, #)s(p°a), если существует zsfl
такое, что (х, z)&o и (г, у)^р. Отсюда следует, что
S>po0 = а~х3)(,. Чтобы проиллюстрировать ситуацию,
рассмотрим рис. 2.11. Области определения и значений о и
Рис. 2.11
р заштрихованы в разных направлениях. Следовательно,
сегменты с двойной штриховкой на А, В и С
представляют собой iZ>Po0, 2DP Л 5?0 и Ухрод соответственно.
Замечание. Из записи отношений о и р следует,
что они применяются справа налево. Следовательно,
(р ° о)(а) означает, что вначале берется а и
преобразуется посредством о, а затем преобразуется посредством
р. В алгебре это иногда записывают в виде аор.
Следует обращать внимание при чтении других
математических книг на то, какой порядок выполнения отношений
принят в той книге.
62
Пример 7.1. Пусть о и р — отношения на N такие,
что
а = {(х, х+1): х^т, p = {(z2, x): leN},
Тогда
2), = {i!:isN), 2)„ = ki,i+leN}=N,
= {z: z<= N и x + 1 = #2, где yeN) = (3, 8, 15, 24, ...}
(рис. 2.12). //
В случае, когда мы рассматриваем отношение на
множестве, оно может быть скомбинировано само с
собой. Например, используя отношения из примера 7.1,
имеем
о°о = {(х, х + 2): ieN) и р ° р = { (я4, х): а; е N).
Эти отношения можно также обозначать соответственно
о2 и р2. В общем-то эти обозначения не совсем законны
для множеств, однако их легко можно обосновать,
поскольку если (х, у)<^о°о, то ((я, г), (г, у))^аХа
при некотором г; никакого недоразумения при этом пе
возникает, поскольку известна структура получаемого
результата.
Используя это обозначение, мы можем определить о"
для любого neN,n>l, следующим образом:
о" — {(х, у): xaz и zan~ly для некоторого г}.
Если мы вновь возьмем отношения о и р из примера 7.1,
то получим
оп = {(х, х + п), ieN) и рп*={(х*п,х): ieN}.
Хотелось бы рассмотреть вопрос о том, насколько в этих
63
случаях применима аналогия с умножением. Пусть А —
множество, a Я — отношение на А. Тогда отношения
/а • Я, Я и R ° 1а эквивалентны; поэтому 1А является
тождественным отношением на А, которое ведет себя
подобно числу 1 по отношению к умножению чисел.
Чтобы дополнить аналогию, желательно было бы иметь
возможность писать Я-1 °Я =/А = Я ° Я-1. Однако в
общем случае этого делать нельзя. Для того чтобы иметь
такую возможность, необходимо наложить
дополнительные условия, которые мы рассмотрим в
следующей главе.
Рассмотрим теперь несколько упражнений. Они
изображают ситуации, которые «легко описать» в
математических терминах, однако следует заботиться о том,
чтобы в отношение включались только те пары, которые
ему принадлежат. Мы обнаружим, что иногда полезно
воспользоваться диаграммами.
Упражнение 2.6.
1. Пусть R и S определены на Р, где Р —
множество всех людей, следующим образом:
Л =*{(£, у): х, у^Р и х является отцом у},
S — ((ж, у): х, у е Р и х — дочь у}.
Описать явно следующие отношения:
а) Я2; б) S2; в) R°S; г) 5»Я;
д) S • Я"1; е) Я"1 • S; ж) Я"1 • S~u,
a) S-1' Я; и) S-1 • 5"1; к) 5"1 • Я"1.
§ 8. Замыкание отношений
Понятие замыкания является фундаментальным
математическим понятием и используется в большинстве
разделов математики. Чтобы проиллюстрировать это
понятие, рассмотрим следующий пример.
Возьмем объект хо и процесс р, который порождает
множество и определяет последовательность ал, жг, ...
..., хп, ... такую, что
Х\ ep(io),
x2<Bp(xi),
хп e?(i»-i),
64
Множество, содержащее все элементы всех
последовательностей, которые могут быть выведены при помощи
р, и начинающиеся с хо, называется замыканием
процесса р относительно хо. Поэтому «ответ» будет
содержаться в рп(хо) при некотором п. Однако мы не знаем
заранее значение п. Более того, если мы возьмем
произвольный элемент у из этого замыкания и выполним процесе
р, начиная с у, то не получим ничего нового. Результат
уже содержится в замыкании. Множество не может
быть расширено таким путем (оно замкнуто).
Пример 8.1. Возьмем квадрат S, размеченный, как
это показано на рис. 2.13, и определим процесс г
следующим образом. Из заданного положения S процесс г
порождает множество всех положений, получаемых в
результате поворота по часовой стрелке на прямой угол.
А В D л
в с с в
Рис. 2.13 Рис. 2.14
Таким образом, г (5) дает конфигурацию, изображенную
на рис. 2.14. После применения г четыре раза, мы
вернемся к положению, с которого начали, и,
следовательно, замыкание в данном случае есть множество из
четырех позиций.
ГА В D A CD ВС]
] □, □, □, П .//
Id с с ву в л a d)
Рассмотрим теперь, что произойдет, если процесс
определить при помощи отношения. (В действительности
это всегда возможно, потому что мы можем определить
подходящее отношение при помощи множества {(х, у):
уер(х), где р — изучаемый процесс).) Для построения
замыкания отношения А достаточно иметь составные
отношения А, А2, ..., Ап, ..., которые затем
комбинируются обычным теоретико-множественным путем.
5 д. Кун, г. вейз 65
Определение. Транзитивным замыканием (или
просто замыканием) отношения А на множестве
называется бесконечное объединение
U An = A (J A2 (J Л3 (J ...7/
Транзитивность замыкания отношения следует,
очевидно, из его определения, однако слово «транзитивное»
часто включают, чтобы подчеркнуть различие между
этой и подобной ей операцией, которая вскоре будет
определена. Транзитивное замыкание отношения А
обозначают А*.
Пример 8.2.
1. Пусть R — отношение на N такое, что R ■»
-{(*| У)- V-x+lh Тогда Д+ = {(х, у): х<у).
2. Пусть о —< отношение на Q такое, что о =
= {(х, у): х<у). Тогда о+ «= о.
3. Пусть р — отношение на Q такое, что р «=»
•={(х, у): х«у = 1}. Тогда
р*{(х, х): х-5*0} Uр.
4. Пусть L — множество станций Лондонского метро
и а, 6 и с — последовательные станции. Если отношение
N на L определено как JV ■■ {(x, у): х является
следующей за у станцией), то (а, Ь) п (Ь, с)е N и (а, а),
(Ь, Ь), (с, с) и (а, с)б^, Следовательно N+ = C/i,«»
= LXL. /
Из этих примеров легко видеть, что замыкание
отношения в общем случае не является рефлексивным.
Однако иногда удобно сделать его таким. Это можно легко
сделать. Вначале мы примем удобное допущение, что
тождественное отношение на X, /=*{(х, х): х&Х)
является нулевой степенью произвольного отношения на
X. Таким образом, А° = I для любого А.
Определение. Рефлексивным замыканием А*
отношения А называют множество
А* - О Ап,
Замыкания отношений связаны между собой очевидным
соотношением
A* "A* U/. /
ев
Пример 8.3. Используя отношения, определенные
в предыдущих примерах, получаем
/?* = {(*, у): x<y}t 0* = {(х, у): х^у),
p* = p+U{(0, 0)>, N*-N*. II
Практические методы получения замыканий
отношений будут обсуждаться в гл. 6, 7.
Упражнение 2.7.
1. Используя отношения R п S упражнения 2.6,
описать замыкания следующих отношений:
а) Л+; б) S*; в) Л*; г) 5*;
д) (5»5-')+;е) (Д-1.Д)*;ж) (52«Д2)+.
б«
ГЛАВА 3
ФУНКЦИИ
Понятие функции может быть уже известным
читателю, однако в этой главе мы будем рассматривать
функции как множество бинарных отношений.
Собственно, будет дано определение функции и близкого к ней
понятия отображения и изучены различные свойства,
которыми они обладают. Затем функции будут
использованы для того, чтобы формализовать процесс вычислений
и дать определение мощности множества. В заключение
будут рассмотрены конкретные функции,
представляющие особый интерес, и функции, которые удобно
определить с помощью операторов.
§ 1. Функции и отображения
Определение. Бинарное отношение р между
множествами А и В является функцией, если из apb и
аре следует, что Ь = с; поэтому для любого х е А
существует одно j/efi такое, что хру. Можно дать
определение функции следующим образом:
p(z)=0 или р(я)={#}. /
Следует помнить, что если р(х) существует (т. е.
р(х)Ф^), то этот элемент единствен. В случае, когда
р(х)¥*0, обычно опускают скобки при обозначении
множества и записывают
# = р(х).
Функции обычно обозначают строчными латинскими
буквами /, g, h, ... или в специальных случаях особыми
сочетаниями, например sin, log, Fn, ... Если /—функция
между множествами А и В, то этот факт может быть
записан как /: А-*-В. В дальнейшем, если х&А и xjy,
мы будем обозначать, это соотношение следующим
образом:
/; х >-* у.
68
Это обозначение часто используют для того, чтобы
описать правило, определяющее функцию (если оно
существует).
Пример 1.1. Функция /: А -*■ А, где А •= {—1, 0, 1),
определяется соотношением /: х ь* х3. //
Даже когда / не является отображением (см. ниже),
мы часто будем использовать фразы типа «/ отображает
х в х3». Понятия области определения и области
значений в данном случае содержательны, поскольку функция
является отношением, однако следует заметить, что
обратная функция может не существовать.
Пример 1.2. На множестве { — 1, 0, 1} отношение /:
х*-* х2 является функцией, но обратной функции не
существует, поскольку/~'(1)= {—1, 1}. /
Определение. Функция /: А -*■ В является
отображением, если ее область определения совпадает с А,
т. е. Й9/«=Л. Функции, не являющиеся отображениями,
называют частичными. Отображение на множество
называют трансформацией (преобразованием).
Замечание. Часто терминология отличается от
принятой в этой книге, особенно в американских книгах.
Термины «функция» и «отображение» иногда
используют как синонимы, а отображение в том смысле, как мы
его определили, называют полной функцией.
Конечно, каждая функция может рассматриваться
как отображение на своей области определения; иногда
это полезно, когда строятся сложные функции. Как мы
увидим в последующих параграфах, исследовать
свойства функций легче в тех случаях, если на функцию
наложить некоторые условия.
Функция /: А -*■ R называется функцией,
принимающей действительные значения, а функция, область
определения которой совпадает с R, называется
вещественной.
Рассмотрим ограничения, которые помогут нам
понять, что происходит с отдельными элементами в
результате применения к ним функций. Будем
заниматься классификацией функций, определенных на
множествах, и предполагать, что мы имеем мало информации об
этих множествах. Далее будут рассмотрены функции на
множествах, где определены такие операции, как
сложение.
Определение. Функция /: А -*■ В называется
сюръективной (на), если $2,,=*В. Это означает, что для
данного бе В имеем f~l(b)¥'0. Функция /: А •*■ В яв-
69
ляется инъективной, если из а\, й^&А и }(й\)=*}(аз)
следует, что а\ = а^. II
Итак, если /: А -* В и / сюръективна, то для любого
Ь«=В имеем }~1(Ь)& &(А)\0. Это может быть
проинтерпретировано следующим образом: каждая точка из В
является «острым концом» по крайней мере одной
/-стрелы, выходящей из А. Проиллюстрировать эту ситуацию
достаточно трудно (исключая тривиальные случаи).
С другой стороны, наглядную характеристику инъек-
тивности легко дать в виде ограничения или запрета.
Рис. 3.1
Функция / не инъективна в случае, изображенном на
рис. 3.1, а.
Для сравнения на рис. 3.1, Ъ изображено зеркальное
отражение, которое отличает функцию от бинарного
отношения.
Если /: А -*■ В инъективна и ss^,, то а = /~'(/(а)).
Далее, если Ъ е Sflu т. е. Ъ е SDf-i, и в данном случае
1~1 — функция, то b = }(f-l(b)).
Следовательно, если мы определим функцию 1Х: X -»•
-*■ X как тождественное отображение на X, т. е. Ix' x **
>-*х для всех isX, тогда, если / инъективна, то
ГЧ = 1®, и /-Г1-^.
Используя функцию / из примера 1.2, мы видим, что
/~!(/(!)),* ■!• Это означает, что первое из этих тождеств
в общем случав неверно, однако, как мы увидим в § 2,
вычисления становятся гораздо легче в случаях, когда
оба тождества имеют место. Прежде чем продолжить
изложение, обсудим терминологию, объединяющую
введенные выше свойства. Функция / биективна, если она
сюръективна и инъективна. Биективное отображение
называют биекцией. Следовательно, используя биекцию /
между А и В, можно брать элементы из Л и переходить
в В посредством /, осуществляя некоторые вычисления,
Переход назад к А осуществляется посредством /"',
70
Термины инъекции и сюръекции также
применяются (для описания инъективного и сюръективного
отображений), однако мы редко будем их использовать.
Упражнение 3.1.
1. Какие из указанных ниже отношений на
множестве {—10, —9, ..., 0, 1, ..., 9, 10} являются
функциями? Дать противоречащие примеры в случаях, когда
отношение не является функцией. (В 3.1, 1г) отношение
порядка ^ является отношением, индуцированным Z.
В 3.1, 1а)—к) \х\ определяется следующим образом:
\х\ = х, если х "5* 0, и \х\ = — х, если х < 0.)
a) Pt = {(z, У): х = у2)\ б) р2 = {(х, у): х2=*у)\
в) рз = {(я, у): х = —у); г) P4 = {(z, ij): x<y);
д) p5 = {(z, у): х* y=*Q);
е) р6=°{(х,у): х3 = у}; ж) рт = {(х,у): х=*уг);
в) P8=*{(z, у): х<=\у\); и) p9 = {(z, у): \х\ = \у\);
к) р\о*~ 1(х, у): у * \у\ •= х * \х\).
2. Построить функцию /: А -*■ А, где А = (0, 1}, не
имеющую обратной.
3. Какие из следующих функций являются
отображениями:
~ определяется
следующим
определяется следующим
определяется следующим
образом:
образом:
образом:
а) / на R
{(х, х*): геШ;
б) / на R
{(xs, x): ieR};
в) / на R
{(х, хг): igR};
г) / на R, /: х >-* sin (x);
д) / на R, /: х>-* 1/х;
е) / на Q, /: х >-► arcsin x;
ж) /: А-*-!Р(А) определяется следующим образом:
/: х<-*{х}\
в) /: &(А)->-А определяется следующим образом:
/ =» {(х, у): yeifl ia)}, где а — фиксированный
элемент из Л?
4. Пусть /:. А -*■ В и g: В -*■ С — отношения. Что
является областью определения g°f:
а) когда fug — функции;
б) когда / — функция, g — отображение;
в) когда/— отображение, a g —функция;
г) когда fug — отображения?
5. Доказать, что если функция / инъективна, то су^
ществует /"'.
6. Если функция / сюръективна, следует ли отсюда,
что /"' — отображение?
71
7. Построить пример, показывающий, что функция на
А — {— 1, 0, 1), определенная как /: х>-*х2, такова, что
rl'f + U.
8. Пусть /: А -*■ В и g: В -*- С — функции. Доказать,
что:
а) если fag инъективны, то g ° / инъективна;
б) если / и g сюръективны, то g ° / также сюръек-
тивна.
9. Пусть /: А -*■ В и g: В -*- С — функции и g сюръ-
ективна. Достаточно ли этого, чтобы обеспечить сюръек-
тивность g°/?
§ 2. Обратные функции и отображения
Используя результаты, полученные в предыдущем
параграфе, исследуем сложные функции. Пусть дана
функция /: А -*■ В; в этом случае f~l является функцией
тогда и только тогда, когда / инъективна, а
отображением тогда и только тогда, когда / биективна. В
большинстве рассматриваемых нами случаев / — биекция; тогда
/"' — также биекция, а функции f~l«/ и /e /-1
являются тождественными отображениями.
Рассмотрим функции /: А -*• В и g: В -*■ С. Тогда:
а) если fag инъективны, то существует g • /;
б) если fag сюръективны, то также существует
g'f (см. упражнение 3.1, 8).
Обратным отношением к g • / является /-J»g~l.
Порядок должен быть обратным, как указано на рис, 3.2.
Заметим, что если g — отображение, т. е. &s = В, то
&f s 3)t и, следовательно, SDg»t — &g- Аналогично, если
52/ 2 £Dg, то №gef — 9tg. Если fag инъективны, то
существует g ° /; следовательно, /-1 ° g~x — функция.
Суммируя вышесказанное, имеем: из Sti — S)t следует, но
72
g'f: 2>t -*■ 9lt — отображение; если / и g также инъек-
тивны, то /"'»f-'; 9lg -*■ 5DS — биекция. Очевидно, что
эти критерии выполняются, если / и g — биекции.
Упражнение 3.2.
1. Пусть /: А -*■ В и g: С -*■ В; показать следующее:
а) если / сюръективна и g — отображение, то
Яг-i., = С;
б) если / и g — биекции, то (g~l ° /)-1 = /"' а g;
в) если 91а s Я,, то (/ ° /-1 ° g) С = Яа.
§ 3. Мощность множеств п счетность
Мы почти подошли к тому моменту, когда
появляется возможность использовать понятие биекции для
формализации понятия мощности и процесса вычислений.
Вычисление важно не только само по себе, но также и
потому, что функция является вычислимой тогда и
только тогда, когда связанное с ней множество счетно.
Вначале дадим определение множества N. Чтобы прояснить
наши намерения, заметим, что любое число (1, 2 и т. д.)
может быть использовано двумя различными способами:
как существительное или как прилагательное, дающее
номер другого существительного. Мы будем
рассматривать числа как существительные.
В качестве предварительного определения N
положим
N-{l)U{n+l: веШ.
Из этого рекурсивного определения следует, что 1 е N,
и если к произвольному элементу из N прибавить 1, то
полученный результат также принадлежит N. Следова*
тельно, N содержит 1, 1 + 1 (=2), 2+1(=3), 3+1(=4)
и т. д.
К сожалению, это определение неприемлемо по
причинам, которые будут рассмотрены ниже. Тем не менее
эдесь есть несколько важных моментов. Например, так
как N (по крайней мере интуитивно) бесконечно, то мы
должны иметь механизм, при помощи которого можно
конструировать последующие элементы из конечного
множества,— другими словами, никогда не сможем
написать точное представление N. Мы также должны
придумать имя числу, которое называем «один», и аналогично
для «два» (сокращение 1 + 1), «три» в т, д. Конечно,
73
мы могли бы выбрать любые имена или символы для
этой цели, однако было бы неправильно использовать
неудобные обозначения. Перейдем теперь к недостаткам
данного определения. Проверка его обнаруживает, что
оно содержит два новых символа: «1» и «+»; остальные
символы известны из построения множеств. Символ «1»
можно объяснить вышеуказанным способом. Однако сим-
вол «+» означает операцию на N и, следовательно, не
может быть использован для определения N. (Операции
будут определены в § 6.)
Чтобы выйти из этого затруднения, вернемся к
основам теории множеств. Напомним, что нам нужно было
построить число, которое на 1 больше максимального из
всех предшествующих чисел. Легко получить
аналогичный процесс для множеств (называемый построением
сверхмножества с количеством элементов на 1 больше,
чем в данном множестве).
Пример 3.1. Пусть А = {х, у, г) и В = {х, у, г, А).
Тогда А^В и А<=В, поэтому В\А = {А} и имеет
только один элемент. II
Эта конструкция может быть перенесена на
произвольное множество. Начиная от множества X, мы можем
определить последующее множество (обозначается Xе):
X9 = X U {X). Чтобы использовать этот процесс для
построения N, требуется некоторое начальное множество.
Выберем в качестве такого множества (0). Оно имеет
один элемент. (Многиэ авторы начинают с 0, Это
порождает множество (О) U N. Мы не считаем 0
натуральным числом, и в этом причина такого выбора
начального элемента. Не существует универсального условия по
отношению к 0 и N. Всегда следует проверять условные
обозначения, принятые в других книгах, при обращения
к. ним.) Из {0} создадим последовательности {0}:{0}в=»
= {0, (0}}, {0}»* = {0, {0}, {0, {0})} и т. д. Это
приводит к прогрессии, которая является более
привлекательной, чем 1, 1 + 1, 1 4- 1 + 1, ..., по крайней мере ее
конструкция является строго определенной. Чтобы
навести порядок в вышесказанном, выберем временно
имена для этих множеств.
Переименуем {0} как 1, Iе как 2, 2® как 3 и т. д.
Тогда
1 - {0},
2 - {0, 1),
3-{0, 1, 2), ...
74
Поэтому, например, множество 3 имеет три элемента.
Чтобы избежать неточности, давайте снова изменим обо-
вначения и определим множества
Nm-m»\{0}«={l, 2 m>,
N = NJU(Nm9: meN).
Тогда из определения следует, что |Nm|=m (число т)
и что если о, Ь s N, то о < Ь тогда и только тогда, когда
N„ s N4. Поэтому наша вера в упорядоченность N
формально обоснована. Итак, множества N и N, (для
каждого nisN) определены и могут быть использованы в
дальнейшем. Введем некоторые понятия.
Определение. Два множества биективны
(обозначается X ~ У), если между ними существует биек-
ция. Непустое множество конечно, если оно биективно
некоторому Nm. (meN), Если X ~ Nm, то мощность
множества (обозначается 1X1) равна т. (Числа в
данном случае используются как прилагательные.
Например, если Р — множество всех людей и ХеР таково,
что X ~ Nm, то X есть множество из т людей.)
Напомним, что пустое множество 0 биективно только по
отношению к себе, является конечным и имеет мощность О,
т. е. |0|=О.
Говорят, что множество счетно, если оно биективно
N. Символ Ко (алеф-нуль) часто используют для
обозначения мощности N. Множество называется счетным,
если оно конечно или счетно, и может быть сосчитано с
использованием биекции /: N -»- X, если X счетно, или
биекция /: Nm -*■ X, если 1X1 = тп, или /: 0 -*■ X; £-й
элемент X является образом i отображения /. /
Перед тем как установить несколько полезных
результатов, отметим одно существенное свойство
множеств и биекций: отношение о, определенное на
множестве 5 посредством
о = ((Х, У): Х~ У),
является отношением эквивалентности, а подмножества
S, входящие в классы эквивалентности, состоят из
множеств, имеющих одипаковую мощность. Следовательно,
чтобы продемонстрировать тот факт, что два множества
имеют один и тот же размер, требуется построить
биективное отображение между ними.
75
Пример 3.2. Покажем, что INI ■= IZI. Отображение
1~п, если га нечетно,
га/2 в противном случае
является биекцией между N и Z. /
В предыдущем примере греческая буква if>
использовалась для обозначения биекции. Использование
греческих букв q>, if>, зс> • • • Для обозначения произвольных
биекции является общепринятым в текстах по логике и
будет здесь использоваться в этом контексте (среди
других). Однако, чтобы не было путаницы с пустым
множеством 0, мы будем избегать использования этих букв в
этом параграфе.
Пример 3.3. Покажем, что INI — IQI. Это требует
несколько более сложных рассуждений. Вначале
рассмотрим счетное количество копий N, каждая из них
соответствует своему номеру га s N. Мы можем записать
это множество как N X N и упорядочить его элементы,
как указано на рис. 3.3, Такое упорядочивание является
Рис. 3.3
биекцией NXN-+N, задаваемой отношением (х, у) ь+
"-»- 2— ' + у" Каждый положительный
элемент Q может быть связан с дробью (р, q), где р и q
взаимно простые, и связан с элементом (р, q)
множества NXN естественным образом, Поэтому, записывая
Т — (ж: х s Q, х > 0>,
получаем
lfl*lNXNl-lN|,
(Использование отношения «<» между этими
бесконечными числами не обосновано, Соотношение \А\ < \В{
76
следует читать как «А биективно подмножеству 5».
Доказательство неочевидного факта, что это отношение
является отношением порядка-, лежит за пределами этой
книги.) С другой стороны, каждое psN может быть
представлено как р/1 и, следовательно, связано с парой
(р, 1). Поэтому |N| < |TI «S |N|, откуда следует, что
ITI = iNl. Для достижения нашей цели существенно
сказать следующее. Возьмем диагонально упорядоченное
множество N X N (см. рис. 3.3) и выбросим из него
пары, имеющие нетривиальный общий множитель. Это
дает метод нумерации элементов Т, однако трудно дать
формулу, которая связывала бы элементы Т с
элементами N. Теперь мы должны повторить наше рассуждение
применительно ко всем радиационным числам. Это
можно сделать несколькими способами. Выберем для
наглядности следующий. Расширяя уже полученное
соответствие между Г и N X N до оператора между Q и Z X N,
получаем
|Nl = lZ|<IQI<|ZXN|~|NXN|-|N|,
что дает требуемый результат. Построение биекции
между Z X N и N X N оставляем в качестве
упражнения. /
Предыдущий пример несколько длинен, однако при
его рассмотрении возникло несколько важных моментов,
которые мы сейчас отметим.
1. Если 5 конечно и х: S -* S — инъективное
отображение, тогда х биективно.
Доказательство. Пусть выполнены условия
утверждения. Если S = 0, то требуемый результат
тривиален. Если S Ф 0, тогда существует биекция т|з: Nm -»- S
для некоторого тп е N и отображение т|г' • х " ^ инъек-
тивно: Nm -*■ Nm и, следовательно, является биекцией.
(Доказательство этого факта оставляем в качестве
упражнения.) Основная идея заключается в
переупорядочивании тп объектов и известна под названием
«принцип раскладывания по гнездам». Даны тп гнезд, каждое
в своем ящике. Любая схема переселения, при которой
в одном ящике может быть не более одного гнезда,
должна использовать все тп ящиков, т. е. т|г' • % ° т|з
является перестановкой Nm (рис. 3.4). Однако т|з —
биекция; следовательно, % • т|з и % также биекции. (Обратно,
если %: S -*■ S не сюръективно, то 5 должно быть
бесконечным.)
77
2. Множество N бесконечно, так как отображение на
N, определенное какп++п + 1, инъективно, но не
биективно (нет элемента, отображающегося в 1).
Следовательно, обращая предыдущий результат, получаем, что N
не может быть конечным.
Подмножество А из R ограничено сверху (снизу)
если существует верхняя (нижняя) граница. А
ограниченно, если оно ограничено сверху и снизу.
3. Ограниченное подмножество из N конечно.
Доказательство. Каждое подмножество из N
ограничено снизу нулем. Пусть А £ N ограничено
сверху некоторым т е N. Определим отображение %: А -*• N
Рис. 3.4
так, что если А «=» {oj, ej, .,,, %, ,..} и а\ < а^<а3<.,,
...<т (такой порядок возможен, так как i4sN), то
Х(*
Последствием этого является соотношение %(at)<at, и
X, очевидно, ииъективпо. Оно также должно быть биек-
цией, т. е. х: А -* N. для некоторого п < т. Если это
не так, тогда существует аР е А такое, что х(а,)> т и,
таким образом, ар>%(аР)> т. Однако А ограничено т;
поэтому мы пришли к противоречию. Следовательно,
X — биекция па N„ в А конечно.
4. Каждое подмшшество конечного множества
конечно.
Доказательство. Пусть А = В и В конечно.
Если В — 0, то А = 0, и утверждение доказано. В
противном случае В ~ Nm для некоторого т е N. Тогда
существует биекция х: В -» Nm. Применение % к А дает
подмножество из Nm u поэтому х(А) ограничено. Из
случая 3 следует конечность х(А). Шитому, так как %(А)
биективно с А, то А конечно.
73
5. Прямым следствием случая 4 является тот факт,
что любое множество, имеющее бесконечное
подмножество, само бесконечно.
Доказывая некоторые неочевидные факты о
размерностях множеств Z, Q, N, N X N, ..., разумно ведаться
вопросом: существуют ли множества, мощность которых
больше мощности N? Ответ на этот вопрос
утвердительный. Действительно, из данного произвольного
множества мы можем (используя диагональную процедуру
Кантора; см. ниже) создать множество, мощность которого
строго больше мощности N.
Мы не будем рассматривать общий случай, а
ограничимся рассмотрением удивительного примера, который
носит фундаментальный характер и соответствует целям
нашего изложения.
Пример 3.4. Покажем, что
J [0, 1[ I > INI, [0, lh(i:ieR,0«K 1>.
Доказательство (А, Кантор). Каждое число
между 0 и 1 может быть записано в виде бесконечной
десятичной дроби (ЫП1<?»2^»з • •. Предположим, что эти
Числа могут быть перенумерованы и что л-е число
имеет значение, данное выше. Будем конструировать
следующее число: возьмем л-ю цифру десятичной форм-J,
равную л-му числу. Это дает нам число (Ыц^аг^зз ...
Построим новое число: О.611622633..., где каждая цифра б«
отличается от соответствующей цифры dti. Тогда это
построенное число будет отличаться от каждого числа из
первоначального перечня, а именно от n-го числа оно
будет отличаться л-й цифрой. Следовательно, мощность
[О, 1[ строго больше, чем мощность N, и счетной биекции
не существует.
Принцип построения числа О.бцб^бзз... в
предыдущем доказательстве является наиболее существенным
моментом, хотя проницательный читатель может
заметить, что существуют эадачи, где десятичное
представление чисел не единственно. Это встречается тогда, когда
представление заканчивается бесконечной
последовательностью 0 или 9. (Например, 0.3999... и 0.4000...) Чтобы
Построенное число 0.6i 1622633... отличалось от уже
выписанного списка чисел, мы можем оговорить, что б»
должны отличаться от 0, dH и 9. Соответствующие
проблемы возникают и в других подобных конструкциях,
однако, чтобы не отвлекать внимание от основных идей,
в большинстве случаев мы будем их игнорировать.
79
На самом деле можно показать, что [0, 1[ ~ R.
Очевидно, что R — важное множество. Поэтому его
мощность обозначают специальным символом Ki (алеф-
один). Рассмотрим теперь способы, с помощью которых
можно объединять множества и отношения между
мощностями отдельных множеств и мощностью
результирующего множества. Первый из них довольно очевиден.
Теорема. Если А ~В и С~ D,to (AXC)-(BXD).
Доказательство. Пусть %: А -*■ В и if: С -* D —
биекции. Тогда (a, c)i-*(x(a).x(c)) является биекцией
между АХС a BXD. II
Теорема. Если Z — конечное множество и {X, Y) —
разбиение Z, тогда \Z\-\X\ + \Y\.
Доказательство. Так как Z конечно, то Z ~
~ Nm для некоторого wsN и существует биек-
ция х- 2-*-Nm (рис. 3.5).
Более того, так как XsZ
и YsZ, то x(*) = Nm и
X(F)sNm. Пусть ifi
является биекцией пз %(Х) в
N Pt для некоторого р\ ^
<т, где (i|»i»x) W-Np,.
Аналогично пусть г|?2 —
биекция из x(Y) в NPg
для некоторого р3 *S m,
где (ifa»x)(Ir)-N,i.
Тогда если о: N -* N
определяется как о: г»-» х + plt
то о является биекцией
между NPs и \+Pt\NPi.
Следовательно,
отображение
^"ХС2)» если геХ,
Ряс'3,s W'^'XW» если геУ,
является инъекцией и биективно (так как Z конечно)
между Z и Npi+Pa, Таким образом, Z~NPi+Pg,
Следовательно, m «• />i + />а и 121=» |Х| + |У|.
Пример 3.5. Чтобы проиллюстрировать применение
предыдущей теоремы, рассмотрим случай, когда
Z — {о, 6, с, d, e, /),
X •= {&, e)t Y - {а, с, dt />,
80
Тогда биекция между Z и Ne задается следующим
образом:
Х-{(а, 5), (М), (с, 6), (d, 3), (е, 4), (/, 2)>,
в поэтому
Х(Х)-{1, 4>,х(У)={2, 3, 5, 6>.
Подходящими отображениями ф, являются
*i-{(l, 2), (4, 1)}, Ч>,-{(3, 1), (5, 2), (6, 3), (2, 4)}.
Поэтому если а определяется как х *-*■ х + 2, то
*,.Х(*)-{1,2),
^•Х(У) = {1, 2, 3, 4>,
о.^2.х(У) = {3, 4, 5, 61.
Комбинирование ij>i ° x и o°if2°x Дает нужный
результат. /
Предыдущий пример не является характерным в том
смысле, что он требует очень тщательных манипуляций
с биекциями. Обычно в этом нет необходимости, так как
почти всегда можно сослаться на хорошо известные
результаты.
Закончим обсуждение следующим основным
результатом. Если А и В — конечные множества, то А X В
конечно и \А X В\ =■ Ы1 • \В\. Этот результат не только
интересен сам по себе, во и дает способ для введения
доказательства по индукции.
Доказательство по индукции использует два
основных понятия, содержащихся в определении N:
(I) Существует некоторый начальный элемент
(в N это 1).
(II) Для заданного утверждения, соответствующего
некоторому элементу, существует метод, позволяющий
перейти к следующему (в случае N это — создание
следующего числа за наибольшим до сих пор числом,
включенным в N).
Более конкретно, если для некоторого по s N
(обычно ло = 1, но не обязательно) мы можем доказать, что
утверждение Р(ло) справедливо и для любого neN
(л ^ по) справедливость Р(п) влечет справедливость
Р(л + 1) (здесь п + 1 — следующий за л элемент), то
заключаем, что Р(п) справедливо для всех тп>по. Шаг
(I) является основанием индукции, шаг (II)— шагом
индукции.
С Д. Кук, Г. Бей»
81
Весь процесс, по существу, является прямым
доказательством
Р(п0)=> ...°>Р{т)
и, следовательно, осуществляет непосредственную про*
верку промежуточных результатов.
Рассмотрим следующий пример.
Пример 3.6. Если А я В конечны, то
\АХВ\ = \А\*\В\.
Доказательство. Поскольку А я В конечны, то
А ~ Nm с биекцией т: А -*■ Nm и В ~ N„ для некоторых
т, п е N. Будем использовать индукцию по л —
размерности В. Заметим, что от размерности А требуется
конечность, так как мы предполагаем знакомство только с
умножением конечных величин.
Основание индукции. Если 5 =» 0, то 4 X В» 0,
и поэтому имеем тривиальное равенство
1ЛХЯ1-0-WI »0=|Л|»|Я|.
Если В =» Ш, то отображение А -*■ АХ В такое, что
a >-* (а, 6), очевидно, биективно, и поэтому
|ЛХ-Д|-№1-М1М-иЫЯ|.
Шаг индукции. Предположим, что
UX5J = U|.|5J,
где 5» s 5 в |54| - /t e N. Тогда
UI • l4J-m*ftaN
и существует биекция ij>: Л X 5„ -+• Nm+x. Если к< п, то
можно ваять подмножество 5, которое имеет / ■= к + 1
элементов. Пусть В} = Вк U {.cl, где 5» — множество из
к элементов, и пусть отображение уч, %: AXBj-*-ti
определяется следующим образом:
х: (a,j)i-» т(а) + m*fr,
х: А X ix) -*■ {т. • к + 1, ..., т • к + т},
X'. (а, Ь) >— i|j(a, fc), если Ь е 5ц.
Очевидно, что х является биекцией на N„.,Л+т и
т • к + т = т * (А- + 1) = т » /.
Поэтому |Л X5j|'-« m •/ -=» \А\ • \Bt\. Следовательно,
тождество справедливо для всех подмножеств В,
содержащихся в В, а поэтому \АХВ\ = \А\ • \В\. /
82
Упражнение 3.3.
1. Доказать, что отношение между множествами
{(А, В): А-В)
является отношением эквивалентности.
2. Построить биекцию между множествами Z X N и
NXN.
3. Доказать, что если А и В — множества и A U В
конечно, то
\AVB\ + \A(\B\=-\A\ + \B\.
4. Доказать (от противного), что произвольная
инъекция Nm-*Nm (meN) является биекцией.
5. Доказать (без использования равенства \!?(А)\ *=
«=2UI), что для любого конечного множества А, такого
что Ы1>2, справедливо соотношение |^(Л)1>1Л1.
6. Показать, что результат задачи 5 имеет место и
для бесконечных множеств.
7. Пусть множество (0,1}' представляет собой
последовательность oi, 02, аз, ..., а„, ..., где а< е (О, 1J.
Доказать, что |{0,1}N|>|N|.
8. Доказать (построением подходящих биекций и
рассуждений по индукции), что если А\, ..., Ап —
конечные множества, то
\AiX...XAn\ = U,l ♦...» UJ.
§ 4. Некоторые специальные классы функций
В этом параграфе мы несколько отойдем от
основной темы обсуждения для того, чтобы кратко
рассмотреть следующие четыре важных класса функций:
подстановки, последовательности, функционалы и
отображения, сохраняющие эквивалентность. Эти функции
часто используются; особо отметим их приложения к
теории графов, к трассировке вычислений, к определению
языков программирования и переводу, к машинной
графике.
Определение. Подстановкой множества А
называется биекция на А. II
Подстановки конечных множеств представляют
особый интерес в вычислениях. Когда А конечно, мы в
состоянии вычислить число различных подстановок А,
Пусть \А\ = /I s N, Обозначим через „Р„ число таких
подстановок. Значение „Р„ легко вычислить. Можно
рассматривать задачу построения биекций на А как задачу
6» 83
заполнения ящиков, пронумерованных от 1 до п
(рис. 3.6), объектами аи ..., ап. Порядок, в котором
заполняются ящики, несуществен (любой другой порядок
можно получить перемешиванием ящиков). Поэтому
будем заполнять их слева направо. Первый ящик может
быть заполнен п способами, так как мы имеем
свободный выбор из всего множества А. Убирая выбранный
1 г n-i n
Рпс. 3.6
элемент из А, получим множество из п — 1 элементов.
Следовательно, второй ящик может быть заполнен п — 1
способами, третий ящик — п — 2 способами и т. д.
Продолжая этот процесс, получим, что (п — 1) й ящик
может быть заполнен двумя способами, а ящик с номером
п — единственным оставшимся элементом из А.
Следовательно, число различных подстановок из А равно
п*{п— 1)«(и — 2) * ... * 3 * 2 * 1.
Это произведение называется факториалом п
(обозначается п\). Следовательно, пРп = п\.
Так как А ~ N„, то можно свести наше рассмотрение
к N„. Любая подстановка на N„ должна определять
образ каждого элемента в N„ (который, конечно, должен
быть единственным и отличным от других). Пусть ij; —
подстановка на N„. Тогда \|з можно определить как
множество из п пар следующим образом:
1|> = {(1, х\), (2, х2) (п, х„)),
где
{*i x„} = N„.
Не обязательно, конечно, должно быть х\ = 1 и т. д.
Можно также представить \|з следующим образом:
2 3 ... п
хг хз ••■ V
Пример 4.1. Пусть о — подстановка на Ne:
{ 2 3 4 5 6Х|
5 6 3 14 2/-
Тогда а(1) =5, о(3) = 3 и т. д. //
84
* ~ {'г
Пу
(.
Достоинством этого обозначения является простота,
с которой могут быть вычислены сложные подстановки*
Предположим, что т)> — подстановка на N„, определенная
выше, а х-ДРУгая подстановка на том же самом
множестве. Тогда подстановка х может быть записана как
совокупность пар в порядке, определяемом х\, хг, ..., хл.
Если две последовательности записать одну над другой
(первая применяемая подстановка должна быть
записана первой), то верхняя и нижняя строки дадут
результирующую подстановку.
Пример 4.2. Пусть о — подстановка из
примера 4.1 и
4.2. Пусть
\,3 2
Можно переписать р в виде
-(
!)•
)■
Поэтому р • о может быть вычислено следующим
образом;
'=.(
Р =
р°а =
— U 5
-О
4
1
1
3
4
3
5
4
4
1
5
1
одинаковые
Следовательно, например,
р.о(2)(-р(о(2))-р(6))-5 и т. д. /
Отсюда следует, что представление обратной (конечной)
подстановки получается перестановкой строк,
представляющих исходную подстановку. Хотя такое
представление полезно в вычислениях, оно требует много лишпего
места, особенно в тех случаях, когда многие элементы
не меняются в процессе подстановки. Существует более
простое обозначение, которое может употребляться
непосредственно для некоторых простых подстановок а
косвенно для всех конечных.
Определение. Пусть А = {а.\, ..., aj-
Подстановку р называют циклом (циклической подстановкой),если
Р \аг а3.,,аа ^
83
Предположим, что A s В и В конечно. Расширяя р на
все В, можно определить подстановку о так, что
fp(i), если iSi4,
о: xi-* \ г, .
[ х, если же Я\Л.
В этом случае о ведет себя подобно р во всех случаях,
когда элементы В не остаются на месте. Применение о
к А передвигает элементы по кругу циклическим
образом, и, если известна область А, мы можем обозначить
подстановку как (fli, а%, ..., а„). Эта подстановка
называется циклом длины п. II
Пример 4.3. Рассмотрим опять подстановку
(I 2 3 4 5 б\
Р \3 2 6 1 4 б/'
Подстановка является циклом длины 5 в может быть
записана как
(1, 3, 6, 5, 4). /
Не все подстановки являются циклами. Например,
подстановка о в примере 4.1 не является циклом.
Напомним, что о имела вид
п /12 3 4 5 8^
a = U 6 3 14 2/'
Поэтому о(1) = 5, а(5)=4, о(4)=1, откуда следует, что
о содержит цикл (1, 5, 4). Начиная с 2, получаем
другой цикл —(2, 6). Таким образом, имеем о—(1, 5, 4)»
•(2,6) и о =(2, 6И1, 5, 4).
В действительности любая конечная подстановка
может быть представлена как произведение циклов, при
этом циклы могут располагаться в любом порядке. Из
построения следует, что один элемент не может
встретиться более чем в одном цикле, т. е. циклы не пере'
секаются.
Теорема. Каждая подстановка р на конечном
множестве А выражается в виде произведения
непересекающихся циклов.
Доказательство. Поскольку UI=»nsN, то
А ~ N„. Поэтому без потери общности мы можем
ограничиться рассмотрением подстановки р на N„.
В теореме утверждается, что р = Oi • Ог °... • ov, где
каждое aj является циклом и циклы не пересекаются.
Для доказательства теоремы построим требуемые циклы.
Сначала найдем наименьший элемент Xi e N„ такой, что
89
pfxij^xi и р(х) = х для всех х, 1 «S х < х,. Еслп такого
х\ не существует, то р = / (т. е. р является
тривиальным пустым произведением циклов). В противном
случае вычислим хь p(xi), p2(xi), p3(xj) и т. д. Все эти
элементы находятся в N„. Поэтому элементы в этой
последовательности должны содержать повторения.
Предположим, что p"(xi)—первый такой элемент (который
уже повторялся в последовательности). Покажем, что
p"(xi)=xi. Предположим, что это соотношение не
выполняется. Тогда p'(xi) = p"(xi) для некоторого I, 0<
< 1< к. Следовательно,
p'-1(x1) = p-1»p'(xi)=p-1 •p'(x1)=p»-'(xi) и т. д.
ПОЭТОМУ P^'C^l)88* P*~'(xl)i т- е- Р*~'(х>)= p°(Xi) — X], ЧТО
противоречит минимальности к (так как к — К к).
Таким образом, p*(xi) = Xi, и подстановка
Oi-(*ii P(*i). P2(*i) P*~'(*i))
задает цикл внутри р.
Если все элементы х е N„ такие, что р(х)тьх (будем
называть такие элементы нестационарными), содержатся
в Ь\, то р = 0\ —• единственный цикл (который,
естественно, не пересекается). В противном случае найдем
следующий наименьший элемент xj s Nn такой, что
р(хг)^Х2 и Х2 не встречается в а\. Из хг строим
множество различных степеней р:
02-(х2| р(х2), р2(х2), ..., рт(х2))\
Это цикл длины не менее 2, и он не пересекается с 0\,
(Доказательство оставляем в качестве упражнения.)
Если все нестационарные элементы исчерпаны, то ря
■= <3\' Ог = 02 »0i. Очевидно, что множество
нестационарных элементов, не входящих в эти циклы, можно
уменьшить, и в конце концов придем к 0. Следовательно,
р =■ Oi • 02• Оз •... • о, для некоторого r^N. /
Рассмотрим теперь несколько иную ситуацию.
Возьмем множества А: \А\ •» п и В = Л, \В\ =• г<п.
Возникает вопрос: сколько биективных функций существует
пз А в В? Или, что эквивалентно, сколько существует
пнъективных отображений из В в Л? Число
перестановок (без повторений) из п элементов по г обозначается
„Р, и вычисляется так же, как и пРп, за исключением
того факта, что процесс прекращается после заполнения
г ящиков, Таким образом,
87
Легко видеть, что, продолжая процесс заполнения
ящиков, оставшиеся п — г элементов можно разместить по
последним п — г ящикам п-,Рп-т способами. Поэтому и
р _ "f" _ и|
" г ~ Р ~ 1п — г)\'
При вычислении „Р, мы находим число биективных
функций из А в В. Подсчитаем числа таких функций.
Определение. Пусть А — конечное множество и
В s А, \А\ •= п^*г *= \В\. Множество В называется
сочетанием (без повторений) из п элементов по г. Число
таких сочетаний обозначается через Стп. //
Вычисление Сп производится следующим образом.
Положим \А\ = п. Возьмем произвольное подмножество
BsA такое, что Ifil *= г. Тогда В является образом
подстановки из п элементов по г. Число инъективных
функций на А, имеющих В своим образом, есть пР,. Если /
является такой функцией и g — другая такая функция,
имеющая ту же самую область значенпй, то g связано
с / соотношением g = ср ° /, где ср — подстановка на В.
Функции g и / определяют одну и ту же комбинацию,
и в действительности число функций, определяющих
эту комбинацию, равно числу подстановок ф на В.
Следовательно,
откуда
П~ Л =r\[n-r)V
Поскольку относительные дополнения единственны и
\A\B\ =»« — г, то отсюда следует, что Сп = ОГг.
Вернемся теперь к математическим объектам,
которые должны быть знакомы читателю, но которые,
вероятно, не рассматривались как функции.
Определение. Последовательностью на
множестве S называют отображение N -*- S.
Если о: N -* S — веданная последовательность и
a^^Sn, то обычно обозначают последовательность не о,
a (s„) или (s\, S2, ..., s„, ...). В этом случае s„
называют л-м членом последовательности. /
Часто при изучении свойств последовательностей
возникает понятие «расстояние» между соседними
элементами последовательности (скажем, s„ и s„+i) и
между элементами s„ при п>пц (где щ — некоторый
фиксированный элемент N] и фиксированным элементом из S,
88
Мы вернемся к этим вопросам несколько позже,
поскольку в настоящий момент у нас в общем случае нет
понятия расстояния.
Особый интерес в задачах, связанных с трансляцией
языков программирования, представляют функционалы.
Существуют функции, которые определены не на
множествах простых объектов (таких, как числа), а,
например, на множестве функций.
Определение. Пусть даны множества А, В и С.
Обозначим через [В -*■ С] множество всех функций из В
в С. Функция /: А -*■ [В -*■ С] называется
функционалом. Следовательно, a ^3)f =>- /(a)— функция, п /(а):
В-+С. Далее, b^3)lw^- /(e)(6) е С. II
На первый взгляд такая комбинация, как /(о)(&),
выглядит настолько необычной, что может казаться
незаконной. Это в основном потому, что рассматриваемые
функции использовались как объекты особого рода, в
ряде случаев отличные от элементов, которые были в
области определения и области значения функций.
Конечно, множества функций могут рассматриваться так же,
как и любые другие множества.
В развитых языках программирования имена целых
переменных не отличаются от имен переменных
функций и могут изучаться аналогичными способами. Хотя
эти функции являются обычно довольно сложными,
языки программирования редко дают примеры важности
функционалов.
Пример 4.4. Пусть Р — множество программ, т. е.
текстов программ (строк символов), которые должны
быть обработаны компилятором. Аналогично пусть / и
О — множества соответственно входных и выходных
значений, которые доступны программе для ввода и
вывода. Тогда компилятор (с соответствующего языка)
является функционалом типа Р -*-[/-*- О]; для данной
р е р он пытается создать машинный код, который при
выполнении будет читать ie/ и выдавать osO, Из
дальнейшего изложения будет видно, что определение
функций (или функционалов) сложности компилятора
длинное и сложное. Тем не менее эти понятия можно
изучать в более простых ситуациях.
Пример 4.5. Пусть все данные принадлежат R.
Тогда, если /: a i-+[х *-*■ а + х], то
/(2): х~2 + х и /(2)(3) = 5,
то время как /(3): х<— 3 + х и /(3) (3)= 6 и т. д. II
89
Обращение с функционалами не вызывает
трудностей при условии, что ссылка делается на основной
функционал (т. е. А -*■ В или А -*■ [В -*■ С]).
Следовательно, в дальнейшем мы будем рассматривать их просто
как функции, имеющие нетривиальные области значе*
ний, и будем обращаться с ними соответствующим
образом.
В заключение параграфа определим функции,
которые сохраняют некоторые структуры. Из дальнейшего
будет видно, что в некоторых ситуациях желательно
сохранить многие из алгебраических свойств, которыми
множества могут обладать. Ограничимся вначале
рассмотрением простейшего случая.
Определение. Пусть X — множество, на котором
задано отношение эквивалентности р. Тогда X
разбивается отношением р на р-эквивалентные классы;
множество классов обозначается как Х/р.
Определение. Пусть X и Y — множества, а р* и
рт — отношения эквивалентности на них, и пусть /: X -*■
-*■ Y — отображение. Обозначим через / отношение
J: Х/р, - Y/pr
такое, что
М([4 [/(*)]): *еХ>,
где [х] ■= класс эквивалентности х. Если / — функция, то
Xlf>lX2*- f([Xl])-> f([x2]),
и / является отображением, сохраняющим
эквивалентность. В этом случае говорят, что /: X -*■ Y индуцирует
отображение
7: Х/р: - У/рг. /
Наглядный способ представления такого отображения
дан на рис. 3.7.
Если рассмотреть отображение /, согласованное с
отношением эквивалентности, то можно переходить от
х\ к у\ или через «г» используя соотношения уг = И^т)
и Xipzx\, или через у\, используя соотношения yi = /(ii)
и УйРтУи
Пример 4.6. Пусть Х = {1, 2, 3), У = Н, 4, 9), и
пусть pz и рт таковы, что
Х/р, - {{1>, {2, 3}}, У/рт - {Ш, {4, 9»,
90
и /: X -*• Y такое, что х >-*■ х*. Тогда
7([2])-[4]-(4, 9>,
/([3]) = [9] = {4, 9).
В этом случае {2, 3} в Х/рх => 2р*3 -»■ [2] = [3] в /([2])-
«=/([3]). Поэтому / является функцией и / сохраняет
отношения эквивалентности. //
Пример 4.7. Пусть X, Y и / те же, что и раньше,
и отношение эквивалентности а* и о> индуцируют
разбиения {{D, {2, 3}} и {{1, 4), {9}'} соответственно. В этом
случае индуцированные отношения дают
/"([2]) = [/(2)] = [4] = {1,4},
Г([3])-[/(3)]-[9]-{9К
Так как 2а*3, то [2] - [3] в Xjaz, но (4, 9) Ф о>, по*
скольку [4] Ф [9] в У/о>. По сравнению с рис. 3.7 этот
пример дает отношения, показанные на рис. 3.8. Так как
tx
-*-*г
й-
Рг
Рис. 3,7
У»
^►4
Рис. 3.8
нельзя соединить стороны прямоугольника во всех
случаях, то отношения эквивалентности не сохраняются. /
В гл. 5 и далее будет показано, как эти диаграммы
могут быть использованы для определения операций
таким образом, чтобы соединить углы прямоугольника.
После этого можно будет объединять диаграммы
подобно строительным блокам.
§ 5. Аналитические свойства вещественных функций
Этот параграф содержит материал, использующий
теорию множеств из гл. 1. Цель, которая при этом
преследуется, состоит не в развитии техники вычислений,
а в создании строгих утверждений типа:
«Предел }(х) при х, стремящемся к 0, есть у*, _
91
«Наклоп графика / в точке а равен Ьь,
«/ имеет гладкий график» и т. п.
(Два последних понятия, очевидно, относятся к
графике.) Мы дадим основные определения, которые
используются при получении некоторых результатов. Этого
достаточно для того, чтобы проиллюстрировать
доказательства большинства теорем.
5.1. Последовательности. Вещественной
последовательностью называется отображение N на R.
Последовательность записывают в виде (а„). Если при
возрастании п члены а„ становятся «близкими» к некоторому
фиксированному значению aeR, то говорят, что
последовательность (а„) имеет предел а пли что а„ стремится
к а при стремлении п к бесконечности. Дадим строгое
определение сказанному.
Определение. Если (а„) —вещественная
последовательность и для любого е > 0 существует JV.eN
такое, что N > N, =*■ \ак — а\ < г, то говорят, что (а„)
имеет предел а, и записывают это как lim ап = а или
ап-* а при п -*■ оо. (Здесь |х| обозначает модуль числа
xsR.)
Если (а„) имеет предел, то говорят, что
последовательность сходится. Если последовательность не имеет
предела, то говорят, что она расходится.
Пример 5.1.
1. Последовательность (а„), где а„ •= 1/и, имеет
предел 0; для е > 0 можно выбрать N, — любое
натуральное число, большее 1/е. Тогда
N > N, •* \а„ - 01 = 1AV < 1/N. < е;
следовательно,
2. Последовательность (а„), где а„=(—1)п,
расходящаяся.
Предложение. Если (s„) и (*„)—
последовательности и HeR, тогда (sn + tn), (sjn) и (Xsn) также
являются последовательностями, и если lim sn = s и lira tn =
П-»оо n-»oo
— t, mo:
а) lim (s„ + tn) = s + t\
n-+oe
б) lim (sntn) = st\
Л-»зо
62
в) lim(>.s„) =■ \s;
П-+00
г) если t Ф 0, то sjtn -* s/i при п -* °°.
Доказательство. Пусть е > 0. Тогда существует
Л7, s N такое, что
\sy-s\ <e/2 n |f.v-f| <е/2
прп Л7 > Л7,. Так как при Л' > Л',
\s„ + f.v — (S + О I = l*-V — S + *.v — Л <
«S kv-s! + |/.v — <! <e,
то limfSft + tn) = s + t. Аналогично для случая б)
П-»зс
Is.yf.v — St\ = U.vfjv — S.\i + S.-,t — St\ =S
«S li.vf.v — SNt\ + \sxt — Sfl < Is.yl U.v — fl + |SW — s| Ifl.
Пусть задано е > 0. Тогда существует Л', е N такое, что
для Л' > Л7, справедливы неравенства
1**-*1<Т|7ТТТ'
l^-fl<T|TiTT' l*-v|<|*| + l.
Следовательно,
I Sy | | ty - t | + | Sy - S | | t |< (| S | + 1) J 1 у - i i +
+ |S:v —s||i|<_e + Y \t\%i \t\<je + y£ = e.
откуда получаем (sntn) -*■ st. Доказательство случаев в),
г) предложения оставляем в качестве упражнения. /
Определение. Пусть (аГ1)—последовательность
п
в R. Последовательность sn= 2 «г определяет ряд 2ап-
Прп этом sn называют п-й частичной суммой ряда. Если
последовательность (sn) сходится, то говорят, что ряд
сходящийся, и число lim sn называют суммой ряда. Оно
обозначается
оо
К = 1
5.2. Непрерывность. Понятие непрерывности почти
полностью игнорируется при изучении элементарных
вычислении. В неформальной математике это понятие счи-
93
тается очевидным. Однако при начальном изучении
математики достаточно трудно найти нужный путь. На
самом деле определение непрерывности базируется на
понятии предела. В этом параграфе через / будем
обозначать интервал действительной осп R. Если /: /->R я
f(x) становится «неограниченно близким» к некоторому
числу Ь при х, «приближающемся» к as/, то говорят,
что предел f(x) при х, стремящемся к а, есть Ь. Дадим
строгое определение этого понятия.
Определение. Функция /: / -* R имеет предел Ь
в точке а, если для любого е > 0 существует 5, > 0
такое, что
0<1х — а\ <б.=*- \J(x)—b\ <e.
В этом случае будем писать
limf(x) = Ъ
«с-*а
или
}(х)-*- Ъ при х -*■ а. II
Заметим, что в определение не входит значение }(х)
в точке а.
Пример 5.2.
1. limz = a; достаточно выбрать бв = е,
2. lim х2 «=4, поскольку
Х-*2
\х — 21 < б, **• —5, < х — 2 <
< б, **> 4 - 5, < х + 2 < 4 + 5..
Следовательно,
1л:2 — 41 - !х+21 \х-2\ <б, |* + 2| <6,(4 +б,).
Если выбрать б, = min(l, е/5), то
\х2 - 41 < 56. ^ е. //
Легко показать эквивалентность следующих
утверждений:
limf(z)**b, Um(f(x) — b) = Q,
xta xta
lim/(a + A) = b, lim(/(a + ft) —6) = 0,
h-»0 h-»o
Теперь мы готовы к изучению понятия
непрерывности для вещественных функций. Грубо говоря, функция
/:/-»■ R непрерывна в точке as/, если точки,
«близкие» к а, отображаются в точки, «близкие» к /(a). Бо-
лее строго это
щим образом.
Определение
as/, если
понятие может быть определено следую-
Функция /: / -*■ R непрерывна в
Нт/(*) = /(а).
Говорят, что }(х] непрерывна, если она непрерывна в
каждой точке своей области определения. /
Из определения видно, что в данном случае
требуется, чтобы /(х) была определена при х — а. Такое
определение непрерывности соответствует интуитивному
представлению. Поясним его на рисунках.
На рис. 3.9, а дан график непрерывной функции j\\
[—2, 2]-»-R, /i(x)=|x|. На рпс. 3.9, б представлен
график функции /2: [0, 4] -*■ R, где
(х при 0^х^2,
/а(,г) = \х + 1 прп2<х<4.
Функция /г непрерывна в каждой точке [0, 4], за
исключением точки х = 2, так как не существует интервала
вида 2 —б<х<2 + б, для которого |/г(*)—/г(2)1 < 1.
Рис. 3.9
В заключение этого раздела сформулируем без
доказательства несколько утверждений. Их доказательство
можно найти в большинстве книг по математическому
анализу. Если f(x)-+ l и g{x)-+ m при х -*■ а, то
U + g)(x) = f(x)+g(x)-*l + m,
(fg)n = f(x)g(x)-*lm,
(fig) (x) = /(x)/g(x)-»- l/m при условии m Ф О,
(X/) (х) — V (*}"*" М Для всех X е R.
95
Отсюда следует, что если / и g непрерывны в точке а,
то непрерывньшп являются и функции XJ, / + g, fg, fig
при условии, что а находится в области определения
каждой из «новых» функций.
5.3. Дпфференцируемость. Графическое
представление функции /: / -* R, обсуждаемое в п. 5.2,
предполагало, что эта функция определяет некоторую другую
функцию /': / -* R, где /' (а) есть «наклон» графика / в
точке а. В общем случае &)у £ 2>/, так как на самом деле
его может не быть для всех точек £Z>/. В этом случае /'
не существует. Определим строго функцию /'.
Определение. Функция /:/-»■ R
дифференцируема в точке as/, если
llm'(' + )"-'W
л-о h
существует. Множество точек, где этот предел
существует, устанавливает область определения 2)/' производной
/': / -*■ R функции /, и
f'(x)=limf(x + h)-f{x).
Л-»0 *
Иногда производную /' записывают как dfldx. Отноше-
f (z+h)— f (x) . ,,,
ние £—'— часто записывают в виде б//ох, где о
читают как «малое приращение». В этих обозначениях
hm ri = -к- II
&с-»0 бХ dX
Если / дифференцируема в точке а, то она и
непрерывна в а, так как
/(a + /0-/(g)-(/fa4-ftl-/(a>;
следовательно,
lim(/(,z + A)-/(a)) =
ft-»o
= Umf(a+h)-f(a) j.m h = //(a)() _ 0>
Л->0 " Л-»0
Другими словами, lim/(a + h) — f(a), и, таким образом,
f непрерывна в a no определению. Поэтому
непрерывность функции является необходимым условием ее диф-
ференцируемостп, но не достаточным, как показывает
следующий пример.
96
Пример 5.3. Функция f(x)=\x\ не
дифференцируема в точке х =0, так как
f(Q+h)-f (О) _\_h\_
h ~ h '
где
|fe| f+ 1, если Л>0,
Л 1—1, если Л<0.
Следовательно, в любом пптервале ]—ft, h[, где ft
произвольное, функция |А|/А принимает оба значения ±1, п
поэтому предел при А -*■ 0 пе существует. II
Пример 5.4.
1. Пусть /: R ■— R — постоянная функция, т. е. f(x) =
■= с для всех ieR. Тогда
/ (х 4- h) - / (.Г) _ £_-е _ п
ft h
и lim 0 = 0. Таким образом, /' {х)= 0 для всех х е R. 06-
л-.о
ратно, если /'(х)=0 для всех х е R, тогда
/—постоянная.
2. Пусть /(х)'= л;2 для всех х е R. Тогда
/U + M-/ (т) _ (х + ft)2 — д2 _ г2 4- 2rft 4- h2 — j2 ,
ft ~ h ~ h =--x + ft,
lira (2x + ft) = lim 2x + lira ft = 2x.
ft-»o л->о /i-»o
Следовательно, f {x)= 2x для всех x e R. //
Предложение. £сли / дифференцируема в х и
?,eR, го hj дифференцируема в х и
(*/)'(*) = */'(*).
Доказательство.
(>./)'(,) _ i,mMifL±«JzMW = ? lim "* + *>-/(»> _
= >-/'(*). //
Следующие результаты оказываются полезными при
дифференцировании функций, которые определены
через другие функции.
Предложение. Если fug дифференцируемы в х,
то
а) / + g дифференцируема в х и
U + g)'n=l'(x)+g'(x);
7 Д. Кук, Г. Бойз 87
б) fg дифференцируема в х и
Ug)'{x)-U'g)i*)+Ug')(*h
в) jig дифференцируема в х при g(x)^ 0 и
(//gn»)-(™(%ff')W.
Доказательство оставляем в качестве упражнения.
Эти формулы могут использоваться при
доказательстве некоторых, возможно, знакомых простых
результатов.
Пример 5.5.
1. Пусть /: R -ч- R, где }(х)= 1/х. Тогда
/'(ж)--!/*» и 0, = ^V = R\{0}.
2. Пусть /: R -*- R задано формулой ](х) = хп (»eN).
Тогда f{x)=nxn-K II
Предложение (правило дифференцирования
сложной функцип). Если ] дифференцируема в х и g
дифференцируема в y = f(x), то g°j дифференцируема в х и
(g'fn*)-(g(H*))V-g'(y)f'(*)-
Доказательство. Пусть и> = g(y) = g(f(x)) =
а \ гтл d(g°f) ,. &w ,. 6wby ,
= g°f(x)- Тогда -dr""=bmgj=-lim^-gj (при условии
&У Ф 0) = lim J^ lim J (см. п. 5.1). Однако / дпфферен-
б!/-»о °У б*-»оох
цируема в точке х, и поэтому
аналогично
Поэтому
d(gof)
dx
dw
~ dj
т 6?/ df
hm ^ = —;
i. dw dg
lim ТГ- = —.
6y-*0 6^ <^
g'(y)fH- ll
Производную от /' записывают в виде /" плп d2f/dx2
и называют второй производной функции /. Аналогично
производная от d"-,f/dx"~i (п > 3) записывается как /(п)
ила dnf/dxn и называется п-й производной функции /.
Если /' существует н непрерывна, то говорят, что /
принадлежит классу С; /" принадлежит классу Сп, если /('°
существует и непрерывна, и классу С°°, если /(п)
существует для всех п е N.
5.4. Иптегрироваппе. Пусть /: [а, Ь] -*■ R, neN, 'h =»
= (Ь — а)/п и х»=»а + А:Л при 0<А<п. Тогда можно
определить последовательность (sn(/)):
(*»(/))-S /(**)*•
ft=0
Если (sn(/)) имеет предел, то будем говорить, что /
интегрируема па [а, Ь], и обозначать
ь
\imsn(f)-[f{x)dx.
п-»оо а
Ь
Величину J /(x) dx называют интегралом Римана функ-
а
цпи f(x) на [а, Ь].
Заштрихованная плошадь на рис. ЗЛО является
графическим представлением Sb(f) для непрерывной
функции / на [а, Ь]. Для неограниченно больших значений п
интуитивно можно ожидать,
что заштрихованная
площадь будет хорошо
аппроксимировать площадь под
графиком между х = а и
х = Ъ и ограниченным
значением (если оно
существует) этой площади.
Если ST обозначает
множество всех вещественных
функций на [а, Ь], то
интегрирование может рассматриваться как функция SF
область определения которой есть
Рпс. 3.10
R,
/<=^": j f(x)dx существует!.
а I
Некоторые важные свойства интеграла приводятся ниже.
Предложение.
а) Если } непрерывна на [а, 6], то она интегрируема
на этом отрезке;
б) если / интегрируема на [а, 6] u is [а, Ь], тогда f
интегрируема на [а, х] и [х, Ь] и
ь » ь
J /(*) dx = j" f(x) dx + J /(*) dx;
7«
99
в) если f интегрируема на [а, Ь] и X е R, тогда Xf
интегрируема на [а, Ь] и
ъ ъ
§(Xf)(x)dx = X$f(x)dx;
а а
г) если fug интегрируемы на [а, Ь], то / + g
интегрируема на [а, Ь] и
ъ ъ ъ
j (/ + g)(x) dx = j" f(x) dx + j g(x) dx.
a a a
Доказательство. В случае а) формальное
доказательство давать не будем. Заметим, однако, что для
непрерывной функции / интуитивно ясно, что площадь
под графиком / является хорошо определенным
понятием, и, следовательпо, можно ожидать, что интеграл от /
существует. Доказательства б)—г) следуют из
соответствующих свойств последовательностей. Рассмотрим,
например, случай г). Если / и g интегрируемы па [а, Ь], то
последовательности
п-г n-i
*« (/) = 2 / Ы h и в„ (g) = 2 g (*0 h
ft=0 h«0
имеют пределы. Рассмотрим последовательность sn(f) +
+ sn(g). Тогда
lim (sn (/) + sn (g)) = lim s„ (/) + lim sn(g). //
Чтобы вычислить интеграл, редко используют
определение и вычисляют предел. Следующая теорема является
основной. (Она устанавливает тот факт, что
интегрирование и дифференцирование — взаимно обратные процессы.)
Теорема. Пусть /: [а, Ь] -»■ R непрерывна.
Определим функцию F: [а, Ь] -*■ R формулой
t
F(t) = $f(x)dx,
а
Тогда F дифференцируема на [а, Ь] и F' •= /.
Доказательство. Будем лишь фиксировать
основные моменты доказательства. Используя результаты
100
предыдущего предложения, имеем
t+h t
\ f(x)dx-\ }{х) dx
F(t + h)-F(t) Z j
b h
t t+h t
\f(x)dx + j f(x)dx-\)f(x)dx t+h
a t a Ji
h = * J
/ (x) dx,
t
Рассмотрим
t+h
lim-r- I f(x)dx.
h-o h J
Из определения интеграла и его интерпретации как пло-
t+h
щади ясно, что для малых h интеграл J f(x)dx стре-
t
мится к /(f) h a
t+h
lim-i f f(x)dx = f(t).
J
Следовательно,
^'(*) = /(0 для всех ie[e,i], /
Пусть Ф — произвольная функция, для которой Ф' =*
= /. Тогда F — Ф является постоянной, так как
*'(0-/(0-Ф'(0.
Следовательно,
{F — Ф)' (0 = 0 для всех t e [а, Ь],
и из п. 5.3 заключаем, что F — Ф = Я, Я ^ R. Таким
образом,
*
Ф(*) = §f(x)dx + \.
а
Функцию Ф называют неопределенным интегралом от /
в обозначают \f(t)dt. Неопределенный интограл
определен с точностью до постоянного слагаемого. Он
определяет класс эквивалентности функций [Ф]: Ф1 ~ Фа
тогда и только тогда, когда Ф1 и Фг — неопределенные
интегралы от /.
101
П р е д л о ж е н и е. Если Ф — неопределенный
интеграл от /, то
|/(ж)</ж = Ф(Ь) —Ф(в).
Доказательство.
Ф (Ь) - Ф (а) = (F (Ь) + K) — {F (a) + k)-F{b)-F (а) =
Ь а Ь
-]"/(*) ЖГ - j /(*) dx = j /(Ж) dx. II
a a a
Как и при исследовании дифференцирования, эти
результаты могут быть использованы для вычисления
интегралов, некоторые примеры которых даны ниже.
Пример 5.6.
1. Если F(t) = J xdx, то F'(t) = t, и неопределенные
о
интегралы от функции /: х<-+ х есть
Ф(0 = *72 + Ь, UR.
Таким образом,
/•(0-Ф(0-Ф(0)-*72.
2. В более общем случае, если /:£►-*• я"для neZ\{-1}
t
и F (<) = J xn dx, то F'(t) = t", и неопределенный интег-
а
рал есть
Тогда
^(о = ф(о-ф(«) = Ьп-«—г
Очевидно, что это соотношение неверно при п = — 1.
Этот случай будет рассмотрен в п. 5.5.
5.5. Некоторые специальные функции. Мы
предполагаем, что читатель внаком с геометрическими
определениями функций sin х и cos х, из которых следует, что
sin: R-*[—1, 1],
cos: R-*[—1, 1],
где
2>.U « 0.0. - R, #.U - #co. = [-1, 1].
102
Мы также предполагаем знакомство с периодическими
свойствами этих функций. Некоторые другие
элементарные свойства приведены в следующем предложении.
Предложение. Для всех х, у е R имеем:
а) sin(z + у) = sin(z)cos(i/)+ cos (x) sin (у);
б) sin (z — y)= sin (x) cos (у)— cos (x) sin (у);
в) cos(z + y) = cos (x) cos (i/) — sin (x) sin (у);
г) cos(a; — y)= cos(z)cos(i/)+ sin (x) sin (j/);
д) sin2 x + cos2 x = 1;
е) 5j(sin(z)) = cos(z),^(cos(z)) = —sin(z). //
Эти результаты непосредственно следуют из
определений. Их доказательство оставляем читателю в
качестве упражнения. Мы не будем касаться обоснования этих
понятий (можно принять их в качестве допущений).
В п. 5.4 был определен j xn dx при пФ — 1. В депст-
t
вительности интеграл \ — dx существует для всех t > О
г
и равен In t. Функция In является отображением
]0, оо[ ->- R и обладает свойством
\в(ху) = lnz + ln у для всех х, у е ]0, «.[,
так как
-j-In (xy) = — = — = -г- In х.
dx ч "' ху г dx
Из результатов п. 5.4 имеем \а(ху) — \ах = 'к, где is
s ]0, °°[ и }. е R. В частности, при х = 1 имеем In i/ —
— In 1 = X и In 1 = 0; поэтому In у = X. Следовательно,
\п(ху) = In х + In у.
Можно показать, что In биективна и, следовательно,
существует функция
exp: R -> ]0, «,[
такая, что In (exp p) = р для всех psR и exp {In q} = q
для всех q s ]0, °°[. Из свойств фупкцпп In следует, что
ерх{х + у) = ехржехру для всех х, i/eR,
exp 0 = 1,
<*
— exp x = exp x.
Удобно обозначить In а; через log, x, a exp x через ех.
103
Функцию log. x называют натуральным логарифмом
числа х, а фупкцию х *-+ ех — экспоненциальной
функцией.
Если при а > О функция /: ]—а, а[ -*■ R принадлежит
С и х <= ]—а, а[, то ряд
2 /"<<
ft-o
называют рядом Маклорена для / в точке х. Для
некоторых функций можно показать, что ряд Маклорена
сходится к значению функции / в точке х. Другими
словами, для / имеем
/(x) = lim2/W(0)fr.
В частности, это справедливо для функций sin x, cos x,
ех, для которых
sin(x) = 2 (-^(ihriil = *-?!+ff-?T +
ft=o
«•<*>-2(-tf<i£-i-5l+if-;f+-"i
fc=o
ехр(х) = 2и = 1+а: + 1г + 5Г+---
ft=o
для всех jeR,
Упражнение 3.5.
1. Показать, что последовательности, определенные
ниже, сходятся, и найти их пределы:
а) s„=-l/n2;
б) s„-=3/z/(n + 3);
в) s„ = 1 + 1/2".
2. Пусть (s„) и (t„)—последовательности, lim s„ = s
л-»оо
и nl£„l<lsnl для всех neN, Показать, что lim tn = 0.
П-»оо
3. Доказать, что если (s„) и (£„) имеют пределы s и
£ соответственно, то последовательность (р„), где /?„ =■
«= Xsn, имеет предел Xs. Если t Ф 0, то lim (s„/£n) = s/f.
Tl-*00
4. Найти производные следующих функций
(определить области, в которых существует производная):
104
aJ/:R-R,We/(*J-*1/f;
б) /: R\{0> - R, где /(*)- 1/x;
в) /: R-*R, где/(а:)=|а:|2.
5. Показать, что если / и g дифференцируемы в
точке х, то:
а) / + 8 дифференцируема в точке х и
(/ + *)'(*) = /'(*)+*'(*}';
б) fg дифференцируема в точке х п
в) f/g дифференцируема в точке х при g(x)¥=0 и
ё (х)
6. Показать, что если ак е R при 0<i<JV и p: R -*■
-*■ R определено соотношением
р(х) = 2 akXk, то р' (х) = 2 aftfcz*-1.
й=0 й=1
7. Определить производные следующих функций:
а) /: R-* R, где f{x)— a; sin ж/(1 + cos а:),
б) g: R-* R, где g(a:) = sina:2 + a:cos2a:.
8. Вычислить интегралы:
2 1 я/2
a) J a:3 da:; б) J х1/з dx; в) j cos x dx,
1—10
9. Найти неопределенные интегралы:
a) j xe* dx; 6) ] Г " ) da:; в) j sin a: cos a: da:.
§ 6, Операции
Часто некоторые функции (такие, например, как
сложение целых чисел) используются при введении более
простых обозначений. Это можно использовать для
описания основных идей, изложенных в предыдущих
параграфах, что, в свою очередь, позволит нам сделать
доказательства более короткими и в то же время точно
выделить свойства, на основе которых делаются выводы.
Более детальное исследование будет проведено в
гл. 5-8.
105
Определение. Операцией над множеством S
называется функция /: S" -*■ S, п е N. В этом определении
есть два важных момента, которые заслуживают
особого упомипаипя. Во-первых, раз операция является
функцией, то результат применения операции
однозначно определен. Поэтому данный упорядоченный набор из
п элементов S функция / переводит только в один
элемент S. Во-вторых, поскольку область значений
операции лежит в S, на которое операция действует, будем
говорить, что операция замкнута на S.
Говорят, что операция S" -*■ S имеет порядок п.
Ограничимся рассмотрением ситуаций, когда порядок
равен 1 или 2. В этом случае операции называют монади-
ческими (или унарными) и диадическими (или
бинарными) соответственно. Элементы набора из п элементов
в области определения называют операндами. Операции
обычно обозначают символами, называемыми
операторами. В случае унарных операций обычно символ
оператора ставят перед операндом. II
Наиболее простым примером является операция
изменения знака на R. В предположении, что операция
сложения уже определена, —х определяет операцию
Xf* у: х + у = О (х отображается в у: х + у = 0).
Определение. Бинарные оиерацпи обозначают
одним из трех способов. В первом случае оператор
ставится между операндами (infix), во втором — иеред
операндами (prefix) и в третьем — после оиерандов
(postfix). II
Пример 6.1.
о + Ь infix,
-i-ab prefix,
аЬЛ- postfix. II
Переход от одной формы к другой нетруден и лучше
всего описывается в терминах ориентированных графов,
которые будут обсуждаться в § 6 гл. 7.
В соответствии с большинством математических
текстов, исключая некоторые работы по алгебре и
формальной логике, мы будем использовать обозначение infix.
Другие обозначения имеют то преимущество, что не
требуют скобок при определении порядка вычислений
сложных выражений, и это делает их особенно удобными для
автоматической обработки. Читатель может проверить
соответствие между следующими парами выражений,
записанными в формах infix и postfix соответственно:
106
а) a + b* c+(d + e »(/ + £)),
abc » + dejg + * ++;
б) (a + b) * с + d + e » / + g,
ab + c* d + e/ » + g +;
в) a + (b »(c + d)+e)» j + g,
abed + «e + f*+g+.
При м е р 6.2. Рассмотрим алгебраическое выражение
a + b»c + (d + e»U + g))
и его представление на рис. 3.11, которое пазывают до-
ревом. Из свойств арифметических операций мы знаем,
что значение этого выражения можно вычислить
многими способами. Однако если двигаться слева направо и
снизу вверх, то получаем
a -«- b * с, р" -*- a + a, t *- f + g,
б *-e • к. n*-d + 6, p*-^ + n.
Здесь греческими буквами обозначаются промежуточные
результаты, за исключенном р —искомого результата.
Вычисление значения этого выражения с помощью
дерева производится очень просто, однако если работать
пепосредствеипо с исходным выражением, то это можно
л - д
Л
Рис. 3.11
сделать по-другому. Действительно, обычпо (infix)
выражение, как это показаио в примере, нерегулярно
потому, что некоторые подвыражения заключены в
скобки, а некоторые нет. Особенно такая ситуация будет
наблюдаться в том случае, если проинтегрировать
информацию о различных символах па дорсве (поскольку на
самом доле его пет). Очевидно, что формы записи prejix
и postfix этого выражения несут больше информации.
107
Вычисление значения выражения в форме postfix
осуществляется следующим образом:
а
а
Ъ с
1
Л
Р
?
Р
/з
*
+
+
d
d
d
d.
d
e
e
e
e
i
f
f
f
9
9
9
У
S
rt
+
+
+
*
*
*
*
+
+
+
+
+
+
+
+
+
+
+
Аналогично в форме prefix вычисления осуществляются
следующим образом:
+
+
+
+
*
+
t
+
+
1
а
а
*
i
Р
Р
Р
Р
Ь
а
с +
+
+
+
4-
d
d
d
d
d
*
*
*
*
к
i
в
e
e
e
S
+
+
+
i
f
f
f
У
9
9
3
i
«Переходы» по дереву показаны на рис. 3.12, а
(форма prefix) на рис. 3.12, b (форма postfix) а на
рис. 3.12, с (форма infix) со скобками:
((a + (&.c)) + (d + (e.(/ + *))));.
К этим вопросам мы вернемся позднее.
Конечно, мы уже внакоыы со многими бинарными
операциями, например с арифметическими операциями
+1 *» — 1 / и операциями над множествами —
объединением (U) и пересечением (Л).
Операции, определенные на конечных множествах,
часто удобнее задавать при помощи таблиц.
Пример 6.3. Пусть операция ® определена на
множестве {а, Ь, с) ори помощи таблицы
®
a
b
с
а
а
Ь
а
Ъ
а
а
Ъ
с
Ъ
с
Ъ
108
Следовательно,
a®b = a,
b®b = a,
с ® b = b, ... II
Такие символы, как © и ®, будут использоваться для
обозначения различных операций, которые будут вво-
-*5 +
Рис. 3,12
109
диться в процессе изложения. Очевидно, что
использование таблиц имеет важное значение, так как некоторые
операции, с которыми приходится иметь дело в
компьютерной математике, непригодны для словесного задания.
Обратим теперь внимание на свойства операций.
Операции вместе со своими следствиями обеспечивают
основу всех алгебраических вопросов математики, так как
они определяют порядок работы с объектами.
Определение. Говорят, что бинарная операция ®
на множестве А коммутативна, если
a®b=b®a для всех а, Ь е А. Ц
Следовательно, обычная операция сложения на Z
коммутативна, а вычитания — нот.
Определение. Говорят, что операция ® на
множестве А ассоциативна, если
(а ® Ь)® с = а ® (b ® с) для всех a,b,c^A. ff
Заметим, что в определении ассоциативности
порядок операндов a, b и с сохранен (операция может быть
некоммутативной!) и использованы круглые скобки,
чтобы определить порядок вычислений.
Таким образом, выражение (а ® Ь) ®с требует, чтобы
сначала вычислялось а ® b и результат этого (скажем,
х) участвовал в операции с с, т. е. давал я®с. Если
операция ассоциативна, то порядок вычислений
несуществен и, следовательно, скобки не требуются.
Пример 6.4. Над Z имеем
(1 + 2)+ 3 = 1 + 2 + 3 - 1+(2 + 3),
но
(1 — 2)— 3 4 и 1 — (2 — 3)=2.
Таким образом, операция вычитания не ассоциативна. II
Коммутативность и ассоциативность являются двумя
важными свойствами, которые могут быть определены
для простых операции. Перед тем как описывать
свойства, связывающие две операции, определим некоторые
термины, относящиеся к специальным элементам
множеств, к которым эти операции применяются.
Определение. Пусть ® — бинарная операция на
множестве А и / е А такая, что
I® а = а для всех а е А.
Тогда / называется левой единицей по отношению к ®
110
на А. Аналогично, если существует г&А такое, что
а® г = а для всех аеД
то г является правой единицей по отношению к ®
Далее, если существует элемент е, который является и
левой, и правой единицей, т. е.
е®а = а®е=;а для всех аеЛ,
то е называется (двусторонней) единицей по
отношению к ®. II
Пример 6.5. Над R 0 является правой единицей по
отношению к вычитанию и единицей по отношению к
сложению, так как
а — 0 = а,
но
О — а Фа, если а Ф 0;
а + 0 = а и 0 + а — а для всех а. II
Определение. Пусть ®— операция на А с
единицей е и х ® J/ = е. Тогда говорят, что z — левый
обратный элемент кг/, а у — правый обратный элемент к
х. Далее, если х и г/ такие, что
х®г/ = е = г/®х,
то г/ называется обратным элементом к z по отношению
к ®, и наоборот. II
Замечание. В некоторых работах левые (правые)
обратные элементы относят к левой (правой) единице,
однако, как мы скоро увидим, в большинстве случаев
единицы являются двусторонними и, следовательно, не
требуется делать никаких различий. Для решения
уравнений необходимо существование и единственность
единиц и обратных элементов. Менее общим свойством
операций является идемпотентность, хотя оно используется
в алгебре логики.
Определение. Пусть операция ® на множестве
А и произвольный элемент х е А таковы, чтоя®я=-£.
Тогда говорят, что х идемпотентен по отношению
к ®. //
Очевидно, что любое подмножество идемпотентно по
отношению к операциям пересечения и объединения.
Определение. Пусть дано множество А, па
котором определены две операции ® и ф. Тогда, если
а ® (6 ф с) = (а ® Ъ) ф (а ® с) для всех а, 6, с е А,
то говорят, что ® дистрибутивна по отношению к Ф-
111
Если сказанное выше не совсем понятно, следует
провести соответствие между этим тождеством и
обычной арифметикой на R, например,
3«(1 + 2) = (3»1) + (3«2).
Может вызвать удивление, что в § 5 рассматривались
только несколько специальных свойств, и можно прийти
к выводу, что практически ничего нельзя вывести из
того факта, что множество и связанные с ним операции
обладают некоторыми из этих свойств. На самом деле
(как будет видно из последующих глав) наиболее
общеизвестная алгебра может быть построена из
относительно небольшого набора основных правил. Сейчас мы
продемонстрируем, как из элементарных предположений
можно извлечь некоторые простые следствия;
большинство примеров дано в виде упражнений.
Пример 6.6. Пусть ® — операция на множестве А
и существует единица по отношению к ®. Тогда
единичный элемент единствен.
Доказательство. Предположим, что х и у — еду*,
ницы по отношению к ®, т. е.
х® а — а®х = а,
у ® а = а® у = а для всех аеА
Тогда х = х ® у, так как у — единица, и х®у = у,
поскольку х — единица. Следовательно, х = у. Л
Пример 6.7. Пусть ® — ассоциативная операция
на множестве А а е — единица по отношению к ®.
Тогда если х s А и х имеет обратный, то обратный
элемент единствен по отношению к ®.
Доказательство. Допустим, что х' и х" —
обратные элементы к х, так что
х®х' = х'®х=>е и х ® х" = х1r ® х = е.
Тогда
х' = х' ® е = х' ® (х ® х") = (х' ® х) ® х" —
щ> е ® х" = х": II
Упражнение 3.6.
1. Рассмотреть указанные ниже «определения» ®.
Решить, правильно или нет каждое из них определяет
бинарную операцию, и если так, то является ли
операция коммутативной. Найти, если это возможно, единицу
а обратный элемент к х. Предполагаются
выполненными обычные свойства арифметики:
112
а) x®y=x—y на N;
б) x ® у = (x*y) — 1 на Z;
в) x® у = max{x, у) на N;
г) x®z/ = l/a.'2 + J/2 на {х: 0<x,xe=R};
д) х®у = х/у на {x: 0<x, xeR}.
2. Определим операцию ф на множестве {а, Ъ, с), как
указано ниже. Проверить, что ф ассоциативна и
коммутативна и найти единичный элемент.
ф I а Ь с
Ь с а
а Ь с
cab
3. Предполагая обычные свойства операций +, —, *
и / на R, доказать, что операция г|), определенная на
[1, <»[ следующим образом:
ассоциативна. Обосновать ответ.
Указание: не следует особо обращать внимание
на область определения.
4. Пусть ® — ассоциативная операция на множестве
А с единицей е такая, что каждый элемент а е А
обратим и обратный обозначается через а'. Показать, что
(а ® Ь)' = V ® а'.
5. Показать, что если ®— ассоциативная операция
на множества А с единицей е такая, что а® а *= е для
каждого а^А, то ® коммутативна.
6. Пусть ® — ассоциативная операция на множестве
А такая, что для любых а, Ъ^А, если а® Ь = Ь® а, то
о = 6. Показать, что каждый элемент А идемпотентен по
отношению к ®. Что можно сказать про ®, если
операция имеет единицу?
8 д. кук, г, Бейз
ГЛАВА 4
ОСНОВНЫЕ ПОНЯТИЯ АРИФМЕТИКИ
Итак, мы определили операции и описали некоторые
их свойства. Теперь посмотрим, что можно сделать с
совокупностью операций, заданных на множестве.
Множество с заданными на нем операциями
называют алгебраической структурой. Некоторые из наиболее
часто встречающихся алгебраических структур будут
рассмотрены позднее. Прежде чем приступить к их
рассмотрению, посмотрим на арифметику с неформальной
точки эрения. В большинстве случаев мы будем
опускать формальные определения, делая ударения на
«следствия из правил», даже в тех случаях, когда это
приводит к необычным способам использования
известных символов, которые обычно используются для
представления десятичных чисел,
§ 1. «Малая» конечная арифметика
Арифметику можно рассматривать как множество с
двумя операциями, действующими подобно сложению и
умножению. Ее можно изучать многими способами.
Чтобы уяснить требования арифметической системы,
примем конструктивное приближение и рассмотрим целыэ
числа (0, 1, 2, ...) просто как символы. В дальнейшем
будем рассматривать только конечную арифметику, в
которой используется лишь конечное множество чисел;
вначале это множество будет небольшим.
Подразумевается, что если А ~ Nm, то требуется т различных
символов, при этом никакие комбинации символов не
разрешаются. Если используются только десятичные числа, то
т ^ 10. Поскольку все множества данного размера
биективны, то можно рассматривать только множества Nm.
Для большей наглядности рассмотрим множество Ne.
Для этого необходимо построить таблицы умножения и
сложения. Множество Ne достаточно велико для того,
чтобы изучать свойства основной структуры, Можно по-
114
думать, что для этой цели более уместным является
множество N2, однако это не так. Начнем со сложения.
Операция сложения имеет единицу, которая обычно
обозначается символом 0, однако 0 <£ Ne. Поэтому будем
использовать множество Ze = <0, 1, 2, 3, 4, 5), которое
более удобно. Очевидно, что Ze ~ Ne. Поэтому можно
работать с Ze, не теряя никаких свойств. Таким образом,
к настоящему моменту мы имеем соответствующую
табл. 4.1.
Таблица 4.1
+
0
1
2
3
4
5
0
1
2
3
4
5
Так как операция коммутативна, то таблица должна
быть симметричной. Труднее обстоит дело с
ассоциативностью. Если мы хотим, чтобы операция была
ассоциативной, и требуем, как обычно, существования
обратных элементов по сложению, то любой элемент должен
входить ровно один раз в каждую строку и каждый
столбец. Поясним это высказывание.
Если а + Ь = а + с, то
—а + (а + Ь) = —а + (а + с),
(—а + а)+ b =(—a + a) + с,
О + Ь = 0 + с,
Ъ = с.
Рассмотрим теперь операцию, определенную в
габл. 4.2. Из трех возможностей для операции сложения
на Ze только С удовлетворяет всем условиям, что
выглядит несколько необычно. Операция А не коммутативна,
а в В нарушен критерий «единственности результата».
Как же построить соответствующую операцию,
удовлетворяющую всем обсуждаемым выше свойствам? Из
дальнейшего изложения будет видно, что наиболее
трудно обеспечить выполнение свойства ассоциативности.
В предложенной ниже процедуре мы используем ассо-
8* 115
циативность как основной шаг построения, и,
следовательно, это свойство будет выполняться автоматически.
Шаг 1. Число 0 является единицей для операции
сложения. Поэтому получаем табл. 4.3.
Таблица 4.2
А
0
1
2
3
4
5
0123455012345 С
0 12 3 4 5 0
12 0 4 5 3 1
2 0 15 3 4 2
3 5 4 0 2 1 3
4 3 5 10 2 4
5 4 3 2 10 5
0 12 3 4 5 0
112 3 4 5 1
2 2 2 3 4 5 2
3 3 3 3 4 5 3
4 4 4 4 4 5 4
5 5 5 5 5 5 5
0 12 3 4 5
0 12 3 4 5
15 3 4 2 0
2 3 15 0 4
3 4 5 0 12
4 2 0 15 3
5 0 4 2 3 1
Таблица 4.3
+
0
1
2
3
4
5
0
0
1
2
3
4
5
1
1
2
2
3
3
4
4
5
5
Шаг 2. Определим следующую строку таблицы,
удовлетворяющую условию «единственности результата».
Чтобы подчеркнуть используемую технику, специально
выберем результат, который отличается от привычного,
Возьмем
+ (012345
1 13 0 5 2 4
Так как операция должна быть коммутативной,
заполним соответствующий столбец табл. 4.4.
Шаг 3. Заполним другие клетки таблицы, используя
ассоциативность. Проследим подробно за каждой
деталью:
2 + 2 = 2 + (1 + 4) = (2 + 1)+4 = 0 + 4 = 4,
2 + 3 = 2 + (t+l) = (2 + l)+l = 0+l = l,
2 + 4 = (2+1)+5 = 0 + 5 = 5,
2 +5= (2 + 1)+3 = 0 +3 = 3.
Ив
Здесь мы использовали соотношения 2 + 1=0 и 0 + .г =•
= х. Далее
3 + 3 = (1 + 1) + 3 = 1+(1 + 3)=1 + 5 = 4ит. д.
Таким образом, на основе значений 1 + х получаем
таблицу для операции + (табл. 4.5).
Таблица 4.4 Таблица 4.5
+
0
1
2
3
4
5
0
0
1
2
3
4
5
1
1
3
0
5
2
4
2
2
0
4
1
5
3
3
3
5
1
4
0
2
4
4
2
5
0
3
1
5
5
4
3
2
1
0
+
0
1
2
3
4
5
0
0
1
2
3
4
5
12 3 4 5
12 3 4 5
3 0 5 2 4
0
5
2
4
При выполнении процесса надо учитывать
дополнительные ограничения на шаге 2. Значения в нулевой строке
должны выбираться так, чтобы они «продолжали» все
Z$. Например, начиная с 1 (как мы делали), получаем
1 + 1 = 3, 3+1 = 5, 5 + 1 = 4, 4 + 1 = 2,
2 + 1 = 0, 0 + 1 = 1.
Следовательно, прибавляя только 1, можно получить
все Ze.
Перейдем теперь к умножению. Сначала заметим,
что единица для операции умножения должна
отличаться от нуля. В противном случае для любых х и у мы
имели бы
х = 0»х = х»0, у = 0 + у=у + 0,
поэтому
х • у = х * (0 + у) = (х • 0)' + (х » у) = х + (х » у),
а аначит, х = 0. Поэтому 0 не является единицей для
умножения.
На самом деле нам требуется число, которое будет
порождать Ze. Следовательно, мы могли бы определить
аналогичным образом операцию умножения на основе
частичной табл. 4.6. Однако в этом случае мы не
должны настаивать па выполнении критерия «единственности
результата». (В обычной арифметике пе существует
целого числа, которое при умножении на 2 давало бы 1!
Поэтому в конечном множестве могут быть повторения.)
117
Вместо того чтобы повторять процедуру построения
таблицы для умножения, вернемся к проблеме связи двух
операций — дистрибутивности умножения относительно
сложения. Эта проблема связана с ассоциативностью.
Рассмотрим (уже построенную) операцию сложения.
Таблица 4.6 Таблица 4.7
*
0
1
2
3
4
5
0
0
1
0
1
2
3
4
5
2
2
3
3
4
4
5
5
*
0
1
2
3
4
5
0
0
0
0
0
0
0
i
0
1
2
3
4
5
2
0
2
1
4
3
5
3
0
3
4
4
3
0
4
0
4
3
3
4
0
5
0
5
5
0
0
5
Заметим, что 1 + 1 = 3. Поэтому из предположения
дистрибутивности получаем, что
3*0=(1 + 1)*0 =
= (1«0) + (1«0) = 0 + 0 = 0,
3.2 = (1»2) + (1«2) = 2 + 2 = 4,
3«3 = (1«3) + (1«3) = 3 + 3 = 4,
3»4 = (1«4) + (1«4) = 4 + 4 = 3,
3.5 = (1»5) + (1 «5) = 5 + 5 = 0.
Теперь 3 + 3 = 4, 3+1 = 5, 1 + 4 = 2 и 1 + 2 = 0.
Действуя как и ранее, получаем следующую операцию
(табл. 4.7).
Следовательно, начиная с почти произвольного
выбора строки в таблице, не содержащей 1 по сложению, и
накладывая ряд простых ограничений, мы приходим к
приемлемой арифметической системе. Теперь достаточно
установить, что полученная система не находится в
противоречии с высказанными ранее соображениями, т. е.
что 1+1 действительно существует. Короче говоря, если
в нормальной (бесконечной) арифметике а + Ь = с и се
е Ze, то хотелось бы, чтобы и в нашей арифметике ответ
был с. Следовательно, мы пришли к выбору
+ | 0 1 2 3 4 5
ill 2345?
Недостающим элементом должен быть 0, поскольку 6 9^
Ф Ze, и 0 является единственным элементом Ze, которо-
118
го нет в строке. В результате такого выбора получаем
соответствующую табл. 4.8. Она определяет так
называемую арифметику по модулю 6. (Эта арифметика
работает точно так же, как и обычная целочисленная
арифметика, за исключением того, что все целые числа
заменяются на остатки от деления их на 6.)
Таблица 4.8
+
0 12 3 4 5
0
1
2
3
4
5
0
1
2
3
4
5
1
2
3
4
5
0
2
3
4
5
0
1
3
4
5
0
1
2
4
5
0
1
2
3
5
0
1
rt
3
4
*
0
1
2
3
4
5
0
0
0
0
0
0
0
1
0
1
2
3
4
5
2
0
2
4
0
2
4
3
0
3
0
3
0
3
4
0
4
2
0
4
2
5
0
5
4
3
2
1
Упражнение 4.1.
1. По аналогии с «естественной» арифметикой,
полученной для Ze, построить аналогичную арифметику для
Zie, используя символы (0, 1, ..., 9, А, В, ..., F).
2. Построить арифметику для Ze, которая
согласуется со строкой
+ 10 1 2 3 4 5
2 | 2 3 4 0 5 1
3. Рассматривая 1 + 3, показать, что следующая
таблица приводит к противоречию:
+ 10 1 2 3 4 5
§ 2. «Большая» конечная арифметика
Мы уже построили арифметику для Ze. Возникает во*
прос: как можно расширить эту систему, чтобы иметь
возможность считать после 5? Для этого достаточно
иметь множество n-значных чисел (наборов из п
элементов из Ze) с арифметикой над Ze. Чтобы
проиллюстрировать это, рассмотрим упорядоченную тройку из Z6,
т. е. элементы множества Ze X Ze X Ze. Если Ze
упорядочено обычным способом, т. е. 0<1<2<3<4<5,
тогда определим порядок на Ze X Z6 X Z6 по правилу
(а, Ь, с)<(х, у, z\,
119
если а < х или а = х и b < у или а —ж, ft — y и e<s.
В этом случае элементы Z| = ZexZexZe будут
упорядочены следующим образом:
(0,0,0), (0,0, 1),..., (0,0,5;,
(0,1,0) (0,1,5),
(0,5,0) (0,5,5),
(1,0,0) (1,0,5),
(5,5,0) (5,5,5).
Таким образом, существует б3 = 216 различных троек.
Поэтому нужно уметь производить арифметические
вычисления над Zf в пределах от 0 до 215. В приведенном
выше упорядочивании элементов из Ze
(0, 0, 5) непосредственно предшествует (0, 1, 0).
(0, 1, 5) непосредственно предшествует (0, 2, 0)
>....•• •■•••■
(0, 5, 5) непосредственно предшествует (1, 0, 0).
Следовательно, хотелось бы, чтобы выполнялось соотно-«
шение
(0, 0,5)+1-(0,1,0).
Однако до сих пор не было представления 1 в Z?. И
хотя это соотношение выглядит естественным, мы должны
заботиться о том, чтобы не использовать ни одного не
определенного понятия. Для облегчения описания
представим Ъ\ как A2XA\XAq и рассмотрим сумму (аг, аи
ао) и [Ъч, b\, bo). Покомпонентное сложение дает (аг+
+ &2, ai + &i> ао + М, гДе сложение осуществляется в Ze,
и пока, как кажется, этого достаточно.
Пример 2.1. Рассмотрим соотношение
(0, 1, 3) + (4, 2, 1) = (4, 3, 4),
которое будет более наглядным, если записать его в виде
0, 1, 3
+
4. 2, 1
= 4, 3, 4
120
Однако
, 1, 2, 5
+ 2, 3, 1
= 3, 5, О
+
О, 0, 5
О, О, 1 (= 1?)
= 0, О, О (=0?). //
В результате операции сложения множество Аа
переходит в себя. Однако для того чтобы сумма достаточно
больших чисел (таких, как 5+1) могла бы выйти за
пределы Ао, нам необходимо производить некоторые
действия в А\ и также, возможно, в А*. (Это
иллюстрируется табл. 4.9).
Таблица 4.9
+
0
1
2
3
4
5
0
0
1
2
3
4
5
1
1
2
3
4
5
0
2
2
3
4
5
0
1
3
3
4
5
0
1
2
4
4
5
0
1
2
3
5
5
0
1
2
3
4
+
С
0
1
2
3
4
5
0
0
0
0
0
0
0
1
0
0
0
0
0
1
2
0
0
0
0
1
1
3
0
0
0
1
1
1
4
0
0
1
1
1
1
5
0
Возьмем любые два числа а и Ь из Ъ$. Тогда их
сумма (в Z) составляет
6»(а + сЬ) + (а + .Ь).
Пример 2.2. 4 плюс 4 дает 6*(1) + (2) = 8 в Z.
Таблица +, дает «обычную» сумму двух элементов из
Z6, в то время как таблица +е показывает, когда
необходим «переход» в следующее множество Ъъ, и содержит
только нули и единицы. Значения в +е ограничены,
потому что если
0 < х<п и 0< i/ < га,
то
0^х^х + у<х + п<п + п = 2п (и га = 6 в Zs). II
В действительности можно получить лучшую оценку,
поскольку
0<a:«Sn-l и 0^у^п-1,
и, следовательно,
0*3x + y<2n-2<2n-i.
Возвращаясь к суммированию (аг, а\, ао) и (&2, b\, bo)
121
и обозначая ответ через (J2, d\, (?o), получим
do = ао + ,bo,
хо = oo + cbo)
zi = если a\ + c&i = 1 тогда 1,
иначе (ai + ,&i) + cxq,
d2 = a2 + ,62 + iSi,
^2 = если яг + c^2 — 1 тогда 1,
иначе (аг + .62) + tx\.
Поскольку 0 < at + b, < 2n — 1 и xf — 0 или я, = 1, то
переносимый результат из а( + 6, + :г(_1 никогда не может
быть больше 1.
Заметим, что в наших определениях числа (0, 0, 0)
и (0, 0, 1) в Zg действуют, как 0 и 1 в новой
арифметике. Кроме этого, если х% — 5, то результат сложения
может оказаться слишком большим для Zj?. В этом
случае говорят, что произошло «переполнение». Этот случай
мы обсудим более подробно в § 3 гл. 4, а до конца
параграфа возможность перевыполнения будем игнорировать.
Аналогично можно использовать операции »р и »„
(таблицы произведения и переноса), заданные в
табл. 4.10 для того, чтобы производить умножение над
Z6, однако мы не будем этим заниматься.
Таблица 4.10
*
с
0
1
2
3
4
5
0
0
0
0
0
0
0
1
0
0
0
0
0
0
2
0
0
0
1
1
1
3
0
0
1
1
2
2
4
0
0
1
2
2
3
5
0
0
1
2
3
4
•
р
0
1
2
3
4
5
0
0
0
0
0
0
0
1
0
1
2
3
4
5
2
0
2
4
0
2
4
3
0
3
0
3
0
3
4
0
4
2
0
4
2
5
0
5
4
3
2
1
До сих пор мы рассматривали только символы,
имеющие впд положительных чисел. Конечно, с символами
0, 1, 2, ... можно обращаться «естественным» образом,
и, следовательно, их можно интерпретировать как
неотрицательные чпсла. Арифметика над Ъ\ оперирует с
числами от 0 = (0, 0, 0) до 215 = (5, 5, 5), которые были
получены из последовательности (от 0 до 5) в Ze. Если
122
взять мпожество (—3, —2, —1, 0, 1, 2} вместо Z@, то
получим систему, которая содержит отрицательные числа,
но ведет себя странным образом.
Если мы возьмем диа множества Ze н множество {—3,
—2, —1, 0, 1, 2), которое назовем ZJ, и образуем
мпожество Z^xZjXZ,,, то можно построить арифметику с
числами от —108 до 107. Иа самом деле арифметика
является той же самой, за исключением того, что
значения 3, 4 и 5 в At сейчас интерпретируются как —3, —2,
—1 соответственно. Поэтому, например, (—2, 4, 2)
вычисляется в Z как
(-2»3G) + (4»6)+2 = -46.
Биекция между двумя системами, определенная
следующим образом:
3 ~ — 3,
4->-2,
5~ — 1,
£>-»■ я в остальных случаях,
может быть применена в любой момент при условии, что
результат вычислений не имеет цифр 3, 4 или 5 в Аъ.
Мы выбираем обозначения из соображения удобства, не
вводя ограничений па случаи, когда можно применять
бпекцшо или обратное отображение. Па этом этапе мы
настойчиво советуем игнорировать любые очевидные
противоречия, относящиеся к переполнению Аг. Этот случай
будет подробно рассмотрен в последующих параграфах
на более простом примере. Отметим, что повая система
«переходит» от положительных чисел к отрицательным.
Например,
((3,0,0) в старой системе,
(2, 2, 5)+ (1,0,1)= _ '
v ' ' ' ' v ' ' ' ц_ 3,0,0) в новой системе.
(В Z это дает 107 + 1 = -108!)
Вычисления, включающие в себя сложение и
вычитание, в новой арифметике довольно просты и зависят
от двух тождеств. Первое имеет вид
(5,5, 5) + (0, 0, 1)-(0, 0, 0)
((5, 5, 5) эквивалентно (—1, 5, 5)), а второе — вид
(аг, аь а0) + {Ь3, Ьи Ьо) = (5, 5, 5).
123
Они имеют место тогда и только тогда, когда
а2 + Ьг = 5, й| + bi = 5, ао+Ьо = 5.
Таким образом, чтобы вычислить обратное по сложению
число к (аг, ей, йо), мы должны сначала найти число
(Ьг. Ъ\, bo), которое называют дополнением по 5, и затем
прибавить 1=(0, 0, 1). Это даст дополнение до 6.
Проиллюстрируем этот процесс на следующем примере.
Пример 2.3. Найдем обратные элементы к (—3, 4,
1) и (3, 4, 1).
Из 3, 4, 1
получаем 2, 1, 4 (дополнение до 5)
+ 1
2, 1, 5 (дополнение до 6)
Проверим pe3j чьтат 3, 4, 1
-Ь
2, 1,5
= О, О, О
Поэтому - (-3, 4, 1) = (2, 1, 5). /
Таким образом, вычитание сводится к сложению с
соответствующим дополнением.
Пример 2.4. Вычислим (1, 3, 4) —(2, 1, 5).
Берем 2, 1, 5
получаем 3, 4, 0 (дополнение до 5)
результат 3, 4, 1 (дополнение до 6)
прибавим (1, 3, 4) (1, 3, 4)
5, 1, 5=(-1, 1, 5).
Проверяя вычисления над Z, получаем 58—83 = —25. /
Конечно, причиной образования так называемых
дополнений до 5 и 6 является тот факт, что мы проводим
вычисления над Ne (или Ze).
В общем случае, если вычисления производятся в Nm,
мы должны использовать дополнение до т — 1 и т
соответственно.
Надо подчеркнуть, что в вычислениях на ЭВМ мы
обычно имеем дело с Z„t для пекоторых фиксированных
т и п и очень редко — с множеством Z. Таким образом,
совокупность имеющихся в нашем распоряжении чисел
всегда ограничена, и, хотя границы могут быть очень
большими, мы не должны забывать о том, что они
существуют. Риск тем более велик по той причине, что в
записи обычно опускают запятые и все нули, стоящие
слева от первой ненулевой цифры за исключением числа
124
(О, 0, 0). Следовательно, (1, 3, 4) запишется кан 134,
(0, 0, 6) как 6 и (0, 0, 0) как 0.
Упражнение 4.2. Обозначим Z^xZ"n-1 через Z„~,
где
Zm =•[— ^-. .. .,0, ...,^- — 1). если т четное,
п
т = \ 5—» • • •» ^> • • •» —2— Г еСЛИ т нечетное'
Вычислить: а) 10-7; б) 17-23; в) (-8) + (-21) в
каждой из «естественных» арифметик Z*~, Ъ\^, Ъ\~, Zf^>
(Замечание: числа в примерах заданы над Z;
поэтому вначале требуется перевести их в
соответствующую систему, а потом проводить вычисления.)
§ 3. Двоичная арифметика
Из уже построенных арифметик над ZJ}, и Zj},- легко
выделить основы двоичной арифметики. Существуют две
так называемые двоичпые арифметики. Первая — это
знаковая и модульная форма, определенная па {—, + }xZ",
т. е. Za (определенное в предыдущем
параграфе) с добавленным знаком, расширяющим элементы Z^-
Знак обычно кодируют в бинарной форме: 0 для «+» и
1 для « —». Вторая арифметика {двоичная арифметика
дополнений)—это Z'21- с элементами {0, 1} во всех га
позициях. Этот вид двоичной арифметики используется в
большинстве компьютеров. Поэтому ограничим наши
рассмотрения Zlj1-, Чтобы сделать обсуждение более
конкретным, рассмотрим Z'j-, элементы которого лежат в
пределах от 10000 (=-16) до 01 111 (=+15) (т. е.
содержит 32 = 25 различных чисел). Число —1 представляется
в Z\~ как 11 111. Поэтому легко найти двоичное
дополнение. Для этого надо слегка изменить все двоичные
цифры, пазываемые битами, чтобы получить дополнение
до 1, а ватем прибавить 1, чтобы получить дополнение
до 2.
Пример 3.1.
-(01011)
10100
+
1__
10 101
125
(=-24 + 22 + 2° = -llJ;
-(ЮНО)
+ OlOOl
1__
01 010
(=23 + 2'= 10). //
Очевидно, что могут возникнуть проблемы, вызванные
ограниченностью чисел. Мы не можем их избежать,
однако следует знать, когда возможна «ошибка». Форма
дополнения делает проверку условия переполнения
относительно легкой, использующей только значения
старшего значащего бита. (В Zip это бит с номером 24.)
Этот бит обозначает знак представляемого числа и
называется знаковым битом или знаковым разрядом. Перед
тем как проверить, какое значение имеет знаковый бит,
напомним, что прибавление 1 к максимальному
положительному числу в Z',p дает максимальное
отрицательное число (наибольшее отрицательное число — это
отрицательное число, отстоящее дальше всего от нуля).
Другими словами, числа повторяются циклическим образом.
В Zp мы имеем ситуацию, изображенную на рис. 4.1.
в г\~
15 -16 0 15 -16 0 15 -16 0 15 -16
т 1 т 1 1—i—i 1 1—i г
J 1 I I J I 1 I I I I
-4S -4S -32 -П -16 0 15 IS 31 47 48
BZ
Рис. 4.1
Что же произойдет, если мы сложим два числа х и у,
где
— а^а:<аи—а^г/<а (в Zip, а = 16)?
Сумма х + у будет ограничена:
2а «3 х + у <, 2а - 2 < 2а - 1.
Само по себе это неравенство ничего не дает. Поэтому
мы рассмотрим три случая:
(I) если — а<х<0 и — а<у<0
тогда —2а < х + у < 0;
(II) если 0^х<а и 0^у<а
тогда 0sSa: + ys£2a-2<2a-l;
126
(Ill) если -а<х<0 иО<у<а
тогда —а <.х + у < а.
Вначале заметим, что результат в случае (III)
находится в требуемых пределах п, следовательно, всегда
правильный. Чтобы попять, как могут возникать ошибки в
случаях (I) и (II), необходимо вспомнить, что если ге
е Z и —2а < z < —а, то число z представимо в конечной
арифметике числом z', где %' •= z + 2а и 0 < z' < а.
Аналогично, если a^z<2a — 1, то z представимо z", где
z"=z —2а и —a<z"<0. Следовательно, ответ будет
неправильный, если он в случае (I) положительный или
в случае (II) отрицательный.
Чтобы объяснить эти заключения в терминах свойств
знакового разряда, рассмотрим различные возможности
сложения двух чисел:
а) оба числа отрицательны;
б) оба числа положительны;
в) числа имеют различные знаки.
Анализируя эти случаи, видим, что переполнение
(ошибка переполнения) встречается тогда и только
тогда, когда существует перенос в знаковый разряд или
перенос из знакового разряда, но не оба вместе. Для
иллюстрации этого рассмотрим несколько примеров в Z\~.
Попытаемся сопоставить эти примеры со случаями (I) —
(III) и а) — в), рассмотренными выше.
Пример 3.2. Напомним, что вычисления проводятся
В &2 «
,10101 ,11100
+ 1 10 1 0 +1 0 1 1 1
101111 110011
t, I UtJ
,1110 1 ,00101
~*-р 0 1 1 О "Г0 0 1 1 1
10 0 0 11 0 110 0
,01100
"•"0 10 10
//
10 110"
Вернемся теперь к умножению и делению. Сначала
рассмотрим умножение. Напомним, что в Z (или, более
точно, в Z10 для достаточно большого п) умножение на
10 можно получить «сдвигом» всех цифр на одну
позицию влево и записью в 0-й позиции цифры 0. (В Z„
умножение на m также всегда можно осуществить сдвигом
влево.)
127
Следовательно, мы имеем простой способ умножения
на неотрицательные степени числа 2 в Za — сдвиг
каждой цифры влево на соответствующее число позиций.
Пример 3.3. (Вычисления проводятся в Za~.)
0 0 0 11
0 0 110
0 110 0
(3)
(*2)
(♦ 2 = 12)
0 0 1
0 1 0
1 0 1
0 1 0
0
1
0
0
1
0
0
0
11110
1110 0
110 0 0
(5)
(*2)
(*2)
(•2 = 8). Ц
(-2)
(*2)
(*2 =
-8)
Из этих примеров видно, что метод также хорошо
работает для отрицательных чисел, но результат будет с
ошибкой (переполнения), если на каждом этапе менялся
8нак и если потом он опять изменился. Для умножения
произвольного целого числа (элемента N) используем
свойство дистрибутивности умножения по отношению к
сложению и представим множитель как сумму степеней
числа 2.
Пример 3.4. (Вычисления проводятся в Za~.)
3»5 = 3«22 + 3»2°(20 = 1)
(-5)*3 = (-5)»2Ч-(-5)»2°.
110 11
+10 110
Поэтому
, 0
+ 0
0
1
0
1
1
0
1
0
01111 11000 1./
Точно так же, как умножение производилось
сдвигами влево, деление на положительные степени числа 2
осуществляется сдвигом вправо. (Деление на другие
целые числа должно получаться путем сведения к
вычитанию степеней числа 2. Этот процессе мы обсуждать не
будем.) Однако специального рассмотрения требуют
отрицательные числа. Отметим также, что в общем случае
ожидаемый результат (т. е. арифметически ожидаемый
результат в R) будет не целым, а дробным.
Пример 3.5. Попытаемся в Za~ вычислить 12/4,
(—6)/2 и 7/4 сдвигом на 2, 1 и 2 позиции
соответственно. Имеем
0 110 0 (12) 110 10 (-6)
0 0 0 1110 0 (3 = 12/4) 0 110 1|0 (13 ф, -6/2)
0 0 1111 (7)
0 0 0 0 1 | 1 1 (1 » 7/4). /
128
Сдвиг на одну позицию вправо автоматически сводит
любое отрицательное число к положительному. В Ъ\"
сдвиг переводит —16 к +8. Чтобы исправить это, следует
отнять от результата число 16, что даст —8 (т. е. —16/2).
То же самое можно получить, устанавливая знаковый
разряд равным 1. Следовательно, правильный результат
достигается использованием знакового разряда, значение
которого равно 0 или 1 (в зависимости от знака числа),
для того чтобы заполнить «пропуски», создаваемые в
результате сдвига вправо.
Следовательно, (—6)/2 приводит к
11101 = -3.
Действие битов (со значением 1), «выпадающих» из
числа в результате сдвига вправо, должно усекать
результат. Поэтому 7/4 дает 1. Существует общепринятая
практика округлять число (вверх независимо от знака)
прибавлением к числу утерянного последнего бита. Это
соответствует обычному арифметическому правилу
округления, поскольку 1 в первом бите остатка представляет
собой 0.5. Следовательно, 7/4 дает 2.
Упражнение 4.3.
1. Быстрый способ вычисления дополнения до 2 от
данного битового элемента в Zj~ заключается в
следующем. Начиная с правого конца, копируем все идущие
подряд нули и первую встретившуюся единицу. Затем все
оставшиеся биты изменяем. Показать, что этот способ
работает в большинстве случаев, и рассмотреть случаи,
когда он не работает.
2. Пусть в Zij~ производятся следующие вычисления.
Складывают два числа хну (обозначим их сумму
через z). Если от z отнять у, то получим некоторый
результат с, а если от z отнять с, то получим некоторое
число d. Что можно сказать о с и d? Как отличаются
результаты, если вычисления производятся в Z2~?
§ 4. Логическая арифметика
Строго говоря, булева арифметика оперирует на
множествах Z2 и Z£ и, следовательно, включает только
числа 0 и 1. Для того чтобы подчеркнуть такую структуру,
начнем с рассмотрения логической арифметики на
«относительно большом» множестве Zs. Она дает основу
многозначной логики. Отсюда легко получить более простой
9 д. кук, г. Беаз 129
случай Ъъ. Возьмем множество Ъь = (0, 1, 2, 3, 4} и
операции V и Л» определенные в табл. 4.11.
Таблица 4.11
V
0
i
2
3
4
0
0
1
2
3
4
1
1
1
2
3
4
2 3 4
2 3 4
2 3 4
2 3 4
3 3 4
4 4 4
Л
0
1
2
4
4
0
0
0
0
0
0
1
0
1
1
1
1
2 3 4
0 0 0
1 1 1
2 2 2
2 3 3
2 3 4
Упорядочивая Ъъ обычным образом (порядок
индуцируется Z и R), видим, что
аУ Ъ — max {а, Ь),
a/\b=* min{a, Ь}.
Обе операции коммутативны и ассоциативны, 0 является
единицей для V, а 4 является единицей для Д; Л
Дистрибутивна по отношению к V, но не наоборот.
Пример 4.1. Возьмем множество Ъ„ с естественным
порядком элементов. Введем операции Д и V.
Рассмотрим шесть возможных случаев упорядочивания трех
произвольных элементов а, Ь, с из Ъ„:
(I) а<Ь<с;
(II) а<с<Ь;
(III) Ь<а*£с;
(IV) Ь*£с<я;
(V) с<а<Ь;
(VI) с^Ь^а.
Использование символа < является интуитивным, однако
может быть обосновано с помощью следующего
определения:
о < Ь тогда и только тогда, когда a VЬ = Ь.
Для проверки условия дистрибутивности нужно показать,
что
аМЬУс)-(а№)ЩаЬс).
Это можно сделать проверкой того, что обе части
выражения совпадают для каждого из наборов о, Ъ и с. Бу-
130
дем одповремсппо вычислять п сопоставлять соответсгву-"
ющие выражения:
(I) а/\ф\/с) = а/\с = а,
(a/\b)\J(a/\c)-a\Ja*=a;
(II) aMb\Jc)-a/\b-a.
(а/\Ъ)У(а/\с) = а\;а=а;
(III) аЛ№) = аЛс = а,
(а/\Ь)У(аМ = Ьуа = а;
(IV) ah(b\/c) = a/\c = c,
(а№)У(аМ = Ьус = с;
(V) аМЬус) = а/\Ъ = а,
(а/\Ь)У(а/\с) = аУс = а;
(VI) ак(ЬУс) = а№ = Ь,
(а/\Ь)У{а/\с)-ЬУс = Ъ.
Следовательно, Д дистрибутивна по отношепию к V. /
Можно также показать (это как раз тот случай,
когда мы не получаем ожидаемого результата), что V
дистрибутивна по отношению к Д, т. е. что
аУ(ЬМ = (ауЬ)/\(аУс).
Проверку этого свойства оставляе.м в качестве
упражнения.
Перед тем как закончить обсуждение общего случая,
давайте вернемся к табл. 4.11, определяющим V и Д«
Элементы, имеющие одинаковые значения в таблицах,
расположены относительно единичных элементов так, как
показано на рис. 4.2. На самом деле каждая из этих
°\
R
Рис. 4.2
операций является «отражением» другой п связь,
которая позволяет одну операцию менять па другую,
определяется (в Z5) парами (0, 4), (1, 3), (2, 2), (3, 1),
(4, 0). В сущности, это принцип двойственности, который
9*
131
будет обсуждаться в гл. 5. Возвращаясь к Ъг, имеем
V
0
1
0 1
0 1
1 1
Л
0
1
0
0
0
1
0
1
В Z2 операцию V обычно интерпретируют как или
(результат равен 1, если один из операндов равен 1,
включая случай, когда они оба равны 1). Аналогично Д
читается как и. Число 0 является едпнпчным элементом
по отношению к или, число 1 является единичным
элементом по отношению к и. Можно распространить эти
результаты на более высокие размерности (переходя от Ъ%
к Zg)> расширяя компоненты и учитывая, что не
существует переноса из одной копии Ъъ к другой.
Пример 4.2.
0 1110 10 10 0 1
Л 0 0 11110 0 10 1
0011010000 1./
Упражнение 4.4. Определяя операции /\ п V как
минимум и максимум, показать для произвольного Z„, что
аЩЬМ-(а\/Ъ)Ма\/с).
ГЛАВА 5
АЛГЕБРАИЧЕСКИЕ СТРУКТУРЫ
В предыдущей главе мы уже познакомились с
некоторыми способами определения операций над множества-
МП и научились с ними работать с целью производить
имеющие смысл вычисления. Конечно, существует
много различных операций, которые могут быть определены
на множестве, и, следовательно, в некотором смысле
алгебраических структур больше, чем множеств. Однако
получается так, что большинство полезных структур
(под этим мы подразумеваем структуры, которые
описывают естественно возникающие явления и пригодны для
вычислений) может быть разбито на небольшое число
типов. В этой главе мы вначале введем терминологию,
которая имеет отношение ко всем алгебраическим
структурам, а потом займемся некоторыми специальными
структурами, которые, на наш взгляд, ближе всего
относятся к вычислениям. Это нам позволит связать ранее
«оборванные» нити рассуждений, с тем чтобы приступить
к изучению структур, а также чтобы подвести
серьезный математический фундамент под оставшуюся часть
кнпгп.
Центральное место в наших рассмотрениях занимают
поля, линейная алгебра и булева алгебра. Поля
формируют основу простой арифметики, линейная алгебра
обеспечивает основу для геометрии и операций с числами,
а булева алгебра содержит в себе основные положения
элементарной логики. Разумнее начать изучение с
таких структур, которые могут рассматриваться как части
поля. Затем поля будут расширены до векторных
пространств.
Аналогично мы расширим изучение булевой алгебры,
включив решетки и свободные полукольца. Некоторые
другие структуры будут кратко упомянуты в
упражнениях к этой главе,
133
§ 1. Алгебраические структуры п подструктуры
Определение. Алгебраической структурой
называется множество вместе с операциями (замкнутыми),
определенными на этом множестве. /
Обычно операции имеют некоторые характерные
свойства, которые могут быть обоснованы в виде теорем п
которые используются в вычислениях. (Структуру
вместе со всеми теоремами, правилами вычислений и вывода
иногда называют алгебраической системой.)
К каждой структуре применимо понятие
подструктуры. Чтобы это продемонстрировать, рассмотрим
гипотетическую структуру, называемую указателем. Пусть А —
указатель. Предположим, что имеется только одна
операция ®, определенная на А. Следовательно, более
точно это может быть записано как (А, ®), т. е. указатель
состоит из множества А с операцией ®. Теперь, если
BsA и (В,®) также является указателем, в
частности ® может быть замкнута на В, то (В, ®)
называется подуказателем.
Возьмем другую структуру, состоящую из множества
С и операции ©. (© и ® должны иметь один и тот же
порядок. Например, если одна из них является
бинарной, то и другая должна быть такой же. Можно ввести
и другие операции на С, однако в настоящее время мы
их не рассматриваем). Если существует отображение ср:
А -*■ С такое, что
ф (х ® у) = ф (х) е ф (у)
для любых х и у из А, то ф называют гомоморфизмом.
Если существует гомоморфизм между А а С, то в
некотором смысле образ (у(А), ©) гомоморфизма из (А,
®) ведет себя подобно прообразу, так как мы можем
выполнить операцию ® на Л, а затем отобразить в С
(посредством ф) или сначала отобразить в С, а затем
выполнить операцию ©. В обоих случаях результат
будет один и тот же. Поэтому мы можем делать так, как
нам удобнее. Эту ситуацию можно пояснить с помощью
коммутативных диаграмм, изображенных на рис. 5.1.
Диаграмма на рис. 5.1, а указывает включаемые
множества или структуры, а диаграмма на рис. 5.1, Ъ связывает
отдельные элементы. На рис. 5.1, Ь справа изображены
две различные формы одного и того же результата.
Коммутативность диаграммы вытекает из определения
операций.
134
На самом деле мы получаем ф • ® = ф • ф. что не
является в строгом смысле коммутативностью, так как ®
и © существенно различны. Однако обе части равенства
А*А
('■У)-
-»-х®у
(f(jr),tf [у»—^—*- ep'-rj® fiy)= ?v®y)
Рис. 5.1
означают комбинации операций одного и того же
порядка и, следовательно, подходят под общее определение
отображение • операция = операция • отображение.
Рассмотрим пример.
Пример 1.1. Пусть отображение в, в: Z -»■ Zm —
остаток от деления на 10. Тогда
в (20) = О,
8(17) =7,...
Если мы рассмотрим простейшие системы (Z, +) и (Zio,
+ ) с операцией +, определенной естественным образом
на Z и на «единичном столбце» для Zm, то легко видеть,
что 8 является гомоморфизмом. Например,
8 (24+ 38)-8 (62) = 2,
8(24)+8(38)=4 + 8 = 2 (в Zio).
В этом случае диаграмма будет выглядеть так, как это
изображено на рис. 5.2. II
(Z,+)2
(Z,„+)2
-»"(Z,+)
■*■ Um,+)
Рпс. 5.2
Таким образом, гомоморфизм одной структуры в
другую является отображением, которое сохраняет структуру.
Можно вводить ограничения на ранг отображения,
чтобы получить, например, сюръектпвность пли пнъек-
тивность, Поэтому, если отображение является гомомор-
135
фпзмом, можно надеяться, что это обеспечит механизм
перехода от структуры к структуре (и обратно!) без
какой-либо потерн информации.
Определение. Гомоморфизм, который является
инъекцией, называют мономорфизмом, гомоморфизм,
который является сюръекцней, называют эпиморфизмом,
а гомоморфизм, который является бпекцней, называют
изоморфизмом. Если существует изоморфизм между
двумя структурами, то говорят, что они изоморфны. II
Слово «изоморфно» означает «той же самой формы»,
п поэтому, кажется, разумно ожидать, что изоморфизм
должен быть в состоянии разделить множество всех
алгебраических структур на классы эквивалентности (см.
упражнение 5.1, 2).
Пример 1.2. Структуры ({0, &), П, U) п ({0, 1}
Ai V)(cm. определение в § 4 гл. 4) изоморфны.
Доказательство. Пусть ф(0)=О и <р(#")= 1.
Ясно, что ф — бпекцпя. Тогда
Ф (0 Л 0) = Ф(0) = О =0Д0 = Ф(0)ДФ(0).
Ф(0 Л <?) = Ф(0) = 0 = 0Д1 = Ф(0)ЛФ(#).
ф(#Л0) = ф(0) = о=1ло = ф(.?)Лф(0).
ф(.г л S) = ф(«") -1 = 1Д 1 = ф(#)Лф(#).
Ф(0и0) = ф(0) = О = О\/О = ф(0)\/ф(0),
Ф(0и#) = ф(#) = 1=О\/1 = Ф(0)\/ф(#).
Ф(<Ги0) = Ф(«') = 1 = 1\/О = Ф(«')\/ф(0).
ф(«?и#) = ф(#)=1 = 1\/1 = ф(#)\/ф(#)'
Таким образом, ф является гомоморфизмом и,
следовательно, изоморфизмом. /
В заключение отметим, что структура может быть
изоморфна самой себе (имеется в виду изоморфизм,
отличный от тривиального) и может также быть изоморфна
одной из своих подструктур (это возможно лишь для
бескопечпых множеств).
Определение. Если область определения и
область значений отображения совпадают, гомоморфизм
называют эндоморфизмом, а изоморфизм называют
автоморфизмом. II
Пример 1.3. Для заданного множества А структура
(!?(А), П, U) изоморфна {!?{А), U, Л) с отображением
ф: X -*■ X',
W
Доказательство. Очевидно, что ф ппъектпвпо п
сгаръектпшш. Если В, С<^9*{А), то
Ф {В П С) = {В П С)' = В' U С = ср (В) U ф (С),
Ф(Я U C) = (fi U С)' = Я' П С = ф(В)П ф(С).
Позднее мы увидим, что эти соотношения явно
показывают самодвойственность булевой алгебры множеств и ф
является автоморфизмом. II
Упражнение 5.1.
1. Показать, что две структуры (Ze, •), полученные
при решении задачи из упражнения 4.1, 2 изоморфны.
2. Пусть (А,®), {В, ©) и (С, О)—указатели,
а ф: А -*• В а 0: В -*• С—изоморфизмы. Показать, что
6 • ф: А — С, ф"1: Я — А
также являются изоморфизмами.
§ 2. Простейшие операционные структуры
Начнем детальное изучение алгебраических структур
с рассмотрения тех из них, которые имеют только одну
бинарную операцию. Где это возможно, будем в этом и
последующих параграфах представлять структуры в
(приблизительно) возрастающем порядке «силы». (Говорят,
что структура А слабее структуры В, если А можно
рассматривать как В «с отброшенной структурой». Как мы
увидим позже, некоторые структуры получают путем
«слияния» двух более слабых структур, и,
следовательно, строгий порядок здесь невозможен.)
Обычно каждую структуру можно определить в
терминах основных свойств, а не только в терминах
простейших структур.
Определение. Полугруппой называется
множество 5 с бинарной операцией ®, которая удовлетворяет
только требованию ассоциативности
х ® {у ® z) = (х ® у) ® г, x,y,zeS. /
Определение. Моноидом называют множество М
вместе с бинарной операцией ® такой, что
(I) ® ассоциативна;
(II) существует ueM такое, что
и®х=х=х®и для всех х^М;
и называют единицей по отношению к ®. II
137
Полугруппы и моноиды имеют особое значение при
обработке строк символов и теории языков.
Пример 2.1. Пусть А = Кх, у, z). Рассматривая х,
у и z просто как символы, а не как имена объектов или
«переменных», получаем, что А является алфавитом.
Определим А* как множество всех строк символов,
принадлежащих А. Тогда А* включает х, у, ъ, хх, ху, ух, xxyz,
zyx и т. д.; А* бесконечно.
На А* можно определить операцию конкатенации ©
следующим образом: если а, ре А*, то а © р = оф, т. е.
результатом является строка а и сразу же за ней
записанная строка §. Таким образом, имеем
xyz О z == xyzz, xz® yx — xzyx и т. д.
Каждая строка а имеет конечную длину, которая
обозначается через |а| и равна числу символов в а (при
этом разрешаются повторения). Таким образом,
1x1 — 1, \ху\ = 2, \xxxzy\ = 5.
Это несколько похоже на обозначение мощности множе-
ства, Заметим, в частности, что
1x1 = 1, 1Ы1-1,
\zy\-2, |{*,0>|-2,
М=2, |tyfx}|-2f
но
\хух\ = 3, \{х, у, х)\ — \{х, у}\ =2.
Поэтому нет полной аналогии, хотя существует аналогия
с пустым множеством. Для обозначения строки,
аналогичной пустому множеству, будем использовать
специальный символ Л, As4*. Таким образом, |Л|=0 и
Л©а=а©Л=а для всех строк а.
Следовательно, для любого алфавита А структура
(А*, О) является моноидом, а Л — единица ио
отношению к О. II
(Может показаться, что символ » неверно
употребляется в обозначении А*, однако ето не так: А* ■» Д*(Л),
где
Я = {(а, р): р = а©а, а^АУ.)
Приведенный выше пример чрезвычайно важен. Для
заданного, достаточно большого алфавита А,
содержащего, например, все символы, доступные периферийным уст-
138
ройствам какого-либо компьютера, все языки,
используемые в компьютерных системах, являются подмножеством
А*. Это понятие является основным при формальном
изучении языков (см. гл. 8).
Третьей (и последней) операционной структурой
является непосредственное и естественное расширение
моноида.
Определение. Группой G называют множество с
бинарной операцией ® такой, что
а) ® ассоциативна;
б) существует элемент цеб (единица по отношению
к ®) такой, что
и® х =• х *= х®и для всех геб;
в) каждому элементу ieG соответствует элемент у е
е G такой, что
х ® у = и = у ® х-
у называется обратным элементом к ж по отношению к
®.//
В случаях, когда групповая операция обозначается
символом ®, единичный элемент обозначается 1, а
обратный к элементу х элемент записывается в виде х~К
Когда групповая операция обозначается символом ©,
единичный элемент обозначается 0, а обратный к элементу
х элемент записывается в виде —х.
По сравнению с первыми двумя структурами группы
обладают следующими важными свойствами. Внутри
группы (G, ®) можно решить уравнение
а® х = Ъ.
Более того, решение легко найти (однако заметим, что
для этого требуются все аксиомы группы). Если
а® х = Ъ
то
a-1 ®(tt®e) = (i-i®6((eG=»r1eC),
(а-1 ® а) ® х = a-1 ® Ъ (® ассоциативна),
и ® х = а-1 ® Ъ (свойство обратных элементов),
поэтому
х = а-1 ® Ь (свойство единицы).
Часто к словам «группа» и «моноид» приписывают
термин «коммутативный». Это цросто означает, что опера-
139
ция в рассматриваемой структуре удовлетворяет свойству
коммутативности, т. е.
у ® х = х®у для всех х, г/ е= М или G.
Можно сделать много полезных выводов из аксиом
группы. Рассмотрим простой пример.
Пример 2.2. В группе {G, *)
(а * fc)-i = б-1 ® а~\
Доказательство.
(а * &)*(Ь~' * а~1) = а * (Ь * Ь-1)* а-1 =
= а * 1 * аг1 = а * а-1 = 1.
Следовательно, Ъ~х * а-1 является правым обратным
элементом к а • Ъ. Аналогично можно показать, что он
является левым обратным элементом, откуда и следует
требуемый результат. /
Группы дают нам первый пример широко
используемых изоморфизмов. Эти изоморфизмы (между группами
(R, +) и (]0, <»[, *)) называют логарифмами. Они
позволяют выполнять умножение при помощи сложения на
основе следующего тождества:
а*Ь = ф-'(ф(а)+ф(Ь)),
где
ф: x<-+logp(x) для некоторого ре] — 1, оо[.
Упражнение 5.2.
1. Доказать единственность единичного элемента и
обратных элементов в группе (G, ®).
2. В группе (G, ®) показать, что если а ® Ь =а © с,
то Ъ = с, а если х ® а = у © а, то i = у.
3. Проверить, что множество перестановок конечного
множества образует группу по отношению к операции
умножения перестановок,
§ 3. Кольца и поля
По-видимому, простые операционные структуры § 2
не были знакомы читателю. Сейчас мы готовы
использовать свойства групп для описания арифметических
структур, обсуждавшихся'в гл. 4. Наибольший интерес
для нас представляют поля (на текущий момент это
наиболее идеальные арифметические структуры) и их
классификация в тергинах размерности, Однако сначала мы
140
кратко рассмотрим структуры, которые несколько
отличаются от полей и называются кольцами.
3.1. Кольца. Многие математические конструкции,
которые естественно возникают в линейной алгебре
(особенно в теории матриц), являются кольцами или
включают кольца как подструктуры. Следовательно, примеры
колец часто будут появляться в этой главе и в гл. 6.
Мы уже изучили одну совокупность колец. Вернемся к
ней после введения аксиоматических понятий.
Определение. Кольцом называется множество R
с двумя определенными на нем бинарными операциями
® и © такими, что:
а) ® ассоциативна;
б) © ассоциативна;
в) © коммутативна;
г) © имеет единицу, которая называется нулем и
обозначается 0;
д) существуют обратные элементы относительно ©;
е) ® дистрибутивна по отношению к ©, т. е.
х ® {у Ф z) = (х ® у) ф (х ® z),
(х ф у) ® z = (х ® z) ф (у ® z) для всех x,y,z&R. II
Следовательно, система (Z„, », +) при любом »eN
является кольцом.
Будем говорить, что кольцо коммутативно, еслп
умножение ® коммутативно, и является кольцом с
единицей, если существует единица относительно умножения.
Как обычно, ее обозначают символом 1. Легко показать,
что в кольце (/?, ®, ф) для любых а, Ъ е R
выполняются соотношения
0®а = а®0 = 0,
а ® (— Ъ) = (— а) ® Ъ = — (а ® Ъ),
(— а) ® (— Ъ) = а ® Ъ.
Здесь —а это элемент, обратный к а относительно ©;
а©(—Ъ) записывают обычно как а — Ъ, и если lsfl,
то 1 единственна.
Пример 3.1. (Zn, *, +) является коммутативным
кольцом с единицей при любом »eN. /
В системе (Z„, *, +) не всегда возможно «деление».
В этом состоит основное отличие между полем и
коммутативным кольцом с единицей. Рассмотрим кольцо (Zs,
», +). Покажем, что оно не является полем,
141
В Ze существует 15 случаев, когда произведение двух
элементов может давать нуль, а именно:
(О, 0),
(0, 1), (0, 2), (0, 3), (0, 4), (0, 5)',
(1,0), (2,0), (3,0), (4,0), (5,0),
(2,3), (3,4),
(3,2), (4,3).
Очевидно, что существуют утверждения, которые
справедливы не для всех арифметических вычислений. При
умножении выражений мы явно используем тот факт, что
а * Ъ = 0 тогда и только тогда, когда а = 0 или 6 = 0.
В кольце (R, ®, ф) нулевые элементы х и у
называют делителями нуля, если их произведение равно
нулю. В случае, когда R не является коммутативным
кольцом, х называют левым делителем нуля, & у — правым
делителем нуля. Нетрудно показать (см. упражнение
5.3), что Ze имеет делители нуля (так как 6 — составное
число) и что Ър не имеет делителей нуля тогда и только
тогда, когда р является простым числом.
Если в группе (G, ®)
а®Ь*=а®с,
то Ъ — с. Однако в случае произвольного кольца это
неверно.
Теорема. Приведенное выше условие имеет место
в кольце R тогда и только тогда, когда R не содержит
делителей нуля.
Доказательство. Достаточность.
Предположим, что R не имеет делителей нуля. Тогда, если
х®у = x®zn хФО, то
(х ® у) — (х ® z) = (х ® у) — (х ® у) = 0,
{х ® у) — (х ® z) = (х ® у) ф (х ® {— z)) =
= (х ® (У Ф (— z)) = х ® (у — г).
Поэтому х ® (у — z) — 0; но так как не существует
делителей нуля и х =5^0, то отсюда следует, что у — z = 0
и, следовательно, y=z. Аналогично, если y®x = z®x,
то у = z. Достаточность доказана.
Необходимость. Предположим, что из а® Ъ -*
= а®с следует равенство 6 = с, и пусть х® у—0. Тогда
х ® у = х ® 0
'см. упражнение 5.3), и если х Ф 0, то у — 0. Аналогпч-
142
но, если 2/^0, то
х® г/ = 0 = 0® у
и по предположению х ■=» 0. Таким образом, из х ® у = О
следует, что пли х = О, или у — 0. /
Рассмотрим теперь еще одну структуру, перед тем как
перейти к изучению полей
Определение. Областью целостности называется
коммутативное кольцо с единицей, не имеющее
делителей нуля, т. е. множество D с двумя бинарными
операциями ® и © такими, что:
а) сложение © ассоциативно;
б) сложение коммутативно;
в) существует единица по сложению, обозначаемая 0;
г) существуют обратные элементы по сложению
(обозначаются {—х));
д) умножение ® ассоциативно;
е) умножение коммутативно;
ж) существует единица по умножению
(обозначается 1);
в) умножение дистрибутивно по отношению к
сложению:
(х® {у ф г)) «= (х® у) ф (х® г) для всех i,y,zeD;
и) если хФ0ъх®у = х®г, ioy = z. II
Каждая конечная область целостности является
полем, однако существуют примеры бесконечных областей
целостности, не являющихся полями.
3.2. Поля. Уже работая с понятиями арифметики, мы
сталкивались с аксиоматическим определением поля.
Определение. Полем называется множество F с
двумя определенными на нем бинарными операциями —
сложением © и умножением ® (обозначается (F, ®, ф)
или же просто F), которые удовлетворяют следующим
девяти свойствам.
1. Сложение коммутативно:
х © у = у © х для всех х, y^F.
2. Сложение ассоциативно:
х © (у © г) = (х © у) © г для всех х, у, z<= F.
3. Существует элемент в F, который обычно
обозначается символом 0, такой, что
х Ф 0 = х для всех ief;
О называется аддитивной единицей или просто нулем,
143
4. Каждому элементу ieP соответствует элемент
у ^ F такой, что
х® у = 0;
у называется аддитивным обратным элементом к а: и
обозначается через —х.
5. Умножение коммутативно:
х® у = у ®х для всех x,y^F,
6. Умножение ассоциативно:
х® {у® z) = (z® у)® г для всех x,y,z<^F.
7. Существует элемент в F, который обычно
обозначается символом 1, такой, что 1¥=0 и
х® 1 = х для всех хе F;
1 называют мультипликативной единицей или просто
единицей.
8. Каждому элементу х е F\{Q] соответствует элемент
у <= F такой, что
х®у=\;
у называется мультипликативным обратным элементом к
х и обозначается через х~л.
9. Умножение дистрибутивно относительно сложения:
х® {у © г) = (х® у) © (х®z) для всех x,y,z^F. Ц
Пример 3.2. (R, *, +) является полем, и,
следовательно, (И, +) и (R\{0), «)—коммутативные группы.
(N, », +) не является полем, поскольку не существует
ни аддитивной единицы, ни аддитивных обратных
элементов. (^(А), Л, U) для заданного множества А не
является полем, поскольку не существует обратных
элементов. /
В предыдущем определении использовались символы
® и © для того, чтобы подчеркнуть, что операции в
поле могут отличаться от умножения и сложения. Однако
в дальнейшем часто будут рассматриваться поля (R, »,
+) и (Q, », +), Поэтому мы будем использовать
символы * и +.
Перед тем как перейти к доказательству основных
утверждений, напомним (вместе с доказательствами)
некоторые важные ;ледстрия, которые непосредственно из-<
влекаются из определения поля.
Предложение. Единичный элемент в поле
единствен.
144
Доказательство. Предположим, что
х*е — х\\х*е'=^х для всех x^F.
Тогда
е = е * е' = е' • е = е'
Поэтому е = е' = 1.
Для операции сложения доказательство аналогично. /
Предложение. Обратные элементы в поле
единственны.
Доказательство. Опять рассмотрим случай
операции умножения. Возьмем х е. F\{Q} и допустим, что
имеется два элемента у и z таких, что
х • у = 1, х * z = 1.
Из коммутативности следует, что
y*x = \ = z*x\
поэтому
y = y»l=y»(a;»z) = (y*a;)»z = l»2 = l.
Следовательно, у — z — x'1.
Единственность обратных элементов по сложению
доказывается аналогично. /
Перейдем к основным результатам.
Теорема. В поле (F, •, +) для любых а, Ь е F
справедливы следующие утверждения:
а) а» 0 = 0;
б) (_в)-.а.(-1), -а(+Ь)-(-а) + (-Ь);
в) -(-«) = «, (-lW-l)-l;
г) если а Ф 0, то (а-1)-1 = а;
д) а*& = 0=**а = 0 или Ъ = 0;
е) (—а)* (—6)= а * Ь.
Доказательство.
а) а*1=аиа + 0 = а; поэтому
а + (а»0) = (а» 1) + (а • 0)= а • (1 + 0)= а * 1=-=а,
Следовательно, а«0 является единицей по сложению.
Она единственна; поэтому а » 0 = 0.
б) Аналогично
а+(а»(-1)) = (а» 1) + (а»(-1))-
«=а*(1+(-1)) = а»0 = 0.
Ю Д. Кук, Г. Бейз 145
Таким образом, — а = а*(—1). Используя это равенство,
получаем
-(а + Ь)«(а + Ь)#(-1Н
-(а.(-1)) + (Ь.(-1))~(-а) + (-Ь).
в) По определению
(-а)+а-0 и (_а) + (-(-о))-0.
Но обратные элементы единственны; поэтому а = —(—а).
Таким образом, 1 = —(—1). Пусть х равно —1. Тогда
1--(«)-« »(-1)-(-1)»(-1).
г) Заметим вначале, что а-1 =?*= О, так как в противном
случае
1 = а * а~х == а * 0 = О,
что противоречит свойствам поля. Следовательно, а-1 ¥= О
и доказательство аналогично доказательству случая в),
д) Возьмем аФО. Тогда а-1 определено и
Ь =. 1 » Ь = (а~1 • а)» 6 = а-1 * (а # Ь) = а"1 * 0 = 0.
е) Из случая б) следует
(-а)=>а.(-1) и (-Ь)=Ь»(-1).
Поэтому
(-а).(-Ь)-(а.(-1)).(Ь*(-1))-
= а»((-1)*(—1))* Ь = а*1*Ь = а*Ь. /
Для упрощения записи выражений в полях примем
обычное соглашение о том, что если нет скобок, то
умножение выполняется раньше сложения. Например, вы»
ражение а + Ь * с означает а + (Ь * с).
Из аксиом поля следует разрешимость линейных
уравнений. Это — очень важное свойство, и можно
привести аргументы в пользу того, что оно — основное свой-"
ство полей.
Линейным уравнением относительно х над полем F
называется выражение вида а * х + b = О, где 0, а,
b&F.
Теорема. Если аФО, то линейное уравнение а »
» х + Ъ =• 0 имеет единственное решение в F (т. е.
существует только один элемент поля, при подстановке
которого в уравнение, получается верное равенство).
146
Доказательство.
а * х + Ъ = О,
а*х+Ь+(-Ь) = 0 + (-Ь),
а * х + (Ь + (—6)) = (—6) (ассоциативность
и свойство 0),
а*х + 0=(—Ь) (по определению 0),
а * х = (—6) (свойство 0),
а-1 »(а * #) = а-1 ♦. (—Ь) (а¥=0),
(а-1 * а) * х «= (—6) * а-1 (ассоциативность
и коммутативность),
1 * £ =(—6)» а~1 (по определению 1),
х = [—Ь)*а~* (свойство 1),
Поле F эамкпуто относительно заданных операций.
Поэтому элемент (—6)» а-1 содержится в F. Этот элемент
и дает решение уравнения. Более того, так как
обратные элементы в F единственны, то —Ь и а-1
определяются из данного уравнения единственным образом, и,
следовательно, решение единственно. /
Уравнения, которые получаются из полиномов более
высоких степеней, например квадратные уравнения
а * х * х + b * х + с — О
с коэффициентами а, Ъ, с из R, в общем случае
неразрешимы в R. Для того чтобы эти уравнения были
разрешимы, нужно перейти к расширению поля R — полю
комплексных чисел. Однако полиномиальные уравнения
с комплексными коэффициентами всегда разрешимы в
поле комплексных чисел: никакого более широкого поля
не требуется. Исследование этого интересного факта
могло бы увести нас в сторону от более уместных тем.
3.3. Конечные поля. До сих пор все упоминаемые
поля были бесконечны (содержали множества, имеющие
мощность No или X i). Обсудим теперь возможность
существования конечных полей — полей, содержащих
конечное число элементов. Сформулируем основные свойства
конечных полей и докажем некоторые из них
(доказательства других лежат за пределами этой книги).
Вначале приведем некоторую дополнительную информацию.
Пусть a*=F. Тогда элементы а, а + а, а + а + а, .,,
являются элементами поля. Обозначим их через а, 2а,
За, ,.., па, .,, (не требуется, чтобы n^F) соответствен-
10*
147
но. Аналогично а, а * а, а * а * а, ... также являются
элементами поля. Обозначим их через а, а2, а3, ..., а", ...
соответственно. Предположим, что а ¥= 0.
Определение. Если существует целое neN
такое, что па = 0 (и не существует меньшего целого reN
такого, что га — О), то п называют аддитивным порядком
а. Если существует meN такое, что ат = 1 (и не
существует меньшего rsN такого, что аг = 1), то т
называют мультипликативным порядком а. II
Теорема. Ненулевые элементы поля F имеют один
и тот же аддитивный порядок.
Доказательство. Возьмем a, be F\{0) и
предположим, что аддитивные порядки а и Ъ равны пят
соответственно. Тогда
пЬ = п(а * а-1) * Ь = (па) * (а~х * 6) = 0 * а~1 * Ъ = 0.
Поэтому m < га. Аналогично
та = т (Ь * Ь-1) * а = (mb) * (Ъ~х * а) = 0 * Ь-1 * а = 0.
Следовательно, га < т, и поэтому т = п. I/
Определение. Если в поле F все ненулевые
элементы имеют аддитивный порядок ге, то говорят, что F
имеет характеристику п. Если такого аддитивного
порядка не существует, то говорят, что поле имеет
характеристику, равную 0. II
Если |F| = m s N, т. е. F имеет m элементов, то
говорят, что F конечно. Если F имеет характеристику,
равную 0, то оно должно быть бесконечным. (См.
упражнение 5.3.)
Теорема. Характеристика любого конечного поля
является простым числом.
Доказательство. Предположим, что конечное
поле F имеет характеристику п и п = р * q, где р, q<n и
р, q е N. Возьмем
а е F\{0>.
Тогда 0 = па — (р * q)a — p(qa). Далее qa<=F. Поэтому,
если qa = 0, выполняется соотношение п < q (поскольку
порядок а равен п); в противном случае qa e F\{0),
порядок qa также равен п и поэтому п < р. Таким
образом, в обоих случаях получаем противоречие.
Следовательно, таких р и q не существует и п простое. II
Таким образом, мы получили следующий основной
результат.
Теорема. Конечное поле имеет характеристику р
(простое число) и \F\ = рп для некоторого bsN,
148
Доказательство. Мы уже знаем, что F имеет
характеристику р, причем р простое. Пусть \F\ = q. Если
р°= q, то утверждение теоремы очевидно. В противном
случае возьмем элемент а\ ^ F\{0) и положим
#"i = ty: У = пай neN, 1 s£re</>}, |#"il = р.
Рассмотрим теперь элемент а% s F\&~\, и пусть
#"г = {у- У — па\ + ^яг; т, п s N, 1 < п < />, 1 < m < />}.
Если #*г = ^i то процесс заканчивается; в противном
случае рассмотрим а% е F\&~2 и т. д. В конце концов
(поскольку F конечно) процесс остановится и мы получим
совокупность множеств (Ti, &~2, • • •} &~п для некоторого п е N.
Каждый элемент / из F единственным образом
представим в виде
/ = Ш\а\ + т2Я2 +.., + пгпап,
причем 1 < m.i < р для всех i = 1, ..., п. (Доказать это
в качестве упражнения.) Следовательно, существует рп
таких выражений, и, таким образом, |F| = р". II
Итак, любое конечное поле должно иметь рп
элементов при некоторых р, п е N (р простое). На самом деле
для любых таких р и п существует поле порядка рп,
однако доказать это не совсем просто.
Рассмотрим в качестве примера поле (Z3, *, +), где
• и + определены в табл. о.1. Нетрудно показать, что
выполнены условия 1—8 из определения поля.
Таблица 5.1
+
0
1
2
0 1 2
0 1 2
1 2 0
2 0 1
•
0
1
2
0 1 2
0 0 0
0 1 2
0 2 1
Для контраста рассмотрим соответствующую табл. 5.2
для Zi
Таблица 5.2
+
0
1
2
3
0 12 3
0 12 3
1 2 3 0
2 3 0 1
3 0 12
•
0
1
2
3
0 12 3
0 0 0 0
0 12 3
0 2 0 2
0 3 2 1
149
Очевидно, что не существует мультипликативного
обратного элемента к 2. Поэтому Z4 с естественной
операцией умножения не является полем. Поле порядка 4 я*
= 22 хотя и существует, но не совпадает с Z4 (см.
упражнение 5.3). Конечные поля заданного порядка
строятся достаточно сложным образом — на основе теории
многочленов над другими структурами (не полями). Они
имеют важное значение в теории кодирования. Мы не
будем этим заниматься, поскольку такое приложение
является довольно специальным.
3.4. Упорядоченные поля. Мы уже видели, что
множество R вместе с обычными операциями сложения и
умножения определяет поле. Однако структура поля
сама по себе не дает какого-либо упорядочения элементов,
которое мы обычно связываем с R. Не все поля могут
быть упорядочены. Поэтому мы должны проверить,
какие дополнительные условия должны быть выполнены,
прежде чем рассматривать это понятие. Обычные
свойства порядка можно получить, как и ожидается, многими
способами. Начнем с определения свойства
положительности. Оно непосредственно приводит к отношению
порядка в поле, а затем к понятию длины. Основные
результаты этого параграфа будут сформулированы в двух
теоремах, а вспомогательные результаты даны в виде
упражнений.
Определение. Говорят, что поле F упорядочено,
если оно содержит непустое подмножество Р, которое
замкнуто относительно операций сложения и умножения,
и такое, что для каждого элемента х из F имеет место
ровно одно из соотношений
х е Р\{0), г = 0,-ге Р\{0),
Р есть множество всех положительных элементов F. (На
этом этапе отметим, что 0 может как включаться в Р,
так и не включаться. Для определенности выберем
случай, когда 0 включается в Р, что согласуется с
изложением предыдущей части книги.)
Если х^Р, то будем говорить, что элемент х
положителен, и обозначать этот факт как х > 0. Если —х е
е Р\{0), то будем говорить, что элемент х отрицателен,
и обозначать это как х < 0. Аналогично, если хну —
элементы F, то будем говорить, что х меньше или равно
у (обозначается х<у), тогда и только тогда, когда
у — х&Р, и что х меньше у (х<у), тогда и только
тогда когда у — х<=Р \{0). Символы <, ^ можно так-
150
же использовать для записи в противоположную
сторону. /
Из этих определений можно получить, что «<»
является отношением порядка и выполняются все ожидав'
мыв свойства.
Теорема. Пусть F — упорядоченное поле и а, Ъ, с,
d s F. Тогда:
а) если a «S b и b ^ с, то a «S с;
б) а<а;
в) если а ^ b и b < а, то а = Ь;
г) если а Ф О, то а2 > 0;
Д) 1>0;
е) если а < о, го а + с «S о + с;
ж) если a < i и с < d, то а + с ^ i + i;
з) если а<Ь, 0<с u d < О, то а • с ^ 6 * с, o*d^
^а » d;
и) если 0 < а, го 0 < а-1, и если о < 0, го о-1 < 0.
Доказательство.
а) а «5 о и Ь<с ■> (о — о)е Р, и по определению
(с-б)еЛ Тогда c-fl = c-Hi-tteP, поскольку Р
вамкнуто относительно сложения. Следовательно, а^с,
б) Очевидно, что а — а = О е Р.
в) а^о и Ь^а; поэтому если Ь — а = х, то х&Р и
—з; е Р, что противоречит определению Р. Поэтому х = О
и а = о.
г) Если аФО, то или а е Р, или —а е Р. Поскольку
Р замкнуто относительно умножения, то а^Р => а? &Р
и, как показано в п. 3.2,
(—а)«(-а) = а2, откуда —а^Р**-а2&Р.
д) I2 ™ 1, поэтому из случая г) следует, что 1 > 0.
е) Утверждение непосредственно следует из
соотношения
Ь-а=(Ь + с)-(а + с).
ж) Требуемый результат получаем из соотношения
(o-a) + (d-c) = (o + d)-(a + 0.
используя замкнутость Р.
151
з) Утверждение доказывается аналогично, используя
следующие соотношения:
(h — a)*c = b*c — а*с
и
(b — a)* {—d) = a* d — Ь* d.
и) 0<а*ае Р\Ш. Если а~1 = 0, то 1 = а * а'1 =
= а*0 = 0, а если а~'^Р, то из случая з) имеем 1 =
«=а-1*а<0«а = 0. В обоих случаях получили
противоречие. Поэтому а-1 е Р\{0) и, следовательно, 0 < а-1.
Оставшаяся часть доказательства проводится
аналогично. II
Получим похожие соотношения для понятия
величины в упорядоченных полях.
Определение. Если F — упорядоченное поле, то
абсолютным значением {величиной, длиной или модулем)
называется функция
f х, если х^О
[— х, если х < 0.
Традиционно эту функцию обозначают как Ы (а: —
аргумент) и читают это как «модуль х». II
Сформулируем без доказательств основные
результаты, относящиеся к функции \х\. (Доказательства
оставляем в качестве упражнения.)
Теорема. Если F — упорядоченное поле и а, Ь е
е F, то:
а) \а\ =0 тогда и только тогда, когда а=»0;
б) \~а\ = 1а|;
в) 1а»Ы = \а\ * \Ъ\;
г) если 0 < Ь, то \а\ ^ Ъ тогда и только тогда, когда
~Ь^а*ъЪ;
д) — \а\ <а^ 1а1;
е) Hal — 1Ы1 < 1а±Ы < |а1 + |Ь| {неравенство
треугольника), II
Упражнение 5.3.
1. Доказать, что в кольце {R, *, +) выполняются
соотношения;
а) 0*а = а*0 = 0;
б) а«(-6) = (-а)»6 = -(а*6);
в) (-а) *{-Ь)= а * Ь.
152
2. Показать, что если в кольце (/?, «, +) для
каждого a s R выполняется соотношение а * а *= а, то R
коммутативно.
3. Показать, что в кольце Z„ делителями нуля
являются только те элементы, которые имеют общие
нетривиальные множители с п. Следовательно, Z„, где р
простое, не имеет делителей нуля.
4. Показать, что каждая конечная область
целостности является полем.
5. Показать, что (Z, *, +)—область целостности, но
не поле.
6. Пусть р < q и (Zp, »р, +„) и (Z„ »„ +,) —
обычные системы по модулю р и q. Доказать, что, хотя они
и являются коммутативными кольцами и ZP с: Z, кольцо
(ZP, *р, +„) не является подкольцом (Z„ »„ +,).
Показать, что операции *, и +, не замкнуты на Zp.
7. Без использования теорем доказать, что (Ze, *, +)'
не является полем (* и + суть операции по модулю 6).
8. Доказать, что конечное поле имеет ненулевую
характеристику и что поле с характеристикой 0 бесконечно.
9. Пусть oj, яг, ..., ап определены так же, как и при
доказательстве последней теоремы п. 3.3. Доказать, что
любое выражение вида
wiiai + wi2#2 + ... + тлап
определяет некоторый элемент поля, причем такое
представление единственно.
10. В поле {F, *, +) с операциями, определенными
ниже, решить систему лпнейных уравнений
х + d * у = с,
х * d + у = Ъ,
*
а
Ь
с
d
а
а
а
а
а
Ь
а
Ь
с
d
с
а
с
d
Ь
d
а
d
Ь
с
+
а
Ь
с
d
а
а
Ь
с
d
Ь
Ъ
а
d
с
е
с
d
а
Ь
d
d
с
Ь
а
11. Доказать, что если а * Ь > 0, а, Ь е F, то или а,
Ъ > 0, пли а, Ь < 0.
12. Доказать, что в упорядоченном поле а2+Ь2 = 0
тогда и только тогда, когда а = Ь = 0.
13. Пусть F — упорядоченное поле и а, Ъ е F такие,
что 0 < а < Ь. Доказать, что a2 «S Ь2.
153
14. Доказать, что каждое поле является областью
целостности.
15. В упорядоченном поле, складывая неравенства
-\а\ *Sas£|a| и -lol<-o<lol,
доказать, что:
а) |о±Ы<Ы + 1Ы;
б) 1Ы-1Ы1<1о±Ы.
§ 4. Линейная алгебра
В большинстве элементарных учебников векторы
определяют как объекты, обладающие «величиной» и
«направлением». Такой подход берет начало из приложений
в геометрии и физике. Эти вопросы формально будут
обсуждаться в п. 4.2. Дадим более общее определение
вектора, для которого понятия величины и направления
несущественны.
4.1. Векторные пространства и линейные
преобразования.
Определение. Пусть F — поле, а V — множество
с бинарной операцией +. Предположим, что для каждого
а е F и х е V определен элемент ах е V, Тогда, если
выполнены аксиомы:
а) (V,+)—коммутативная группа;
б) для всех х, уеУиа, b*= F
(а + Ь)х = ах + Ьх,
а(х + у) = ах + ау,
(ab)x = a(bx),
lfX = X,
где If — мультипликативная единица в F, то говорят, что
V является векторным пространством над F. Элементы V
называются векторами, операция + называется
сложением векторов, а отображение
Л: F X V -* V,
определяемое соотношением Л (а, х) = ах, называют
умножением вектора на скаляр. II
Векторное пространство над F может рассматриваться
как тройка (V, +, Л), удовлетворяющая приведенным
выше аксиомам. Нуль векторного пространства по сложе-ч
154
нию обозначают символом 0. Из аксиом следует, что
0Fx == 0 для всех х <= V,
где Of — аддитивная единица в F, и
аО = 0 для всех a^F.
В следующих примерах будет показано, что различные
классы множеств обладают структурой векторного
пространства.
Пример 4.1.
1. F" (n e N) является векторным пространством над
F с операциями
(аи ..., ап) + (Ьи ..., b„) = (ai + bu ..., ав + Ь„),
а(а\, ..., а„) = (ааи ..., аа„).
Нулем F" является вектор (О*, ..., О*). Элементы а\, ...
..., а„ называются компонентами вектора a = (ai, ...
..., ап).
2. Пусть &" — множество всех отображений /: [а, Ь] -»■
-*■ R. Тогда ^" является векторным пространством над R
с операциями
(/ + g) (x) = f(x)+g (х) для всех f, g^&~,
(af) (х) = а](х) для всех а е R,
3. Пусть <й?, Ч? <=&" — множество всех непрерывных
отображений из SF. Тогда Ч? является векторным
пространством с операциями, определенными в У". /
Множество U, U s V, называется векторным
подпространством пространства V, если оно является
векторным пространством с операциями из V.
Множество {(ai, ..., ап-\, 0F): a,e=F) является
векторным подпространством пространства Fn; Ч? является
векторным подпространством пространства ff". Если U,
U = V,— векторное подпространство пространства V, то
0е£/.
Векторные пространства R" (1<и<4) возникнут
естественным образом в гл. 10. Операции в R" имеют
геометрическую интерпретацию. Для пространства R2 это
показано на рис. 5.3. Если г = (а;, j/)«=R2( то
компоненты х и у измеряются вдоль ортогональных линий,
начиная с точки пересечения О (рис. 5.3, а). Компоненты х
и у откладываются вдоль линий ОХ (ось х) и OY (ось
у) соответственно. Эти линии проведены под углом 90°
155
друг к другу, и угол между ними измеряется против
часовой стрелки от оси ОХ. Такую систему осей
называют правосторонней системой координат в R2.
Векторное сложение в R2 геометрически соответствует правилу
параллелограмма, как это показано на рис. 5.3, с.
Геометрия векторных пространств R" будет
рассматриваться ниже, а сейчас мы введем понятия базиса и
>(х,у)
(Ах,Ку)
(х,у)
Умножение Вектора г
на скаляр К I А > 7)
/
{хгх2,угуг)
Сунна Векторов
Рис. 5.3
размерности. Если V — векторное пространство над F и
S s V, то сумму вида
п
2,| fljXj, i*j e= F, Xj e= S,
называют линейной комбинацией векторов из S. Говорят,
что конечное множество векторов {х(: 1 «£ i < к) является
линейно независимым, если
h
2 "jXj = 0 =? at = a2 = ... == aft = 0^;
i=i
в противном случав множество является линейно
зависимым. Подмножество 5е7 такое, что любой элемент V
представим в виде линейной комбинации элементов из
S, называется порождающим множеством пространства
V (или же еще говорят, что S порождает V), Упорядо-
156
ченное линейно независимое порождающее множество
пространства V называется базисом этого пространства.
Пример 4.2. В R3 вектор (5, 5, У2) является
линейной комбинацией векторов (1, 1, 0) и (0, 0, 3), так
как
(5,5, /2) = 5 (1,1,0) + ^(0, 0,3),
Множество £ = {(1, 1, 0), (0, 0, 3)} является линейно
независимым подмножеством в R3, так как а(1, 1, 0) +
+ 6(0, 0, 3) = (о, о, 36) = 0 тогда и только тогда, когда
а = 0 и 6 = 0. Однако подмножество L не является
базисом, поскольку оно только определяет векторное
подпространство
{(х, х, у): ijeRlc R3.
Базис 5 = £U{(1, 0, 0)} «расширяет» L до базиса
в R3. //
Легко показать, что каждый элемент векторного
пространства имеет единственное представление в
фиксированном базисе, так как если V имеет базис В = (ei, ...
..., е„} и
п п
х = 2 а»е»= 2 ъ&х,
ТО
п
0 = х — х = 2 {bi — ai) в{.
1=1
Однако В — линейно независимое множество. Поэтому
bt = о< для всех г, 1 ^ i *S п.
Докажем следующий важный результат.
Предложение. Пусть S = {xi, ..., xm) —
порождающее множество пространства V, a L = {yi, ..., у<) —
линейно независимое множество векторов из V, Тогда
тп>1.
Доказательство. Предположим, что тп<1. Так
как S порождает V, то существуют элементы а\, .,., am e
е F такие, что
yi •= aixi + ... + amxm.
Однако yi Ф 0, так как L — линейно независимое
множество (см. упражнение 5.4), и, следовательно, не все
а\, ..., ат равны нулю. Для определенности положим
157
а\ Ф Of. Тогда
*1 = аГ*У1 «Г1а2Х2 — • • • — (lTiamXm,
т. е. xi является линейной комбинацией {yi, X2, ..., хт).
Так как S порождает V, то по доказанному выше
множество векторов {yi, X2, ..., хт} также порождает V.
Аналогично получаем, что {yi, уг, хз, ..., хд) порождает V.
Повторяя этот процесс т раз, получаем, что множество
{yi, ..., Ут) порождает V. Следовательно,
Ут+1 = Р1У1 + ^2У2 + . . . + РтУт,
где pi, ..., рт& F не все равны нулю (так как yffl+i не
может быть равно нулю). Отсюда
Ут+1 - Р1У1 ~ Р2У2 - ... - РтУт = О,
однако последнее невозможно, потому что {yi, ..., yj —
линейно независимое множество векторов.
Следовательно, m > I. II
Предложение. Пусть В и В' — базисы
векторного пространства V над F. Тогда \В\ = \В'\.
Доказательство. Пусть 5 = {ei, ..., е„} и В' =
= [ev .. .,em}. Тогда из предыдущего предложения
следует, что п > m и m > п, т. е. m — п. II
Мощность базиса векторного пространства V
называется размерностью V и обозначается через dim(F).
Предложение. dim(F") = п.
Доказательство. Определим В = {ei, ..., е„}, где
е} = (0,...,0,1Р,0,...,0),
i-й разряд
и покажем, что В является базисом в F". Очевидно, что
п
(av .. .,а„) = 2 а»е»;
поэтому В порождает Fn и
та
2 ь&1 = о =t>(bi7 ...,ь„) = 0=^=0*.,&2 = of)...,bn=oF,
Следовательно, В является базисом в Fn и dim (F)=*
= ISI - п. II
Из данного выше определения следует, что базис
всегда состоит из конечного числа векторов, и не во
всяких векторных пространствах можно выделить базис
(например, в &", <& нет базиса). Понятия базиса и размер-
158
ности можно расширить на все векторные пространства,
однако такое обобщение нам не потребуется. Если
пространство V имеет базис, соответствующий данному
выше определению, то говорят, что пространство имеет
конечную размерность, а само пространство называется
конечномерным векторным пространством.
Рассмотрим теперь гомоморфные отображения между
векторными пространствами.
Определение. Пусть V\ и Vt — векторные
пространства над полем F. Говорят, что отображение
Т: Vi -*■ Vt линейно, если
Т(х + у)=Тх + Ту, Т(ах)~а(Тх).
Если Vt ■■ V\, то Т называют линейным
преобразованием пространства V\. /
Далее нас будут интересовать конечномерные
векторные пространства над R и линейные преобразования над
ними. В оставшейся части главы через V будем
обозначать векторное пространство, а через End(V) —
множество всех линейных преобразований V (эндоморфизмов
V). Заметим, что большинство приводимых утверждений
можно представить в более общем виде.
Перейдем от алгебры V к алгебре End(F) и покажем,
что End(V) замкнуто по отношению к естественным
операциям сложения, умножения и умножения на
скаляр. Вначале заметим, что единичное отображение Iv и
нулевое отображение 0V являются линейными на V, так
как по определению
IvX = х для всех х е V,
0vx = 0 для всех х е V.
Следовательно, для всех х, уе7 и >,eR имеем
h (х + у)"= х + у = hx + Ivy,
Iv (Xx) = kx = K(IvX) ,
0V (x + y) = 0 = 0 + 0 = Ovx + 0vy,
0v(kx)=0 = k0 = k0vx.
Если S, T e End(V), то сумма S + T и произведение
S^T (композиция) определяются формулами
(S + T)x = Sx + Tx для всех x&V
(5»7,)х = 5(Гх) для всех x^V.
Отметим следующие свойства End(V) относительно
приведенных выше операций.
159
Предложение. Множество (End(F), •, +)
является кольцом с единицей.
Доказательство. Укажем основные этапы
доказательства. Надо показать, что:
(I) 5, Te=End(V)^S + Te=End{V) и 5»Js
eEnd(F);
(II) (End(У), + )—коммутативная группа.
Если S, Т, U^End(V), то:
(III) S°(T'U) = (S«T)>U;
(IV) S°(T+U) = S°T + S'U;
(V) Iv°T = T°Iv = T.
Имеем
(I) (5 + Г)(х + у)=5(х + у)+Г(х + у)= Sx + Sy +
+ Гх + Гу =(5х + Гх) + (5у + Гу) = (5 + Г)х+(5 + Г) у.
Аналогично
(5 + Т) (Хх) = Six + ТХх = Х5х + ХГх =
=X(Sx + Tx) = X(S + T)x.
Доказательство того, что S ° T^End(V), оставляем в
качестве упражнения.
(II) (S + {T+U))x = Sx + (T+U)x-Sx + (T*+Ux)~
= (5х + Гх) + Z7x = (S + Т)х + Ux = ((S + Т)+ U)s.
Следовательно, операция + ассоциативна. Элемент 0V s
^End(F) удовлетворяет условию
Г + 0у = 0у + Г = Г для всех Je=End(F)'
и является аддитивной единицей End(F). Для Ге
eEnd(F) определим отображение —Г: 7 ->■ F
соотношением
(-Г)х - -(Тх) для всех хе7.
Легко показать, что -Ге End(F) и
(-Г + Г)=Г + (-Г) = 0у.
Поэтому отображение —Т является аддитивным,
обратным к Т. Коммутативность (End(F), +) следует из ком~
мутативпостп (V, +).
(III) Утверждение следует из результатов гл, 3.
160
(IV) Для ieF имеем
(5 .(7*+ U))x = S{(T + U)x)- S(Tx + Ux)-
-S{Tx)+S(Ux) = {S'T)x + {S°U)x=*
=*{S'T+S'U)x.
(V) Утверждение очевидно. /
Пусть Т е End(V) и А, е R. Определим отображение
КТ; V -*■ V следующим образом:
(КТ) х =» К (Тх) для всех х е У.
Легко показать, что XT е End (V). Отображение
Л: RXEnd(7)-*End(7),
определяемое соотношением Л (А,, Т) = ХТ, называют
умножением на скаляр.
Предложение. (End(Г), +, А)—векторное
пространство над R.
Доказательство. Из предыдущего утверждения
следует, что (End(7), +)—коммутативная группа;
следовательно, нам надо показать, что умножение на
скаляр удовлетворяет условиям
(X + ц) Т = XT + цТ, X(S+T) = \S + КТ,
(Хц) Г = МЦГ), iRT=T,
где X, pieR и 5, Т е End (V), Имеем цепочку
соотношений
({К + ц) Т) х - {X + ц) {Тх) = К {Тх) + ц (Тх) -
= (КТ)х + (цТ)х.
Остальные соотношения доказываются аналогично. II
Предложение. Операции умножения в кольце и
умножения на скаляр Л в End(V) удовлетворяют
соотношению
X(S°T) = (XS)°T = S°(XT),
гдеХ&Ки S, T&End{V).
Доказательство.
№.(S»T))x-\{(S»T)x)-\(S{Tx))-
-№){Тх)-{(Н5)-Т)х,
{X(S- T))x = X((S ' T)x) = X(S(Tx)) =
^5(МЛ))-(5»(ЛГ))х. /
11 Д. Кук, Р, Бейа 161
Алгебраические структуры, удовлетворяющие таким же
свойствам, как и End(F), называют линейными
алгебрами. Дадим строгое определение.
Определение. Четверка (X, +, °, Л) называется
линейной алгеброй над R, если Л: RXX-^Хи
(I) (X, +, Л)—векторное пространство над R;
(II) (X, °, +) —кольцо;
(III) Л и ° удовлетворяют условиям
Я (xi ° х2) = (toi) ° х2 = xi о (Ях2)
для всех Я е= R и Xi, х2 <= X. II
Результаты, полученные для End (У), можно
сформулировать следующим образом.
Предложение. End(F) с введенными выше
операциями является линейной алгеброй с
мультипликативной единицей. II
Если r<=End(F) и существует преобразование
S: V-*■ V такое, что
S • Т = Т о S = 1у,
то (см. упражнение 5.4) S<=End(F). Тогда Т называют
обратимым, a S — Т~х — обратным к Т преобразованием.
Обозначим через Aut(F) множество всех обратимых
преобразований из End(F), т. е. множество
автоморфизмов V.
Предложение. (Aut(F), °) является группой.
Доказательство. Так как Ir "= Aut(F) и Iv °
° 1у = Iv, следовательно, существует /у1, равное Iv. Пусть
S <= Aut (V); тогда
Поэтому (5-1)-1 существует и совпадает с S.
Следовательно, S-1 <= Aut(F). Если теперь S, T^Aut(V), то
(S о Т)°(Т-> <■ S-l)= S °(Т ° Т~1)° S~l => S ° S-1 ~ Iv.
Аналогично
(Г-1 «S-')° (5 о 7) = /к.
Поэтому (5 ° Г)"1 существует, и из 5, reAut(F)
следует, что S ° T s Aut (F). Ассоциативность операции °
уже доказана. /
4.2. Структурные изображения в R". Рассмотрим
геометрическую интерпретацию пространства R", при
которой понятия «направление» и «величина» для векторов
162
имеют геометрический смысл. Вернемся к
геометрическому изображению R2. Мы видим, что если т = (х, jy)e
е R2, то расстояние от точки (х, у) до (0, 0) есть
(х2 + у2)1/2. Обозначим это расстояние через llrll,
которое можно рассматривать как отображение
11-11: R2-*-R. Оно называется длиной, модулем или
нормой. Рассмотрим точки ri=(xi, ух) и г2=(х2, г/2)
О
Рис. 5.4
(рис. 5.4). Пусть Gi и 0г — углы в интервале [0, л]
между положительной полуосью ОХ и векторами ri и гг
соответственно. Тогда расстояние между ri и гг равно
11гг — rill, а угол между ними равен 9 = 02 — 0ь Имеем
cos G = cos (9a — 9Х) = cos 0а cos 02 + sin Gj sin 02 =
«MINI IMHI'J I'Jll',1 '
Выражение X\Xi + у\уг можно использовать для
вычисления расстояний и углон в Н2. Определим отображение
Ф: В* XII2-И
следующим образом:
Ф(гь т2)<=* х&г + уол.
Тогда
|| г || = (Ф (г, г))1/2, cos 6 = Ф(Г1-'М
Угол 8 между двумя векторами в IV определяется
однозначно при условии, что 0 < Й «S л. Когда 8 = 0 или 6 =»
■= я, то говорят, что п и Г2 параллельны (коллинеарны).
В прикладной математике удобно обозначать Ф(г1, гг)
через ri • гэ и называть скалярным произведением Г] и Гг-
Если Г| Ф 0 и гг Ф 0, то г1 • гг = 0 тогда и только тогда,
когда 6 = л/2; в этом случае говорят, что ri и Г2 взаимно
ортогональны, перпендикулярны или нормальны. Ниже
приведены некоторые свойства скалярного произведения.
11» ДО
Предложение.
а) r-r2»0 и г г —О тогда и только тогда, когда
г-(0,0);
б) ri • Г2 *= гг • Ti для всех п, гг s R2;
в) п •(г2 + г3)»=Г1 Т2 + Г1 тз для всех п, гг, r3sR!;
г) X(ri-rs)-(Xri)-r2-ri-(Ats), ri, r2eR', ^eR,
Доказательство.
а) Если г = (х, у) е R2, то г • г = {х* + уг) > 0 для всех
х, yeR и г • г = 0 тогда и только тогда, когда i = 0 и
#=*0.
б) Г! • Г2 =■ XiXi + У1У2 = ^2^1 + У2\)\ = '2 ' Г].
Соотношения в) и г) доказываются аналогично и
оставляются в качестве упражнения. /
В более общем случае, если V — векторное
пространство над R и Ф: VXV-+R-- отображение,
удовлетворяющее свойстпам а) —г), то (V, Ф) становится
пространством, для которого могут изучаться понятия
длины и угла. Отображение Ф называют внутренним
произведением для У, а (V, Ф)—векторным пространством
с внутренним произведением. В частности, если
определить Ф: R"X R" -* R(n e-N) соотношением
n
0(a,b)sa-b=»2 афи
где a «(at, ,,., a„), b=(&i, ..., ft«), то отображение •
будет соблюдать требуемыми свойствами. Определим длину
вектора а s R" как
1Ы1=(а-а),/2,
а косинус угла между двумя векторами а и Ь как
а-Ь
|а||||Ь||;
угол лежит на отрезке [0, л].
На R" могут быть определены другие внутренние
произведения. Внутреннее произведение, введенное выше,
называется обычным или евклидовым внутренним
произведением. Оно дает те значения длины и угла, которые
ожидались интуитивно.
Когда п = 1, ясно, что • является лишь умножением
в R, и угол между двумя векторами определяют как
агссо8ИШТ;
164
угол равен или 0, пли я в зависимости от знака ху.
Норма 11-11 обобщает понятие модуля ]•! в R и обладает
апалогпчными свойствами. Например, можно показать,
что
Hall > 0 для Есех а <= R",
Па!1 = 0 тогда и только тогда, когда а = О,
ПЯ.а11 = ШЫ для всех seR" и X ^ R,
На + Ы1 < Hall + НЫ1 для всех a, beR".
Вектор aeR" такой, что Hall = 1 (что эквивалентно
аа = 1), называется единичным вектором. Если as
е R"\{0}, то a/Hall — единичный вектор, параллельный а.
Едипичпый вектор обычно обозначается а.
Если В =» {ei, ..., е„} — базис в R" и
J0, если i Ф /,
1 ' ~~ U, если i = /,
то базис В называется орт окорми ро ванным.
Пронормированный базис в R", определенный следующим образом:
ei=(0, ...,0,1,0, ...,0), 1<г<«,
1-й разряд
называется стандартным базисом в R". В R2 и^ R3
стандартные базисы удобно записывать в виде (i, j) и (i, j,
к) соответственно. Рассмотрим следующую
геометрическую интерпретацию этих базисов. Векторы i и j
определяют правостороннюю систему осей в R2, а третья ось^
OZ перпендикулярна плоскости, содержащей векторы i
"* j, и направлена таким образом, чтобы концы векторов
i, ] и к (в указанном порядке) определяли
правостороннее движение (рис. 5.5). Это свойство известно как
правило правой руки. В системах такого типа в R3 оси
называются правосторонними.
Определение. Если a=(ai, oq, Яз)е R3 и Ь =
= (bi, Ьг, &3)eR3, то векторным произведением а и b
(обозначается а X Ь) по определению называют вектор
аХЬ = (а2Ьз —аз&2, вз&1 — oibs, а\Ъ2 — аф\). Й
Операция X может рассматриваться как отображение
Rs X R3 - Rs.
165
Предложение. Если a,be R3, то
а) ИаХЬИ = Hall НЫ1 sin9, где В —угол между а и Ь;
б) вектор а X b ортогонален векторам a ub,
(х,у,г)
? * £
Доказательство.
а) ||аХЬ||2 -(at68-a8b,)«+(a,b1-a1b,)« + (a1ba-eibi)2=
= ojbj + a2^ — 2a2b3a3b2 + а\Ъ{ + а\Ъ\ —
— 2asb1albz + а\Ь\ + а\Ъ\ — 2aibia2b1 =
= (a? + a22 + a2) (б? + б2. + Ь») - (aЛ + a2fc3 + a3fc3)2 =»
|a||2|b||2-(a.b):
i* =
1
(а-Ь)'
lafllbf
= Ia f I b ||2 (1 - cos2 8) = I a ||21| b ||2 sin2 8,
б) Легко показать, что а-(аХЬ)=0 и Ь-(аХЬ)=0,
откуда и следует требуемый результат. /
Чтобы получить геометрическую интерпретацию
а X Ь, заметим, что если
а=(аь 0, 0), Ь-(Ь,, 6», 0),
то
аХЬ = (0, 0, aib»);
поэтому если а\ > 0, то
| alb21 к для Ь2 > О,
I— Ia АI £ для Ь2 < 0,
и направление а X b определено таким образом, чтобы
выполнялось правило правой руки относительно векторов
а, b и а X Ь. Это правило носит общий характер, посколь-
166
аХЬ =
ку для произвольной пары векторов в правосторопнеи
системе координат всегда можно выбрать способ
представления векторов, который определяется векторами а
и Ь. В результате векторное произведение будет иметь
вид
а X Ь = Hall ПЫ1 sin On,
где ii — единичный вектор, ортогональный а и Ь, с
направлением, выбираемым по правилу правой руки. Если
а X Ь = 0, то векторы а
и Ь линейно зависимы, а / у с
если Hall > 0 и 11Ы1 > 0, то а/ /
из равенства а X Ь = 0 еле- /Q /
дует, что а и Ь параллель- Q/~1 *£ /
ны. Пусть а и b — векто- в
ры, изображенные на рт5Л
рис. 5.6. Тогда Па X Ы1 —
площадь параллелограмма
ОАСВ и аХЬ может рассматриваться как вектор
площади.
Некоторые свойства векторного произведения
приведем ниже; доказательства оставляем в качестве
упражнений.
Предложение.
а) аХЬ = -ЬХа;
б) аХ(Ь + с) = аХЬ + аХс;
в) (Ха)ХЬ-аХ(М») = Х(аХЬ);
г) ТхТ = к, [ Xк = Г, кхТ = J;
д) аХ(ЬХс) = (а -с)Ь-(а Ь)с;
е) аХ(ЬХс) = b (cXa)= с(аХЬ) = -а(сХЬ) =
= -Ь-(аХс)=-с(ЬХа). //
Выражение аХ(ЬХс) часто называют тройным
векторным произведением a, b и с, а а(ЬХс)—смешанным
произведением. Геометрически а(ЬХс) означает объем
параллелепипеда с ребрами a, b и с.
II р е д л о ж е н н е. Множество {а, Ь, с) <= R3 линейно
зависимо тогда и только тогда, когда а(ЬХс)=0.
Доказательство. Предположим, что a, b и с
линейно зависимы. Тогда существуют X, ц, о£ R, не все
равные нулю, такие, что
ka + цЬ + ос = 0.
167
Не ограничивая общности, предположим, что К¥=0. Тогда
а = -Аг1(цЬ + ос),
а(ЬХс)=-Х-1(цЬ + ос)(ЬХс) =
- -К-1 [цЬ • (Ь X с) + ос • (Ь X с)] = О,
Обратно, если а•(Ь X с), то или
а) один из векторов а, Ь, с равен нулю (в этом случае
результат очевиден), или
б) вектор а ортогонален Ь X с.
Однако b и с ортогональны к Ь X с; поэтому а =
■= Х'Ъ + (х'с при некоторых К', n'eRaa, Ь, с линейно
зависимы. /
Закончим главу кратким рассмотрением вопросов
дифференцируемое™ «векторнозначных» функций. Пусть на
R" задана обычная норма. Определим производную
функции вида
/: R -* R\
Обобщая одномерный случай, скажем, что /
дифференцируема в точке t, если существует вектор F(J) =
•=(Fi(0 f,(())eR" такой, что
!(* + &)-1(0 F
при h -*■ 0, или, что эквивалентно, если f имеет
компоненты /i, ...,/» такие, что
К'-"+Г''("-™ м'+Г'"а-ЧН
при h -*■ 0. Очевидно, что каждая компонента должна
стремиться к нулю при h -+■ 0, поэтому dijdt существует
тогда и только тогда, когда dfjdt, ,.., dfjdt
существуют и
dt \ dt " ' " dt }'
Другими словами, чтобы продифференцировать векторно-
вначную функцию, мы должны продифференцировать ее
покомпонентно. Например, если f: R -*■ R3 определена
соотношением
f(0 = (2f2, In*, sin*0,
то
гт = [At, —, 2 sin t cos tj.
Пусть I: R -*■ R3 и g: R ->■ R3. Определим функции f • g:
R -* R и f X g: R -y R3. Положим
(i-gMO-W)-g(O, (fxg)(0 = f(OXg(0.
Дифференцирование этих функций производится
следующим образом:
*<'•«>-'•& + £•* s(fxe)-'xJK + gxg.
Проверку этих формул оставляем в качестве упражнения.
Упражнение 5.4.
1. Показать, что если V — векторное пространство над
полем F, то
0*х = 0 для всех хеУ,
аО = 0 для всех flef,
2. Представить вектор (а, 1, 3)е R3, где seR, в виде
линейной комбинации векторов множества
5 = {(1,1,0), (0,2,0), (0,0,4)}
и показать, что 5 — линейно независимое множество
векторов. Является ли 5 базисом в R3?
3. Показать, что если {xi, ..., xm} — линейно
независимое подмножество векторного пространства V, то х{ *t* 0
при любом i, 1 «S i < т.
4. а) Какие из следующих преобразований являются
линейными:
Т^х, у) = {а, у), a ^R\{0),
?2(х, у) = (1х + у, ау), К, oeR\{0},
Тг{х, у) = (х>, 0), Tt{x, у) = (х, 0)?
б) Определить произведения Тг ° 7\ и Т\ ° 7V
в) Доказать, что если feEnd(F), то ТО = 0.
5. а) Если V — векторное пространство, то проекцией
(проектором) V называют преобразование Р: V -*■ V,
обладающее свойством
(Р °Р)х = Рх для всех х е V.
Доказать, что преобразование Р: R2 -»■ R2,
определяемое соотношением
р(х'У) = \7=ъ(ах ~у + с)'7=ь(ах -У + с) + с)
при а, Ъ, с е R и а Ф Ъ, является проектором в R2. При
каких условиях PsEnd(R2)?
109
б) Какие из определенных в п. 4. а) преобразований
являются проекторами?
6. Пусть Г se End(F). Пулевым подпространством
(ядром) Т называют множество Jf(T), определяемое
соотношением
JP{T)-{xesV: Гх = 0).
Доказать, что JC(T) является векторным
подпространством V. Доказать также, что образ Т является
векторным подпространством V'.
7. Пусть V — векторное пространство над R в Т е
eEnd(F). Говорят, что Т имеет действительное
собственное значение Х^И, если существует ненулевой вектор
х е V такой, что
Тх = Ях;
при этом х называют собственным вектором Т,
соответствующим собственному значению К. а) Доказать, что
если Т е End (V) такое, что
Т(х, у) = (х + ау, у),
то любой вектор вида (р, 0) при р Ф 0 является
собственным вектором Т. Какие у Т собственные значения?
б) Пусть T'eEnd(F). Обозначим через Vx множество
собственных векторов Т, соответствующих собственному
зпачеппю X. Показать, что V\ U {0} является векторным
подпространством V. Доказать аналогичное утверждение
для Л*(Г).
8. Папти собственные значепия и собственные
векторы преобразований Т\, Тг е End (R2):
Ti(x, У) = (~У, х), Тг(х, у) = (х, -у).
Какой геометрический смысл имеют Т\ и Гг?
9. Доказать, но
а) если S, 7" е End(7), то S• Т е End(V);
б) если при reEnd(F) существует преобразование
S: V -*■ V такое, что
S°T = T°S = Tr,
то 5eEnd(F);
в) если reAut(F), го /Р{Т)-(0}.
10. Доказать, что если rj, rs, i)SR! и AsR, то
a) ri ■ (г2 + г3) = rj • гг + ri • г3;
170
б) к (г, • г2) — (А,г,) • г2 = г, ■ (А,г2);
в) |г, ■ г,| < Иг,II 11г2И;
Г) ||г, _ Га|2 «= ||Г1||2 + цГ2||2 _ 2||г,ц |!г2|| соз 9,
где 8 — угол между ri и г2;
Д) ЩИ- Ml <11Г, + Г2Л<11Г,11 + 11Г211
(последнее неравенство известно как неравенство
треугольника). Дать геометрические иллюстрации этим
результатам.
В действительности вышесказанное имеет место для
любого пространства со скалярным произведением; в
частности, результаты справедливы для R"(nsN) с
обычным внутренним (скалярным) произведением.
11. Вычислить единичные векторы, параллельные
а) а = (1, 1, 1);
б) Ь = (1, р, 0),peR.
Определить единичный вектор, ортогональный а и Ъ
одновременно.
12. Пусть a, b, ceR! и A,eR. Доказать, что
а) аХЬ = -ЬХа;
б) аХ(Ь + с)=аХЫ-аХс;
в) (Ьа)ХЬ = аХ(М>) = Я(аХЬ);
г) fxf = k, fxk = f, kxT =T;
д) аХ(ЬХс)-(ас)Ь-(а Ь)с;
е) а (ЬХс) = Ь(сХа) = с(аХЬ)= -а (с X Ь) =
= -Ь (аХс)=-с (ЬХа).
13. Используя результаты 5.4, 12, доказать, что
операция X: R3 X R3 -*■ R3 не ассоциативна, т. е. в общем
случае аХ(Ь X с)¥=(аХ Ь)Хс.
14. Пусть f, g: R -»• R3. Доказать, что
•)5('-e)-'-g + S-«
в) если llf(<)ll = o для всех t, где aeR — постоянная,
то dildt ортогонален к i при всех t. Провести
вычисления при
f (О-(с cost, asint, 0), g(0. = (0, 1, <)•
171
§ 5. Решетки и булевы алгебры
Булева алгебра является одним из математических
объектов, с которыми мы уже сталкивались во введении.
Мы покажем, что существует не одна булева алгебра,
а много. Следовательно, любое преждевременное
использование этого объекта может привести к недоразумению.
Тем не менее мы начнем изучение с введения более
общей структуры, называемой решеткой.
Некоторые из решеток имеют важное значение в
абстрактной теории вычислений, возникшей из понятия
аппроксимации. Одна программа аппроксимирует другую,
если она осуществляет те же самые вычисления на
подмножестве данных, доступных той программе. Если же
рассматривать результат работы программы как
множество, то одна программа аппроксимирует другую, когда
для некоторых входных данных она выдает' в качестве
результата подмножество В s А, где А — множество
выходных данных второй программы. Это достаточно
простые и, вероятно, очевидные способы аппроксимации
программ. При этом возникает множество элементов,
связанных некоторым отношением порядка.
Вычисление является результатом выполнения
программы (на некоторых данных), которая написана на
каком-либо языке (см. гл. 8). Для общности рассмотрений
свойства вычислений надо выводить не в терминах
рассматриваемой программы, а в терминах языка,
используемого для записи программы. В то же время мы должны
быть в состоянии определить результат выполнения
программы «язык X» с помощью формального определения.
К сожалению, количество деталей, требующихся для
описания даже простых примеров, достаточно велико и,
следовательно, ничего не определяет. Однако в п. 5.i мы
дадим теоретические обоснования некоторых ключевых
результатов. Это будет следовать (п. 5.2) из
формального использования булевой алгебры, а затем (п. 5.3)
из краткого рассмотрения некоторых общих приложений.
5.1. Решетки. Напомним, что бинарное отпошеппе р
на множес!ве S является частично упорядоченным
отношением, если оно рефлексивно, транзитивио и
антисимметрично. Следовательно, (S, р) — частично
упорядоченное множество, и, если не возникает
двусмысленности, р можно записать как «5, a (S, <) обозначить
просто через S. Частичпо упорядочптитое множество
называется линейно упорядоченным (или цепью), есла для
172
любых х, ysS или х<у, или у<х, или же выполнены
оба эти отношения. На самом деле любой частичный
порядок можно представить в виде объединения
линейных порядков. Поэтому возникает естественный и
полезный способ изображения отношений порядка.
Заметим, что любое конечное, линейно упорядоченное
множество (А, <) молено представить следующим
образом:
а\ «£а2<... <я„;
здесь рефлексивность и транзитивность не требуют
доказательств. Легко видеть, что рис. 5.7 является
«очевидным» представлением [А, <). Другими словами, мы
записываем А как (ai, 02, ..., а»).
Предложение. Частичное упорядочение на
конечном множестве может быть представлено как
объединение линейных порядков на некоторых подмножествах.
Рис. 5.8
Доказательство этого факта оставляем в качестве
упражнения. /
Используя этот результат, можно представить любой
частичный порядок (конечный или бесконечный, однако
бесконечные отношения сложно изобразить на конечных
листах бумаги за конечное время!) изображением
множества соответствующей цепей. Полученная диаграмма
называется диаграммой Хасса.
Пример 5.1. Отношение р = {(х, у): х —
множитель у), определенное на множестве И, 2, 3, 4, б, 10, 12,
20), дает диаграмму Хасса (изображенную на рис. 5.8)
и может быть разбито на линейно упорядоченные
подмножества {(1, 2, 4, 12), (1, 3, 6, 12), (2, 6), (Л, 20),
(2, 10, 20)), Этому разбиению эквивалентно следующее
173
множество лппейных порядков: {(2, 6, 12), (1, 3, 6),
(1, 2, 10, 20), (2, 4, 20), (4, 12)}. Заметим, что по
сравнению с отношениями, изображенными на диаграммах
в § 2 гл. 2, хотя lpx для всех х «= (1, 2, 3, 4,6,10,12, 20}.
на этом рисуике отсутствуют восемь стрел, выходящих
пз 1. Это достигается неявным представлением свойств
рефлексивности и транзитивности. /
Пусть дано (А, <) и В s А. Разумно задать вопрос:
будет ли В ограничепо сверху (снизу) элементами
множества А1 Далее мы можем искать наименьшую
верхнюю грань (наибольшую нижнюю грань), которая
обозначается sup (inf) (читается супремум (инфимум)).
Эти понятия были полностью определены в § 5 гл. 2.
Будем их использовать для характеристики решетки.
Определение. Решеткой называется частично
упорядоченное множество (A, «S), в котором каждая
пара элементов имеет супремум и ипфимум. Для заданных
х, у & А эти грани будем записывать следующим
образом:
х Д у = inf ({х, у}), х V У = sup ({х, у}). II
Не всякое частично упорядочеппое множество
является решеткой. Например, частично упорядоченное
множество из примера 5.1 не является решеткой, поскольку
12V20 пе определено.
Определив операции Д и V между парами элементов
в частично упорядоченном множестве, расширим это
понятие естественным образом. Положим
Л*= f\xexx = iaiX, V^= V*s.TS = supJ,
Это обозначает sup X и inf X конечного непустого
множества X.
Легко показать, чю существует много специальных
видов решеток, в которых можно производить различные
операции. Ограничимся рассмотрением трех таких типов.
Определение. Решетка L, обозначаемая {L, Д,
V), дистрибутивна, если она подчиняется
дистрибутивным законам
x/\{y\/z)=(x/\y)\J(x/\z),
для всех х, у, ге^ /
Не все решетки являются дистрибутивными,
174
Пример 5.2. Решетка, изображенная на рис. 5.9,
не является дистрибутивной, поскольку
b/\(d\/c) = b/\e=*b,
тогда как
(b/\d)\J(b/\c)~a\Ja=*a. II
Предложение. Пусть в дистрибутивной решетке
(L, f\,\l) выполнены соотношения
x\Jy — x\Jzt xf\y = xf\z.
Тогда у — z.
Доказательство. Сначала
заметим, что из определения inf
и sup
а)аДЬ = ЬДа, a\/b = b\/a;
б) a/\b^.a^.a\/b;
в) (а/\b)\Jа — а, а/\(а\/Ь) = а.
Поэтому
у = 1/VG/Л*) - уУ(*М - (» V*)A(0 V*) -
- (z\Jy)Mz\Jx) - z\J(y/\x) = z\J(z/\x) = z, I/
Определение. Предположим, что (£, Д, V) —
решетка и 0, 1 еL такие, что 0<х< 1 для всех ieL
(об элементах 0 и 1 скажем немного позже). Тогда
z\/l=*l> x/\i = x, *Д0 = 0, zV0*3*
для любого isl. Такая решетка называется решеткой
е дополнениями, если для любого iei существует х е
в L такой, что
xf\x = 0, xV* =" 1
(х называют дополнением х). И
Предложение. Если (L, Д, \/)— дистрибутивная
решетка с дополнениями, то дополнения единственны.
Доказательство. Предположим, что х, у, je£, и
х\/у = г\/г(= 1), х/\у =^xf\z(=0).
Тогда из предыдущего предложения следует, что у = z. II
Третий, и последний специальный тип решеток,
который мы определим, необычен в том смысле, что он не дает
нам ничего нового для конечных решеток. Чтобы
подчеркнуть ключевой момент исследования, дадим другое
определение решетки в форме предложения.
175
Предложение. L является решеткой тогда и
только тогда, когда VA и /\Х существуют для любого
непустого конечного подмножества X из L.
(Этот факт можно доказать индукцией по числу
элементов множества X; оставляем его в качестве
упражнения.) /
Если L — решетка и в ней определен элемент /\L, то
он обозначается символом 0 и называется наименьшим
элементом L. Аналогично, если в L существует элемент
VL, то он обозначается символом 1 и называется
наибольшим элементом L; по определению V0 ■= 0.
Определение. Решетка L называется полной, если
VX и /\Х существуют для всех подмножеств X из L. II
Все конечные решетки являются полными.
Рассмотрим, однако, множество Q с обычным отношением
порядка < и бесконечное множество аппроксимаций числа
п, каждое из которых имеет на один десятичный 8нак
больше. Верхняя грань этой последовательности,
очевидно, есть л, однако я s R\Q, и, следовательно, (Q, <)
не является полной решеткой. Решетка (R, <) является
полной, и QsR,
Можно показать, что любая решетка может быть
расширена до полной решетки, однако мы не будем
заниматься этим вопросом.
5.2. Булевы алгебры. Мы уже интенсивно занимались
алгеброй множеств и упоминали об относительно
«логичной» арифметике. Сейчас дадим формальное определение
общей булевой алгебры, названной так в честь
математика XIX в. Дж. Буля. Алгебра множеств — это
частный случай булевой алгебры, и, Хотя различные булевы
алгебры структурно подобны, следует эаметить, что не
все они включают в себя множества обычным образом.
Определение. Булевой алгеброй называют
множество & вместе с тремя операциями V, Д и ~ (V
называют операцией или, Д — операцией и, а * —
операцией дополнения или же операцией не; кроме того,
первые две операции часто называют дизъюнкцией и
конъюнкцией соответственно). Бинарные операторы V и Д
и унарный оператор ~ (обычно записывается над
операндом, например а) вместе с двумя различными
элементами Я, которые обозначаются символами 0 и 1,
удовлетворяют следующим аксиомам.
Для произвольных элементов о, Ь и с в $?:
a) aVb = bVa; б) a V(b V с)~(а V b)V с;
i7G
в) aVO = a; г) aVa^i;
д)аДЬ = ЬДа; е) аД(ЬДс) = (аДЬ)Дс;
ж)аД1=а; 8)аДа = 0;
и) а/\(Ьус) = (а^Ь)У(аМ;
K)aV(bAc) = (aVu)A(«Vc).
Таким образом, и и или коммутативны, ассоциативны
и дистрибутивны одна по отношению к другой. Каждая
ив этих операций имеет единичный элемент, и, когда
элемент комбинируется вместе со своим дополнением
посредством и/или, в результате получается единица по
отношению к или/и соответственно.
Названия операторов, использованные выше,
являются именами, которые непосредственно связаны с
компьютерной логикой, используемой при построении схем.
В других булевых алгебрах может быть более
подходящим читать V как объединение, наименьшая верхняя
грань или supremum, а Л как пересечение, наибольшая
нижняя грань или infimum. (Иногда операцию Л
обозначают также &.) Операция а может записываться как
о' или *"J a. /
Булеву алгебру можно определить как
дистрибутивную решетку с дополнением. Поэтому по аналогии с
булевой алгеброй (^(Х), U, П, ') для данного непустого
множества X из результатов предыдущего параграфа
можно вывести ряд следствий. Доказательства некоторых
из них оставлены в качестве упражнений. Наиболее
важными из этих следствий являются следующие.
Инволютивный закон (или закон
двойного отрицания). Дополнение дополнения х, ie|
(т. е. в рассматриваемой булевой алгебре), есть х.
Закон поглощения. Для любых a, b e <%
справедливы соотношения
а 1\{а\/Ь) = a, a,y(af\b)=*a.
Закон идемпотентности. Любой элемент 38
идемпотентен по отношению к операциям Д и V.
Законы де Моргана. Для любых a, b e38
справедливы соотношения
аДЬ — a\Jb, а\/Ь==оДЬ.
Из инволютивного закона и законов Моргана
следует, что если мы берем булеву алгебру 38 (более точно,
12 д. кук, г. Вей» 177
($, V' Л' )) и образуем новую систему или путем
отображения каждого х е $ в х, или использованием
операций Д и V , то (.$?, Д, V > ~) также булева алгебра.
Этот факт известен как принцип двойственности.
Действительно, каждый из законов Моргана может быть
получен из других путем отображения каждого элемента
в его дополнение.
Сейчас мы выведем теорему, которая показывает,
в какой стандартной форме могут записываться булевы
выражения; непосредственным следствием этого является
утверждение, что достаточно двух операторов, чтобы
описать все бинарпые функции. Как всегда, введем
вначале необходимую терминологию.
Определим две общеупотребительные логические
связки следующим образом. Говорят, что булевы формулы
А п В эквивалентны (записывается в виде А в* В или
А *->■ В), если они выражают одну и ту же функцию.
В простейшем случае это — отношение эквивалентности.
Таблица 5.3
А В
0 0
0 1
1 0
1 1
А — В
1
1
0
1
Аналогично говорят, что формула А имплицирует
формулу В (записывается*) А -*■ В), если имеют место
условия, изображенные в табл. 5.3. (Таблицы такого типа
часто называют таблицами истинности.)
Заметим, что стрелки используются во многих
различных контекстах. Поэтому надо обращать особое
внимание на расшифровку их значения. Таким образом, А -*■
—■ В это то же самое, что и {*~\A)\JB, а А «а В это
то же самое, что и (А-*-В)/\(В-+А). Логически А-*-
-*■ В означает «если А, то В» (т. е. если А справедливо,
то В также справедливо и обычно так и читается.
Другие названия для символов -*■ и ■*-*■ это условный и
безусловный операторы соответственно.
Обычно вводят операции, которые обозначают отри-
*) Это выражение навывают также импликацией,—Примеч.
ред.
178
цания бинарных связок, такие, как
АфВ=-\(А*жВ), A\B~-\(AhB),
А^В=^](А-^В), А \ В = ~~](A\JВ).
Сейчас можно описать все бинарные операции {О, I}2 -+■
-*■ (0, 1} (здесь стрелка находится между двумя
множествами и, следовательно, обозначает множества, которые
являются областью определения и множеством значений;
не следует путать с логическим оператором -»-) в
краткой форме, как показано в табл. 5.4. Более того, мы
Таблица 5.4
А
В
Л»
и
и
и
и
и
и
и
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
1
1
1
1
0
1
0
0
1
1
0
0
1
1
1
1
0
1
0
1
0
1
0
1
Ьункцпя
0
А Л В
В А А
В
А А В
А
АфВ
А у В
А
В
U
и
ы
fu
и*
fit
fu
/16
0
и
1
1
1
1
1
1
1
1
i
и
0
0
0
0
1
1
1
1
0
1
0
0
1
1
0
0
1
1
1
1
0
1
0
1
0
1
0
1
Функция
А 1 В
A is
-\А
А -*В
~]В
В-+ А
А \ В
1
можем описать исе отображения из {0, 1}" в {0, 1),
используя только t или только I (первая из них
называется "гтрихом Шеффера и обозначается «I»; в
вычислительном контексте t называют «не и», а \ называют *)
«не или»). Заметим, что операции t и 4 являются
удобными сокращениями, по они, например, неассоциативны.
Следовательно, по определению А \ В \ С есть (А/\В/\
/\С)', а, например, не ((А/\В)'/\С)'. Говорят, что
множества операторов Ш и {1} адекватны. Сейчас мы
сформулируем теорему и дадим ее конструктивное
доказательство, т. е. не только докажем справедливость
утверждения теоремы, но и дадим метод получения
результата.
Теорема. Любое отображение {О, I)" -»- {0, 1}
может быть представлено в виде формулы, содержащей
только оператор t или только оператор Ф.
Доказательство. Рассмотрим произвольное
отображение /: (0, 1}"-»-(0, 1) от переменных р\, .. ., рп
(п ё N). Функция может быть полностью определена
*) Функция А \ В называется также стрелкой Пирса,— При-
,еч. ред.
12* 479
таблицей истинности, имеющей 2П строк*).
Утверждение очевидно, если в каждой строке таблицы результат
равен \ (тогда /=1) или в каждой строке результат
равен 0 (тогда / = 0). В противном случае существует т
строк таблицы, в которых результат равен 1.
Рассмотрим выражения **) Z?i, ..., Вт\ каждое Bt
соответствует упорядоченному набору (В«, ..., В{п), где
Вц равно или ph или ~~] pj в зависимости от того, равно
Pi единице или нулю для данной строки таблицы. Тогда
1 = в1увгу...ува = (В1ув,\/...\/'вту1~
= {B'1hB'th...hB'm)' = {B[\B't\...\B'm),
В\ = (ЯцД ДиЛ • • • ЛBin)' = Bh f Bi2 f ... f fiin.
Более того, если какое-либо Вц соответствует нулю в
таблице, то надо брать выражение *"] ft, которое можно
получить при помощи тождества
Па) в (в fa).
Итак, утверждение доказано. В компактном виде этот
результат можно записать следующим образом:
а) '"^(Д5")' (•)
б) Аналогично, применяя законы де Моргана к (*)
пли же рассматривая строки, содержащие нуль, получим
2"-m / n \
Следствием этого результата является тот факт, что
каждое выражение выводимо, а отсюда в свою очередь
следует, что число элементов в булевой алгебре,
порожденной pi, ,,., рп, равно 2". /
*) Каждая строка соответствует некоторому двоичному
набору длины п и содержит значения функции на этом наборе,—
Примеч. ред.
**) Пусть (оц, ..., ai«), ..., («mi, ..., amn) — все наборы, па
которых функция / равна 1,1 ^ т. < 2". Для каждого такого
набора образуем конъюнкцию Й^В^Д •. • Л Иы, гДе в>» = Ph, если
а», = 1, и Оц = ~1 рк, если а,* = 0 (к — 1, ..., п). Легко видеть,
что / = Вх V •«• V Вт — Примеч. ред.
180
Пример 5.3. Получим представление для функция
j, используя только операцию t; таблица истинности
функции / дана в виде табл. 5.5.
Таблица 5.5
X
0
0
0
0
У
0
0
1
1
Z
0
1
0
1
/
0
1
1
0
X
1
1
1
1
и
0
0
1
1
Z
0
1
0
1
/
1
1
0
1
Используя описанный метод, получаем
/ = (*'Л»'Л*М*'Л»Л*'М*Л»'Л*')У
\А*Л»'Л*)У(*Л»Л*).
Таким образом,
/'~(*'Л»'Л*)'Л(*'ЛуЛ*')'Л
Л(*Л»'ЛО'Л(*Л»'Л*)'Л(*ЛМ*)'.
и поэтому
j = {x'\y'\z)\(x'\y\z')\{x\y'\z')\
\(x\y'\z)\(x\y\z),
где х = х \ х, у' = у t у, ъ' ■= 2 t г. ^
Выражение (*) называют дизъюнктивной
нормальной формой (ДНФ)—она имеет вид дизъюнкции
конъюнкций {или от и); выражение, полученное в (**)*),
называется конъюнктивной нормальной формой (КНФ).
В заключение отметим, что утверждение в булевой
алгебре (логическая формула), которое всегда
принимает значение 1, называется тавтологией, а выражение,
которое всегда принимает значение 0, называется
противоречием.
5.3. Некоторые приложения булевой алгебры. Суще'
ствуег ряд проблем, папример в комбинаторике, которые
можно решить наилучшим образом в подходящей
булевой алгебре. Другой путь применения булевой алгебры
ваключается в люделировании реальной ситуации, или,
*) Па самом деле конъюнктивной нормальной формой назы-
2n— m In \
вают выражение вида /= ,\ (V П 5^ (см. **) пз доказа-
тельсхва теоремы,— Примеч. ред.
131
другими словами, в интерпретации булевой алгебры в
терминах, относящихся к рассматриваемой задаче.
Этот метод может быть применен в областях, которые
так широко распространены, что у них отсутствует
классификация. Мы рассмотрим только одно приложение,
а именно комбинационные и переключательные схемы*).
Другие области приложений будут представлены в виде
отдельно выбранных примеров и упражнений.
I
Источник питания и й Лампа
L
J
Рис. 5.10
С этой точки зрения необходимо подчеркнуть, что мы
занимаемся только некоторыми вопросами построения и
преобразования схем; формальное исследование лежит за
пределами этой книги. Сначала давайте посмотрим, как
выражения булевой алгебры могут быть использованы
для описания и определения схемы, состоящей из
проводников и переключателей. Схема, изображенная па
рис. 5.10, состоит из пяти переключателей, источника
питания, лампы и соединяющих проводников. Из
диаграммы нетрудно видеть, что ток течет по замкнутой
цепи тогда и только тогда, когда переключатель А
замкнут а (или)
переключатели В и С оба замкнуты
или
переключатели D и Е оба замкнуты.
Алгебраически это можно записать в виде
AM(BAC)\J(D/\E)).
Перед тем как продолжить изложение, сделаем
несколько замечаний о представление! элементов
электрических схем с переключателями в виде диаграмм.
Единственный сегмент схемы, в котором будет отличие между
рассматриваемыми примерами,— это верхняя часть
схемы, содержащая переключатели; следовательно, можно
*) Эти схемы называются также схемами из функциональных
элементов в коатактиыма схемами, соответственно,— Примеч. ред.
182
не изображать остальной части схемы. Внутри схемы не-
которые переключатели могут быть взаимосвязаны
(рпс. 5.11, а) и, возможно, могут работать так, что когда
один переключатель включен, то другой должен быть
выключен и наоборот (рис. 5.11, в). Основные методы
а
Ъ
с
d
в
_4
<
1
i
1
1
i_
Ал
ЛЛ
У
А
*
ч
*
А/
в
У
\А
__1
By
С^
У
В
•
— А —
1 Ё
— В
В
г
—°'—1
А' С 1
Рис. 5.11
расположения переключателей — это последовательный
(рис. 5.11, с), что соответствует связке и (т. е. А/\В),
и параллельный (рис. 5.11, d), что соответствует связке
или (т. е. А У В). Отметим, паконец, что на диаграмме
есть совершенно лишние переключатели, и их для
удобства можно обозначать теми же «именами» (рпс. 5.11, е).
Таким образом, любую операцию в булевой алгебре
можно представить при помощи схемы и наоборот.
Следовательно, для получения эквивалентных схем надо
перейти от первоначальной схемы к соответствующему
ей выражению в булевой алгебре, затем к «более
простому» (или более желаемому) выражепию и, наконец,
к схеме, соответствующей этому выражению.
183
Пример 5.4. Упростить схему, изображенную на
рис. 5.12. Этой схеме соответствует следующее выражение:
ХЛ((((Х'ЛГ)У(Г'ЛЯ))Л*ПУ(ЯЛХЛИЧ)=»
= XM(X'hYhW')y(Y'/\ZhW>)y(ZAXhW)) =
-(XhX'hYhWWiXhY^ZhWWiXhZhXhW)-
=(XhY'/\ZhW')y(XhZhW)=(XhZ)M(Y<AW>)yW).
Последнее выражение соответствует схеме, изображенной
на рис. 5,13,
i—X' Y—|
-W-
■W-
Рие. 512
г—У—
-IV'-
-W-
Рис. 5.13
Мы уже уделили достаточно внимания схемам с
переключателями. Перейдем теперь к комбинационным
схемам. Основные компоненты таких схем — элементы.
В наиболее общей форме элемент является устройством,
имеющим п входов и m выходов (m, n e N). На каждый
вход может подаваться один из двух бинарных сигналов;
представим их как 0 и 1, однако любая другая система
пз двух различных значений также нам подходит. В
реальной ситуации обычно мы имеем сигналы в
окрестности 0 вольт (например, от 0 до 0,8 вольта), которые
представляются нулем, и в другой окрестности — в
районе 4 вольт (скажем, между 3 и 5 вольтами), которые
представляются единицей. Отсюда определяются
выходные значения (0 и 1). Можно ожидать, что нам
понадобится достаточно много различных элементов, чтобы
представить все возможные функции (0, 1}п -*- (0, 1),
однако, как мы увидим далее, это не так. Схемам, не
имеющим временных задержек (в дальнейшем только такие
схемы мы и будем рассматривать), соответствует един-
184
ственный тип элементов. Однако это не очевидно.
Структура схем станет более ясной, если вначале мы рассмотрим
три типа элементов, изображенных на рис. 5.14. Самым
не
простым является элемент не; его действие определяется
тождеством
с = ""] а(с = не о),
определяемым табл. 5.6.
Таблица 5.6
INPUT(a)
0
1
OUTPUT(c)
1
0
Аналогично элементы и и или определяются табл. 5.7.
Таблица 5.7
INPUTS
а Ь
0 0
0 1
1 0
1 1
OUTPUTS (e)
И ИЛИ
0 0
0 1
0 1
1 1
Элементы и и или могут также иметь несколько
входов; в этом случае они определяются аналогично, т. е.
выходной сигнал элемента и равен 1 тогда и только
тогда, когда на всех входах сигнал равен 1, и выходной
сигнал элемента или равен 1 тогда и только тогда, когда
какой-либо из входных сигналов равен 1. Алгебраически
выходной сигнал элемента не имеет вид: "~| (входной
сигнал), выходной сигнал элемента а имеет вид:
(сигнал первого входа) Д (сигнал второго входа) Л••• и,
наконец, выходной сигнал элемента или имеет вид:
(сигнал первого входа) V (сигнал второго входа) V,.. Что-
189
бы представить более сложные функции, элементы
можно «соединять» различными способами.
Пример 5.5. Рассмотрим схему (более точно, часть
схемы, которая нас интересует), изображенную на
а-
Ъ-
£
■х
Рис. 5.15
рис. 5.15. Возвращаясь «назад» от выходов схемы,
получаем
* = ((а\/(«ЛЬ')>Л(У))'.
У = (ЬАс)'.
Поэтому
*-(((«Ve)A(*V*'M(W)' =
= ((вЛ(аУЬ'))Л(ЬЛе)')'-(«Л(&ЛОУ
(по закону поглощения).
Таким образом, одно из возможных упрощений схемы
изображено на рис. 5.16. /
а
Ь-
с-
&
&
■ X
Рис. 5.16
Следовательно, мы можем использовать булевы
выражения для анализа и упрощения сложных схем,
Рассмотренный пример показывает, как можно осуществлять
такие операции.
Существуют также устройства, которые реализуют
другие логические операции. Наиболее важными
являются элементы ие и и не или; опи изображены на
рис. 5.17. Используя множество таких элементов, при
помощи булевых выражений можно получить требуемую
схему непосредственно по таблице истинности.
188
Пример 5.5 (продолжение). Не останавливаясь на
формальностях, заметим, что каждое выражение в
скобках в окончательной форме / (см. выше) представляет
вход для последнего элемента на рис. 5.18 и может быть
вычислено с помощью элементов предшествующего ряда
не и
Г>-
не ила
Рис. 5.17
(Части схемы, обведенные штриховыми линиями, практи-
"ески не требуются, поскольку для многих электрических
элементов дополнение к выходу также доступно из
вспомогательного выхода.) Отметим, что полученная
схема в общем случае не будет мипимальной в смысле
числа используемых элементов. /
В завершение рассмотрим два примера, которые
показывают, как булева алгебра может быть использована в
задачах иного рода.
х-
У-
Ъ\
—I
С?
гт^. 1
У-
2-
Dh
■о-
i—__j
t±t
3>
Рис. 5.18
Пример 5.6. Предположим, что справедливы
следующие утверждения:
а) знание структур данных необходимо для
совершенствования дисциплины ума;
б) только опыт программирования может создать
дисциплинированный ум;
187
в) для того чтобы написать компилятор, надо иметь
возможность анализировать задачи;
г) недисциплинированный ум не может
анализировать задачи;
д) всякий, кто писал структурные программы, может
рассматриваться как опытный программист.
Можно ли из этих предположений определить
справедливость нижеследующих утверждений:
а') опыт написания структурных программ
необходим для того, чтобы быть в состоянии написать
компилятор;
б') внание структур данных является частью опыта
программирования;
в ) анализ задач невозможен теми, кто игнорирует
структуры данных;
г') опытный программист, который писал
структурные программы, в состоянии анализировать задачи и
имеет дисциплинированный ум, является программистом,
который мог бы написать компилятор?
Чтобы ответить на эти вопросы, мы могли бы
исследовать логические следствия утверждений, однаки для
того, чтобы проиллюстрировать используемую техпику в
более сложных ситуациях, воспользуемся нашим
знанием булевой алгебры. Сначала необходимо закодировать
наши утверждения. Пусть
& — множество всех программистов,
U —- те из них, кто знает структуры данных,
V — те из них, кто имеет дисциплинированный ум,
W — те из них, кто является опытными
программистами,
X — те из них, кто мог бы написать компилятор,
у шт те из них, кто может анализировать задачи,
Z — те из них, кто может писать структурные
программы. Тогда имеем
a) U=tV; б) WaV; bJ X&Y;
т) VaY;tfWeZ',
a') ZaX; б') UaW; b'J YsU;
г') W(\Z(\Y(\VaX.
Теперь видно, что а') непосредственно следует из в),
г), б) и д) до транзитивности; аналогично в') следует
из г) и а). Также
W(\ZnYnV=W(\Y(\V=Y()V=Y3X
183
Таким образом, г') также справедливо. Утверждение б')
не может быть выведено из а)—д), поскольку мы только
внаем, что W^Z, и цепочка на этом заканчивается. /
Пример 5.7. Алиса сказала, что Барбара и Клара
говорят правду, а Клара сказала, что Элспет и Фиона
или обе говорят правду, или обе лгут. С другой стороны,
Деби считает, что по крайней мере или Алиса, или
Барбара говорят правду, тогда как Барбара утверждает, что
только одна из двух — Алиса или Фиона — была
правдивой. Элспет считает, что Алиса и Барбара всегда говорят
правду, однако Фиона уверена, что Барбара и Клара обе
не могли сказать правду. Кому мы должны верить?
Рассмотрим множество утверждений вида
«Алиса (не) говорит правду»,
«Барбара (не) говорит правду»,
п пусть А содержит только те утверждения, в которых
Алиса говорит правду. Пусть В, С, D, Е и F определены
аналогично. Тогда, если S — непустое множество
пересечений таких, что
SsAOB'HC,
то S включает утверждения, в которых
«Алиса говорит правду»,
«Барбара лжет»,
«Клара говорит правду».
Из первого утверждепия следует, что можно вывести
следующий факт: если Алиса говорит правду, то то же
самое делают Барбара и Клара. Это можно закодировать
следующим образом:
если х&А, то жеВПС;
следовательно,
AsBOC. (1)
Аналогично другие утверждения могут быть записаны в
виде
Cs(EOF)\i(E'nF,)t (2)
DsAUB, (3)
Be(E\}F)\(EnF) = (E(\F')U(E'()F), (4)
Е = АПВ, (5)
F*{B<\C)\ (6)
188
Из (2), (4) п (1) следует, что ВПС = 0, и поэтому А —
= 0; то1да из (5) следует, что £' = 0. Эти выводы мы
смогли получить иеносредствеппо из условий задачи. До
сих пор наши рассуждения были эффективны потому, что
мы пользовались тем, что правдивый человек говорит
правду. Однако пока мы не использовали ничего о
справедливости того, что говорит лжец. Если мы ограничимся
фактором, что все, что говорит лжец, неверно, то можем
заменить множество включений из (1) — (6) на
эквивалентные. Например, если Барбара и Клара правдивы,
то, поскольку Алиса говорит, что это так, Алиса тоже
правдива. Следовательно,
А=°ВГ\С, (1а)
C-(EnF)\f{E'l\F'), (2a)
D-AUB, (За)
B-(E1)F')\)(E'nF), (4a)
Е = А()В, (5а)
F-(Bf)C)'. (6a)
Как и раньше, Л = 0 и Е = 0, и поэтому Алиса и Элспет
никогда не говорят правду. Из (2а), (4а) и (6а) следует,
что F = S. Таким образом, из (За) и (4а) получаем Ъ =
*= В = F •=&, откуда с помощью подстановки в (2а)
следует С = 0.
Отсюда следует, что возможно только одно
утверждение такое, что
же А' ПВП СП DOE' OF;
это означает, что Алиса, Клара и Элспет лгут, а
Барбара, Деби и Фиона говорят правду. /
Упражнение 5.5.
1. Показать, что в булевой алгебре (.$, », +, ') для
х, у, ге^ справедливы соотношения:
а) (х + у)*{х' + у)*=у;
б) (* + *)•(*' + y)*-{z*y) + (z' * х);
в) ((* »*) + (у •*'))'-(*'•*)+ (?'**')•
2. Доказать, что если в {33, », +, ') выполняются
соотношения х * у =*х* z и х + у = х + г, то у = z.
3. Из схем, изображенных на рис. 5.19 и 5.20,
получить «простые» схемы, эквивалентные исходным.
190
4. Получить алгебраическое представление схемы, изо-
бразкенной на рис. 5.21, и дать табличное представление
выходов х и у в зависимости от значений а и Ъ на входе.
Использовать две такие схемы для построения схемы,
—С—В'—
X
Рис. 5.20
соответствующей функции, определяемой табл. 5.8.
Связать это с арифметикой из § 3 гл. 4.
5. Построить схему, реализующую операцию не и,
которая имеет четыре входа и выдает на выходе 1 тогда в
а Э-
3>
*ь-с^£_
S>-
Рис. 5.21
только тогда, когда все входы равны 0.
6. Пусть выполнены указанные здесь условия:
а) все гонщики импульсивны;
б) все хорошие программисты меланхоличны;
в) никто не может быть и импульсивным и
меланхоличным;
г) читатель меланхоличен.
Таблица 5.8
Входы
Р Q
0 0
0 0
0 1
0 1
н
0
1
0
1
Выходы
S Г
0 0
0 1
0 1
1 0
Входы
Р Q
1 0
1 0
1 1
1 1
R
0
1
0
1
Выходы
S Г
0 1
1 0
1 0
1 1
Является ли читатель хорошим программистом и/или
гонщиком?
191
7. Организаторы международной конференции по
компьютерам решили, что для того, чтобы на встрече пе
доминировали коммерческие интересы, будет только один
магазин, которым будут пользоваться вместе все
производители компьютеров. Сами производители будут
ответственны за определение того, кто принимает участие в
представительстве. Десять компаний — пять
европейских и пять американских — дали знать, что они
хотят принять участие в конференции.
(Обозначим эти компании через А, В, С, D, Е и F, G,
Н, I, J соответственно.) Однако из-за обязательств цо
контрактам и торговой политики должны появиться
различные ограничения. Европейские предписания требуют,
чтобы G и / не могли одновременно принимать участие в
конференции; аналогично не могут одновременно принять
участие F, G и Л Ограничения американских
производителей исключают участие А и D, пока G не примет
участия; аналогично исключаются С и D. Если Е
присутствует на конференции, то должно присутствовать и /,
однако если они принимают участие вдвоем, то В не может
быть там. И наконец, В и С не могут вместе принимать
участие в конференции.
Может ли быть достигнуто соглашение, по которому
по три компании из каждой группы могут собраться
вместе, не нарушая условий? Если так, то кто именно примет
участие?
§ 6. Замкнутые полукольца
В завершение главы мы опишем довольно узкие, но
важные структуры, которые позволяют осуществлять
операции на подмножествах бесконечных множеств. Пока у
нас нет понятий матриц и графов, мы не можем начинать
обсуждение приложений, и, следовательно, мы дадим
только аксиоматическое определение и покажем
принципиальную разницу между полукольцами и похожими на
них на первый взгляд полями.
Определение. Замкнутым полукольцом
называется множество S с двумя бинарными операциями ® и ©
такими, что
а) © ассоциативна;
б) существует единичный элемент по отношению к
©, который будем обозначать символом 0;
в) ® ассоциативна;
192
г) существует единичный элемент по отношению к®,
который будем обозначать символом 1;
д) для всех х s 5
х®0 = 0 = 0®х;
е) © коммутативна:
х © у = у © х для всех х, y&S;
ж) © идемпотентна:
х © х => х для всех х е 5;
в) ® дистрибутивна относительно ©:
х ® (# ф г; = (х ® у) ф (х ® г) для всех х, у, г s S,
(х ф у) *z = (х® г) ф (у ® г) для всех г,;,ге S;
и) сумма счетного числа элементов из S существует и
единственна, т. е. не зависит от порядка суммирования;
к) ® дистрибутивна относительно бесконечных счет-
пых сумм, т. е.
(2аА®(2Ь;)=2К®ЬЛ.
где
S fli = ах ф аг ф ..., 2 Ъ) = Ьа ф Ъг ф ...,
* i
S(fli ® bj) = (ах ® Ь,) ф (ах ® Ь2) ф ...
... ф (я2 ® Ьх) ф (аа ® Ь2) ф ... ф (а8 ® 6^ ф
ф (а, ® Ь,) ф ... ф ... /
Эта достаточно странная структура часто
используется в алгоритмах замыкания для графов (гл. 7 и 8).
Чтобы проиллюстрировать результаты, которые могут быть
получены в замкнутых полукольцах, сравним системы
(Z2, », +) и (Z2, Д, V)i где операции определены
табл. 5.9.
Таблица 5.9
V
0
1
0 1
0 1
1 1
Л
0
1
0 1
0 0
0 1
+
0
1
0 1
0 1
1 0
•
0
1
0
0
0
1
0
1
13 д. Кук, Г. Бей»
193
Рассмотрим определение операции замыкания.
Результат а* применения этой операции к элементу а
записываем в виде
а* = 2 «'.
1-0
а0 = 1, а' = а, а5 = а * а и а* = а'-1 • а
(b(Z2, Л'V) сложением является V, а умножением Д).
В замкнутом полукольце (Z2, Д> V) такое определение
имеет смысл и допустимо. В частности,
1* = 10V1'V12V... = 1V1V1V...«=1
(в силу аксиом ж) и и)). Однако если мы попытаемся те
же самые вычисления произвести в поле (Z2, *, +), то
получим
1* = 1° +14-I2 +... - 1 + 1 + 1 +...
Эту сумму можно вычислить следующим способом:
1 + 1 + 1 + 1 + 1 + 1 + ... = 0 + 0 + 0 + . .. = 0
i i ' ■ i i
или же
1 + 1 + 1 + 1 + 1 + 1 + 1 + ...«=1 + 0 + 0 + 0+...«=1,
i i 1 1 i i
т. е. значение суммы пе определено. Следовательно,
понятие такого рода замыкания не имеет смысла, если его
применять к полю Z2 (которое запрещает аксиомы ж) и
и) полукольца).
Упражнение 5.6. Проверить, что ({0, &), П, U)
является замкнутым полукольцом.
ГЛАВА 6
МАТРИЦЫ
Наше изложение теории конечных матриц (мпожества
матриц) является более общим, чем принятое в
большинстве книг, в которых матрицы обычно определяют как
линейные преобразования на векторных пространствах,
используя знакомство с координатной геометрией. Хотя
иногда мы будем возвращаться (§ 3) к этой
интерпретации, в основном будем придерживаться точки ярения, что
матрицы являются реализациями абстрактных
алгебраических структур в вычислительных целях. Тогда алгебра
абстрактных структур определяет способы, как надо
комбинировать матрицы.
Сначала мы определим (§1) матричное представление
бинарных отношений над конечными множествами. Затем
последует более общее рассмотрение требуемых свойств
абстрактной системы для того, чтобы матричная
реализация была разумной. А в завершение, используя
результаты предыдущих исследований, будет рассмотрен
важный случай векторного пространства над R.
§ 1. Матрицы и бинарные отношения
на конечных множествах
Формально матрицей над множеством S называется
отображение
М: N, X N, -* S, p, q s N.
Обычно образ (г, ;) обозначают через Mi} и изображают
всю функцию массивом элементов из S, т. е.
Л/ =
-Мп Мп...М1д-
м21 м22...м2Ч
мп мр2...мщ_
Говорят, что эта матрица имеет р строк и q столбцов и
имеет размер рХ q. Матрица размера р X q имеет р * q
13*
195
элементов. Когда р — q, матрицу называют квадратной.
Множество всех матриц р X q над S обозначают через
JK(p, q, S). Множество J((p, p, S) будем обозначать
через Ж(р, S).
Рассмотрим бинарное отношение р между
множествами А и В, где
А »= {а\, аг, .. ■) а,), В =» ibi, Ьг, ..., Ьч),
т. е. Ul=/>, \B\**q.
Упорядочение элементов в этих множествах выбрано
произвольно, однако, однажды выбранное, оно далее
остается фиксированным. Пусть это отношение р определено
посредством выбора пар (а, Ь), где а&А, Ь^В.
Рассмотрим матрицу М над {0, 1), т. е. М: NPXN, ->
-*• {0, 1}, и свяжем элементы М с отношением р биекцией
<р: &{АХВ)-*М{р, q, Z2)
(ф отображает произвольное отношение между А и В в
матрицу pXq над {0, 1});
ф: р-*- М,
причем
.... ., /*. если (аи bj)eps
(Ф(р»Ч-АГч-{о, если (fli,^p.
В случае, когда полезно подчеркнуть, что матрица М
была получена из отношения р, мы будем обозначать ее
через М (р).
Пример 1.1. Возьмем случай |Л|=4, |Б|=3 п
р = {(аь Ь2), (аи h), (а2, Ь}), (а3, bi), (а4, Ь2)).
Тогда соответствующая матрица Л/ имеет вид
-0
i
1
_0
1
0
0
1
1"
0
0
0
Таким образом, мы имеем сиособ табулирования или
кодирования отношения и можем закодировать отношение
посредством ф или декодировать посредством ф-1. Этот
процесс является отображением (i, /) в А X В или М
соответственно. Такое представление более удобно, чем
теоретико-множественный способ определения отношений,
поскольку с ним можно обращаться формальным образом.
Оно становится даже более пригодным для вычислений,
196
если наложить некоторую структуру на множество, из
которого получается матрица. Возьмем опять {0, 1} и
определим на этом множестве логическое сложение (или)
и умножение (и). Тогда, если М и N — матрицы pXq,
соответствующие отношениям р и о, то матрица Q,
представляющая отношение т, где
т = {(а, Ь): (а, Ь)^р или (а, Ь)ео},
определяется следующим образом Qii — (Mil или N(J)=>
■= Mti + N{i (логическое сложение). Следовательно, имеет
смысл называть Q суммой матриц М и N и писать
Q = И + N,
подразумевая, что Q, М и N имеют один и тот же размер
и Q вычисляется по правилу покомпонентного сложения
Qli = Mil + Nil.
Это — пример использования коммутативной диаграммы,
изображенной на рис. 6.1, где производится операция на
одном множестве с
использованием операции на другом
множестве посредством
подходящего отображения <р.
С этой диаграммой обычно
связывается тождество
Ф(рио) = ф(р)+ф(а).
С помощью этого тождества
можно дать более точное определение сложения матриц:
М + ^ = ф(р) + ф(о) = ф(рио) = ф(ф-1(^)иф-1(Лг)),
Пример 1.1 (продолжение). Пусть А и В те же,
что и раньше, и пусть
o = {(ai, bi), (ai, b2), (a2, bi), (a3, b2)}.
fM)
(M,N)
M+N
Тогда
7V =
~1
1
0
_0
1
0
1
0
(Г
0
0
0_
Дальше будет видно, что
pUo —{(oi, bi), (au b2), (ai, h), (a2, bi),
(a3l Ь^, (a3l b2), (a4, b2))
197
п, что эквивалентно,
Л1 + N
-1
1
1
_0
1
0
1
1
I-
0
0
0
. //
Более того, если мы возьмем множество С = {с\, сг, сз,
С4, сь) и рассмотрим отображение я между В а С,
определенное следующим образом:
л = {(fci, ci), (6i, с5), (b2, с2), (Ьз, с4), (Ьз, Сь)),
то оно может быть представлено в виде матрицы Р, где
1 О О О Г
£=01000
„0001 1.
Очевидно, что отношение я ° р между А а С корректно
определено п, следовательно, будет соответствовать
матрице 4X5. Обозначим эту матрицу через S. Как ее можно
вычислить? Для этого надо вычислить Su для всех i, ],
где 1 < г «S 4, 1 < / *£ 5. В силу биекции £« = 1 тогда и
только тогда, когда (а{, с}) sit«p. Однако это так, если
только существует некоторое 6еВ такое, что (а(, Ь)ер
и {Ь, С;)ел, т. е.
(Oi, Cj)en«pa(fl(, Ji)SpB (bl, Cj)en
или (at, &2)«=p и (fo, Cj)en,
или (а,, Ь3)ер и (Ь3, Cj)sn;
или же, что эквивалентно,
Su = Mh * Р1;- + Mi2 * P2j + Л/18 * ■Psj - 2 Mik * PkI,
ft=i
Матрица 5, вычисленная по такому правилу, называется
произведением М и Р и обозначается через Д/ * Р или
просто MP.
Рассмотрим опять естественное (коммутативное)
отношение между двумя рассматриваемыми операторами
(рис. 6.2). Тогда
М*Р = ф(ф-'(Р).ф-1(М)).
Замечание. Изменение порядка ф зависят от
способа определения матрицы отношения; если (вместо
этого) мы определим матрицу отношения следующим
198
образом:
Мц = 1 тогда и только тогда, когда {щ, ft<) е р,
то изменения порядка не будет. Хотя с математической
точки зрения было бы бо-
(р,*)-
->- Лор
Щ,Р)-
*
Рис. 6.2
-*~М*Р
MP-
-о
1
1
_0
1 1-
0 0
0 0
1 0_
1 0 1
0 0 0
0 0 0
10 0 0
лее желательно иметь
один и тот же порядок,
это нарушило бы
сложившуюся практику.
Соответствующие диаграммы в § 3
не меняют порядок,
однако эти соглашения
естественны для вопросов,
изучаемых в этом параграфе.
Пример 1.1 (продолжение). Выполним вычисления,
соответствующие определенным выше отношениям.
Получаем
Ч 0 0 0 Г
0 10 0 0
0 10 0 0
_0 0 0 1 1_
Если матрицы М и N имеют одинаковый размер, то их
сумма существует и определяется формулой
(M + N)t,-Mu + Nu,
а если матрицы Р и М согласованы (М имеет размерность
pXq, a P — размерность <?Хг), то умножение матрицы
М на Р возможно и определяется следующим образом:
(МР)у- %мш«рк}.
ft=i
Хотя матрицы рассматриваются над (Z2, Д, Ц), мы
используем символы » и + для того, чтобы иметь
возможность обобщения введенных выше операций (см. § 2).
С этого момента обозначения Л и V будут
использоваться лишь в тех случаях, когда общие операции им
неадекватны.
В заключительной части этого параграфа ограничимся
рассмотрением матриц, представляемых отношениями на
конечном множестве А, где \А\=п. Тогда все матрицы
согласованы и их сумма и произведение всегда
определены.
Из покомпонентного определения сложения сразу
следует, что сложение матриц коммутативно и существует
199
нулевая (гаХга)-матрица 0: 0(j = 0 для всех i, /; 1 < I,
j < гг. С другой стороны, умножение матриц, вообще
говоря, некоммутативно, однако существует единица,
которая называется единичной (гаХга)-матрицей и
определяется следующим образом: /: /«=1, если £ = /, п Тц = 0,
если i ¥= j. Так, если X — матрица га X га и Y ■= XI, то
п п
Yij = 2 %1р * I Pi = 2 ^*ip * Ip5 + X-V) * 111*
Так как все /Pj = 0, за исключением случая р «= /, то в
сумме все члены, исключая те, где р = ], равны нулю.
Кроме того, 1ц = 1. Поэтому
Ytj = Х«, т. е. У = Л#
Следовательно, X = XI. Аналогично IX = X; поэтому
/X = X =» X/. //
К сожалению, обратная по умножению матрица может
не существовать; однако если она существует, то она
единственна. Если матрица имеет обратную, то она на-
вывается обратимой.
Пример 1.2. Не существует матрицы X такой, что
Доказательство. Вычисление произведения дает
1° *„]•
Следовательно, какие бы значения компонент матрицы X
не рассматривались, элемент (1, 1) произведения никогда
не будет равен 1, откуда и следует требуемый ре-
вультат. /
Таким образом, множество квадратных матриц
заданного размера с определенными на нем операциями
умножения и сложения образует кольцо.
Используя далее связь между бинарными
отношениями на множестве и матрицами над (Z2, Д, \J), дадим
следующие определения.
Транспонированной матрицей М называется матрица
Л/г такая, что
Ml, = М}1
(поэтому, если Л/ получена пз отношения а, то Мт может
быть получена из отношения о-1); транзитивное замыка-
200
ние М* и рефлексивное замыкание М* (изоморфны
соответственно о+ и о*) определяются следующим образом:
п=1 п=о
где Л;° = /, Л/' = Л/ и Л/-1"1-1 = Л/Л/п (nsN). (В некоторых
случаях эти замыкаппя нельзя определить корректно
(чтобы соответствующие ряды сходились), однако над
(Z2, Д, V) определение корректно, поскольку это —
замкнутое полукольцо.)
В заключение заметим, что матрицы могут быть
частично упорядочены путем поэлементного сравнения, а
именно
М «£ iV тогда п только тогда, когда Мц «S Ntj для всех i, /.
Из данного определения следует, что
M^N тогда и только тогда, когда М + N*= N,
прп условии что + является операцией «максимум»,
подобной или.
Упражнение 6.1.
1. Пусть А — копечпое множество и \А\=п, а М —
матрица над (Z2, Д, V)- соответствующая некоторому
бинарному отношению на А. Доказать, что
(Следствием этого является тот факт, что вместо
полукольца (Z2, Д, V) мы можем рассматривать булеву
алгебру (В, f\,\J,~\), где В = {0, 1). Поэтому мы часто
будем обозначать множество матриц пХл через J((n, В)
и называть их булевыми матрицами.)
2. Доказать, что если Л/ — конечная квадратная
матрица над (Z2, Д, V)» то
Л/* = (7 + Л/)+,
Указание: см. задачу 1.
3. Показать, что если матрица Л/ над (Z2, Д, V)
такая, что КМ, то Mn<Mn+i для любого nsN. В
качестве следствия доказать, что если М имеет размер пХп
н р*1 тп, то
М* = (7 + Л/)р, М* = Л/2«
для некоторого q такого, что 2я > пг.
4. Показать, что если существует обратная к Л/ мат-»
рица М~[ (т. е. М~1М — Л/Л/-1 =■=/), то она единственна.
201
Доказать также, что если N обратима и согласовала с
М, то
(NM)-l = M-]N-K
5. Доказать, что если А, В и С—согласованные
матрицы такие, что
А*В = 0=*А*С,
то отсюда не следует равенство В — С. II
§ 2. Матрицы над другими алгебраическими
структурами
Мы уделяем много внимания матрицам над
полукольцами (Z2, Д, V) п (В, Д, V» ~li) однако ничего не
сказали о матрицах, чьи элемепты принадлежат другим
структурам. Сначала мы рассмотрим вопрос о том, что
надо требовать от структуры (S, », +) для того, чтобы
матрицы над S обладали нужными свойствами. Затем
обсудим технику вычислений, применяемую в ситуациях,
когда операция замыкания корректно определена.
2.1. Обобщенные матрицы. Пусть {Ж, ®, ф)
обозначает множество Jt{n, (S, *, +)) матриц вХл над
(S, », +) с операциями ® и ©, определенными в
терминах * и +. Можно легко определить матрицы над
произвольным непустым множеством, однако
индуцированные при этом операции над матрицами могут быть
некорректными и обладать неестественными свойствами,
Рассмотрим вначале операцию сложения.
Если М и N — согласованные матрицы над S, тогда по
определению
Для получения © использовалась только одна операция
сложения +. Поэтому сложение матриц выполняется
просто. Однако для того, чтобы операция © была
коммутативна и ассоциативна, теми же самыми свойствами
должно обладать (S, +). Отсюда следует, что нулевая
матрица Ж существует тогда и только тогда, когда существует
двусторонняя *) единица 0 по отношению к + в S.
Аналогично существование аддитивных обратных элементов
в Ж зависит от существования аддитивных обратных
элементов в S. Поэтому сложение © на Ж всегда может быть
*} Левая и вравая,— Примеч. ред.
202
определено. Причем, хотя для того, чтобы \М, ©) стало
коммутативной группой, требуется выиолненио многих
свойств на (5, +), многое можно получить даже тогда,
когда операция + не обладает достаточным набором
хороших свойств.
В противоположность этому умножение в Л требует
гораздо большего от S. По аналогии с матрицами над (Z2,
Д, V) положим
(M®N){] = ^Mik*NhS.
h
Поскольку суммирование проводится в 5, то для
корректного определения умножения в Л необходимо, чтобы
результат не зависел от порядка суммирования. Это будет
выполнено, если сложение в S ассоциативно.
Не следует ожидать, что умножение в Ж будет
коммутативно; даже (так как (<Л?, ®), вавпепт от (S, *) и
(5, +)) для того, чтобы обеспечить ассоциативность в
{Л, ®), требуется больше, чем ассоциативность в (S, *).
Рассмотрим следующий пример, в котором будут
выполнены левая и правая дистрибутивность * над +,
ассоциативность в (5, *) и ассоциативность и коммутативность
в (5, +).
Пример 2.1. Пусть Л/, N и Р — матрицы
размерности 1X2, 2ХЗпЗХ1 соответственно. Тогда
((M®N)®P)n=t (М®Х)„.рл_ £( £ лл,.nXp31=
= ((^11*^11) + (Mu*Nn))*Pn + ((Mn*N12) +
+ РЛ, • Лг22)). P21 + ((.!/„ . Nlt) + (M12 * Na)) . P81 =
- ((Л/п . Nn). Pn) + ((Л/1а. N21). Pn) +
+ ((Mn.^12).P21)+ ((Л/12.Л'22).Р21) + (P/ii»^18).P81) +
+ ((Л/1,«ЛГм).Ра1)-(Л/11.(Л\1.Р11))+(Л/1,.(^11.Р11)) +
+ (М11.(ЛГ12.Р21)) + (Л/11.(Л'22.Р21))-|-(Л/1]»(ЛГ18^81)) +
+ (M» • (#»• P3i))=(-Vn * (-'Vn * *>„)) + (-!'„•(#„.?„)) +
+ (ii/11.(iV1,.p8i))+(^i.'(-v21.Pi1)+(.i/i2«ov22.p21))+
+ (Л/12 • (Лг2з • ^3i)) = ЛЛ1 * ((<Yn • ^u) + 0V„ » P2i) +
+ (^V13.P31)) + ^12»((Ar21»^ii) + (-V22»^i) + (^23»^3i)) =
= £ Mu * ( £ Na * Рд) = (Л/ ® (.V ® P))
1=1 \j=l / /11
203
Прп проведении выкладок предполагалось, что 4-
ассоциативна, поэтому некоторые скобки были опущены. II
Пока все это выглядит не очень оптимистично,
поскольку лишь небольшое число структур может
удовлетворять условиям, накладываемым на (5, », +). Заметим
также, что для существования единичной матрицы
требуется, чтобы:
а) 0»х = 0 = а:»0 для всех x&S, где 0
—аддитивная единица в S (напомним, что это условие не
является аксиомой поля);
б) S должно иметь двустороннюю мультипликативную
единицу.
Тем не менее можно проверить, что если (5, », +) —
кольцо пли поле, тогда все вышеуказанные условия
выполнены и (Л(, ®, ф)— кольцо.
Понятия упорядочения и замыкания матриц над
более узкими структурами, такими как упорядоченные поля
и т. п., становятся слишком сложными и поэтому
обсуждаться не будут.
Как уже отмечалось в упражнении 6.1, мы можем
рассматривать Ж{п,(Z2, Д, V)) как J((n, В). Аналогично
мы можем обобщить вычисления на другие родственные
алгебраические структуры, однако требуется
тщательность, чтобы сформулировать условия на то, какую
систему использовать. Например, из Ъъ s Z3 путем обычного
включепия Z2 с* Ъ3(А с:_> В обозначает тождественное
отображение на А, где А ^ В) следует, что
А <= Jt(n, Z2) =*■ А е J((n, Z3).
Пусть теперь дана матрица из 0 и 1. Спрашивается, оп-
пределена она па {0, 1} или же на {0, 1, 2)? Это
необходимо знать для перехода к построению арифметики.
Конечно (как будет показано в § 3), все это вависит от
того, что мы пытаемся вычислять. Аналогичные проблемы
возникают с любыми включениями, особенно Ж(п, В),
Ж{п, Z2), Jl(n, Z), JT(n, Zm), J({n, Q) и Ж(п, R).
2.2. Алгоритм Уоршолла. В этом разделе мы опишем
быстрый способ вычисления (транзитивного или
рефлексивного) замыкания квадратных матриц над (Z2, Д, \/).
Этот способ — один из вариантов метода Уоршолла;
представим его в виде программы. Если М — матрица
размерности пХп над (Z2, /\,\l), то ее можно преобразовать
в М* следующим образом:
for / from 1 to n do
for i from 1 to n do
204
It l*j and Mit - 1 then
foi к from 1 to n do
Л/л *- M» V Мя.
Чтобы вычислить Л/*, мы можем прибавить / пли в
начале, или в конце, используя соотношение
М*= (Д/ + /)+ = Д/+ + /.
Пример 2.2. Пусть
Л/ =
тогда, используя алгоритм, заменим 0 на 1 в следующих
элементах:
(1, 4), (1, 5), (3, 4), (3, 5), (5, 2), (5, 5), (2, 2,), (2, 3),
(3,3).
-о
0
0
0
0
1
0
1
0
0
1
0
0
0
1
0
1
0
0
1
<г
1
0
0
0_
0
0
0
0
1
1
1
0
1
1
1
0
1 1
1 1
1 1
0 0
Получим матрицу
дг
.01111.
Мы не будем доказывать, что программа выполняет
нужные действия, однако отметим, что смысл программы
состоит в том, что если i¥=j я Д/«—1, то (i, /) e<jp для
некоторого р < п, где о — отношение, порожденное М.
Поэтому заменим £-ю строку на дизъюнкцию i-й и /-й строк,
чтобы указать, что все, что относится к /, также
относится и к i.
Очевидно, что при i = / выполнение этого шага не
дает никакого выигрыша. Основная сложность проверки
правильности программы — убедиться в том, что ничего не
пропущено. Читатель сможет доказать это
самостоятельно, прочитав гл. 7.
Метод Уоршолла дает значительный выигрыш по
сравнению с прямым использованием определения замыкания;
он может быть еще улучшен, однако это требует
использования более сложных структур данных, и поэтому мы
не будем больше этим заниматься.
Этот метод можно многими путями приспособить для
получения различных оценок, сязанных с матрицами
(отношениями), простейшим из которых является понятие
205
«расстояния» между элементами множества, связанными
отношением о. Расстояние между двумя точками х и у
(^(•zi У)) равно наименьшему п такому, что neN и у е
e=o"(.z). Если М — матрица, соответствующая о, то,
заменяя циклы следующим образом, получим требуемый
результат:
if Мц Ф 0 «hen
for к from l to n do
if Mlk Ф 0 and
(Mik = 0 or Mih > M„ + MiK)
then Mik *- Д/„ + Л/№.
Здесь используется арифметика над Z (а не над Z2).
Пример 2.3. Применение описанной выше
процедуры к матрице из предыдущего примера дает
-0 112 2"
//
0
0
0
0
3
1
0
2
2
3
0
1
1
2
0
1
1
2
0
3
Упражнение 6.2.
1. Определение. Говорят, что две (п X п)
-матрицы X и У над полем F подобны над F, если существует
обратимая матрица Р над F такая, что
Х = Р-'ГР. //
Показать, что отношение, индуцируемое подобием на
Ж (п, F), является отношением эквивалентности и что
матрица / подобна только себе.
2. Показать, что если А, В&М{п, F) для некоторого
п е N и некоторого поля F, тогда
(А + В)т «= Ат + Вт, (АВ)Т = ВТАТ.
3. Определение. Стохастической матрицей
называется действительная матрица над ({х: 0 «£ х ^ 1}, *, +)
такая, что сумма элементов в каждой строке равна 1. /
Показать, что множество 3X3 стохастических матриц
не замкнуто по отношению к сложению, но замкнуто по
отношению к умножению. Установить, какие свойства
поля (R) при этом использовались.
§ 3. Матрицы и векторные пространства
Результаты § 2 показывают, как можно применять
матрицы для проверки выполнения отношений между
конечными множествами соответствующих размеров. Цель
206
этого параграфа — показать, как использовать матрицы
над нолем (R, *, +) (далее просто, 11) дли того, ччоГил
выполнять некоторые преобразования, в част пост
линейные преобразования в векторном пространство V над R.
В замечании из § 4 гл. 5 было установлено, что если Ге
eEnd(l7) — множество линейных преобразований V, то
{{x,Tx):x^T)<==VXV
является бинарным отношением над V. Мы ищем
результат применения лпнейного преобразования на V в
Л{п, R), где п = dim(V).
Возможны два обобщения. Первое — рассмотрение
произвольных полей, второе — линейные преобразования
между векторными пространствами произвольных
размерностей, которые могут быть определены аналогичным
образом в Л{п, in, R). Так как эти обобщения нам не
потребуются, то в дальнейшем рассматривать их не будем.
3.1. Матричные представления линейных
преобразований. Операции сложения и умножения матриц в Ж{п, R)
неявно были определены в § 2. Еслп А е л («, R) имеет
элементы Atj и X е R, определим Ые1(п, R) как
матрицу с элементами ХАц. Эту операцию называют
умножением матрицы на скаляр. Поскольку М{п, R) играет
центральную роль в оставшейся части этой главы, то
полезно перечислить все его свойства относительно
определенных выше операций. Единичную матрицу в М (п, R)
будем обозначать через / при всех п е N.
Предложение. Л(п, R) является линейной
алгеброй. II
Мы не даем доказательства этого факта. Рекомендуем
вначале проверить выполнение аксиом линейной алгебры
для Jt(2, R), после чего будет видно, как можно
построить доказательство в общем случае. Надо показать, что:
а) М{п, R) является векторным пространством;
б) Л{п, R) — кольцо;
в) умножение матрицы на скаляр обладает
следующим свойством:
Х(АВ) = {ХА)В=А{ХВ) для всех leR, А, В^Л(п, R).
Полезно иметь специальное обозначение для
подмножества обратимых матриц из Ji(n, R). Обозначим это
подмножество через
GL(n, R) = {A <=JI(n, R): А~х существует).
Каждое GL(n, R), «eN, определяет группу по умн^же-
207
нию. Эти группы называют полными линейными
группами.
Пусть V — векторное пространство размерности п над
R и reEnd(F)- Если В={еь ..., е„} — базис в V, то
очевидно, что Tet е V для всех i, 1 < i < п.
Следовательно, должны существовать tv e R (1 < i, ] ^ п) такие, что
Тех = tuei + t3ie3 + ... + t,hlen,
Теп = t\ne\ + h,fi2 + ... + tnnen.
Пусть Ат— матрица вида
At =
'21 '22 * ' * *2П
_ ni «2 •' • nn.
тогда ее называют матрицей преобразования Т в бази~
се В. Для данного В матрица Ат единственна; таким
образом, мы можем определить отображение
Фв: End(V) -*Л(п, R)
следующим образом:
фЧГ) -л,.
Так как Ат можно вычислить, то ее можно использовать
для нахождения Т.
Предложение. Пусть reEnd(V) соответствует
матрица Ат в базисе 5=-{ei, ..., e„h Тогда, если хеУ-
вектор
п
•:-i
то
где
Тх = 2 Utej e V,
" ^l"
L !"ln J
-Л,
" h'
I >•» I
Доказательство. Пусть х = 2 ^fii- Тогда
>=i
Гх - S Х;Ге, -£Ji tije) - S f S *^j) e, //
»-* »-l \j-l / i=l \i-l /
203
Следовательно, в данном базнсе линейное преобразование
Т можно выполнить с помощью произведения Ат\, где Ат
имеет размерность п X п, а Л — вектор (матрица
размерности п X 1)
соответствующий х е= У. На самом деле можно
установить гораздо больше. Ниже мы установим важные
свойства фв.
Предложение. Отображение фв: End (У) -*■
-+Ж{п, R) является изоморфизмом линейной алгебры с
обычными операциями в End (У) и Ж (и, R) на R,
причем сужение фв на группу Aut(F) sEnd(I7) является
группой изоморфизмов на GL(n, R).
Доказательство. Отметим основные моменты.
Чтобы избежать большого количества индексов,
ограничимся случаем п = 2. В общем случае доказательство
аналогично. Изоморфизм линейной алгебры следует из
следующих утверждений:
а) фв биективно;
б) ф»(М-/;
в) Фв(5Г) = фв(5)фв(Г) для всех 5, Г е End (У);
г) фв(^ + цГ) = KffB(S)+mB(T) для всех 5, Те
е End (У) и К, цеН.
Докажем некоторые из этих утверждений; остальные
оставим в качестве упражнений. Пусть {«i, е2) —
базис в У.
а) Чтобы доказать, что фв инъектпвно, необходимо
показать, что
фв(5) = фв(Г)^5 = Г.
Если
Sei = Snei + s21e2, Та = tnei + t2ie2,
то
фВ(5)=-фВ(7,)^51, =tn, «21=*21.
Поэтому Set =■ Те\. Аналогично Se2 = Те2. Следовательно,
S и Т совпадают на базисных элементах ci и е2. Однако
для всех х е= У выполняется соотношение
х = Aei + ие2;
U Д. Кук, Г. Бейз 20Э
такпм образом,
Sx = kSci + ц5са = ХГе, + ц7е2 = 2'(?.с, -1- цс2) = Тх,
т. е. 5 = Г.
Доказательство сюръективиости оставляем в качестве
упражнения.
б) /vx — х для всех х <= V; следовательно,
/vei = в! + 0е2, /ve2 = Oei + e2,
ф*(/у)-
1 О
О 1
'll *12
s s
21 22
. ФВ(Л
21 22 J
в) Пусть
Фв(5) =
тогда
Tei = *це! + f21e2,
5Гв1 = iii5ei + f2i5e2 = fii(s,iei + S2ie2)+^i(si2ei + s22e2) =
= (fiisn + f2isi2)ei +(t\2S2i + (2is22)e2.
Аналогично
5Ге2 =(fi2Sn + t22S\2)ci + (t\2S2i + £22s22)c2.
Следовательно,
фв(5Г) = фв(5)Фв(Г),
что и требовалось доказать.
г) Утверждение доказывается аналогично
утверждению в).
Чтобы показать, что сужение фв на Aut(F) является
группой изоморфизмов, используем свойства б)—г).
Пусть Т <= Aut(F); тогда
/ = Фв(/г) = Фв(7Т-') = фв(Г)фв(Г-'),
следовательно,
T<=Ant(V)=><pB(T) e=GL(n, R),
Ф»(Г)-' = ФВ(Г-'). //
Этот результат играет существенную роль, так как
имеет много важных следствий. Выведем некоторые из
них. В фиксированном базисе отображение Т -*■ Ат из
End(F) в J[(n, R) биективно (каждому преобразованию
210
соответствует единственная матрица п наоборот). Далее
Ав«т = АВАТ;
это эквивалентно тому, что диаграмма па рис. б.З
коммутативна. На практике это просто означает, что матрица
произведения
преобразовать
S°T
(As,AT) ■
-— ASA7
Рпс. 6.3
ннн S ° Т в End (У) может
быть вычислена путем
умножения матрицы А в на
матрицу А г. Нет
необходимости явно определять
S° Т, а затем вычислять
Ав°т на основе
определения. Аналогичные
результаты получаются и для S + Т. Кроме того, для сужения
Фв на обратимые преобразования Aut(V) получаем
Ат^ = AJ1;
это означает, что для вычисления Ат^1 необходимо лишь
найти матрицу, обратную к Ат-
Подчеркнем еще раз, что изоморфизм срв зависит от
базпеа; в другом базисе мы будем иметь другой
изоморфизм между End(F) и Ж{п, R). Таким образом, элемент
Ж{п, R) может рассматриваться как представление
элемента End (У) в фиксированном базисе или как
представление различных элементов End(F) в различных
базисах. В гл. 10, где результаты этого параграфа будут
применяться к R" (п = 2, 3, 4), отображение фв будет
рассматриваться в стандартном базисе {ei, ..., е„}, как это
определялось в § 4 гл. 5. Для этого базиса, если х =■
= (*!, ..., x„)<s R", то
п Г х-
х = 2 х#ь Тх = Ат
t=i
Пусть отображение Т ^End(V) имеет собственный
вектор хеУ, соответствующий собственному значению
oeR. Тогда, если в базисе В = {ei, .,., е„}
пространства V вектор х имеет вид
п
х = 2 ^е»
то
14*
Aj
W
- ^П _
= О
"V
L К J
211
Поэтому координатные вектора в представлении х
являются собственными векторами Ат, соответствующими
тому же самому собственному значению.
3.2. Некоторые другие понятия теории матриц.
Определим теперь на Ji (n, R) отображение, называемое
детерминантом (определителем):
del: J[(n, R)-»-R.
Было бы естественным ввести это понятие и исследовать
его свойства в § 4 гл. 5, так как det не вавпсит от базиса.
Это означает, что если Ат<=Ж(п, R) и Ат'&Л{п, R) —
матрицы отображения Т<=End(V) в базисах В а В'
соответственно, то det Ат = det Ат>. Одпако, чтобы
определить det на End (У), мы должпы были бы ввести
понятия из тензорной алгебры. Вместо этого дадим хорошо
известное определение det на JC(n, R) и установим
некоторые из наиболее важных его свойств.
Определение det будем давать при помощи рекурсии.
Вначале определил! det для случая Ж(2, R). Пусть
а а
11 12
а а
21 22
тогда
det А = ап<?22 ~~ Я21Я12.
Если iel(n, R) имеет элементы а{, (1<£, /<п), то
минором элемента ам называется матрица A(k,l) e
^Ж(п— 1, R), полученная из А путем вычеркивания
к-6 строки п 1-то столбца. Теперь det: J((n, R)-+ R
можно определить рекурсивно для всех п е N как
п
det Л = S (— l)r+1 «ii det ЛС1'°.
i=i
Иногда эту формулу называют разложением по первой
строке. Можно показать, что если использовать любую
другую строку или столбец для формирования
соответствующего выражения, то сумма будет равна det A.
Другими словами,
det Л =
п
2(-iy+rarldetA(rJ), 1<г<л,
г=1
V(-iy+rar,uetA(rJ\ 1</<п.
г=1
Для малых значений п каждая из этих формул подходит
212
для непосредственного вычисления det^4. Чтобы
минимизировать число операций разложения, следует начинать
со строки или столбца, содержащих наибольшее
количество нулей. Подчеркнем, однако, что эти разложения
являются в общем случае не подходящими для
вычисления и существуют более эффективные вычислительные
процедуры для нахождения det. Некоторые важные
свойства det приведены ниже.
Предложение. Отображение det: Л(п, R)-»-R
удовлетворяет следующим условиям:
а) det / = 1;
б) det A = det Ат для всех А &Ж{п, R);
в) det Я. 4 =kndelA, ?.eR, A<sJ{(n, R);
r) det AB = det A det B;
д) A&GL(n, R) тогда и только тогда, когда det А Ф
ФО. II
Мы не будем давать доказательства этих утверждений.
Предлагаем читателю проверить их для Л(2, R).
Заметим также, что свойство д) характеризует GL(n, R).
Удобно выделить некоторые матрицы с «особыми»
свойствами, которые будут использоваться в дальнейшем.
Если iel(n, R) и А—Ат, то говорят, что А
симметрична; если А — — Ат, то матрица А кососимметрична.
Если
ААТ = АТА~1 (т. е. А~1=АТ),
тогда говорят, что А ортогональна. Множество всех
ортогональных матриц J({n, R) обозначается через О(п).
Через SO(n) обозначим подмножество О(п),
состоящее пз матриц с единичным детерминантом. Элементы
SO(n) называют специальными ортогональными
матрицами.
П р е д л о ж е п и е.
а) О(п) является подгруппой GL(n, R);
б) SO(n) является подгруппой О(п).
Доказательство.
в) Надо показать, что О (п) замкнуто по умножению
и для каждой ЛеО(п) существует обратная матрица
Л-'еО(п). Если А,ВеО(п), то ААт = АтА~1п ВВТ =
= ВТВ = I; следовательно,
{АВ) {АВ)Т = АВ(ВТАТ) = А {ВВТ)АТ = ААТ = /.
213
Аналогично (АВ)ТАВ = /, и, следовательно, АВ^О(п).
Если А<=0(п), то
(4-1)(4-')г = 4г(Лг)г = 4М=/.
Следовательно, А~х ^О(п).
б) Доказательство в этом случае осуществляется noj
добным образом и оставляется в качестве упражнения. /
Завершим этот параграф кратким обсуждением
функций от матриц. Подобно del, это следовало бы
рассматривать в § 4 гл. 5. Однако у нас нет аппарата для
рассмотрения сумм с бесконечным числом слагаемых
в End (У). Результаты в JC{n, R), приведенные ниже,
достаточны для наших целей.
Пусть A <=J[(n, R), тогда матрица A2<=J({n, R)—ато
по определению матрица А А. Аналогично можно
определить Ак для всех fteN, к > 2; положим А0 = /.
Следовательно, если
р: R-*R
есть полиномиальная функция
Р(х) = 2 «t^1. где otiSR и и (= N,
1=0
то определим p{A)<=J[{n, R) как
N
р{А)= 2 м1.
1=0
Такая матрица существует, поскольку J((n, R) —
векторное пространство. Эту идею можно обобщить. Если
/: R -»■ R разлагается в сходящийся ряд
00
/ («) = 2 CiX',
1=0
оо
то имеем смысл выражение 2 а А1< Множество Ж(п, R)
i=0
2 2
может быть идентифицировано с R" . На Rn можно
определить норму, как указано в § 4 гл. 5. Тогда это
индуцирует норму на М{п, R), и в этом случае
бесконечные суммы имеют смысл. В частности, если А^Л(п, R),
то можно показать, что
lim У il
fe=0
всегда существует в М{п, R) и записывается как ехрЛ
214
или же еА. Когда л = 1, ехр является обычной экспопеп-
цпалышн функцией, однако при п > 1 функция ехр ведет
себя совершенно иным образом (см. упражнение 6.3).
Упражнение 6.3.
1. Доказать, что *#(2, R) с обычными операциями
является линейной алгеброй.
2. 1) Определить матрицы линейных преобразований
Т1(х,у) = (2х + 2у,-х-у),
(•)
Т2(х,у) = (2х + у,-х)
пространства R2 в
а) стандартном базнсе R2;
б) базисе В'={(1, 0), (1, 1)}.
2) Вычислить координаты вектора а = (—1, 7) в
базнсе В' и определить вектор Г^а, используя матричное
представление.
3) С помощью понятия детерминанта определить,
какие из преобразований (*) обратимы. Является ли
произведение Т1Т2 обратимым?
3. Пусть
A-V 2
[2 4
Определить, является ли каждая из этих матриц
симметричной, кососнмметрпчной, ортогональной, обратимой.
4. Показать, что у кососнмметрпчной матрицы
элементы, стоящие на диагонали, равны нулю.
5. 1) Доказать, что собственные значения
симметричной (2 X 2)-матрицы всегда действительны.
2) Доказать, что собственные числа ненулевой косо-
симметричной (2Х 2)-матрицы не являются
действительными.
6. Пусть A^JC{n, R). Доказать, что
(4а) Ь = а {АТЪ) для всех a, be Rnf
и использовать этот факт для доказательства того, что
если А симметрична, то собственные вектора,
соответствующие различным собственным значениям, ортогональны,
7. 1) Пусть
Ч-i Я <••>
п р(х) = х? — 4я + 5. Доказать, что р{А) = 0.
215
£ =
COS I
sin (
■ sin
cos
a-*-u; a
2) Использовать («*) для вычисления обратной мат-»
рицы А~1.
8. 1) Пусть
A-V 1
Используя индукцию, доказать, что
Г1 «1
О 1
п М по]
"[о ij
для всех neN, т. е. показать, что еА
выражение для det еА.
2) Пусть
ГО —И
Л-
еА, п выписать
1
О
nJ,eR. Определить матрицу eVA.
9. 1) Пусть А, В&Л(п, R). Какие должны быть
выполнены условия, чтобы выполнялось соотношение
е(Д+в) = елев?
2) Использовать предыдущую формулу для
доказательства того, что еА всегда имеет обратную.
10. Пусть А&Л(п, R). След матрицы А
(обозначается tr Л) определяется по формуле
п
tr А = 2 ^;{.
1=1
Если A &J[(n, R) — матрица с элементами
(Х{ при I = /,
ij = {О при i Ф U
то, используя индукцию, показать, что
п
delA = '[[Xi = k1X2...K,
т. е. доказать, что в данном случав
deteA = etrA.
11. Пусть А^Л(п, R) имеет собственный вектор
х е R", соответствующий собственному значению leR.
Доказать, что х является собственным вектором еЛ,
соответствующим собственному значению е\
12. 1) Доказать, что если A&GL(n, R), то det Л-1 =>
-=(detA)-».
2) Доказать, что если А еО(«), то det А = ± 1.
13. Доказать, что SO (2) является подгруппой 0(2).
ГЛАВА 7
ТЕОРИЯ ГРАФОВ
§ 1. Вводные понятия
Многие отношения на конечных множествах могут
быть изображены в виде рисунков (см. § 3 гл. 2), с
которыми можно работать при помощи соответствующих
матриц. Перед тем как определить конструкции этих
рисунков, необходимо быть уверенными в том, что это не
повлечет 8а собой никаких двусмысленностей. Введем
необходимые понятия.
Пусть V — конечное множество и
Iv -{(у, и): »eW,
Положим
Vl = V*\Iv = {(vvv2): v^v2}
и определим на Vi. отношение эквивалентности
следующим образом:
{vi, v2)~(wu w2), еслп (vi, v2) = (wu w2)
ИЛИ (l>l, 1>2) = (U>2, W\).
Важное свойство отношения ~ сформулировано в
следующем предложении.
Предложение. Отношение ~ является
отношением эквивалентности на VL. /
Доказательство оставляем в качестве упражнения.
Множество эквивалентных классов, определенное
таким образом, обозначим через Fl/~. Каждый класс
эквивалентности содержит ровно два элемента, так как еслп
(vvv2)eaVL, то [{v\, v2)] = {{vu v2), (v2, i>i)h Здесь
[{v\, v2)]— класс эквивалентности, содержащий (v\, v2).
Сейчас мы в состоянии дать строгое определение графа.
Определение. Графом G называется пара G =■
■=(У, Е), где V — непустое конечное множество вершин,
а Е — подмножество FL/~, £,
217
Другими словами, можно сказать, что граф G есть
пара G — (V, Е), где V— непустое конечное множество
вершин, а Е — множество неупорядоченных пар различных
вершин.
Множество Е называют множеством ребер графа, IVI
обозначает число вершин G, \Е\ — число ребер G.
Следующий результат выражает связь между
графами и классами отношений на конечных множествах.
Предложение.
а) Граф G»=(V, E) определяет нерефлексивное
симметричное отношение на V.
б) Нерефлексивное симметричное отношение на
конечном множестве V определяет граф.
Доказательство.
а) Пусть G=(V, E) — граф. Определим отношение
R(E) на V следующим образом: v\R(E)vi тогда и только
тогда, когда [v\, v?\^E. Отношение R(E) нерефлексивно,
так как vR(E)v тогда и только тогда, когда [v, v]^E, но
[v, v]<£E, поскольку (v, v)&V2—.R(E) симметрично для
V[R(E)v2 тогда и только тогда, когда [vi, V2]^E,
однако [i>i, v2] = {(i>i, v2), (v2, Vi)} = [v2, v\]. Следовательно,
v\R{E)v2 тогда и только тогда, когда ViR{E)v\.
б) Если R — нерефлексивное симметричное отношение
на V, то R <= VI.
Нерефлексивность R означает, что (v, v)<£R для
любого us V, поэтому Rcr Vi.
Симметричность R означает, что (v\, V2)^R тогда
и только тогда, когда (v2, V\)^R. Определим Е формулой
E — Rl~, тогда G=(V, E) есть искомый граф.
Графы могут быть представлены матрицами с
булевыми элементами. Многие из свойств графов могут быть
определены из их матричных представлений путем
алгебраических преобразований. Это станет понятным из
последующего изложения.
Определение. Матрица смежности А^М{п, В)
графа G = (V, Е), где I VI = га, определяется следующим
образом:
(1, если [Vi,Vj]^E,
lJ [О в противном случае.
Говорят, что вершины v( и v, являются смежными, если
Ац=\. Ясно, что А(('=0 (£=1,..., п) и А=АТ. Таким
образом, А симметрична, и в обозначениях § 1 гл. 6 А =
-A(R(E))./t
218
Изображение графа G = (V, Е) получается путем
расположения различных точек на R2 для каждой v s F,
причем, если [у, w] e Е, мы проводим линию,
соединяющую вершпны v и w.
А=
0 1 1
1 0 1
1 1 О
Матрица
смежности
ИзаЗражзниз
Рпс. 7.1
Прпмер 1.1. Пусть
1. V = {vi, v2, v2), E = {[vu v2], [v2, Ы [vu v3]}, IVI =
= 3, |£|=3.
Этот граф изображен на рис. 7.1.
2. V={v\, v2, v3, vt, vb},
E={[VI, V2], [VU Vb], [V2, V3], [V2, Vi],
Ьз, V5], [v3, Vi], [Vi, Vb]},
IV!-5, \E\-1.
Этот граф изображен на рис. 7.2.
0 10 0 1
10 110
0 10 11
0 110 1
10 110
А =
Матрица
смежности
Цзо5ратзнив
Рис. 7.2
Графы являются скорее «топологическими», чем
«геометрическими» объектами, т. е. они выражают больше от-
219
ношения между вершинами, чем расположение вершип
и ребер в пространстве. Таким образом, граф может быть
изображен бесконечным количеством разных, но
«эквивалентных» способов. Однако изображения графов могут
вводить в заблуждение. Например, из пересечения двух
ребер на рисунке не следует, что точка пересечения
является вершиной (см. первую диаграмму на рис. 7.2).
Ясно, что нижней (верхней) треугольной части матрицы
смежности достаточно, чтобы определить граф.
о
|\0
А= \
U—-^°J
Эта часть опреЭг.чвгт (г
Читатель уже энаком с понятиями подструктуры и
изоморфизма или же с эквивалентностью алгебраических
систем. Дадим следующие определения.
Определение. Говорят, что граф H = {V\, E\)
является подграфом графа G =(V, E), если V\^V а Е}^Е.
Если V\ = V, то говорят, что Н является остовным
подграфом G. Если V\ — непустое подмножество вершин
графа (V, Е), то подграф (Vu Е\), порожденный Vu
определяют как
[v, w] е Ех о v, w e V\ и [v, w] e= E. I!
Определение.
а) Пусть Gi=(Fb E{) и G2 = {V2, E2) — графы. Будем
говорить, что G\ и Gi эквивалентны, если существует бп-
екция /: V\ ->■ V% такая, что
vR(El)w-*-f(v)R{E2)Hw).
б) Пусть G=(F, Е) — произвольный граф. Определим
отображение
6: F4-NIH0}
следующим образом: величина б (v) равна числу ребер,
содержащих вершину х<= V. Назовем б (у) степенью
вершины V.
Следующее предложение выражает два простых, но
важных факта о свойствах графов.
Предложение.
а) 2в(у)-2|£|.
4BV
220
б) В любом графе число вершин нечетной степени
четно.
Доказательство. Каждое ребро дважды входит
в сумму, откуда и следует утверждение.
в) Пусть V,sF—множество вершин четной
степени, a Vo s V — множество вершин нечетной степени.
Заметим, что
V = V. U Vo п V. П Vo = 0;
следовательно,
S6(i;)- 2 6(«;)+ 2 6 (У),
t-e V vev, teV0
2\Е\ = 2к+ 2 6(w).
(Ясно, что 2 6(у) = 2/с, где /с — некоторое целое.)
Tars тв
ким образом,
2 &(v)~2(\E\-k),
т. е. четно, однако каждое б (у) в левой части нечетно,
поэтому IFol четно. /
Во многих приложениях теории графов о топологии
графа имеется дополнительная информация, относящаяся
к V, пли к Е, или к обоим множествам одновременно.
Чтобы конкретизировать вышесказанное, определим
понятое помеченного графа и дадим несколько примеров.
Определение.
1) Пусть Sv n Ss — множества меток. Пометкой пли
распределением меток графа G~(V, E) называется пара
функции
/: V -*■ Sv — распределение меток вершин,
g: E -*■ SB — распределенпе меток ребер.
2) Пусть граф G=(V, E) помечен с помощью
функций j ъ g, & G\—{V\, Е\) помечен с помощью /i и g\.
Графы G и G\ называются эквивалентно помеченными, если
существует бпекцпя h: V -*■ V\, такая что
а) G и G\ эквивалентны как непомеченные графы;
б) i{v)°=f\{h{v)) Для все* v&V, поэтому
соответствующие вершины имеют одну и ту же пометку;
в) g([v, ">]) = gi([My). h(w)]) для всех v, we V, т, е.
соответствующие ребра имеют одну п ту же пометку,
221
помечены только вершины;
помечены только ребра. II
Часто бывают помеченными только ребра или же
только вершины. Вышесказанное применимо п в этом случае.
Тогда
/: V->SV,
g = const,
/ = const,
g: E-*-SE,
Ребра пли вершины (или те и другие вместе)
помеченного графа несут информацию, которая дополняет илп
заменяет обычную идентификацию с помощью имен.
Пример 1.2,
1. Пусть
V={VU V2, V3, Vi), E = {[VI, V3], [V2, V3], [V3, V*]},
f: V -*■ (города Великобритании), g: E -*■ N,
/(Pi) — Лондон, g{[vu ь>з])=105,
/(va)-Кардифф, g([v2, i*])-198,
/(уз) —Бирмингем, g([v3, y4])=»292,
f(Vi) — Эдинбург.
Этот граф изображен на рис. 7.3.
2. Пусть графы
Э3ин5ург
Бирмингем
G\ =(bl, V2, V3), i[v\, V2],
К vi], К v3]),
G2 = ({wU W2, W3], {[Wi, W2],
[wh w3], [w2, w3]})
помечены так же, как указано на
рис. 7.4; d и G2 являются
эквивалентно помеченными графами
(вершины не помечены). /
Упражнение 7.1.
1. Построить доказательство
первого предложения этого
параграфа.
2. Изобразить графы, представленные следующими
матрицами смежности:
Лондон
а)
■0 110 0-
10 0 0 0
10 0 11
0 0 10 0
0 0 10 0
; с)
-0 1110-
10 0 0 1
10 0 10
10 10 1
0 10 10
222
3. Определить матрицы смежности графов,
представленных па рис. 7.5.
и г '110 Ц ю1 50 ™з
Рис. 7.4
4. Начертить подграф, порожденный вершинами {vz,
V3, Vi, vs) графа на рис. 7.5, а.
Рпс. 7.5
5. Пусть G = (V, Е) — граф и \V\=n. Какое может
быть максимально возможное значение \Е\?
6. Сколько существует различных графов, имеющих
п вершин? Остальные задачи этого параграфа требуют
введения некоторых дополнительных понятий.
Определение.
а) Граф G = (V, E) называется полным, если для
всех v\, Vi^V имеем [v\, i^eZ?, Полный граф с
вершинами обозначается через Кп.
б) Граф G—(V, E) называется двудольным, если
существует разбиение V — {V\, F2} такое, что никакие две
вершины из V[ или из Уг ие являются смежными.
Двудольный граф называется полным, если для любой пары
v\ e V\ и V2e V2 имеем [vi, v^]^E. Если Wi\=m и
IV21 = л, то полный двудольный граф (V, Е)
обозначается через Кт,п. II
223
7. Изобразить граф К$.
8. Построить пример двудольного графа.
9. а) Изобразить граф Кг,г.
б) Сколько ребер имеет граф Ят,п?
§ 2. Маршруты, циклы п связность
Обратим сейчас внимание на понятие маршрута в
графе. Значительная часть теории графов и ее
приложений занимается вопросами существования и свойств
маршрутов. Некоторые важные свойства вытекают из
следующих определений.
Определение.
а) Пусть G = (V, Е) — граф. Маршрутом длины к в
графе G из v в w называется последовательность <i>0.
v\, ..., 1>ь> вершин (необязательно различных) 1><еУ
таких, что vo = v, vh = w, a [i><_i, vt]^E для всех £ =
= 1, ..., А;. Маршрут называется замкнутым, если v0 =
= vk. Маршрут называется цепью, если все его вершины
различны. Замкнутая цепь называется циклом. Цикл
называется простым циклом, если только vo = vk, а
остальные vt различны.
б) Если существует маршрут из v в к>, у, w e V, то
говорят, что w достижима из v.
в) Граф без циклов называется ациклическим.
Циклы и длины циклов были определены для случая
подстановок в § 4 гл. 3. Заметим, что понятие
замкнутости, в сущности, соответствует своему названию.
Определение.
а) Граф G = (V, E) называется связным, если
каждая пара различных вершин может быть соединена
маршрутом.
б) Деревом называется связный ациклический граф.
в) Корневым деревом называется дерево с
выделенной вершиной, называемой корнем.
г) Остовным деревом для G = (V, E) называется
остовный подграф, являющийся деревом.
В § 1 мы отметили, что вычисления с матрицей
смежности обнаруживают важную информацию о природе
графа. Следующие результаты являются примерами
внутренних связей между алгеброй и топологией в теории
графов.
В приведенной ниже теореме и ее следствиях степени
Ах вычисляются в Ж(п, Z), а не в М{п, В).
Следовательно, в Л* могут возникать числа, большие чем 1,
224
Теорема. Пусть А—матрица смежности графа
G—(V, E) и |V| «= п. Тогда (А)(1 есть число маршрутов
длины к от vt к vt.
Доказательство. Будем использовать индукцию
по к. Для к = 1 маршрут длины 1 как раз является
ребром G. Следовательно, результат теоремы при к — 1
вытекает из определения А. Пусть
(Ak-,)lj = a,i, Au = aiS,
тогда
Пусть результат имеет место для к — 1. Тогда, если aiq —
элементы матрицы Л4-1, то at„ — число маршрутов длины
к— 1 от vt к у,; по определению aqi — число маршрутов
длины 1 от у, к V). Следовательно, a,,o,j — число
маршрутов длины к из vt к vlt где у, есть предпоследняя
вершина маршрута.
Отсюда следует, что
п
9=1
есть число маршрутов длины к от vt к у> Это завершает
доказательство. /
Следствие.
а) Маршрут от vt к vt (i^j) в G«=(V, E)
существует тогда и только тогда, когда (г, j)-u элемент матрицы
порядка га X га (п = IVI):
А+А2 + ... + Ап-1
не равен нулю.
б) Если не использовать условие i=£j, то требуемая
матрица имеет вид
А + А2 + .,. + Аг-*+Ап.
Доказательство.
а) Пусть <у(, v\, ..., у,> —маршрут из vt в v, в G.
Если не существует повторяющихся вершин, то (так как
IVI = га) маршрут содержит не более га — 1 ребер, и
необходимое утверждение следует из теоремы.
Пусть существует повторяющаяся вершина. Тогда
маршрут имеет вид
<У;, ...уУт, ...,Pri ...lfj>.
вамкнутый
маршрут
15 Д. Кук, Г. Бейз 225
Если мы удалим все такие вамкнутые маршруты, то ва->
дача сведется к предыдущему случаю, когда вершины
не повторялись. Таким образом, в одну сторону
требуемый результат получен. В обратную сторону
рассуждения очевидны.
б) Если разрешается /-»/, то существование
маршрута из vt в v, влечет то, что существует
последовательность <у(, v\, ..., vf>. Если не существует повторяющихся
вершин (за исключением, возможно, случая vt — Vj),
тогда марщруты состоят из более чем п+1 вершин (не
более п ребер). Следовательно, (i, /)-й элемент матри-
п
цы 2 Л не равен нулю. Тогда при IVI *- п отсюда
следует
А (Д+ (£)) - А (R (£)) V А (1Г- (£)) V • • • V ^ (Дп (£)) -
А(11*(Е)) = 1УА(П(Е))У ... yA(Rn-*(E))~
-V A(Rk{E))j
Напомним, что для произвольного бинарного
отношения R величина Л+ определялась как
д+= и д\
и еслп i?^ FX F прп | VI == п, то отсюда следует (с
учетом § 1 гл. 6), что
A(R+) = A+(R)~ \/ A(Rh).
Аналогично
A(R*)^A*(R)=n\/iA(Rh).
ft=o
В этом параграфе для упрощения обозначений будем
теперь обозначать A(Rk(E)) через А(/?*), Л (Д+(£))
через A(R+), a 4 (/?*(£)) через A(R*). Алгоритм Уорщол-
ла требует An3 операций для определения А (/?+), тогда
как при помощи приведенных выше соотношений
требуется 4/г4 — 1п% операций. Можно получить п другпе,
226
еще более эффективные алгоритмы для больших зпме-
ннй п.
Матрицу C — A(R*) называют матрицей связи,
связности или достижимости графа G = (7, E). Маршрут из
Vi к v, (t^j) существует в G тогда и только тогда, когда
(i, /)-й элемент ив С равен 1. Граф G является связным
тогда и только тогда, когда Cti «= 1 для всех 1 < i, / *S n.
Важные свойства отношения R* могут быть
сформулированы следующим образом.
Предложение. R* — отношение эквивалентности
на V.
Доказательство. Так как по определению R*
является рефлексивным замыканием R, то необходимо
только проверить симметричность R*. Выполнение vR*w
влечет существование маршрута <у, vi, . •., vk, w> err v
к ш в G, т. е.
[v, Vi]e£, [vi, pj]s£, ..., [yA, u]e£.
Следовательно,
[ш, yA] s E, [у», iv,] e £", ..., [v2, Vi] e E, [ou v] e £.
Таким образом,
<u>, yA, vh-\, ..., y2, wi, t>>
есть маршрут из w в v в G, откуда следует wR*v. Й
Отношение /?* определяет важный класс подграфов,
который сейчас будет определен. Будут также даны
некоторые сопутствующие понятия; они будут важны в
дальнейшем, когда будут обсуждаться «пересечения»
графа.
Определение. Пусть (7<: К i < р) — разбиение
графа, определяемое отношением R*. Тогда говорят, что
р —число связности G. Подграфы {V„ E,), порожденные
классами эквивалентности, называют компонентами
связности графа G.
Лесом называется граф, в котором каждая связная
компонента является деревом. Остовный лес для графа
G = (V, E) — это совокупность вершин разъединенных
деревьев Tf{Vh Et) таких, что К— U Vi и Е,<=Е для
всех I. (Разъединенность вершин означает, что Vt(\Vf=*
= 0 при *■/■/.)
Рисупок 7.6 иллюстрирует вышеупомянутые понятия
для графа при р *» 2.
15* 227
Упражнение 7.2.
1. Пусть G = (K, Е), где V — {vi, v2, v%, ь\) и Е
<K v2], [vi, Уз], К vt], [v3, vA]).
»r
»«
Остобный. лес для графа
Рис. 7.в
Используя матрицу смежности G, определить:
а) число маршрутов длины 2 из t>s в V2\
б) число маршрутов длины 3 из v\ в vt\
в) является ли G связным.
2. Изобразить остовные деревья для графов из
упражнения 7.1, 3.
3. Дать матричную характеристику ацикличности в
графе.
§ 3. Пленарные графы
Исторически во многих работах по теории графов
рассматривают специальный класс графов, который может
быть аккуратно представлен рисунком на плоскости R2.
В этом параграфе мы рассмотрим три важных результата,
касающихся таких графов.
3.1. Теоремы Эйлера и Куратовского.
Определенпе.
а) Граф G называется планарным, если он
может быть изображен на плоскости так, что его ребра не
228
пересекаются*). Такой рпсупок называют
картой G.
б) Карта G нааывается связной, если С связей. /
Пример 3.1.
1. G=((tf|, V2, V$, Vt), {[У|, V2], [vU V3], [VU Vt], [v2, Vi],
[v2, vt], [из, vi\}). Изображение и соответствующая карта
G показаны на рис. 7.7; следовательно, С —планарный
граф.
v, v2
Изображение в
Карта G
Рпс. 7.7
2. Графы, изображенные на рис. 7.8, а и Ъ обычно
обозначают через Kt и Кз,з соответственно. Позднее мы
рассмотрим доказательство того факта, что эти графы не
являются планарными. ff
Рис. 7.8
Карта делит R2 на «области»; проиллюстрируем это в
следующем примере.
Пример 3.2. Рассмотрим карту, изображенную на
рис. 7.9. Она делит R2 на четыре области; rit г2 и г3
являются ограниченными областями, а
г«—«неограниченная» область.
В оставшихся параграфах будем обозначать
множество областей данной карты через Я.
*) Такой граф, изображенный на плоскости, называется
плоским графом.— Примеч. ред.
228
Теорема Эйлера. Для произвольной связной
карты
1П-1Е1 + 1Я1-2.
Доказательство. Пусть IVI — 1. Тогда очевидно,
что 1£1«=0 и 1521 = 1. Следовательно, формула
справедлива для \V\ = 1. Рассмотрим два возможных способа
расширения данной карты.
/
L-НоЗов
I ребре
i Новая
Вершина
Рис. 7.9 Рис. 7.10
1) Добавим новую вершину и присоединим ее к су*
шествующей карте.
2) Соединим две существующие вершины.
Покажем, что значение 171 — |£| + 1Я1 инвариантно
относительно обоих способов расширения.
В первом случае добавим новую вершину так, как,
например, это сделано на рис. 7.10. Этот процесс
увеличивает IVI на 1 и \Е\ на 1, однако I&I остается тем же
самым, вследствие чего значение | V| — |£| + 1#1 не
изменяется.
Pnc. 7.11 Рис. 7.12
Во втором случае соединим две вершины, как,
например, на рис. 7,11. Тогда | V| остается тем же самым, \Е\
230
возрастает на 1, a 1521 уменьшается на 1;
следовательно, вначение IVI — 151 + 1521 опять остается
неизменным.
Все карты могут быть получены из случая IVI —1
путем выполнения 1) и (или) 2); если необходимо, то
процедура повторяется. Следовательно, так как I VI —
-151 + 1521=2 при 171 = 1, а вначение |V|-I5I + I52I
остается инвариантным при выполнении 1) и 2), то мы
имеем |V| — 151 + 1521 =2 для всех связных карт.
Очевидно, что каждая область карты ограничена
замкнутым маршрутом. Ниже приведены два простых
результата (один касается ограничивающих замкнутых
маршрутов). Этих результатов оказывается достаточно
для доказательства того, что Кб и Яз,з не являются
пленарными.
Определение. Пусть G —(V, 5) — пленарный
граф. Для карты G определим степень Д, области г как
длину замкнутого маршрута, огранпчивающего г. /
Пример 3.3. Для карты, изображенной на рис. 7.12,
имеем <tfi, Уз, *>4, Уз, t>2, t>i> — граничный замкнутый
маршрут для ru a <v\, Уз, i>2, "i> — граничный
замкнутый маршрут для гг. Следовательно, Аг< = 5, ДР| — 3. /
Предложение. Пусть G = (V, Е) — планарный
граф. Тогда
а) 2 Дг = 21 Е | для любой карты G;
б) 7см IVI >3, то 151 < 31VI -6.
Доказательство оставляем читателю в качестве
упражнения.
Предложение. Графы Къ и Кз,з не являются пла*
парными.
Доказательство.
Докажем, что Кь не является пленарным. Если К$ —
планарный граф, то из предыдущего результата следует,
что 151*£31 VI -6. Тогда для графа Кь с 151 — 10 и
IVI = 5 имеем 10 < 15 — 6 = 9, что неверно. Таким
образом, предположение, что граф Кь планарный, певерно.
Докажем теперь, что Яз,з ие является пленарным.
Предполагая противное, имеем 2 Др —2|5|. Однако в
гея
Кз.з никакие три врршпны не связаны одна с другой;
следовательно, Дг>4 для всех re52. Из формулы
Эйлера 1521 =2+151 - IVI =2 + 9-6 = 5; следовательно,
2 Дг>5*4= 20. Таким образом, 2|5|>20, откуда
231
\E\ > 10. Поскольку последнее неравенство неверно, то
граф Кз.з не является планарным. II
Графы Къ и Яз.з интересны тем, что они являются
существенно «единственными» неиланарными графами.
Все другие пепланарные графы имеют подграфы
«подобные» или Кь, или Кз.з. Перед тем как уточнить наше
утверждение, необходимо ввести два определения.
Определение.
а) Пусть G~{V, E)— граф. Элементарное стягивание
G образуется путем удаления ребра [vt, vj\ из Е, замены
каждого v( и vt в Е новым символом w, удаления vt и и,
па V и добавления w к V. Графически элементарное
стягивание G получают путем слияния двух смежных
вершин после удаления ребра между ними и обозначения
«составной» вершины через w.
б) Граф G называется стягиваемым к графу G', если
G' может быть получен пз G путем последовательности
элементарных стягиваний.
Прпмер 3.4. На рис. 7.13 изображены графы G п
G', при этом G стягивается к G', II
Ф О
Рпс. 7.13
Теорема (Куратовский). Граф является планарным
тогда и только тогда, когда он не содержит подграфов,
стягиваемых к Кь или Кз.з-
Доказательство этой теоремы лежит за пределами
целей книги и поэтому опущено. /
Пз теоремы Куратовского заключаем, что К$ п К33
являются существенно единственными не пленарными
графами. Алгоритмы, основанные на этой теореме, были
придуманы для того, чтобы определить, является ли
данный граф планарным или нет.
3.2. Раскраска карт в графов.
Определение.
а) Раскраской G>=(V, E) называется задание цвета
вершинам G так, что если [v, w]*=E, to v a w имеют
различные цвета,
232
б) Хроматическим числом x(G) графа G называется
минимальное число цветов, требующееся для
раскраски G. II
Теорема. x(G)^4 для всех планарных графов G. /
Эта теорема была впервые «доказана» в 1976 г.
проверкой на компьютере всех возможных случаев4').
Определение. Пусть М — карта. Определим
карту М', называемую двойственной к М, следующим обра-
80м: выберем внутреннюю точку в каждой области М;
если две области имеют общее ребро, то проведем дугу,
связывающую выбранные внутренние точки в этих
областях. Этот процесс определяет М'. Й
Пример 3.5. На рис. 7.14 изображена карта М
вместе с двойственной картой М'. II
М'
Рис. 7.14
Раскраска М' соответствует раскраске областей М
так, что области, имеющие общее ребро, имеют разные
цвета. Следовательно, мы можем переформулировать
теорему о раскрашивании в четыре цвета следующим
образом.
Теорема. Если области карты М необходимо
раскрасить таким образом, чтобы смежные области имели
различные цвета, то для этого требуется не более
четырех цветов. II
Упражнение 7.3.
1. Пусть T-=(V, E)— дерево с |К| —л. Доказать, что
1Я1-П-1.
2. Проверить справедливость формулы Эйлера для
графов из упражнения 7.1,1.
*) До сих пор нет уверенности в том, что эта теорема на
самом деле доказана.— Примеч. ред.
233
3. Пусть G = (V, Е) — пленарный граф и Л,
обозначает степень области г в карте G. Доказать, что
2 Дг-2|£|.
4. Пусть G = (V\ E) — связный пленарный граф п
IVI >3. Доказать, что
|якзт-в.
5. Привести примеры, показывающие, что
приведенное в задаче 4 этого упражнения неравенство неверно
при | VI < 3.
6. Определить граф G, для которого х(С)"=*4.
7. Пусть Г —дерево. Что является значением %(Т)?
§ 4. Структуры данных для представления графа
Матрица смежности предполагает очевидный метод
представления графа в машине — на языке высокого
уровня мы можем использовать массив, чтобы хранить
элементы матрицы. Симметричность и пулевая диагональ
сокращают необходимый объем памяти; для графа с п
вершинами требуется -тр га (га — 1) ячеек. Обычно многие
элементы матрицы равны нулю и поэтому большая часть
используемой памяти является лишней, однако, несмотря
на это, иногда матрица смежности является наиболее
удобным представлением графа. Однако для многих задач
предпочтительным является представление в виде списка
смежности. В этом случае мы свяжем список связей L,
с каждой вершиной v e V\ L„ является списком вершин,
смежных с v.
40IHZCHIEH
Рис. 7. IS
Пример 4.1. На рис. 7.15 даны граф и списки,
которые могут быть использованы для его представления, llj
234
Один из путей применения этих списков — это
использование массивов
E(j, к), 1<к<2, и P(i), Ki<n,
где /?(/, 1) хранит номера вершин, Е(), 2) хранит связь,
а Р(0~~ точки начала списка Ltti в 5.
Пример 4.2. Для графа из примера 4.1 мы можем
иметь ситуацию, изображенную на табл. 7.1.
Таблица 7.1
1
1
2
3
4
5
6
7
8
9
10
11
12
E«i 1)
1
2
3
3
4
1
4
Е<1, 2)
6
9
10
13
0
19
0
«О
5
2
11
35
i
13
•
•
*
19
.
,
,
35
36
37
ти о
4
.
*
,
2
,
t
t
1
2
3
W, 2)
0
щ.
,
,
12
t
Щ
,
36
37
0
Р(0
Если i»< не имеет смежных вершин, то установим
P(i)**0, в противном случае E(P(i), 1) является
смежной с Vi и [i, E(P(i), 1)] является ребром графа.
Аналогично, если E(P(i), 2)*0, тогда E(E(P(i), 2), 1)
является смежной с Vt. Фрагмент программы, которая дает
список смежных вершин к каждой вершине, выглядит
следующим образом:
f or 1 *£ i «S n do
begin
write 'вершины смежные с вершиной' , I
k*-P(i)
while к ч*0 do
begin
write E (k, 1)
k*-E(k, 2)
end
end
Аналогичная программа может быть использована для
создания матрицы смежности М графа из представления
233
с помощью сппска связей Е, Р следующим образом:
for 1 < i, j < п do M (i, j) - О
for Ki<n do
begin
k^P(i)
while к Ф 0 do
begin
M(i,E(k,i))*-l
k*-E(k, 2)
end
end
Чтобы создать структуры Е и Р из М, можно
использовать следующую программу:
for t< i< n do P(i)*-i
for Kj<n do E(i, /)*-0
for К i<n do
begin
ifree *- i
for К / < n do
begin
if M(t, /)-l then do
begin
E (ifree, 1)*-/
if / ¥• n do
begin
E (ifree, 2) — ifree + n
ifree ■*- ifree + n
end
end
end
end
Возможно другое представление графов с помощью
сппска связей. Выбор представления во многом зависит
от используемых алгоритмов.
Представление L„ вершпн, смежных с у, в виде
сппска связей определяет «порядок» ребер, выходящих из v.
Рассмотрим это последнее утверждение и списки связей,
данные в начале этого параграфа, по отношению к
графу. Ребра упорядочены, как показано на рис. 7.16. Граф
с упорядочиванием ребер такого сорта называют
упорядоченным графом. Дадим формальное определение,
236
Определение. Множество V — {у,, ..., у„) вершин
вместе с множеством {LCi, L„a, ..., Ltn\ упорядоченных
списков упорядоченных пар
вершин называют
упорядоченным графом.
Необходимо наложить
некоторые условия на
списки Lv, чтобы рассматривав-
мые структуры были
графами. Эти условия следующие:
а) (у, v)&L, для любого
уеУ;
б) (w, u)&Lv+-(u, w)s
е U II
Граф, изображенный на
рпс. 7.16, может быть
записан в терминах упорядоченного графа следующим
образом:
(bl, V2, УЗ, У4>, {((l>l, V2), (Vi, Уз), (Vl, Vt)),
[(V2, Vl), (v2, Уз), {V2, VA)), ((Уз, Vl), (У3, V2), (Уз, Vt)),
((У4, Vl), (У4, V2), (Vi, Уз)))).
Упорядоченный граф определяет единственный
неупорядоченный граф. Обратное утверждение неверно,
поскольку в общем случае возможно много способов
упорядочения графа. Некоторые из этих упорядочений
рассматриваются в соответствии со следующим
определением.
Определение. Два упорядоченных графа G| и G2
называются эквивалентными, если существует биекцпя
/: Vi -*■ V2 между множествами вершин и биекция
сохраняет списковую структуру. Другими словами, если
£- = ((у, Wi),
есть список ребер G\, то
К «>»))'
(/("), /(»»)))
есть список ребер G2. II
Пример 4.3. Графы, изображенные на рпс. 7.17,
эквивалентны, однако они не являются эквивалентными
как упорядоченные графы. II
237
Псе понятия § 2 (маршруты, замкнутые маршруты,
связность, дерево) переносятся очевидным образом на
упорядоченные графы.
1у\г 2/\i
2 v3 w2Z 2 ws
Ри . 7.1?
Упражнение 7.4.
1. Записать алгоритмы данного параграфа на каком-
либо языке программирования и проверить их работу на
некоторых наборах данных.
§ 5. Обход графа
5.1. Введение. Во многих задачах, включающих
графы, требуется обойти граф, т. е. чтобы каждая вершина
графа «посещалась» или «обрабатывалась» только один
раз. Таким образом, обход графа может быть
представлен последовательностью вершин, соответствующих
порядку, в котором они обрабатываются.
Если G—({vi, v2, ..., vKi, Е) и о: N.-+-N, —
перестановка, то последовательность
определяет обход G. Ток как существует п\ различных
перестановок N„, то должно быть п\ различных способов
обхода графа с п вершинами. Другими словами,
существует п! способов полного упорядочения вершин.
Вершину р„(1) называют начальпой вершиной обхода,
определяемого подстановкой о.
Мы опишем здесь только два метода обхода графов.
Они могут быть полезны в приложениях. Оба метода
применяются к упорядоченным графам и позволяют
определить перестановку (или полное упорядочение
вершин).
5.2. Обход графа по глубине. Пусть G ■= ((»„ ..., vn),
|£,у .. .,£„п))—упорядочепный граф. Выберем
некоторую начальную вершину v. (1 <*«£ п) и положим о(1) =
•=*■ s. Далее вершины последовательности t определяются
233
следующим образом: у0(2) — первая вершпна (смежная с
y0(i,) из списка смежности ^„„ц). 1>о<з>— первая
вершпна из £»0(2)i которой нет еще в t, и т. д., у0(к) —первая
вершина из LVg{h_l), которой нет еще в t (к>4). При
этом, если встречается вершина и такая, что все
вершины из Lu уже содержатся в t, то процесс повторяется из
вершины w&t, где w — последняя вершпна в t такая,
что Lv содержит вершины, не входящие в t. Обход
заканчивается, когда никакая вершина из V\t не может
быть достигнута из вершин последовательности t.
Если граф G связный, то описанный выше процесс
определяет обход G, в противном случае — только одну
из компонент графа G (содержащую i><,<t)). Если граф G
не является связным, то для получения полного обхода G
необходимо начинать процесс в каждой связной
компоненте графа G. С помощью этого метода можно
определить число связных компонент графа. Для каждого
выбора начальной вершины в связном графе получеп
единственный обход, так что возможны все п обходов по
глубине упорядоченного связного графа. Если G имеет
связные компоненты V( (Kf<p), где |7,|=-п(, то
определены пх • «2 * • • • * пр обходов по глубине.
С помощью следующей рекурсивной процедуры
можно найти обход по глубине. Здесь t— массив длины
л = IVI, все значения которого вначале равны 0; t[v,)
устанавливается равным 1 для обозначения того, что
вершина v, обработана.
procedure dft(v)
process vertex v
for each wei, do if *(u>)' = 0 then dft(w)
end proc
Пример 5.1. Рассмотрим упорядоченный граф,
изображенный на рис. 7.18. Первый обход по глубине из
начальной вершины V\ определяется следующим образом:
VU V2, Va, Vi, Vb, V6, Уз, V7. II
5.3. Обход по ширине. Пусть G = ({i^, ..., vn}, {LVi, ...
..., £„„}) — упорядоченный граф. Выберем начальную
вершину v, и предположим, что LVf= ((vtl w1)l (v,t wt)t ...
...•(VliWft))-
Первые к + 1 члепов t определяются следующим
образом: l>„tl) = l>„ Vel2) = Wl, ..., IV+t) — Ы>А| » 1>»с»+1+<>
239
является i-ft вершиной из Lv , не входящей в t. Это
исчерпывает Lu,i, и процесс начинается над Lw$ и т.д.
Обход прекращается, когда все вершины, достижимые
Рис. 7.18
из р0(1), содержатся в /. Замечания из п. 5.2 о
единственности, связности и числе возможных обходов также
применимы к этому обходу. Обход графа по ширине можно
найти с помощью следующей процедуры: t играет ту же
роль, что и прежде, a q — оставшаяся часть в
процедурах сложения н удаления (addg в delete q
соответственно)
procedure bft(v)
t(v)~l
process vertex v
initialize q with v
while q ¥• 0 do
begin
delete q(v, q)
for w e L, do
begin
if <(u>)-0 then do
begin
add q(w, q)
t(w)~l
process vertex w
end
end
end
endproc
Пример 5.2. Первый обход по ширине графа в
примере 5.1 с начальной вершины v\ вадается следующим
240
образом!
vi, v2, У3, vt, v5, v6, vh va. Я
5.4. Остовные леса обходов по глубине и ширине.
Пусть G=-(ivu ..., у„), Е) — граф, а *«- v„lU, ..., У,,», —
обход G. Тогда t определяет подмножество Е' из Е
следующим образом: [у, и;]е£' тогда и только тогда, когда
[у, ш] используется при построении обхода. Так как для
упорядоченных графов обход t определяет аналогичным
путем подсписок L[ каждого списка £„ то Ll получают
из Lv удалением всех пар (у, w), которые не
использованы в сечении.
Предложение. Пусть G «=■ ({у^ .. .,у„}, [LVi, ...
""^B?J) — Упорядоченный связный граф, а t — обход по
глубине или ширине графа G. Тогда
Gt-({vu...ivn},{Llil...1LtVn))
есть упорядоченное остовное дерево для G.
Доказательство. Так как G — связный граф, то
подграф G' также связен и является остовным для G.
Если G' содержит замкнутый маршрут, тогда некоторые
вершины появляются более одного раза в t, но так как
t — обход, то это невозможно, и G' является ацикличным
графом. Следовательно, G' — дерево. /
Следствие. Каждый связный граф имеет остовное
дерево. II
Рис. 7.19
Пример 5.3. Для графа из примера 5.1 остовными
деревьями, определенными первичными обходами по
глубине и ширине с начальной вершиной v%, будут деревья,
изображенные соответственно на рис. 7.19, а и 7.19, Ь.
16 д. Кук, Г. Бейэ 2^1
Для графов, не являющихся связпымп, полные
обходы по глубине нлп ширине определяют остокный лес.
Упражнение 7.5.
1. Пусть G = ({у1( ..., иъ), Щ, ..., L„J) —
упорядоченный граф, определяемый следующими списками:
L\ - (("i> v2)), LVi = ((у2, v6), (v2, vt), (v2, v3), {v2, y,)),
L*a — ((«>«. "i))i L\ — (("4. уг)> 0>4» "e))i L"6 = ((y6i "4)1
Определить:
а) обход по глубине с начальной вершиной V2',
б) обход по ширине с начальной вершиной vA.
2. Нарисовать остовные деревья, соответствующие
обходам упражнения 7.5.1.
3. Пусть матрица смежности графа С имеет блочную
структуру
_0 Ар_
где каждое At является квадратной матрицей с булевыми
влементами, а все остальные элементы равны нулю. Что
можно сказать о свойствах G?
4. Написать процедуры на каком-нибудь языке
программирования для определения обходов по глубине и
ширине.
§ 6. Ориентированные графы
6.1. Введение. Во многих приложениях теории графов
требуется, чтобы ребра графа имели направление.
Например, поток данных проходит через программу.
Определение. Ориентированный граф (орграф)
G есть пара G=-(V, E), где V — конечное множество
вершин, а Е — произвольное подмножество V X V. /
Предложение.
а) Ориентированный граф G=(V, E) определяет
отношение на V.
б) Пусть V —конечное множество. Тогда отношение
на V определяет ориентированный граф, у которого
множество вершин — V,
242
Доказательство.
а) Как и в § 1, определим Я(Е) следующим образом:
vR(E)w тогда и только тогда, когда (v, ш)е£. Очевидно,
что Л {Е)— отношение.
б) Если R — отношение на V, то ориентированный
граф С-"(У, Е), определяемый R, имеет множество
ребер Е, где (у, ш)е£, тогда и только тогда, когда vRw. II
Направление ребра обозначают порядком в V XV;
например, если (v, w)^E, то говорят, что ребро выходит
из у и входит в ш. На диаграмме в этом случае для
указания направления испольауют стрелки.
Пример 6.1. Пусть V — {уь 1>2, v3), a £i=»{(vi, va),
\vi, Vt), (v3, vi)). Тогда матрица смежности и
изображение орграфа G\ «=*(V, E\) будут такими, как на рис. 7.20.
Патрица
смежности
v2 v3
Изображение
Рис. 7.20
Аналогично на рис. 7.21 приведена матрица смежпости и
изображение графа Gi*=*(V, E2), где
E2-{{vlt i>,), (vu v2), {vit v3), (v3, i>3), (v3, i>,)}. t
Поскольку реберное отношение для орграфа не обя-
вательно симметрично или нерефлексивно, то, вообще
1
0
1
_
1
0
0
1
1
0
Матрица
смежности
Изображение
Рис. 7.21
говоря, не обязательно, чтобы А ■= АТ ИЛП Ац— 0. Ребра
типа (v, v) называют петлей. Степень b(v) вершины
рву может быть записана в виде суммы 6(i>) = 6~(f) +
4 6+(у), где 6~(v) — число ребер, входящих в v,
a 6+(i>l— число ребер, выходящих из v. Множества
lb* 243
lw: (w, v)^E) и {w: {v, w)&E} называют
соответственно входящим узлом и выходящим узлом вершины
v s V. Понятия эквивалентности и пометки обобщаются
на орграфы естественным образом.
6.2. Маршруты п связность в орграфах.
Определение. Маршрутом длины к пз v в w в
орграфе G*=(V, E) называется последовательность ребер
вида
(у, Wl), (Ц7Ь Ц?2), (И>2, И>з), ..., ("\-2, И'*-|), ("\-b W),
т. е. вторая вершина каждого ребра совпадает с первой
вершиной следующего ребра. II
Часто удобно представлять маршрут
последовательностью вершин
V, W\, W2, ..., Wk-2, Wk-\, W,
которые его определяют. Если v — w, то маршрут
называют замкнутым маршрутом или циклом. Орграф без
циклов называется ацикличным.
Теоремы § 2 также справедливы с аналогичными
доказательствами для орграфов. Определим связность пли
матрицу достижимости тем же самым способом.
Заметим, однако, что для орграфов отношение R* не является
отношением эквивалентности на V и, следовательно, не
осуществляет разбиения V.
Пусть Ж) обозначает множество всех орграфов, a SF —
множество всех графов. Мы можем определить
отображение #": £D -*■ *В следующим образом.
Определение. Пусть G — (V, Е)&Ф. Тогда
множество вершин F(G)&& совпадает с V, а множество
ребер F(G) определяется применением следующих
операций на Е:
а) удаляются все петли из Е;
б) (у, w) заменяются па [у, w] для всех (у, w)eE.
Тогда F(G) является графом, связанным с
орграфом G. II
Для орграфов понятие связности является более
содержательным, чем для графов, и имеет отношение к
проблеме обхода. Сейчас мы определим три важных типа
связности орграфа.
Определение. Если G = (V, Е)~ орграф, то будем
говорить, что:
а) G слабо связный, если граф F(G) связный;
б) G односторонне связный, если для каждой пары
различных вершин v, w е V существует маршрут из у в
w или обратно,
244
в) G сильно связный, если для каждой пары
различных вершин D, icsV существует маршрут из у в и; и
обратно. II
Очевидно, что G сильно связный =>G односторонне
связный =*-G слабо связный.
Пример 6.2. Из рис. 7.22 мы видим, что орграф:
а) только слабо связный (рис. 7.22,а);
б) односторонне связный, но не сильно связный
(рис. 7.22,6);
в) сильно связный (рис. 7.22,с).
Рис. 7.22
В терминах связности матрицы C = A(R*) орграф G
сильно связный тогда и только тогда, когда Сц — 1 для
всех 1 < t, j < n; G односторонне связный тогда и
только тогда, когда Сц V Сц = 1 для всех 1 < i, j < п.
Пример 6.3. Рассмотрим орграф, представленный
диаграммой на рис. 7.23. Для этого орграфа
Л(Л) =
А (Я3)
0
0
1
0
1
1
1
1
1
0
1
1
1
0
0
1
1
1
1
1
0
1
0
1
0
1
1
1
1
1
1
0
0
0
0
0
1
1
i
0
о-
0
1
1
0_
1-
1
1
0
1_
A (R2)
, A(W)
0
1
1
1
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
1
1
1
1
1
0
0
1
0
1
1
1
1
1
0
1-
1
0
1
0_
1~
1
1
i
1_
поэтому для
С - V A (Rk) = / V 4(Д) V A(R:) V A(R3) V A{№)
ft=0
245
имеем C,j = 1 для всех 1 < i, / < 5 и, следовательно, граф
является сильно связным. Для более эффективного
вычисления С можно использовать алгоритм Уоршолла. /
Если G = (V, E)— орграф, то можно разбить V путем
определения отношения эквивалентности р следующим
и,*
Рпс. 7.23
Рис. 7.24
образом: vpw, если v *■= w или существуют маршруты из
v в w и обратно. Если 07<: К К pi — разбиение V и
{Ей 1<<<р, a Ef=-{ViXVi){)E} являются
соответствующими множествами ребер, то подграфы Gi~{Vi, E,)
(l^Kp) называются сильно свяаными
компонентами G.
Очевидно, что р s R* и А (р) может быть определено
из A(R*) как 4(р)ц-4(Д*)чЛ4(Д*)д; граф G
сильно связный тогда и только тогда, когда G имеет
только одну сильно связную компоненту, т. е. если р = 1.
Пример 6.4. Для орграфа на рис. 7.24 имеем
4(Я*).
1 1 1 1т
0 110
0 0 10
0 0 11
; А(р)
rl О О О-
0 10 0
0 0 10
0 0 0 1
Таким образом, б(-=({У(}, 0) (1<<<4) являются
сильно свяаными компонентами графа. Я
Пусть G-»(V, E) — ациклический орграф. Вершину
реУ называют листом, если б+(у) —0. Если (у, w)&E,
то v является непосредственным предком w, a w —
непосредственным потомком v. Если существует маршрут
из v в w, то говорят, что v является предком w, a w —
потомком v.
Эти понятия не имеют смысла для орграфов,
имеющих циклы, так как для таких графов вершина может
исходить сама из себя.
Пример 6.5. Для ациклического орграфа,
изображенного на рис, 7,25, из вершин V2, vt и v% ребра не
246
выходят, V\ является предком ys, Vs является прямым
ПОТОМКОМ V3 И Т. Д.
Существует тесная связь мен;ду ациклическими
орграфами и частично упорядоченными отношениями. В
частности, имеет место следующий результат,
доказательство которого мы оставляем в качестве упражнения.
Заметим, что для сокращения некоторых доказательств,
Рис. 7.25
приведенных ниже, частичные порядки будут основаны
скорее на отношении <, чем на отношении <, и,
следовательно, являются транзитивными и нерефлексивными.
Предложение.
а) Пусть отношение < является частичным
отношением порядка на конечном множестве V. Тогда, если
Е = {(р, w)\ v<w),
то пара G=*(V, E) является ациклическим графом.
б) Пусть G — (V, E) — ациклический орграф и
отношение < определяется следующим образом: v<w, если
v является предком w. Тогда отношение < является
частичным отношением порядка на V. I
В терминах орграфов можно дать точное определение
структурам данных, известным как ориентированное
дерево.
Ориентированное дерево Т «= (7, Е) — это ациклический
орграф, в котором одна вершина v, е V не имеет предков,
а каждая другая вершина имеет только одного
непосредственного предка; у, называется корнем дерева.
Бинарное дерево — это ориентированное дерево, в котором
каждая вершина имеет не более двух непосредственных
потомков, т. е. 6+(у)^2 для всех »sV. Говорят, что
бинарное дерево является полным, если каждая вершина,
не являющаяся листом, имеет ровно два
непосредственных потомка.
247
П р е д л о ж е п п е. Следующие утверждения
эквивалентны по отношению к орграфу G=(V, Е);
а) G является деревом.
б) Граф F(G) связный, и существует вершина vr,
которая не имеет предков, а все другие вершины имеют
только по одному непосредственному предку.
в) G имеет вершину vr, которая соединяется с любой
другой вершиной единственным маршрутом.
г) G имеет вершину v„ которая не имеет предков; все
другие вершины имеют только одного непосредственного
предка; существует маршрут к каждой вершине из у,.
Доказательство оставляем в качестве упражнения. II
6.3. Упорядоченные орграфы н обходы. Списки
смежности являются альтернативной по отношению к матрице
смежпости формой представления орграфов. Заданное
списком смежности представление определяет порядок
ребер, выходящих из каждой вершины.
Определение. Упорядоченным орграфом
называется пара G*=*(V, E), где V — конечное множество
вершин, а Е — множество упорядоченных списков
ориентированных ребер. Элементы Е имеют вид
L„~{(v, ц>,) (у, wk)),
где у, u>t e V. II
Пример 6.6. Упорядоченный орграф
G = (bi, V2, УЗ, У4>, Ц(У|, V2), (У|, Vt), (УЬ У,)),
(К V*), К Уз))})
может быть представлен списками смежности
1'4 ЕПЫ1ЕЫЮ"
Lv, QTJ .РГН''
п может быть изображен диаграммой (рис. 7.26).
\3. ^2
243
Упорядоченный орграф G определяет единственный
неупорядоченный орграф; мы только заменяем каждый
список ((и, w\), ..., (v, ш»)) множеством {(и, и>\), ...
,.., (v, и>ь)}. Орграф, определенный таким образом,
называют орграфом, подчиненным G. Упорядоченный
ациклический орграф является упорядоченным графом,
чьим подчиненным орграфом является ациклический
орграф. Упорядоченное ориентированное дерево является
упорядоченным орграфом, чей подчиненный орграф
является ориентированным деревом.
Пример 6.7.
T = (hu ..., v6), {((и,, v2), (vu vt)),
((уз, r«), ("3, vs), (i>3, vt))})
является упорядоченным орпентпрованным деревом, где
v\ — корень. Оно может быть
изображено, как показало на
рис. 7.27. //
Упорядоченпые
ориентированные деревья будем
изображать спуском вершин
слева направо (рпс. 7.27).
Если принять такое
соглашение, то номера ребер
можно опускать. рпс ; 27
Определение.
\) Пусть Sv и SB — множества. Пометкой
упорядоченного орграфа G = (V, E) называется пара
отображений (/, g), где
/: V-*-Sy —пометка вершин,
g: Е-+ [J Se —пометка ребер.
Отображение g имеет вид
g{{{v, u-,), ..., (v, wk))) - (alt ..., a„) <= SE.
2) Говорят, что два помечепных графа G\*=(VU E\)
п Сг = (Т72, Ег) с функциями пометок (/i, g\) n (/j, g2)
соответственно эквивалентны, если существует бпекцпя
h: V\ — V2 такая, что
а) ((у. "'О» •••! ("■ wk))&E\ тогда п только тогда,
249
когда
((h(v), Л(и>,)), .... (h(v), h(wh)))&E3
(эквивалентны как упорядочепные графы);
б) fi(v)^f2(h(v)) для всех цеУ (метки вершин
совпадают) ;
в) для всех ((у, w\), (у, шг), ..., (у, и>»))е£, имеем
gi(((v, Wi), ..., (у, ю»))) —
= g2(((h(v),h(Wi)) (h(v),k(wk))))
(метки ребер совпадают). /
Следуя § 5, определим обход орграфа как
перестановку или полное упорядочивание вершин. Для
упорядоченных орграфов все делается точно так же. Для
упорядоченных ориентированных деревьев часто полезны другие
обходы. Некоторые из них будут описаны ниже.
Определение. Пусть T-=({v\, ..., у„>, Е) —
упорядоченное ориентированное дерево и Д,=*((у, w{), ...
..., (у, ц.\))е£. Определим отношение < на множестве
iw\, ..., wh) следующим образом: w{ < w} тогда п только
тогда, когда i<j. Определим таким образом отношение
< для каждого списка Е. II
Предложение. Отношение < является отношение
ем частичного порядка на V.
Доказательство.
Из соотношения v<v следует список вида
((?. u>i) (<7, v) (?, у), ..., (?, wk)),
который невозможен, так как в дереве не существует
циклов. Следовательно, v*£v для любого »е7,
Из соотношении v<w и w < и следует, что
существуют х, y&V такие, что
£* = ((*, wi) (х, у) (х, w), ..., (х, wk)),
Ly=°((y, mi) (у, w) (у, и) (у, ы,)).
Если хФу, то б~(ы>) = 2, что невозможно, так как Г —
дерево. Следовательно, х = у и
I» — ((*, wi), ..., (х, у) (х, w), ...
• •-. (х, ") (х, wk)),
-. е. у < и. Поэтому отношение < есть частично
упорядоченное отношение на V. II
Отношение < сравнивает только вершины,
выходящие из одной вершины,
250
Пример 6.8. Для упорядоченного орпентпроваппого
дерева на рис. 7.28 имеем
<-{(t>2, Уз), (l>4, V6), (у4, Уб), (У5, Vu)} ИЛИ
V2 < УЗ, У4 < У5, У4 < Ув И У5 < Уб- /
Замечание. Обозначим множество всех спусков из
вершины psV через Г+(у); аналогично через Г-(у)
обозначим множество входов в у.
Определение.
Отношение < навивают трансверсалъ-
ным порядком вершин
упорядоченного направленного
дерева Т-(V, Е). II
Наша цель в оставшейся
части главы — вывести
различные полезные методы обхода
для дерева с использованием
симметрии путей расширения
трансверсального порядка.
Перед точным определением
обходов необходимы два результата. Пусть < определяет
отношение <, на V следующим образом: если w( < ws,
то щ < ,w'j для всех w\ e Г+ {иц) (J {щ} и для всех it-;S
еГ+К) и {">;}.
Предложение.
1) <s<.;
2) <, — частично упорядоченное отношение на V.
Доказательство.
1) Утверждение очевидно.
2) а) Из у <,у следует, что или v < v, или
существуют I, ysV такие, что х<у и t>e Г+(z)U Ы и ys
е Г+ (у) U {у}. Однако v < v, так как < — отношение
частичного порядка. Аналогично из х < у следует х + у;
следовательно, iisr+(i)UW и v&T+(y)U{y). Однако это
означает, что 6~(t>)«»2 или 6~(u>)e2 для некоторого
ц>еГ~(у). Это невозможно, потому что Г"=(Г, Е) —
дерево. Таким образом, v<,v для всех 1)еУ,
б) v<.w означает, что v<w или что существуют
I, yeV такие, что х<у и psr+(i)UW и шеГ+(у)11
U {у}; и><,ц означает, что w<u или что существуют
г, ssy такие, что r<s и »еГ+(г)и(г} п «еГ+(«)11
U{s>; ii>sr+(r)UW и w s Г+ (у) U {г/} дают, что или
гбГ+(у),плиуеГ+(г).
Следовательно, дерево имеет одну из форм,
изображенных на рис. 7.29. Если геГ+(у),то s^T*(y) a
Рис. 7.28
251
х<у дает x<.s. Однако иеГ+($), следовательно,
j <, и, и так как v^T+(x), то, следовательно, v<, и.
Еслп уеГ+(г)| 'о 1еГ+(г) и r<s дает s<,s. Однако
Рпс. 7.29
цеГ+(в)1)Ш; следовательно, х<, ц, a vsr+(i) дает
v <.к.
Следовательно, <, является отношением частичного
порядка на V. II
Иногда v<,w читают как «у находится слева от и>».
Предложение. Пусть T = (V, Е) —упорядоченное
ориентированное дерево. Тогда для у(, ^еУ (*■?*/) или
Vt <» V), или Vj <, vt, или же vt и vt находятся на маршруте.
Доказательство. Пусть vt, у,е V и vtФ vt. Тогда
существует вершина у«, такая, что у(е Г+(у«)и {у.} и VjS
е r+(ye)U {ye}. Если у< — у„ или yj = i>a, то V( и у,
находятся на маршруте; в противном случае рассмотрим
прямые спуски Ш],..., wk из у«. Тогда или
1><еГ+(и>,) и у,еГ+(шт) для w,¥'wm,
илц
у(, у,е=Г+(ш»).
В первом случае имеем пли у< <, v,, или у, <, у( в
зависимости от того, wt < u>m пли wm < w,. Во втором
случае повторяем процесс из ы\, пока пе будут выполнены
условия первого случая, пли получаем у( = у„ или v} = у„;
в этом случае у< и у4 находятся па маршруте. U
252
Много полезных обходов дерева определяют
посредством расширения отношения <, до полного
упорядочивания V. Используя приведенцый выше результат, надо
только расширить <„ чтобы сравнивать вершины,
которые находятся на маршруте, для определения полного
порядка на V, для которого <е является подпорядком.
Определение. Пусть T*=(V, E) — упорядоченное
направленное дерево. Определим полную упорядоченность
<i на V следующим образом: если v} спускается из iu,
то t>i<iiv, в противном случае vt<\Vj, если vt<, Vj.
Отношение <i называют предпорядком на V. II
Очевидно, что <» s <,.
Рис. 7.30
Пример 6.9. Пусть Т**(V, E)~упорядоченное
направленное дерево, изображенное на рис. 7.30. Тогда
предпорядок на К= {а, Ь, с, d, e, /, g, h, i) можно
записать как
а<\Ь <i e<i/<ic<id<]g<ii<ift.
Соответствующий обход вершины имеет вид
а, Ь, е, /, с, d, g, t, h./l
Определение. Пусть Т«-(V, Е)— упорядоченное
ориентированное дерево. Определим отношение <2
полного порядка на V следующим образом: если vt
спускается из Vj, то v(<2Vj\ в противном случае Vi<2ty, если
vt<,Vj. Отношение <2 называют постпорядком на V. II
Очевидно, что <, s <2.
Пример 6.10. Пусть Т и V такие же, как и в
предыдущем примере. Тогда постпорядок на V будет иметь
вид
е <2f <Ф <2 с <г£ <2g <гЛ <id <2 a
253
с обходом
е, /, Ь, с, i, g, h, d, a. ff
Определение. Пусть Т — (V, E)~ полное
бинарное дерево. Определим симметричный порядок <, на V
следующим образом: для каждой вершины, не
являющейся листом и имеющей прямые спуски w\ и и>% (w\ < шг),
положим
w[ < ,v для всех iv[ е Г+ (шх) U {wj,
v<,w'2 для всех ^еГ+(ш,) U {юг}. ff
Порядок <, также является расширением <,.
Пример 6.11. Пусть Т — дерево, изображенное на
рис. 7.31. Тогда <. определено, как показано на рис 7.31.
Обход по предпорядку упорядоченного
ориентированного дерева соответствует обходу по глубине с корнем в
качестве начальной вершины.
Если T*=(V, E) — упорядоченное ориентированное
дерево, то вершины Т могут быть расположены в предпо-
рядок с применением следующего алгоритма,
начинающегося с корня:
procedure pre(v)
process v
if Ь,Ф0 do pre(w) for each к? е Д,
endproc
Соответствующий алгоритм для постпсрядка имеет вид
procedure post(v)
if L, «=» 0 then process \>
else begin
post(w) for each w^Lv
process v
end
254
Упражнение 7.6.
1. Пусть A^JC[n% В) —матрица смежности орграфа.
Выписать выражения для фупкцпй б+ и б~ в терминах А.
2. Сколько различных орграфов может существовать
на вершинах?
3. Пусть G = (V, E) — орграф. Какое максимально
возможное значение величины \Е\1
4. Пусть G = (V, Е)— орграф, где V-= ivu у2, Уз, vit vb)
в £-((ui, у2), {V2, Уз), (уз, Vi), (vt, у6), (vs, Уз)>.
Определить матрицы R(E+) и R(E*).
5. Дать матричные характеристики слабой,
односторонней и сильной связности в орграфе.
6. Пусть G-=(V, E) — ацикличный орграф. Какое
максимально возможное значение величины \Е\1
7. Доказать два последних предложения в п. 6.2.
8. Показать, что если T = (V, E) — полное бинарное
дерево и V обозначает множество уходов из Г, то \V'\ «■
-IVWI + 1.
9. Поддеревом 7"e(V, E') ориентированного дерева
T^{V, E) называется такое ориентированное дерево, что:
а) 0^V'sV-
б) E'-V'XV'r\ E;
в) ни одна из вершин VW не является спуском
вершины в V. Нарисовать все поддеревья
T — ({vu vit ..., у6>, {(Уь у2), (уь Уз), (уз, У4),
(уз, у5), (уз, "в)}).
10. Определение. Если Г — ориентированное
дерево, то уровень вершины определяют как максимальную
длину маршрута от этой вершины до листа. Глубина
вершины — это длина пути от корня до этой вершины.
Глубиной Т называют длину самого длинного маршрута в Т.
Высотой вершины Т называют глубину Т за вычетом
глубины вершины. Высота Т является высотой корня. /
Пусть Т — ориентированное дерево
({уь ..., у9>, {(уь v2), (У1, Уз), (уь у0, (уз, va),
(уз, Уб), (уз, у?), (У5, vs), (v5, у9)>),
а) нарисовать Г со значениями уровней в качестве
меток вершины;
б) нарисовать Т со значениями глубин в качестве
меток вершины;
255
в) нарисовать Т со значениями высот в качестве
меток вершин;
г) чему равна глубина Т?
д) чему равна высота Г?
11. Пусть Т — ориентированное дерево. Разрезом С
дерева Т называется подмножество вершин Т таких, что
а) не существует двух вершин С на маршруте в Т\
б) ни одна вершина не может быть добавлена к С без
нарушения а).
Определить все разрезы ориентированного дерева,
изображенного на рис. 7.32.
Рдс. 7.32
12. Пусть T**(V, Е)— полное бинарное дерево п
1VI -«п. Показать, что существует п!/2("~1)/2 полных
порядков на V, которые расширяют траисверсальный
порядок <.
13. Проинтерпретировать <i, <2 и <, для бинарных
деревьев, связанных со структурой арифметпческпх
выражений, как в § б гл. 3.
ГЛАВА 8
ЯЗЫКИ И ГРАММАТИКИ
Все средства общения включают язык. Обычно мы
«общаемся» с компьютером при помощи языка, который
каким-либо образом записывается (перфокарты, телетайп,
экран дисплея и т. п.), и, следовательно, предложения
языка состоят из строк символов. Действительно, весь
вычислительный процесс может рассматриваться как
преобразование одного множества строк в другое. Такие
процессы ведут себя совершенно определенным образом, и,
следовательно, с ними можно обращаться как с
математическими объектами — по крайней мере строки могут
рассматриваться как элементы моноида. В этой главе мы
будем подходить к изучению языка скорее с
математической точки зрения, чем с литературной. В § 1 будет
введено понятие строки и будут рассмотрены некоторые
проблемы, относящиеся к этому вопросу; в § 2 будут
введены языковые структуры. Далее будут более детально
исследованы некоторые важные классы языков и
рассмотрено введение в грамматический разбор.
§ 1. Основные понятия
1.1. Строки. Буква (или символ) — это простой
неделимый знак, или символ; множество букв образует
алфавит.
Пример 1.1.
Л-{а, Ь, с), 5-{О, О,
С-(PERFORM, ADD, GIVING, TO, ...),
Е — (а, Ь,с,..., х, у, z).
Здесь мы можем рассматривать В как бинарный алфавит,
С — как алфавит языка Кобол (в котором слова типа
PERFORM не могут быть разделены), а Е — как
английский алфавит.
17 д. кук, г, Бейв 257
Алфавиты являются множествами, и поэтому к ним
можно применять теоретико-множественные обозначения.
В частности, если А и В такие алфавиты, что Л si?, то
будем говорить, что А является подалфавитом В, или что
В является расширением А.
Строки являются упорядоченными совокупностями
букв алфавита (например, алфавита А) п, следовательно,
выглядят подобно элементам А" = А X А X... X А,
Однако будет более естественным записывать их в виде
aiu2...a„, а не (а\, аг, ..., а„). Буквы сами по себе также
являются строками для случая п = 1. Мы будем допускать
случай, когда строка не имеет букв (пустая строка), и
обозначать эту строку через Л. Заметим, что Л не
является символом, т. е. Л Ф А для любого алфавита А.
По аналогии с лингвистикой будем строки также
называть словами. Множество всех строк (слов) над
алфавитом А называют замыканием А и обозначают А*,
так что
А* - Л° U A1 U Л2 U ... = и Ап, где Л° = {Л}.
п=0
Для удобства определим также множество непустых
строк над А следующим образом:
Л+ = Л*\{Л}= U А\
П=1
Как уже упоминалось в примере 2.1 гл. 5, основная
операция над строками называется конкатенацией;
формально она может быть определена как бинарная
операция © на А* следующим образом:
©: (а,Р)~оф.
Аналогично эта же операция определяется для А*.
Операция © ассоциативна, но пе коммутативна; Л является
единицей в А* по отношению к ©. Сформулируем ниже
основные свойства операции О па А* и Л*.
Предложение. По отношению к операции О
а) А* является моноидом;
б) А* — полугруппа. II
Результат слияния строк а и |$, т. е. ар\ заключается
в следующем: строка р записывается сразу же за
строкой а. Другой способ определения строки — рекурсивный:
а является строкой над алфавитом А, если или а = Л,
или а = а|$, где а^А, a P —строка над А. Здесь а$
означает, что буква а стоит непосредственно перед
строкой {J.
258
Все слова в Ап (ве (0) U N) состоят точно из п букв;
в этом случае говорят, что строка имеет длину п. Длина
а^А* обозначается как 1а| и |а1 — п тогда и только
тогда, когда аеЛ".
Очевидно, что 1Л1 = 0 и \а\ = 1 тогда и только тогда,
когда аеЛ.
Если строки состоят из повторяющихся букв, то
обычно принимают сокращенные обозначения, чтобы
показать, что строку следует рассматривать как произведение
(по отношению к операции конкатенации). Поэтому для
а ^ А будем писать
Л = а0, аа = а2, аап~х = а", ве N.
Будем использовать следующее обозначение для
повторяющихся строк: строку ababa будем записывать как
(ab)2a или же как а(Ьа)2.
Этот пример иллюстрирует одну из основных
трудностей при рассмотрении строк. Мы используем строки для
описания строк, и, следовательно, мы должны иметь
возможность различать используемые алфавиты. Если
приведенные выше выражения рассматривались над
алфавитом А, а символов «(» и «)» в А нет, тогда смысл
понятен; с другой стороны, если круглые скобки есть в А,
то выражение (ab)2a может быть понято как (ab))a. При
условии что мы осознаем возможность таких проблем и
внаем, какие алфавиты используются, этих ошибок
можно избежать, используя различные алфавиты и биекцию
между двумя алфавитами. В некоторых случаях может
быть более удобно построить мономорфизм между
множествами строк, так что одно множество рассматривается
над существенно более простым алфавитом.
Пример 1.2. Пусть Я = (0, 1) и А = (а, Ь, с).
Тогда <р: А* -*■ В*, определенное соотношением
ф(*0) = ф(*)ф(0).
где х, у е А* и
<р(а) = 0, ф(Ь)= 10, <р(с)=110,
является гомоморфизмом моноида (нам надо сохранять
комбинации) из А* в {0, 10, 110)*s5*. Например,
<р: аЪЪса -+ 010101100, qr1: 01011010110 - abebc.
В действительности этот метод построения может
использоваться для отображения произвольного конечного
алфавита в {0, 1)*, /
17«
259
Из определения длины строки следует, что если
a, ^s Л*, то
l«pl-l«l + lpl, |«"1-в1а1.
Более того, если а^А, то
1а"!=п.
При преобразовании одной строки в другую
нежелательно, чтобы вся входная строка изменялась под
действием одной операции; в противном случае процесс
можно было бы определить только с помощью множества
входных-выходных пар. В дальнейшем нам понадобится
понятие подстроки.
Пусть заданы строки а и (} над алфавитом А. Строка
р" называется подстрокой а, если
а = 4(16, Ч, бе А*.
Пример 1.3. Пусть A —ia, Ь, с) и а — abac. Тогда
подстроками а являются следующие строки:
Л, а, Ь, с, ab, ba, ас, aba, Ьас, abac.
В частности, заметим, что а является подстрокой самой
себя, а Л —подстрокой а (и любой другой строки),
поскольку
а -»Aabac -»АаАЬас = АаАЬАас = АаАЬАаАс -»
«■»АаАЬАаАсА = аАЬас = аААЬас =... If
Выделение подстроки естественно приводит к замене
подстроки другой строкой. Однако пока еще мы не
достигли уровня, достаточного для корректного выполнения
этой операции. Рассмотрим, что случится, если мы имеем
«функцию» /, которая замещает строку ху строкой ухх
при условии, что первая строка является подстрокой в
операнде. Тогда
f(pqxy) = pqyxx.
Однако неясно, чтб является результатом f(xypxy).
Возможны два случая — уххрху или хурухх. Аналогично
получается, если мы применяем / несколько раз. Тогда
f(xypxy)=-yxxpyxx, однако, применяя / к ххуу,
получаем
/ (ххуу) — хухху, f (ххуу) — ухххху или хухухх.
Таким образом, «функция» является не полностью
определенной, н мы не можем поправить дело, потребовав,
260
чтобы операция изменяла все подстроки, поскольку они
могут частично перекрываться.
Ситуация еще более усложняется, если применяются
несколько замещающих функций. Необходимы средства
выбора определенной подстроки всякий раз, когда
возникает такой выбор; в частности, мы будем рассматривать
подстроку, встречающуюся первой при чтении слева
направо.
Для формализации рассуждений будем использовать
порядковые свойства целых чисел и сами целые числа,
соответствующие длипам строк. Предположим, что а
и Р — строки над А, \а\ < |р| и а является подстрокой р.
Предположим, что а в {$ встречается т различными
способами и что Ipl — |а| = п. Тогда мы можем записать $т
различными способами:
Р -»*YiotSi «= f2afi2 = ...■= lfmafin,
где *Y«, 6isA*, i<*i<m и m^n+1 (если a = {$, то п =
= 0; поэтому существует только одна возможность).
Будем говорить, что fu •••. 1т специфицируют различные
вхождения а в р и что fi Дает первое вхождение, а
вхождение а непосредственно за "(i является первым
вхождением.
Пример 1.4. Пусть g — функция А* -*• А* такая,
что {х, у, р, q)sA, и g заменяет первое вхождение ху
в строке на ухх. Тогда
g{pqxy)— pqyxx, g(xypxy)=уххрху,
g2(xypxy) = уххрухх.
Заметим также, что
g*(x2y2) — g 5{хух2у) = g*(yx*y) = g*(yxsyx2) =
"g 2(yx2yx*) •= g(yxyx*) — j/У,
g(y2x*)=y2x*;
поэтому
fe(a:V) = ?7(a;V) = ...^
Перед тем как продолжить изложение, отметим, что
существует альтернативный набор терминов для буквы,
алфавита и слова; это — слово, словарь и предложение
соответственно. В некоторых контекстах эти термины
более разумны, однако в этом случае необходимо проявлять
особую тщательность в использовании термина «слово»,
поскольку оно имеет два смысла.
1.2. Языки. Совокупность строк (или предложений)
называется языком, Формально язык L над алфавитом
261
A —это множество строк в А*; поэтому is4*. Следова*
тельно, операции над строками индуцируют операции на
языках. Отсюда получаем L+ (транзитивное
замыкание L) и L* (рефлексивное замыкание L) следующим
образом:
а) £°=Ш;
б) если Lt и Lj — языки, то L(Lj = Кху: x^Lt, y&L})',
в) L-^L-'L, raeN;
г) L+ = Un>1L";
Д) L* = Un>0L\
Сейчас обратим внимание на то, как слова могут
составляться в предложения, а множество всех
предложений, имеющих смысл, образует язык. Нас будут в
основном интересовать искусственные языки, такие как языки
программирования или языки, описывающие правильные
математические выражения, однако вначале будет
полезно рассмотреть случай английского языка. Это даст
возможность сформулировать некоторые определения таким
образом, что мы сможем сделать первые шаги в теорию
языка. Возьмем предложение
«The dog bit me».
Это предложение можно рассматривать двумя
способами. Во-первых, изучать его как простую совокупность
слов, каждое из которых является упорядоченной
совокупностью букв; в этом случае предложение
рассматривается синтаксически. Во-вторых, интерпретировать
предложение, считая, что мы понимаем значения слов и их
внутренние связи; тогда мы получаем семантику —
значение предложения. В дополнение заметим, что если мы
произносим предложение, то опо влияет на нас своим
воздействием — прагматизмом. В совокупности эти три
области образуют семиотику языка.
Пример 1.5. В языках программирования Фортран
в Кобол утверждения
4-Я + С, ADD В ТО С GIVING A
имеют одинаковый семантический смысл понятий
сложения и присваивания, однако у них разный синтаксис.
Прагматически они могут быть представлены на
некоторой машине как результат выполнения кода
LOAD В
ADD С
STORE А. В
262
Основным объектом нашего рассмотрения будет
область синтаксиса. Чтобы проиллюстрировать класс
структур, которые мы будем изучать, рассмотрим диаграмму
на рис. 8.1.
Предложение
Подлежащее Сказуемое
/ Л,
Артикль Существительное
the
dog bit
Рис. 8.1
Дополнение
те
На самом деле эта диаграмма означает, что
Предложение) может быть построено путем слияния
Подлежащего), <сказуемого> и <дополнения>, хотя это требует
формального определения. Подлежащее состоит из <ар-
тпкля) с <существительным>, и окончательно получаем
<артпкль> «the», <существительное> «dog», ..., что дает
нам предложение «the dog bit me».
Перед тем как ввести терминологию и обозначения,
необходимые для уточнения общих понятий в конкретной
ситуации, изображенной на рис. 8.1, мы установим
основные цели теории языков и сделаем обзор оставшейся
части главы.
Напомним, что для заданного алфавита А язык L
является произвольным подмножеством множества А*,
однако произвольные подмножества представляют очень
незначительный интерес. Мы хотим сосредоточить
внимание на специальных языках, содержащих строки, которые
благодаря внешпей информации об их семантике счита*
ются осмысленными или хорошо сконструированными.
Наиболее интересные языки бесконечны и,
следовательно, не могут быть выписаны явно. В этих случаях
надо придумать способы порождения языка; грамматика G
может рассматриваться как такая порождающая система.
Сформулируем две основные задачи формальной теории
языков:
а) Как по заданной грамматике G (и связанным с ней
языком L) порождать предложения a: o^i?
б) Как по заданным Ь<А* и а«=Л* устанавливать,
принадлежит ли а е L\
263
Для того чтобы проверить, входят ли эти строки в L,
надо знать, как L порождается грамматикой G. В § 2 и 3
мы опишем общие принципы грамматик с фразовой
структурой, а затем подробнее рассмотрим некоторый подкласс,
имеющий большое практическое значение.
Обозначим через L(G) язык, порожденный
грамматикой G. Тогда алгоритм проверки вхождения a^L(G)
называется грамматическим разбором; он использует а
и G. Часто первоначальная грамматика не подходит для
определенной техники разбора, однако она может быть
преобразована к эквивалентному, более подходящему
виду. Вопросы, относящиеся к грамматическому разбору или
модификации грамматики, будут рассматриваться в § 4.
Проводя далее идею манипулирования грамматикой G,
в некоторых весьма специальных (но обычных)
ситуациях можно перенести почти все (а иногда и все)
трудности грамматического разбора в анализ грамматики и,
следовательно, намного упростить анализ конкретных строк.
Спецификация ограничений, которым должны
удовлетворять эти грамматики, является более сложной.
Изучению этих проблем посвящен § 5.
Упражнение 8.1.1. Предположим, что А и В —
непустые алфавиты такие, что
\A\~p, 151=?,
и ф: А -*■ N„, ty: В -*■ Ng — биекции. Пусть %\: А* -*■ N
определено как
fat Oi ... oft >-* 2 Ф (сч)*Р(г~1\
а Хг: В* -*■ N определено как
ft
Ха: 61...6k.-2l>(bW~1).
i-X
Доказать, что XsT^Xi является биекцией строк, и
показать, как применяется это отображение. Для этого надо
найти прямые и обратные образы строк x2yxz в А* и
145332 в В*, где
A-{x,y,z),B-{l, 2,3,4,5).
§ 2. Грамматики с фразовой структурой
2.1. Основные определения.
Определение. Грамматикой с фразовой
структурой (ГФС) G называется алгебраическая структура,
состоящая из упорядоченной четверки (N, Г, Pt S), где;
264
а) N и Г —непустые конечные алфавиты
нетерминальных и терминальных символов*) соответственно
таких, что N П Т = 0;
б) Р — конечное множество продукций, PsPX V*,
где V = NUT называется словарем G;
в) S&N называется начальным символом или
источником. II
Предполагая, что символ -*■ не содержится в V,
соотношение (а, р) е Р обычно записывают в виде а -*■ р\
Понятие продукции, которую также называют
правилом преобразования, должно давать возможность
заменять одну строку символов другой. Терминальные
символы обычно рассматриваются как неизменяемые символы.
Поэтому, возможно, определение продукции в ГФС
является чрезмерно общим. На практике
соответствующие ограничения будут вводиться так, чтобы не
нарушать постоянства терминальных символов, однако
сейчас этого определения достаточно.
В качестве первого шага рассмотрим рис. 8.1 и
попытаемся понять, как он связан со следующими
примерами.
Пример 2.1. Предложение на английском языке,
приведенное ранее в качестве иллюстрации, может быть
определено в грамматике G =(N,T,P,S), где N =
{Предложение), <подлежащее>, <артикль>, <существительное>,
Сказуемое), Пополнение)); T = ithe, dog, bit, me); P =
= { (Предложение), <существительное>, <сказуемое>,
Дополнение)), (Существительное>, <артикль>,
Подлежащее)), (<артикль> the), (<подлежащее> dog),
(Сказуемое) bit), (Пополнение) me)); S = Предложение).
Эта частная система порождает только одно
предложение «the dog bit me» и, следовательно, может быть
заменена на
N = {Предложение»,
Р = {(Предложение) the dog bit me)}
или даже на
L = {the dog bit me).
Однако если мы в данном случае захотим расширить
язык, чтобы включить в него все предложения,
начинающиеся со слов, скажем, «the lion», «the rat», «the tiger»,
*) Эти символы будут называться также нетерминалами и
терминалами соответственно,— Примеч. ред.
265
со сказуемыми «ate» и «attacked» и дополнениями «you»
и «Napoleon» (тогда L будет иметь более 35 элементов),
то это может быть сделано добавлением только семи
дополнительных элементов к каждому из множеств Т и Р.
В этом примере размер языка составляет 4*3*3, в то
время как размер множества Р примерно равен 4 + 3 + 3.
Еще большее значение имеет тот факт, что мы можем
включить все предложения вида «the dog bit (the son
of)" Napoleon» (их бесконечное множество), добавляя к
Т и Р незначительное число элементов. /
Перед тем как описать механизм порождения
предложений, мы должны упомянуть нотацию, введенную
Бэкусом (нормальная форма Бэкуса или форма Бэкуса-
Наура, БНФ). Она особенно полезна, когда мы хотим
использовать элементы из N, которые можно спутать с
элементами из Т такими, как <предложелие> и
«предложение». Эта нотация использует четыре символа:
::= (мета-присвоить), < (мета-открыть),
>(мета-закрыть), I (мета-или).
Понятия «мета-открыть» и «мета-закрыть»
используются для того, чтобы выделять строки в качестве
элементов N, «мета-присвоить» заменяет символ -+-, и если
(а, {5)<=Л (а, ч)<=Р, то это может быть записано в виде
а ::= рЧ Y. что читается как «а есть р* или *(»•
БНФ впервые использовалась для определения
синтаксиса Алгол-60. В случае, если у читателя имеются
какие-либо сомнения в том, что БНФ способна
определить что-нибудь серьезное, рекомендуем прочитать
сообщение про Алгол-60. В работах по формальным языкам
обычно избегают длинных строк в N и, следовательно,
нотация Бэкуса не испольэуется, эа исключением
символа мета-или. Обычно прописные буквы используют
для обозначения элементов N, а строчные — для
элементов Т.
Пример 2.2. Рассмотрим G=(N, T, P, S), где
N = iS, T), Т~{а, Ь, с, Л,
P = {S-+aTd, Т - ЪТ I Ъ\ сТ I с).
Заметим, что двойное использование Т в этом примере
не вызывает никаких затруднений.
Грамматика будет порождать все строки aib, c)*d,
однако мы все еще не показали, как этого можно до-
266
стичь. Будем использовать продукции следующим
образом.
Пусть а, Р е У*; тогда (5 прямо выводится via а, если
а = fop и р = Yp6, где ч, 6, реУ», оеУ+ и o-^psP.
Этот факт будем записывать в виде а «*■ (5; он может
неформально рассматриваться как преобразования строки
а в строку р замещением подстроки о в ос на р.
(Заметим, что не обязательно заменять конкретное вхождение
о в а или использовать конкретную продукцию с левой
частью о. Возможны любые вариации.)
Пусть теперь а и Р — ~лова над V и существует
конечная последовательность ао, оц, ..., ol„ где ао = а,
а, = Р и otj-i =*■ at (i = l, ..., г). Тогда будем говорить,
*
что а порождает р (записывается а=$-$) и что вывод р
из а реализуется следующим образом: а =*■ ом ■*■ аг **■.. •
+
,..=*■ ar_i =*• р. Аналогично ос=£-р, если вывод использует
непустую последовательпость прямых выводов. Если
aSy* Такое, что S=$-a, то а называют сентенциальной
*
формой. Более того, если a s T* и S =*► а, то а является
предложением, порожденным G. Таким образом, язык
L(G), порожденный G, есть (а: аеГ* и S* •> а). Там,
где G подразумевается, можно определить L(X) =
•= {а: а^Т*, X&N и А'=^а/. Поскольку, применяя
продукции к сентенциальным формам, можно действовать
достаточно произвольно, то возможно существование
нескольких допустимых выводных последовательностей для
данного предложения в L(G), где G — конкретная
грамматика. Среди этих последовательностей мы выбираем
ту, которая на каждом этапе оперирует с самой левой из
возможных подстрок, в которой элементы заменяются на
элементы из Р. Такая последовательность Называется
(левой) канонической выводной последовательностью для
предложения.
Пример 2.3. Пусть
с-(ш>,{(, )),р,в),
где
Р = {В-+{В)\ВВ\( )}.
Тогда предложение ( ) (( ) ( )) может быть
выведено многими способами.
267
5=>55=>
=>( )B~
~( )(5)=>
=*( )(BB)°>
*( )(5( ))=>
=4 )(( )( ));
4) B°>BB^
+-B{B)+-
*( )(£)=>
*( )(££)=>
*( )(Я( ))
*( )(( )(
=>
));
Приведем пять из них:
1) 5=>55=> 2)
=>( )Я=>
*( )(*)-
*( ){ВВ)-+
=М )(( )*)=►
=>( )(( )( ));
3) В°>ВВ°>
**£(£)=>
*( ,)(ДД)->
*( )(( )5)=>
*( )(( )( ));
5) В=>ВВ=>
**£(£)=>
**В(ВВ)°>
*( )(( )*К
*( )(( )( ))•
Первый из этих выводов является каноническим.
2.2. Иерархия Хомского. Обсуждавшаяся до сих пор
система — сильное описательное средство, однако при
создавшемся положении вещей она является слишком
общей. Тем не менее, если наложить ограничения, мы
получим более интересный, хотя все еще достаточно
мощный математический объект. Начальные ограничения,
которые мы будем накладывать па структуру
грамматики, определяют элементы Р.
Определение (иерархия Хомского). Пусть G =
*={N, T, P, S) является ГФС, описанной в п. 2.1. Такую
грамматику называют грамматикой Хомского типа 0.
Если все элементы Р получаются из формы а -*■ В, где
а = тпгкг, а Р —Tfi6if2i Tfi, Tf2e^*, x&N, 8&V+, то
говорят, что G является контекстно-зависимой грамматикой,
или грамматикой Хомского типа 1 (КЗГ). (В этом
определении строки ifi и f2 могут рассматриваться как
контекст, в котором х может заменяться посредством б.)
Другим (альтернативным) ограничением для
грамматики Хомского типа 1 является то, что в каждой
продукции а и В должны быть такими, что 1 < Ы < |В|.
(Эквивалентность этих двух определений неочевидна и
доказывается ниже.) Если подстановки могут быть выполнены
268
без рассмотрения контекстов, тогда мы можем
заменить «контексты» fi и f2 пустой строкой Л и получить
более слабое ограничение: если х -*■ 6s pt то x^-N и
6^1/+. Этому ограничению удовлетворяют грамматики,
Хомского типа 2. Наконец, если Р состоит только из
продукций вида х -*■ б, где х е N и б е= Т U TN (так, что
правая часть является или единичным терминалом, или
единичным терминалом, за которым следует единичный
нетерминал), то говорят, что G является грамматикой
Хомского типа 3. /
Часто бывает полезно использовать более общие
формы внутри множества продукций, хотя формально это
и не разрешается. Хотелось бы быть в состоянии
включить пустую строку Л в качестве правой части любой
продукции. Однако, как увидим позднее, это вызывает
трудности. Такие Л-продукции крайне необходимы с
общей точки зрения, если только A^i. В этом случае мы
можем добавить S -*■ А к Р при условии, что S не
встречается в правой части любой продукции. Однако в
некоторых случаях необходимо разрешать также и более
общие Л-продукции. Чтобы различать грамматики
Хомского и те грамматики, в которых разрешаются
Л-продукции, введем расширенные версии грамматик Хомского
типа 2 и 3 — контекстно-свободные и регулярные
грамматики соответственно.
Языки, порожденные каким-либо из этих типов
грамматик, имеют аналогичные названия. Так, структурная
грамматика порождает структурный язык, структурная
грамматика Хомского типа 1 — язык Хомского типа 1,
контекстно-свободная грамматика —
контекстно-свободный язык, а регулярная грамматика порождает регуляр~
ный язык (или регулярное множество). Большинство
примеров этой главы будет касаться
контекстно-свободных языков, а в гл. 9 мы сконцентрируем внимание на
регулярных языках. Однако большинство практических
языков являются некоторыми расширениями
контекстно-зависимых языков. Чтобы указать на ограничения
контекстно-свободной грамматики, рассмотрим
следующий важный пример.
Пример 2.4. {xnynzn: »sNl является контекстно-
зависимым языком. Предположим, что G = (2V, T, P, S),
где
N = {S, X, Y, Z), Т = {х, у, «}, Р = {Ри ..., Р7},
Pv = S-*xSYZt P2 = S-*xYZ,
269
Ps = xY^-xy, P**=yY -+yy, P& = yZ-*yz,
P6 = ZY-+ YZ, P7 = zZ-+ zz.
Вначале заметим, что для любого п е N мы можем
получить
^«"-^(yz)"-1^
=>xn{YZ)nX
XxnYnZn=>
=>xnyY"-1ZnX
*
=$-x у Z =$■
*
=3> x у zZ =s-
*
n n n
=>x у z ;
(*i)
(^)
(^.)
(^з)
(^)
(^5)
(p,)
поэтому
{zn#nzn: nsN};sL(G)(
Теперь мы должны показать, что никакие другие
строки не могут быть порождены G. Хотя возможны
некоторые изменения в порядке применения правил (Pi),
(Р2) и {Рв), любое предложение должно выводиться
посредством сентенциальной формы такой, как xnYZa, где
а состоит из п — 1 символов У и Z. Для того чтобы
получить строку над Т, мы должны в конце концов
использовать правила (Р4), (Ps) и (Р?), однако (Pz) может
преобразовать Z в z только в контексте zZ, а (Ре)
осуществляет такую же замену в коптексте yZ. Аналогично
для замены У па у при помощи правил (Р4) и (Ре)
требуются контексты yY в xY соответственно. На этой
стадии подстрока хп сосгоит только из терминалов, поэтому
на следующем шаге строка должна иметь вид xnyZa и
получаться при помощи (Рз). Однако мы зпаем, что
правильное предложение должно порождаться
преобразованием из Za. в Yn~lZn посредством (Ре). Действительно,
только таким образом можно успешно получить строку.
Предположим, что мы имеем промежуточную
подстроку вида yYmZpY$, где р состоит из оставшихся элементов
У и Z. Из рассуждений, аналогичных приведенным
выше, следует, что для получения подстроки ym+lZpY$ нущ-
270
но т раз применить (Р4). Однако, если сейчас мы
используем (РБ) для получения ym+lzZp-lY$, то никаким
правилом нельзя заменить элемент У на у (или любой
другой терминал). Единственный способ выйти из этого
положения — это р раз применить (Рб), чтобы
переместить У влево и, следовательно, получить xnynzn. II
Это пример контекстно-зависимого языка, который,
как будет показано, не является контекстно-свободным.
Аналогично существуют контекстно-свободные языки,
которые не являются регулярными (см. гл. 9). Вернемся
теперь к доказательству эквивалентности альтернативных
определений контекстно-зависимых грамматик.
Определение. Грамматики G\ и Gi эквивалентны,
если
L(Gi) = L(G2). /
Предложение. L является контекстно-зависимым
языком тогда и только тогда, когда он может быть по-
рожден грамматикой, у которой продукции а -*■ ц
удовлетворяют условию 1 < \а\ < \ц\.
Доказательство. Если L —-
контекстно-зависимый язык, то существует грамматика G с продукциями
вида а.А$ ->- afP, где А е N, f е у+ и а, Р e у* такие, что
L = L(G). Однако
|ос4р| = Id + \A\ + Ipl = lal + 1 + Ipl > 1,
latfl = lal + Ifl + Ipl > lal + 1 + Ipl - la^pl.
Следовательно, 1 < la.4pl < la^pl, что и требовалось
доказать.
Пусть G = (N, T, P, S) — грамматика, у которой
продукции о -*■ ц удовлетворяют соотношению К lol «^ \ц\.
Мы должны создать грамматику G', эквивалентную G,
с продукциями вида а.А$ -*■ afP.
Продукции из G имеют вид
1) А -*■ 7i ...fp или же
2) ai... а„ -*- Pi... Р«, где га < g и Л е tf, a,, ft, Y<e ^ •
Во всех продукциях заменим каждый встречающийся
элемент af e у новым нетерминальным элементом Л< и
включим продукции At -*■ at в С. Продукции типа 1)
теперь имеют правильную форму и включены в G'. Однако
продукции типа 2) необходимо модифицировать. Сейчас
они имеют вид
271
где Wt и Yt являются нетерминальными символами новой
грамматики. Для каждой такой продукции введем новые
элементы Y\, - - •> Yq, не являющиеся терминалами,
и п + q новых продукций: п продукций
Wt ... Wn-^Y1W2...Wnt
Y\W2... Wn-*?1?tW,...WM
• ••••*
* n— 2-» n—1 Wn,
Jl . . • Y n—2^n—i"n ~~** *i • • • Yn—2*71—lYnYn+X • • • Yq
и q продукций
Y1 X 2 • • > J q "**" У1X 2 . » • J 9»
У,У2...У,-У|У2У8...УЛ
У1У2... У«-1У« -*■ У1У2... У«-1У«.
Все эти продукции имеют вид аА$ -*■ ач$.
Новые нетерминалы Y\, ,,., Yt вынуждают
применять эти продукции в написанном порядке так, чтобы
никакие из предложений, не входящих в исходный язык,
не могли быть созданы. II
В заключение этого параграфа обсудим понятие
неоднозначности. Классическим примером неоднозначного
предложения является предложение
«They are flying planes»»
Мы имеем две интерпретации этого предложения,
зависящие от того, рассматриваем мы «are flying» как
сказуемое или же «flying planes» как дополнение. Это
приводит нас непосредственно к точному определению
неоднозначности. Язык называется неоднозначным, если он
содержит неоднозначное предложение. Предложение
является синтаксически неоднозначным, если оно имеет
более одного канонического вывода, и семантически
неоднозначным, если для заданного канонического вывода оно
имеет более одной интерпретации. (Выводы относятся не
непосредственно к явыку, а к грамматике, порождающей
его. Следовательно, мы. должны ссылаться на
неоднозначную грамматику; однако существуют существенно
неоднозначные языки, которые могут порождаться только
неоднозначными грамматиками.) Для более подробного
272
изучения семантических неоднозначностей рекомендуем
обратиться к специальной литературе о языках
программирования, а сейчас проиллюстрируем синтаксические
неоднозначности двумя примерами.
Пример 2.5.
1. Пусть б-(Ш, {1, -}, {Е-Е-Е\1}, Е). Тогда
а) Е*>Е-Е-+
Щ+1-Е+-
*>\-Е-Е*>
-»• 1 - 1 -1;
б) Е^-Е-Е**-
•+Е-Е-Е-+
->■ 1 — Е — Е**-
ш+1-l-E*
■* 1 - 1 - 1.
Из этих последовательностей следует, что два указанных
вывода являются различными, и, следовательно,
хотелось бы придать им различные значения. В примере а)
/1\ /1\
Е - Е Б' - £
I /|\ /l\ I
I Е - Е Е - Б I
Рис. 8.2
второй знак «минус», вычисляемый вначале, дает 1;
в примере б) первый знак «минус», выполняемый
первым, дает —1. (Диаграммы на рис. 8.2 иллюстрируют
различные структуры.
18 Д. Кук, Г, Бева 273
2. Рассмотрим хорошо известный пример из первой
спецификации языка Алгол-60. Сужая грамматику до
относящегося к делу подъязыка, будем иметь продукции
S -»- if В then S else S I if В then S \ U,
где S — утверждение, В — булево • выражение, U — без-
if
then
if
then S else
U
s
s
и
Рис. 8.3
условное утверждение. Теперь рассмотрим выражение
if By then if B% then Ui else U2.
Мы не знаем, принадлежит ли else U% к if B\ или к
if #2. Формально мы можем вывести это предложение,
рассматривая В и U как терминалы, следующим образом
(рис. 8.3,а, Ъ соответственно):
a) S ■+ if В then S =>
^ if В then if В then S else S =»-
274
=> if В then if В then U else S <*■
-> if 5 then if Л then tf else tf;
6) 5 -> if В then 5 else 5 ■*■
=*■ if 5 then if В then 5 else S =*•
=> if 5 then if S then tf else S =*-
•> if В then if fi then U else Г7. /
Упражнение 2.2.
1. Выразить явно языки, определенные следующими
грамматиками:
а) С = ({<число>, {0, 1, 2, ..., 9}, Р, <число)), где
Р = «число) ■♦0111213141516171819};
б) G=(KP>, <£>, <D», {О, 1, 2, .... 9}, Р, <Р>), где
Р = «Р>+ <£><£»!<£>,
<£> + l|2|3...8l9, <D>-*<L>, <£» + 0}.
2. Определить грамматику G'—(N\ 7", Р', 5'), экви-
валентпую
G=({A,B, С, S), ix,y,z},P,S),
где
P = {S + AB'C, yl5-i?^z, гЯ-Л2Яа;, Л -я,
Я + у, C + z},
с продукциями вида aQ$ -*■ a.'ify для
3. Определить класс Хомского грамматики,
определенной следующим образом:
G~({A,B,T,S},ix,y,z),P,S),
где
Р = {S ■* хТВ I zfi, Г -* я:Г/ I хА,
В -»- yz, Лу -»■ #Л, Лз -»- yzz),
Используя свойство класса, к которому принадлежит G,
установить, принадлежат или нет L(G) следующие
строки:
x*yxz, x*y2z2, xyxz.
18* 275
4. Определить последовательность разрезов
представленного здесь производящего дерева, соответствующую
самому правому выводу предложения х + х * х.
/К
/ / I \
/ * \
X *
5. Определить порядок в множестве продукций Р
таким образом, чтобы была возможность канонического
вывода, определяющего последовательность целых чисел в
N. Продемонстрировать две такие последовательности
для предложения «aza» в L(G\), где Gi дано ниже.
Вывести также строку над N, описывающую все выводы
+
в языке L(G2), т. е. показать, что А=>А
подразумевает неоднозначность. Здесь
Gi=(N,T,P,E), Ga-(N,T,P,A),
где N = {А, В, С, Е, R), Т = {a, d, e, x, z) и
Р = {А -* В I Cd, В -* Вх I еС I С,
C-+A\xR,E-+aE\Ea\R,R-+z).
6. Выяснить, являются ли следующие грамматики
неоднозначными:
а) G=(U, В, S), {а, Ъ, с], Р, S), где P = {S-+AB,
А-+ а.\ ab, В -»■ с\ be);
б) б=({<целое без знака), <число>}, D, Р, (целое без
знака)) у где D = {0, 1, ..., 9} и
Р = {<целое без знака) -»■ (число),
<число> -»■ <число> <число>, <число) -»- О I 1 I 2... I 9).
§ 3. Контекстно-свободные языки
3.1. Основные определения. Контекстно-свободные
грамматики (КСГ) и контекстно-свободные языки (КСЯ)
важны для практических вычислений, так как, хотя
большинство языков является некоторым расширением
конте! ;тно зависимых языков, их легче изучать как
контекстно свободные языки, а затем по другим (семанти-
276
ческим) критериям отбросить некоторые из предложений.
В этих случаях на КЗГ можно ссылаться как на
грамматики, специфицированные связанным синтаксисом,
а на КСГ — как специфицированные несвязанным
синтаксисом. КСГ также дают возможность прояснить вопросы,
содержащие (синтаксическую) неоднозначность.
Последовательность вывода a^L{G) может быть
изображена как упорядоченное дерево (см. ниже). Корень
•
дерева обозначен через S, и если 5=>аеГ* и а =
■= ai... а„, то выходы помечены по порядку at, ..., а„.
Предположим, что 5=>Р=>у=>а и что [Jo y
достигается в результате применения продукции С -*■ Yt... Ym, где
ft s V. В дереве это представляется пометкой вершины
С и т ее преемников (точек, из которых С достигается
за один шаг) ft» • • •» 1т. Поэтому метки могут быть
одинаковыми.
Пример 3.1. Рассмотрим грамматику с
продукциями
Е -+ Т I Е + Т, Т -+ 11 / • Т, I -* (Е) | х.
Обычно в случае контекстно-свободных грамматик мы
будем опускать другие
элементы грамматики; первое
правило специфицирует
источник, а нетерминалами
являются только символы в
левой стороне продукций.
В этом случае вывод
предложения х + х * х может быть
изображен так, как это
сделано на рис. 8.4. /
С конструктивной точки
врения это изображение на- Рис. 8.4
зывается деревом вывода.
(Когда это дерево используют для того, чтобы
проанализировать, могут или не могут строки содержаться в L(G),
оно называется деревом грамматического разбора.) Легко
видеть, что предложение является неоднозначным, если
оно имеет два неизоморфных дерева вывода, и что для
контекстно-свободных грамматик канонический
грамматический разбор изоморфен любой другой схеме обхода
дерева.
Мы уже установили тот очевидный факт, что КСГ
являются более ограниченными, чем КЗГ, но тем не ме-
277
нее они все же обладают весьма широкими
изобразительными возможностями.
Пример 3.2. Используя контекстно-свободные
правила, можно породить:
1) все последовательности из символов А:
STASIA;
2) все непустые списки из символов А, отделенные
друг от друга символами В:
S-+A\ ABS;
3) те же списки, что и в примере 3.2,2, однако
допускается возможность пустого списка:
S -*■ Т I Л, Т -*■ A I ABT;
4) все строки, начинающиеся с последовательности
символов А или В и оканчивающиеся символами С или D
соответственно:
S-+ASC\BSD\X;
например,
S-+[S]\(S)\X.
В этих примерах А, В, С, D и X могут быть
определены дополнительно. II
3.2. Характеристические свойства. Особенностью
рассмотренных выше примеров, о которых вскоре мы
сможем сказать несколько больше, является свойство
рекурсии (один шаг рекурсии при каждом neN).
Трудности возникают тогда, когдэ требуется наложить
некоторые ограничения на глубину рекурсии, не придумывая
новых правил для каждой допустимой глубины рекурсии.
Поскольку N vl P конечны, то очевидно, что если не
разрешать никаких рекурсий, то L(G) также будет конечен,
и этот случай не очень интересен.
Прежде чем идти дальше, введем необходимую
терминологию. Говорят, что грамматика G:
а) леворекурсивная, если в ней имеются выводы вида
хХха, где Xe^aeF+j
б) праворекурсивная, если в ней имеются выводы
вида
*
Х=>аХ, где X и а такие же, как и выше;
278
в) самовключающая, если она имеет выводы вида
хХаХ§, где X(=N и а,Рб^+.
Говорят, что КСГ рекурсивна, если имеется один из
случаев а) — в). Из сделанных выше замечаний ясно, что
желательно бы иметь в грамматике «петли», однако не
произвольного типа. К этому вопросу мы вернемся в § 4.
Сформулируем результат о возможностях КСГ. В
теории КСЯ это, вероятно, наиболее известный результат.
Его доказательство использует рекурсивные свойства
КСГ и структуру деревьев. Этот результат известен как
лемма о разрастании для КСЯ или же как uvwxy
теорема.
Теорема. Если L — контекстно-свободный язык, то
существует neN такое, что если x&L и \z\>n, то z
может быть записано в виде uvwxy, где и, v, w, x, y^ Т*,
vx Ф А и для любого i e N выполняется условие
utfwx'y e L.
Доказательство. Поскольку L —
контекстно-свободный язык, то он может быть порожден некоторой
грамматикой G = {N, T, P, S) и не имеет продукций, за
исключением, возможно, S-+A (если As£(G)),
уменьшающих длину сентенциальных форм. (Если Л^Д то
5 также исключают из правых частей продукций для
того, чтобы не уменьшалась длина сентенциальных форм.
В § 4 показано, что такая грамматика G может быть
найдена.)
Если G не рекурсивна, то, поскольку N и Р конечны,
L(G) также конечен, и, следовательно, теорема
справедлива, если взять га большим, чем длина самой длинной
строки в L(G). С другой стороны, если G рекурсивна, то
существует дерево вывода, в котором некоторый
нетерминал, например А, встречается дважды на пути от
корня к листу. Эта ситуация изображена на рис. 8.5. (Сюда
включены лишь необходимые нам свойства.)
Более того, поскольку G рекурсивна, то мы можем
добиться выполнения соотношения \uvwxy\>n, где га
больше длины самого длинного предложения,
полученного путем нерекурсивного вывода (<fem, где Л — длина
самой длинной продукции Р, a m= \N\). Таким образом,
если zg£ и |z|>ra, то z должно иметь требуемый вид
+
для некоторых пяти строк. Тогда А=> vAx {vx Ф Л, по-
279
этому \vAx\ > \А\) и А=>и>. Следовательно,
А => vlAxl=> v{wxl
*
для любого i e N. Отсюда, так как S=> uAy, имеем
S => и^юх1у
для любого i e N и, таким образом,
uviwx,y s L
для любого ieN. /
Этот результат может быть использован для проверки
того, что некоторые конструкции в языках
программирования не могут быть определены с помощью КСГ.
Дадим более реальный пример, который не требует энания
конкретного языка.
Пример 3.3. Грамматика из примера 2.4
порождает язык {xnynzn: raeN}. Сейчас мы можем показать, что
Рис. 8.5
этот язык является контекстно-зависимым и не может
быть порожден КСГ. Из теоремы следует, что
существует некоторое достаточно большое га, при котором xnynz"
может быть записано в виде abcdf (требуется очевидная
замена символов) для некоторых строк а, ..., /.
Поскольку х и z в строке разделены, то очевидно, что строки а
и Ь не могут содержать все символы х, у и z;
аналогично и для всех других пар из {а, Ь, с, d, /}. В частности,
по крайней мере один из символов х, у и z не может
быть одновременно в строках bud; таким образом,
строка ab2cd2}, которая по теореме содержится в L, содержит
не все символы х, у и z (они также могут быть распо-
280
ложены в другом порядке, однако в дальнейшем мы не
будем рассматривать эту возможность). Следовательно,
мы не получаем тот же самый язык, из чего и следует
требуемый результат. /
Подобные противоречия могут быть получены во
многих ситуациях, когда информация, содержащаяся в более
ранней части строки, влияет на требуемую структуру
последующей подстроки. Следующий пример является
типичным в этом отношении.
Пример 3.4. Язык L = (lp: psN, p — простое
число) не является контекстно-свободным:
L = (ll, 111, 11111, ...Ь
Предположим, что L является КСЯ. Так как существует
бесконечное множество простых чисел, то имеется
простое число q такое, что
1« = uvwxy, vx = Л,
uv'wx'y e L для всех i e N
(это следует из приведенной выше леммы). Таким
образом, существуют а, Ь, с, d, e такие, что
при b + d>0 и
l4i = aa(lbyic(ld)lle^L
для всех jeN, так что q = a + b + c + d + e — простое
число и q> 1, a q( — а + с + е + (b + d)i— простое число
для всех isN. В частности, qt — простое число при i =■
■=a + 6 + c + d+e + l, и в этом случае
q( = (a + c + e) + {b + d)(a + b + c + d + e + l) =
= (a + c + e) + (b + d)((a + c + e) + (6 + d)+l) =
= ((a + c + e) + (& + d))(l + (6 + d)) = g(l + b + d).
Однако q~> 1 и 6 + d+l>l; следовательно, qt не
является простым числом для всех i s N, и мы получаем
противоречие. Поэтому L = {lp:psN, p^ простое число}
не является КСЯ. /
Этот пример также демонстрирует практическую
важность связанного и несвязанного синтаксисов. Можно
придумать жесткий фиксированный синтаксис, который
281
включает правильную семантику. Однако, где это
возможно, часто гораздо удобнее и эффективнее разрешить
использование более широкого языка, порожденного
(обычно контекстно-свободной) грамматикой, а эатем,
если необходимо, сузить множество путем дальнейшей
семантической проверки.
В примере 3.4 мы могли бы использовать правило
S-LSI 11,
чтобы породить все строки 1': q > 1, и после этого
проверить, что «5 — простое число», с помощью подходящего
арифметического алгоритма.
Короче говоря, контекстно-зависимые грамматики
являются сложными и не изучены с достаточной полнотой.
С другой стороны, контекстно-свободным грамматикам
уделяется достаточно много внимания, и они составляют
основу почти всех практических компьютерных
трансляционных систем.
Упражнение 8.3.
1. Вывести КСГ, которая порождает множество всех
строк над {а, Ь}, имеющих равное количество а и Ъ.
2. Построить грамматики, порождающие следующие
языки:
а) {ain: п>\)\
б) {а«Ь2т-и. п, т>\}\
в) {апЪп: п>1), п, meN,
3. Используя лемму о разрастании, показать, что язык
L = {а" : п <= N|
не является контекстно-свободным.
4. Показать, что если L\ и Ь% являются КСЯ, то
таким же является язык L\ U L2.
5. Доказать, что множества
{xnynzm: n>i,m>i), {xmynzn: n> 1, т> 1}
являются КСЯ; показать, что если языки L\ и Ь%
являются контекстно-свободными, то отсюда не следует, что
язык L\ Л Ьг является контекстно-свободным.
282
§ 4. Понятия грамматического разбора
и грамматических модификаций
Наиболее непосредственный и очевидный контакт,
который средний пользователь имеет с процессами
перевода (трансляцией с одного языка на другой),— это
использование различного рода компиляторов для таких
языков высокого уровня, как Паскаль, Фортран, Кобол,
Алгол и др. При использовании такого языка программа,
которую мы написали, транслируется в эквивалентную
программу в машинном коде (объектную программу),
которая может быть расшифрована и выполнена
компьютером. Общая схема компиляции изображена на рис. 8.6,
Исходная программа
т
Лексический
анализатор
Лексическая форма
1
Грамматический разбор
1
Дерево
грамматического
разбора
Т
Генератор кода
1
Объектная программа
т
Оптимизатор
ч
< *" lauJiuu,a С
Оптимизированная
объектная программа
Рис. 8.6
В общем случав стадии процесса компиляции могут
рассматриваться связанными последовательно, как это
изображено на диаграмме; однако на практике они часто
выполняются одновременно. Генерация кода требует вна-«
ния семантических интерпретаций, которые связаны о
283
каждой синтаксической структурой внутри программы.
Для оптимизации машинного кода необходимо знать
тонкости строения машины. Мы пе будем рассматривать эти
стадии, а ограничимся лишь обсуждением трансляции
ключевой программы в дерево грамматического разбора.
Ключевая (исходная) программа является просто
строкой символов. Внутри этой строки часто встречаются
некоторые комбинации символов, в которых отдельные
символы не имеют смысла, однако комбинация символов
передает смысл. (См. пример 2.1; «dog» имеет значение,
а буква «о» внутри «dog», очевидно, отдельно не несет
смысловой нагрузки.) Такие составные символы,
называемые также лексемами, не являются абсолютно
необходимыми и могут не использоваться в некоторых
языковых трансляторах, однако обычно они существуют и
кодируются одним символом (для каждой комбинации свой
символ), чтобы сократить длину исходной программы
(на данный момент в ее лексической форме) и избежать
необходимости рассматривать ненужные детали на
следующих этапах. Типичными лексемами являются:
а) ключевые слова, т. е. слова с постоянным
значением в языке; например,
Фортран,
begin
end
while
Паскаль,
GOTO'
DO
.OR.
+,—,*,/ в большинстве языков;
б) числа 52, 31.65 и т. п.;
в) строки или последовательности символов;
г) идентификаторы, введенные программистом.
Лексемы обычно описываются
регулярными грамматиками.
Следовательно, мы свели исходную
проблему к грамматическому разбору
строки лексем. Графически это
означает — заполнить треугольник на
рис. 8.7 таким образом, чтобы он
был совместим с продукцией правил
грамматики.
4.1. Процедуры приведения. В
общем случае нам не разрешается
изменять строку a = flifl2...«n; поэтому вся деятельность
до проведения процесса грамматического разбора должна
быть направлена на грамматику. Потенциально нам
ахаг
Рис. 8.7
284
будет необходимо осуществить достаточно Сложные
преобразования грамматики, чтобы проверить, что все
нетерминалы действительно можно использовать в
грамматическом разборе. Существует два варианта, в которых
нетерминалы могут пе подходить для проведения
произвольного грамматического разбора; опишем их формально.
Определение. Пусть G=°(N, Т, Р, S) есть КСГ.
Тогда говорят, что нетерминальный символ X&N
является:
а) недоступным, если X¥=S и не существует вывода
вида
+
&=>■ аХР для а, Р е V*;
б) непродуктивным, если не существует строки t е
+
е Т* такой, что X =ф- у;
в) бесполезным, если он недоступен или
непродуктивен.
Грамматика, не имеющая бесполезных нетерминалов,
называется редуцированной. II
Ясно, что бесполезные символы не играют никакой
роли в построении предложений. Хотя хотелось бы не
включать в грамматику бесполезность символов, они
могут быть введены алгоритмами, предназначенными для
модификации грамматики с целью соответствия
некоторым требованиям (см. ниже). Бесполезные символы не
обязательно увеличивают размер грамматического
разбора, и сейчас мы опишем процесс их удаления.
Пусть G = (N, T, P, S) есть КСГ. Определим
множество N' как
N' = NU{%),
где т — новый символ (x&V), и отношение р на N'
следующим образом: (А, В)ер, если A-*-ofifJeP при
A, B&N, а, fi e V*; {A, т)е р, если А -*■ у е Р при
некотором 1 е T*.
Предложение.
а) А доступно тогда и только тогда, когда A^S или
(S,A)*p+;
б) А является продуктивным тогда и только тогда,
когда (А, т)ер+.
Доказательство.
а) А доступно тогда и только тогда, когда существует
*
вывод вида S=>aA$ для a, {ley* или, что
эквивалентов
но, тогда и только тогда, когда существует i ^ О такое,
что
i
Когда S^A, это имеет место лишь в случае Sp+A; по-1
этому (5, Л)ер+.
б) А продуктивно тогда и только тогда, когда А=$-у
для некоторого i>0 и ]е Т*, т. е. тогда и только тогда,
когда существует последовательность сентенциальных
форм ао, «1, ..., а,- таких, что
А =*■ ссо =*■ cci =*-...=*- а,- = у,
т. е. когда существует последовательность А=Ао, А\,.,,
..., Ai-i e N такая, что At является подстрокой а(, и,
следовательно,
АфАи АфА2, ..., А,-2рА,-и Ai-i-* р\
где fj —подстрока f, т. е. AopAi, АфА% ..., Л<_фт.
Поэтому Лр+т. /
На практике р+ можно вычислять, используя
алгоритм Уоршолла. Пусть NvcN — множество бесполезных
символов G и N' = N\NU, Р' = Р\Ри, где Р« — множество
продукций, содержащих элементы Nu. Тогда G' — {N', Т',
Р', S), где Т' — множество терминальных символов,
появляющихся в продукциях Р\ эквивалентно КСГ без
бесполезных символов.
Алгоритм. Удаление бесполезных символов.
Вход: КСГ G--(N, T, P, S).
Выход: эквивалентная КСГ £'■=(#', Г, Р', S) без
бесполезных символов.
Метод: построить N', Т', Р', как указано выше. /
Пример 4.1. Рассмотрим грамматику
G= ({А, В, С, D), {х, у, р, q, w, a), P, А),
где
P = {A-+x\yDC\Dl B-+q\Bxx С -*• Сх\уС, D-+Da\Cw\p),
Используем отношение р, определенное выше, и его
представление в матричной фбрме:
А В С D х
М(р) =
А
В
= С
D
%
-о о
0 I
0 0
0 0
_0 0
1
0
1
1
0
1
0
0
1
0
I
1
0
1
0
286
В этом примере имеем М(р+) = М(р) = М. Таким
образом, Млв = МСх = 0, и поэтому В недоступно, а С
непродуктивно. Следовательно, грамматика сводится к
G' = (U, £»}, {*, а, р}, Р\ А),
где
P' = {A-+x\D, D^Dalp}. II
После удаления бесполезных символов каждый
оставшийся нетерминальный символ X встречается по крайней
мере в одном дереве вывода (рис. 8.8) с X, связанным
вверх с 5 и вниз с некоторыми „
терминальными строками ai... a„. Л/|^ч
Один «очевидный» путь грам- // у^\^
матического разбора строки —■ |
это вывести все строки, отметить
их соответствующие канонические
последовательности, а затем
проверить предложение, сравнивая
его с каждой строкой. При
совпадении использовать выводящую
последовательность, чтобы
определить дерево грамматического Рис. 8.8
разбора. Конечно, в большинстве
примеров величина \L\ бесконечна, и поэтому этот
процесс невозможен; однако если грамматика не имеет
неудачных продукций, то это приближение обеспечивает
основу техники разбора, которая, по крайней мере в
локальном контексте, может использоваться на практике.
Если длина сентенциальных форм не может
уменьшаться при применении G, то при проверке oel(G),
\а\=п можно отбросить все формы (перед получением
строк над Т), чья длина превосходит п. Предложения,
длина которых не превосходит п, могут сравниваться с а
обычным путем; в разумной грамматике все такие
возможные строки должны порождаться за конечное число
шагов. Сейчас мы займемся приведением грамматики и
построением ее эквивалентной версии, которая обладает
«более легким» грамматическим разбором.
Для того чтобы процесс порождения, связанный >с
данным предложением, был конечен, необходимо
гарантировать, что все последовательности вывода
действительно могут быть получены. Следовательно, появление
таких ситуаций, как X -*■ X и X -*■ А, представляет
интерес, Записывая их непосредственно как продукции, это
287
+
легко обнаружить; однако более общие ситуации Х=ф-Х
иХ=>Л труднее локализовать. Более того, два типа
выводов связаны таким образом, как это
продемонстрировано в следующем примере.
Пример 4.2. Предположим, что включенные
продукции некоторой грамматики имеют вид
X-+Y, Y-+W, Z-+V, W-+Zt V-+X.
Следуя возможной последовательностью вывода из X, по-
+
лучаем, что Х=*-Х, и, следовательно, как только X
встречается в сентенциальной форме, мы могли бы
вставить прогрессию X=*"7=>W=*-Z=*"F=*-X (снова и
снова), не получая, таким образом, ничего, кроме
неоднозначности.
Как нетрудно видеть, это «петля» из нетерминалов
внутри N. Заметим, однако, что мы могли бы иметь
практически такую же ситуацию в завуалированном
виде, если вместо X -+• Y и Y -*■ W имели бы, например,
X-+AY, Y-+AWA, А-+А. II
Определение. А-продущией является продукция
вида
Х-Л, Xetf.
КСГ G — (N, T, P, S) называется А-свободной, если
а) или Р не имеет Л-продукций,
б) или существует только одна Л-продукция S -*■ Л
в S не появляется в правой части произвольной
продукции из Р.
Продукция является одиночной, если она имеет вид
Х-7, где X, Y&N.
Продукция вида Х-»-Х при X^N называется
тривиальной. КСГ G = (N, Г, Р, S) называется циклически сво~
+
водной, если не существует выводов вида X => X для
любого X&N. I
Как уже отмечалось, обнаружение и удаление циклов
в Л-внводов тесно связаны. Мы начнем с места
расположения всех нетерминалов, из которых может быть
достигнуто Л.
Замечание. Для заданной грамматики G = (N, Г,
Р, S) через Л^д будем обозначать множество {х: х4л} =
sN. II
888
Алгоритм. Вычисление NA.
Вход: произвольная КСГ G = (N, T, Р, S).
Выход: JVA.
Метод: пусть P = {Pi, ..., Рт), где каждое Р< имеет
вид
а,-*■£,: o,sJV, p,eF*;
тогда, рассматривая NA как «переменную» типа
множества, имеем
i^\P\,
repeat (if (a{ ^ NA) and (p\ e JVa)
Нюп^А-ЛГлГНаЛ i~-\P\)
else**-* — 1)
until* »0. /
Алгоритм. Переход к Л-свободнрй грамматике.
Вход: произвольная КСГ G = (N, T, P, S).
Выход: эквивалентная Л-свободная КСГ G' = (N', T,
Р', S').
Метод:
1) определяем N\',
2) строим Р' следующим образом:
а) Пусть А -*■ aoBiaiB20t2 • • • Bhah s Pt
где к S* 0 и при К I < А: каждое 5< есть в ЛГА, но ни один
символ в ccj-e 7* (0 < / < й) не находится в JVA. Тогда
добавим к Р' продукции вида
Л -»■ ОйХ\а\Хга2... Х»а»,
где Х( есть или 5< или Л, без добавления А -*■ Л к Р'
(это могло бы иметь место, если бы все а< совпали с Л).
б) Пусть S^Na.. Тогда добавим к Р' продукции
где 5' —новый символ, и тогда W-» NU{S'}; в
противном случае N' = N и 5' ■» S. II
Сейчас мы можем рассмотреть удаление циклов из
КСГ. Месторасположение циклов может быть легко
найдено выделением отношения р = {(А, В): А-+В&Р) и
формированием замыкания р+. Тогда ясно, что
произвольное X: Хр+Х должно быть в цикле. Объединим это
вместе со схемой «обратной замены», которая удаляет
19 д. кук, Г. Бевз 289
все нетерминалы внутри произвольного цикла. (Она
также удаляет любую тривиальпую продукцию.)
Алгоритм. Переход от КСГ к эквивалептпой
циклически свободной грамматике.
Вход: Л-свободная КСГ G=(N, T, Р, S).
Выход: эквивалентная циклически свободная
грамматика
G' = {N\ Г, Р\ S').
(Нетерминалы G переименованы: А\ па А„, где га = |ЛП,
5 на Ль а каждую продукцию Р( выражают через
at -*■ £,.) Дополнительно мы используем множество
INCYCLES, а п нотермииалов обозначаем через
REPLACED, где 1 *S i < п. Алгоритм будет иметь
следующий вид:
1) определяем р над N„ так, что ipf тогда и только
тогда, когда Л< -»■ А> «= Р;
2) пусть о = р+;
3) INCYCLES *- 0;
4) for i from 1 to n — 1
do (for j from i + 1 to n
do if {j Ф INCYCLES and
iaj and
}oi )
then (INCYCLES - INCYCLES U {/},
REPLACE/-Л())
5) /^0
for i from 1 to IP|
do (for all к е INCYCLES
in P, replace Ak by REPLACED
giving new P(
if (new *>,£{#, ...,P;}
and at =И= ^i in new P,)
then (/ 4- / + 1, P'j «- new P;))
6) G'=(A/1 INCYCLES, Г, Р', 5). //
Говорят, что КСГ является приведенной, если она
Л-свободна, циклически свободна и редуцирована. Полу-
290
чив собственную КСГ G, мы можем использовать ее для
проверки условия a^L(G) для данного а^Т*.
4.2. Модификации грамматического разбора. Как было
установлено во введении к § 4, задача грамматического
разбора строки состоит в заполнении треугольника
вывода (рис. 8:7) с соответствующим деревом. Конечно,
в большинстве случаев это заполнение нельзя разумно
выполнить за один таг, п обычно оно получается при
помощи последовательности поддеревьев. Эти
последовательности поддеревьев могут быть получены многими
способами; три наиболее используемых способа
изображены на рис. 8.9.
Ч S S
/\ /А /ллА
а,... ...а„ а,... ...а„ а,... ••■а„
а о с
Рис. 8.9
Стратегия грамматического разбор*., изображенная на
рис. 8.9, а, называется грамматическим разбором сверху
вниз. В нем применяют продукции (в некотором
выбранном порядке) к сентенциальным формам, пытаясь
расширить S внутрь строки а\...а„. При таком разборе
естественно использовать в качестве гида часть, строки
(а\...ап), чтобы управлять выводом. Для практических
рассмотрений, согласующихся с чтением а\...ап слева
направо (рис. 8.9, Ь) и желанием начать разбор перед
включением полной строки,, необходимо использовать
начало строки. Следовательно, в поиске сентенциальных
форм, которые начинаются с а\ е Т (и соответственно
исследуя терминальные строки как начальные подстроки
последовательных частей входной строки), мы должны
+ .
отвергнуть возможность выводов вида X =$- Х$ (Х^ N,
ре V+). Таким обра зом, чтобы начать разбор сверху
вниз, мы должны удалить левую рекурсию.
В общем случае это может быть сделапо с
использованием процесса, аналогичного решению системы
линейных алгебраических уравнений.. Чаото возможно
рассматривав одну рекурсию за один раз и удалять ее, ис-
19* 291
пользуя довольно простое тождество. Оправданием такого
+
подхода служит порождаемый язык. Рассмотрим X =ф- Ха.
Путем «обратной подстановки» правых частей
продукций мы можем получить прямую рекурсию как элемент
Р; таким образом, имеем X -»■ Ха I В. Рассматривая это
как полную грамматику над (а, В} (3 представляет все
другие нелеворекурсивные возможности для X),
очевидным образом получаем, что
L(X) = {Ba": л = 0 или пеШ.
Это множество может порождаться таюке продукциями
Х-*ВУ, У^аУ|Л,
которые не являются леворекурсивными (они праворе-
курсивны). Чтобы закончить преобразование, продукция
Х-*-В К должна быть расширена при необходимости до
правильного числа термов.
Пример 4.3. Рассмотрим грамматику с
продукциями
А •* Be \dC, В ■* хА I Се, С •* АЪ\ w.
Она леворекурсивна, поскольку
А =*■ Вс =*■ Сес *> АЪес.
Путем обратной подстановки для С в В и В в А
получаем
В -*■ хА I (Ab \w)e**B -* хА I Abe I we,
А -> ВС 1 dC =s А -> (хА | A be \ we) c\dCzs
si ->■ хАс | Abec \ wee \dC згЛ -> A bee \ xAc | wee | dC.
T g "
Поэтому, используя преобразование
4->ВУ, Y-*aY\A,
получаем
А -+ (хАс \wec\dC)Y^A^ xAcY I wecY I dCY,
Y -+ bee Y I Л, В - хА I Ce,
Заметим, что в этом примере В может быть
«вырезано» и может не принимать никакого участия в
произвольном предложении, порожденном из корня А
(следовательно, надо удалить все следы В из грамматики),
292
Отметим также, что мы ввели Л-продукцию. Эта
продукция, созданная как побочный эффект
«преобразования грамматического разбора», вызвала бы меньше
проблем, чем аналогичная продукция, встречающаяся
естественным образом. Символ В может быть удален при
помощи алгоритма для удаления бесполезного символа.
Хотя обычно будет достаточно частичного удаления
отдельных леворекурсивных цепей внутри Лг, мы должны
использовать матричное обобщепие описанного процесса
для того, чтобы справиться с удалением внутренних
левых рекурсий.
Напомним, что в обычном случае мы заменяем X -*■
-* Ха I р при помощи X -»■ jiV, Y -*■ а У I Л. Если мы
имеем п нетерминалов Х\, ..., Л'„, которые являются
взаимно леворекурсивными, так что не сводятся путем
последовательности обратных замен к простому случаю, тогда
мы можем представить соответствующие продукции
схематически следующим образом:
Xl-+XlAll\X2A2l\...\XnAnl\Bu
Х2-*Х1А12\Х2А22\...\ХпАП2\В2,
Хп -*■ Х\А и I Х2А2пI... I XnAnn \Bn,
где каждое Ац представляет собой остаток всех операций,
которые могут быть выведены из Xj и которые
начинаются с Хц и аналогично каждое Bt представляет все
альтернативы для нетерминалов Xj, которые не начинаются
с элементов {Xi, ..., Х„}.
Теперь, поскольку Ац и Bs являются множествами
строк, отсюда следует, что:
1) если Х,-+Хи то A^Aij',
2) если Xj -*■ а и а ¥• Х$ для fi ^ у*, то a s B};
3) если Х;- AXjf для любого if ^ V*, то Ац = 0.
Следовательно, над алгебраической системой (V*,
®, |) мы можем свести эти продукции к матричной схеме
X-XAIB в Л(п, {V*, О, I)),
или, записывая альтернативный оператор | как +, к
схеме
Х-ХА+В в Л(п, {V*, О, +))\
По аналогии с простым (нематричным) случаем, о кото-
293
ром будет более подробпо сказано в гл. 9, скажем, что
X = BY,
где Y=-AY + I, а I определяется на (V*, ©, +) как
^ ({Л}, если i = /,
i}~\0, если i-ф].
Пример 4.4. Предположим, что S — DmG имеет
следующие продукции:
D-+Dx\Ey\Fz, E-+Da\ Fc,
F-*Dp\Eq\Fr\w.
Таким образом, используя общую схему, получаем
Х.^Х1 Аи | ДГ, А2. | Х3 А3. | В.
xt=>
*2 =
А'з =
D
Е
F
-+Dx
-*~Da
-+DP
1 Еу
1 Eg
| Fz
| Fc
1 Fr
1 ">.
Итак, Xi = 2 BkYki- Поэтому
к
E->wY32, F->wY„, Yij = 2 AvXkj + /«;
следовательно,
Уп — жУн I аУ2х I />FSi I A,
Yu-+ zYl2\aY22 I pY32,
Yl3-+ xYi31 aY23 \ pY33,
Y2i-*yYn\ qY3u
Y22 -+yYn\ qY321 Л,
Y23 -*- yY131 gF33,
r3i-zF„lcF21lrF3i,
Y32-zY12\cY22\rY32,
Y33-*zY13\cY23\rY33\A.
В этом примере преобразования производят ненужные
нетерминалы; удаляя их, получаем
D - «>Уз1,
294
7гх - zYu I cY2l I rY3U
Ум - *Уп I аУ« I Л I A,
Yn + yYii\qYti.
Изменяя соответствующим образом имена, получаем
D + wJ,
J^zK\cL\ rJ,
K-+xK\aL\pJ\A,
L^yK\qJ.
Чтобы нагляднее показать степень трансформации,
приведем здесь дерево грамматического разбора строки
«wcqzayx» для первоначальной грамматики (рис. 8.10, а)
и модифицированной (рис. 8.10, Ь) грамматик.
Рис. 8.10
Удаление левых рекурсий обеспечивает, если это
возможно, вывод строки, начинающейся с требуемого
терминального символа; однако это не гарантирует, что мы
получим только одну такую строку, и, следовательно,
может случиться, что мы пойдем неправильным путем.
Пытаясь избежать неправильных последовательностей
грамматического разбора, мы можем явно использовать
манипуляции, уже встречавшиеся при предыдущих
преобразованиях. Этот процесс называют левой
факторизацией. Процесс требует, чтобы были проведены
продукции, включающие в левую часть данный нетерминал.
Затем расширяют все правые части и те, которые
начинаются с общей подстроки над Т, собирают вместе.
Пример 4.5.
А - хуВ I хуВС I yPQ \yxV^
**A-r хуВ(Л I С) I y(PQ I xV)^ A -+ xyBAx I yA3,
293
где Ai-+A\C, обычно записываемое как СI Л, и Аг-*-
-+PQ\xV. II
Заметим, что мы вновь можем ввести Л-продукцип.
Однако если в настоящий момент нет Л-продукций, то
в заключительных левофакторизованных продукциях и
грамматике не будет левых рекурсий. В этом случае
следующий символ входной строки можно использовать для
того, чтобы непосредственно определить, какие
альтернативы надо использовать для расширения нетерминалов
в сентенциальную форму. Если Л-продукции встречаются
в явном виде, то это вызывает затруднения.
В силу того что Л является ведущей подстрокой
каждой строки над произвольным алфавитом, она всегда
совпадает с началом строки задания, и, следовательно,
никакие последующие альтернативы никогда не будут
рассматриваться. Здесь нет возможности входить в
полный анализ проблемы, однако заметим, что если G =
= (N, T, P, S) и мы определяем
а) FIRST (a) = {х: oiip.ie^Pe У*}
и
б) FOLLOW (а) = {х: бЛ- yaxb, x<=T,yb(= V*},
и если для каждой продукции X -*■ oci I осг I... I а„
а) FIRST(ec()nFIRST(a,) = 0, i+f
и
б) х4-Л,
то
FIRST(X) fl FOLLOW(X) = 0.
В этом случае G можно использовать для
предсказывающего анализа (см. рис. 8.9,6). В таком анализе можно
проверять альтернативы в произвольном порядке, не
применяя Л-выводов, пока все другие возможности не
исчезли. Следующий пример иллюстрирует этот процесс.
Пример 4.6. Предположим, что единственной
продукцией в грамматике является
С -+■ хСх I Л.
Попытаемся провести грамматический разбор строки
«xxi>. Строка отбрасывается, хотя она и законна, потому
что мы вынуждены применить первую продукцию дваж-
296
ды, порождая таким образом неправильное продвижение,
поскольку is FIRST (С) Л FOLLOW (G) и С — А. Это
графически изображено на рис. 8.11.
Использование грамматики С -*■ ххС I Л (рис. 8.12) не
вызывает никаких трудностей в грамматическом разборе,
потому что сейчас хФ FOLLOW (С). /
С С
I
хСх
/ хСх
х х Л Ж Ж
/I
хх С
х х А
Рис. 8.11 Рис. 8.12
Перед тем как завершить параграф, упомянем другой
основной метод грамматического разбора — снизу вверх,
в котором продукции применяют назад, пытаясь свести
строку задания к S (см. рис. 8.9, с). Этот метод
применяют более широко по сравнению с методом сверху вниз;
используя некоторые модификации этого метода, можно
повысить эффективность грамматического разбора.
Упражнение 8.4.
1. Модифицировать грамматику, продукции которой
даны ниже, таким образом, чтобы она не была
леворекурсивной:
A-*Bx\Cz\w, В-*АЬ\Вс, С-*Ах\Ву\Ср,
2. Пусть G •=»(#, Т, Р, S) является КСГ и символ
A s N не является бесполезным символом G. Показать,
что существование одного из следующих выводов в G
влечет за собой неоднозначность G:
+
&) А=$-АуА;
б)
в)
г)
аХ<хА\А§;
А => аА | аА$А;
А^А
причли Г)* и а, ре=(#иГ)+.
297
3. Определить Л-свободную КСГ, эквивалентную КСГ
и определенную как
С-(Ш, {a,b),P,S),
где
Р = {S -> aS6S1 6SaS I Л>.
4. Пусть
G =(U, В, С, D, E, S), {а, Ь, с), Р, 5J,
где
P = {S-+A\B, A-+C\D, B-*D\E, С -* S I а I Л,
Z? -* 5 I 6, 5 -+ S I c I Л).
Найти приведенную грамматику, эквивалентную G.
§ 5. Грамматики операторного предшествования
Важное подмножество КСГ содержит к себе так
называемые операторные грамматики. Это грамматики,
в которых все продукции такие, что никакие два
нетерминала не являются смежными в любой правой части,
п, следовательно, лежащий между ними терминал можно
представить как оператор (хотя не обязательно в
арифметическом смысле). Попытаемся определить отношения
предшествования на множестве ^U{|—» Н)> гДе Ь~ и Ч
суть новые символы, которых нет в V и которые
ограничивают «предложение». Правила определим следующим
образом:
1. а = Ь, если А -*■ аа^Ьу е Р; здесь a, f <= V* и (J e
+
2. а<<£,если А -*■ ааВ$& Р; spfiCbB^ybb,y^N{]{A}
и а, р, 6 е V*.
+
3. а •> 6, если А -*■ aBb$ e P; здесь #=>y«Sj бе^и
U (Л) ио,Рле У*.
+
4. J- <• ах если S=>aaPi aei^UlA}] Ре А*.
5. a»>-Jj если S=s-aap, P«=./V(J{A}, аеГ*.
Символы<•,= и>> обозначают отношения
предшествования (читается как «имеет меньшее старшинство,
чем», «имеет такое же старшинство, как», «имеет
большее старшинство, чем»); при условии но не более од-
ного такого отношения справедливо между двумя
произвольными операторами из ГиЦ-'ЧЬ
соответствующую операторную грамматику называют грамматикой
операторного предшествования.
Хотя она и является гораздо более сложной, чем
другие виды грамматик, встречавшихся до сих пор, понятие
предшествования может быть введено так, что будет
совпадать с обычным старшинством арифметических
операторов и будет расширено до операторов, действия
которых важны с точки зрения вычислений, однако обычно
считаются само собой разумеющимися при вычислениях
«на бумаге».
Пример 5.1.
Е-+Е + Т\Т, Т-+Т*Р\Р, Р-*(Е)\х.
Для этой грамматики отношения предшествования
приведены в виде таблицы на рис. 8.13. /
ь
+
*
(
)
з>
+
<•
>
•>
<•
>
>
*
<
<•
•>
<•
>
>
(
<•
<•
<
<
)
•>
•>
=s
>
>
X
<
<•
<
<•
н
•>
•>
•>
•>
Рис. 8.13
Для того чтобы увидеть, что происходит в
действительности, рассмотрим этап внутри вывода предложения
(- х* (х + з)—|, Из правила 2 определений
предшествования видно, что для символов * и ( имеем
Т-уТ*Р, рХ(Е).
Таким образом, выполняется отношение * <• (, и
поэтому поддерево Р должно быть вычислено перед
вычислением Т * Р; следовательно, действие, связанное с «(»,
которым является удаление этой и парной к ней
закрывающей скобки, выполняется перед действием,
обозначенным «*». (Графически ситуацию можно представить
так, как это сделано на рис. 8.14. Здесь для правила 2
имеем А = Т, а^Т, о=», В^Р, Р = Л, "( = Л, b^( a
б з= Е. Отсюда видно, что основная структура грамматик
299
операторного предшествования является простой и
естественной, однако выглядит сложной при записи из-за
общности правил.) Заменяя х целыми числами 2, 3 и 4,
/К А
X X i E ) у Ь д
а Арифметическая Ь Синтаксическая с ОЬш,ар /ровна
структура структура правила Z
Рис. 8.14
получаем \- 2*(3 + 4)-\. Записывая отношения
предшествования под этим выражением, видим, как
определяется порядок вычислений
h 2 *;
<• •>:
а) выберем число 2 и сохраним его в стеке:
h * ( 3 +,
<• <• <• ■>;
б) аналогично удалим 3 из выражения и поместим
в стек:
h * ( + 4 ),
<• <• <• <• •>;
в) с 4 поступим подобным образом:
h * ( + ).
<• <• <• •>;
г) выполним сложение двух верхних элементов в
стеке и результат оставим там ate; удалим символ +:
h * ( ).
<• <• =;
д) отбросим скобки:
h * -\,
<■ •>;
300
е) произведем умножение двух верхних элементов
стека, оставляя результат в стеке; удалим символ •:
Ь Ч;
ж) останов из-за отсутствия отношений
предшествования; ответ находится в стеке.
Конечно, вместо выполнения арифметических
операций мы могли бы породить код и после этого вычислить
выражение — это как раз то, что сделал бы компилятор.
Упражнение 8.5.
1. В проведенном ранее обсуждении привлекаемая
семантика принималась само собой разумеющейся, однако
она была тесно переплетена с грамматической
структурой. Показать, что каждая из следующих грамматик
является грамматикой операторного предшествования,
и исследовать, как ее внутренняя семантика отличается
от обычных соглашений:
Р, - {Е -> Е • Т | Т, Т -» Т + Р I Р, Р -+ (Е) I х),
Р2 = {Е-*Т + Е\Т-Е\Т, Т-*Т*Р\Р, Р^(Е)\х).
ГЛАВА 9
КОНЕЧНЫЕ АВТОМАТЫ
Автоматом является устройство, управляющее и
контролирующее само себя. Обычный компьютер с
программой способен при достаточном запасе эпергии
контролировать сам себя и, следовательно, является автоматом.
Как таковые, компьютеры изучались много лет, однако
более естественно рассматривать программу и машипу,
в которой она содержится, как отдельные компоненты.
Конечно, для выполнения вычислений нам нужна не
только программа, но и машина, на которой эти
вычисления могут выполняться. Однако здесь мы не
стремимся приступать к детальному и:течению теории
вычислений, поэтому, за исключением тех случаев, где это
необходимо для полноты, мы ограничим наше внимание
математическим описанием некоторых конечных машин.
Несмотря на эти замечания, мы начнем (в § 1) с
общего введения, которое показывает границы того, что
машины могут выполнять. Далее (§2) мы изучим
математические модели устройств (обычно их малые
фрагменты), а затем (в § 3) связанную с этим алгебру.
§ 1. Общие понятия
Все используемые на практике компьютерные
устройства ограничены (некоторым образом) количеством
информации, которую опи могут хранить,— они конечпы.
Цель данного параграфа — показать, как можно делать
утверлгдепия о программах без утомительного
рассмотрения синтаксических деталей; затем мы
продемонстрируем, что даже при отсутствии ограничения па размеры
памяти существуют задачи, которые нельзя решить.
1.1. Универсальная машина. Несмотря на
использование многочисленных различных типов данных в
множеств символов внутри реальных программ, для
теоретического изучения достаточно ограничиться
рассмотрением программ, которые действуют на множестве F = Ntf
U {0}, Это равносильно изучению программ, вычисляю*
302
я,
f>u
r3
Рис. 9.1
щих теоретико-числовые функции, которые будут
введены в § 2; наша непосредственная задача — описать
идеализированный компьютер, позволяющий запоминать
элементы V, с которыми можпо
осуществлять преобразования, и дать
детальное описание того, как могут
быть представлены программы для
машины.
Предположим, что машина имеет
память, состоящую из
неограниченного числа регистров: It\, /?2, /?з и
т. д., и что содержание каждого
регистра Rt есть п е V. Это можно
изобразить так, как это сделано на
рис. 9.1.
Для более ясного изложений
удобно разрешить использование
многих операций,, действующих «ад
регистрами, однако па самом деле необходимы лишь две
операции:
Rn+-Rn+\, Rn*-Rn-l.
Обозначая содержимое регистра п до операции и после
через г„ и гп соответственно, можно описать результаты
выполнения этих операций следующим образом:
Д„-*-Дя + iss r'n = rn -1-1,
frn —1, если г„>0,
(О, если гп = 0.
Кроме операций, изменяющих значения регистров
памяти, необходимо, чтобы машина имела связь с
программой для того, чтобы влиять на ее работу. Необходимой
в этом случае является только одна операция, а именно
та, которая осуществляет сравнение /?,,—0. Однако, как
и прежде, мы будем разрешать более общие формы
операций такого рода. Результат /?» = 0 справедлив тогда и
только тогда, когда г„= 0, и это условие используется
для управления программами. Множество регистров
вместе с описанными выше определениями называется
машиной с неограниченной памятью (МНП).
Программы состоят из конечной совокупности
операций, занумерованных от 1 до некоторого n^N. Мы не
будем вдаваться в детали, а выведем-более общие
заключения об этих программах. Поэтому не будем давать
формального определения такой структуры. Рисунков 9.2 и
зоз
Rn ■*- Rn — i=s rn
9.3 достаточно, чтобы понять, какого рода конструкции
допустимы в ней.
Программа на рис. 9.2 не предназначена для
выполнения особо разумных вычислений, однако она указывает
/Л>^* И о"*
л», ♦/?,+?
I
R3~R3-1
Рис. 9.2
вид блок-схемы программы для нашей машины.
Заметим, что все это может быть записано не обязательно
в виде рисунка. Например, можно напасать:
1: если /?2 "= 0 то перейтп к 4 иначе перейти к 2
2: Ri *- Ri — 1 (затем перейти к 3)
3: Ri +- Ri + 1 (затеи перейти к 4)
4: если R% — 0 то перейти к 6 иначе перейти к 5
5: Re ■*- Дз — 1 (затем перейти к 2)
б: STOP
На рис. 9.3 представлена более общая форма
программы, в которую включены макрокоманды lu а
проверки Г|. Это могут быть стандартные команды того
типа, который уже определен, или же они могут быть
представлены последовательностью основных команд, кото-
604
рым для удобства чтения даны имепа (подобно
подпрограмме), детали которых уже где-то определены. Такие
последовательности будем называть
макропоследовательностями.
Сейчас мы можем описать некоторые из этих
макропоследовательностей, которые обеспечат связь с
последующими темами, а также помогут убедить читателя,
Рис. 9.3
Рис. 9.4
что наше небольшое число простых команд на самом
деле является достаточно мощным средством.
Пример 1.1. Bt *- О может быть реализовано
следующим фрагментом программы, где метки х, у в г
выбраны так, чтобы не пересекаться с другими командами
в программе:
х: если Rt ■= 0 то перейти к z иначе перейти к у
у: Д( *- Rt — 1 (затем перейти к х)
г: ?
В терминах блок-схем этот фрагмент программы
изображен на рис. 9.4.
Пример 1.2. Сейчас, определяя макрокоманду,
удовлетворяющую предыдущему примеру, и включая в
явном виде выражения «go to» («перейти к») только тог-
20 д. кук, Г. Бей*
809
да, когда мы уклоняемся от выполнения команды «go to
next instruction» («перейти к следующей команде»), мы
можем дать раскрытие формулы Л< ■*- т (для некоторого
meN):
Дм-О
Ri*-Ri+ 1
i?f4-i?i + l
R^Ri + i
т раа
Очередное расширение множества комапд требует
использования «рабочей памяти». Мы будем предполагать,
что по крайней мере в простейших случаях читатель в
состоянии придумать подходящую стратегию работы с
памятью, и, следовательно, не будем специально
упоминать о том, как выбираются эти дополнительные penter-
ры. Случаи, когда количество требуемой памяти
неизвестно (такие, как стеки и т. п.), будут рассмотрены
ниже *).
Пример 1.3. Используя Rh в качестве рабочего
регистра, мы можем скопировать содержимое Rj в /?(
(Rt*-Rj). Делая это, мы уничтожаем содержимое R<,
которое в дальнейшем должно быть восстановлено.
Следующая программа осуществляет требуемые вычисления:
R„*-0
х: if Rj = 0 then go to у
Rk*-R„+i
Rj ■*- R} — 1 then go to x
y: Ri - 0
w. if Rk = 0 then go to z
Ri^Ri+l
Ri^Ri+1
Rh*-Rh— i then go to w
z: II
Сейчас мы вернемся к «собственно» арифметическим
вычислениям. Сложение и вычитание строятся
непосредственно, однако, поскольку в регистрах существуют огра-
*) В дальнейшем будем использовать символы: «go to z» —
«перейти к z»; «if <условие> Ihen ^оператор)»—«если (условие),
то <оператор>»; «else»—«иначе»; «шеп go to z»—«затем перейти
к ж»,— Примеч. пер.
зов
ппчения на значения велпчип, операция вычитания
должна быть несколько модифицирована. Подобным же
образом можно выполнить умножение и усеченное
деление.
Пример 1.4. Сложение Rt •*- Rt + Rk, имеющее
результатом Г{ = г; -1 rh, может быть выполнено
следующим образом:
Rt *• Я*
х: if /?> = 0 then go to у
Rt *- Л, + 1
Rj ■*- Rj — 1 then go to x
У-
Чтобы получить полную программу в терминах основных
команд, мы должны расшифровать макрокоманду «Rj —
-*-/?»», как это было сделано в примере 1.3. С этого
времени мы не будем требовать доказательства таких
расшифровок.
Подобным образом «ограниченное вычитание» Rt +-
*-Rf — Rk может быть выполнено как
Rj+-Rh
х: if Rj = 0 then go to у
Л,+-Я,-1
Rt ■*- R{ — 1 then go to x
У-
Заметим, что если первоначальные значения Я< и Rk
были такие, что г( < п,, то после г< итераций операция Rt +-
— R(— 1 не будет иметь эффекта.
Аналогично Rt-*- Rt* Rk может быть представлено как
Л,-О
Л,-Я»
х: if Ri = О then go to у
Л, - Л, - 1
Ri — Rj + R{ then go to x
y: Rt*-R) И
В большинстве случаев таким же способом, каким может
быть расширепо мпожество операций над регистрами
путем определения макрокоманд, можно также ввести ко-
20* 307
манды сравнения, которые на первый взгляд
оказываются более сложными, однако в действительности строятся
из последовательностей стандартных операций и
операций сравнения.
Пример 1.5. Мы можем записать операцию «if Ri>
>Rk then go to x else go to j/» («если Rt>Rk, то перейти
к x; иначе перейти к у») следующим образом:
Ri+-R<
Ri *- Rj — Rh
if Rj = 0 then go to у else go to x
Этими операциями условного перехода мы можем
дополнить наше множество первоначальных
арифметических операций вместе с операцией деления «7?( *- Rs -f- Rk,
где r( = 0, если rh — 0». В нашем случае этой операции
соответствует следующий алгоритм:
Л,*-О
if Rk = О then go to x
у: if Rt<Rk then go to x
Rt*-R,+ 1
if Ri = R„ then go to a:
Ri*-Rt — Rk then go to у
x'. Ri *- Ri
Из менее общего, но необходимого приложения,
которое кратко приведено ниже, следуют две операции,
связанные с точностью усечения при делении целых
чисел.
Пример 1.6. Если л^О, операция «если Rk —
делитель Rit то перейти к х; иначе перейти к у»
действует следующим образом:
if Rh = О then go to у
R,+-Ri
R,+-R, + Rk
Rj-*- Rj* Rj,
if Rj = R( then go to x else go to у
При помощи этой (возможно, несколько странной)
операции и операции сравнения вида Rt = m (оставленной
в качестве упражнения) мы можем проверить, является
ли г( простым числом.
308
Ясно, что можно операцию «если Rt простое, то
перейти к х; иначе перейти к у» смоделировать следующим
образом:
if R> = 0 then go to у
if Rt = 1 then go to у
Ri^-Ri- 1
z\ if Ri = 1 then go to x
if Ri делитель R) then go to у
Ri *- Rt - 1 then go to z //
Перед последним примером этого параграфа мы
должны упомянуть, как в машине вводятся данные и
выводится результат. Предположим, что мы хотим вычислить
значение теоретико-числовой функции /: V -*■ Vm.
Значения пат известны перед началом выполнения
соответствующей программы; поэтому мы можем вначале
выделить п регистров (в которые должны быть загружены
начальные значения перед началом выполнения
программы) для входных данных и т регистров (которые не
должны быть обязательно отличными от выбранных
вначале) для выходных данных. Когда программа
останавливается, мы предполагаем, что некоторый «внешний
представитель» может выдать «ответы» из
соответствующих мест. Это, конечно, разумный путь моделирования
потоков данных в программе, поскольку точно
показывает взаимодействие операций ввода-вывода. С этими
соглашениями пример 1.7 может рассматриваться или как
полная программа (в которой Rt и Rt выбраны как
входные и выходные регистры), или как схема для
подпрограммы.
Пример 1.7. Последовательность команд
приведенных ниже, помещает п-е простое число в Rh где п
является содержимым Ri\ предполагается, что п не равно
нулю:
(Start)
Я»-Д,-1
х: if R„ = 0 then go to у
R> - R, + 1
z: if R} простое then go to w
R, *- R, + 1 then go to z
309
w: Rk-<-Bk — 1 then go to x
y: (stop) II
Сейчас мы объясним наш очевидный интерес к простым
числам.
1.2. Кодирование программ. Программы п. 1.1 могли
работать с элементами из V = N U {0}. Мы должны
объяснить, как в принципе можно любую программу
рассматривать в качестве программы такого типа. Это можно
сделать, описав способы, при помощи которых различные
типы данных могут быть закодированы в элементы из V.
Для этого рассматриваем данные предложения над
подходящими алфавитами и, следовательно, почти как
постороннее следствие этого процесса получаем также
метод для кодирования предложений на языках
программирования, а именно сами программы.
Основное математическое средство, используемое для
этой цели, это теорема о единственности разложения,
известная также как основная теорема арифметики. Эта
теорема устанавливает, что произвольный элемент из V
является или 0, или 1 либо может быть выражен
единственным образом как произведение упорядоченных
простых чисел. Ясно, что если п е F\{0, 1} и
п = ?1 • ?2 * ... # 3< = st • S2 * ... * sh
где зь • • ч Si» si» • • ч Sj — все простые числа такие, что
3i < 32 < • • • < ?«, «1 < «2 «3 ... < Sj,
то i = / и s„ = з* для всех к, 1 < к < i. Напомним, что
простые числа — это элементы из N, которые делятся
только на 1 и на самих себя.
Полное доказательство этой теоремы несложпо, но
его запись существенно отвлекла бы нас от основной
задачи. Поэтому вместо доказательства мы предлагаем
рассмотреть конструкцию алгоритма
(процедуры/программы) для выделения упорядоченных простых множителей
Зь ..., 3' Для любого данного га. Таким образом, избегая
деталей ввода и вывода, мы можем использовать схему,
представленную на рис. 9.5.
Предположим теперь, что некоторая программа
читает данные, которые состоят из последовательности
символов алфавита А = ix, у, z). Произвольно выбирая
порядок ф для элементов из А, можно получить ф(1) = .г,
ф(2) = #, ф(3) = г. Если вводимая последовательность i
имеет длину га и выражается как aia2...ct„, где <х(е=л,
310
тогда существует последовательность
qr1(ai)qr1(a2)...qr'(a»)
лад {1, 2, 3>. Взяь первые п простых чисел pi, ..., />„, мы
можем составить число
<f~Hai) _ *~4ai)
= Fl
назовем его Ф(о^. Пусть по соглашению Ф(Л)= 1.
Чтобы проиллюстрировать использование этой общей
формулы, закодируем строку «xyxz» посредством 1, 2, 3
Zчитать п 7
Rj~Rk
f?i~-2
(*t°PJ
Ri~-Ri + 1
/ 8ы8од Ri/
Rj+Rj-rRt
Рис. 9.5
следующим образом: 2'325'73-= 30870. Используя
теорему о единственности разложения на простые множители
и тот факт, что Ф"1 является биекцией, имеем, что
«a:i/jrz» является единственной строкой над А, которая
дает это значение. Следовательно, применяя Ф, мы можем
811
«обратить» вычисления, чтобы восстановить строку
«xyxzi>.
При помощи этой процедуры все строки над А можно
закодировать таким образом, чтобы они имели разные
значения в множестве V. Это в силу упорядоченности,
индуцируемой Z (поскольку FsZ), влечет
упорядоченность строк из А*. Например, «xy»><tyx».
Необходимо отметить два фактора, связанных с этим
методом. Во-первых, поскольку А конечно, в N
существуют значения, которые не являются кодами какой-либо
строки в А* (например, не существует а&А* такого, что
Ф(а) = 25, так как иначе а^А: <р_1(5) = а, а такого а не
существует). Во-вторых, поскольку элементы А*
являются неограниченными, то таковыми являются и коды.
(Для любого п е N возьмем простое рт > п и рассмотрим
строку
а = ai... ат... ote
такую, что \а\ > т; тогда отсюда следует, что
Ф («) - П рГ™ > рГ™ > А - Р. >!..)
1=1
Используя методику, описанную в § 3 гл. 3,
преобразуем кодирование Ф так, чтобы получить новое
кодирование, которое сохраняет порядок, полученный Ф, но
использует все V. Это один из тех случаев, когда трудно
дать арифметическую формулу для вычисления
измененных кодов, однако все еще достаточно легко описать
способ их получения.
Очевидно, что новое кодирование Ч* с областью
значений V ведается формулой ai-»-|{{3: Фф)<Ф(а)}|.
В частном случае для рассмотренного в примере
множества А и его упорядочения <р первые десять значений Ф
и Ч? приведены в табл. 9.1.
Таблица 9.1
Строка a
Ф(а)
V(o)
Л *
1 2
0 1
и
4
2
XX
в
3
*
8
4
У*
12
5
*У
18
6
гх
24
7
XXX
30
8
УУ
36
9
Чтобы получить эти .коды и выполнить процедуры
кодирования, требуется машина, способная понимать и
создавать символы вне алфавита D — {0, 1,2,..., 8, 9), на
котором определены элементы множества V. Для этого
312
необходимо только устройство, позволяющее имитировать
действие ф (и <р-1), некоторым простым способом
воздействуя на таблицу ввода-вывода; остаток процедуры
кодирования, включающий Ф п W, можно потом учесть при
помощи машины с неограниченной памятью.
Следовательно, любой ввод в данную компьютерную
систему может рассматриваться как конечная строка
(взятая из потенциально бесконечного множества строк
над некоторым конечным алфавитом), и если применить
описанный выше процесс к соответствующему алфавиту
А, то эту строку можно преобразовать в единственный
элемент V. Обратная процедура, примененная к
полученному значению из V, дает значение над другим
алфавитом В.
Следовательно, программа Р: А* -*■ В* похожа на
соответствующую программу Р': V -*■ V, где
Р: а~ Ф*1 (Р'(Ф(а))), Р': п~Ф {Р (ф-1 (и))).
Величина используемых значений даже в простых
ситуациях делает примеры непригодными, однако связанные
1
*-Д* ч В I
<Р
\?«J
I ~-1 р i 1
| a-2-+bz--at...am—+-/3=fr...JiJ,+2-b\
♦ ' I т
т
/
/
/
/
/ т
Ф
Ф
Л Р
<Р
J—I tA м J \ 1
Рис. 9.6
диаграммы па рис. 9.6 восстанавливают сущность
пропущенных этапов,
813
Переходы, включающие детальную спецификацию Р',
являются сложными и не обязательно соответствуют Р
«очевидным» образом. Однако если Р вычислимо, то и
Р' вычислимо.
Как отмечалось выше, мы можем также применять
такие же кодирующие процедуры к программам, и,
следовательно, расширив W таким образом, чтобы можно было
игнорировать семантически неверные программы так же,
как и программы, включающие синтаксические
ограничения, можно перечислить все программы для данной
системы, использующей числа из V. Мы предполагаем,
что для того, чтобы программа превосходила любое
заданное в V число, к ней можно добавить неограничеппое
множество кодов, которые содержат произвольно много
нулевых утверждений, таких, как lit -*- R(. Однако в
большинстве языков программирования существует
много избыточности в синтаксисе; поэтому в лучшем случае
мы будем обращать внимание только на лексические
знаки. Прежде чем пытаться сделать замечания общего
характера, рассмотрим, что можно сделать с простым
языком, который использовался ранее в машине с
неограниченной памятью. Существует четыре типа команд:
х: Ri *- Rt + 1 then go to у
x: Rt *- Rt — 1 then go to у
x: if Ri = 0 then go to у else go to z
x: stop
(Без потери общности мы можем предполагать, что все
программы начинаются с команды, помеченной
индексом 1.) Все, что мы должны знать из команды х,— это,
какой тип операции должеп выполняться, на каком
регистре и какая команда выполняется следующей. Для
того чтобы можпо было использовать ту же самую схему
для всех команд, введем формат
(тип, регистр, правильный выход, неправильный выходу.
Обозначая команды «останов» («stop»), «больше»,
«меньше» и «равно нулю» через 0, 1, 2 и 3 соответственно,
получаем Ф-уровпевоо кодирование типичных
утверждений, как показано ниже:
Ф(R, *-Rt+l then go to у) — 2lblbvV
Ф (Я, - Л, - 1 then go to y) = 223'5*7»
Ф{\\ Л( = 0 then go to у else go to г) = 233'5»7*
O(stop) = 203°507° = l.
314
Поэтому команда Ф содержит всю информацию,
необходимую для ее выполнения или, если необходимо, для
перехода к следующему шагу выполнения программы.
Поскольку все строки в А* конечны, а блок-схема
программы для машины с бесконечной памятью сверху
не ограничена, то каждая отдельная программа имеет п
утверждений, neN. Тогда можно распространить Ф на
программы следующим образом:
п 1>(Sj)
Ф (prog) = IP* .
где «prog» состоит из п помеченных утверждений, из
которых £-м является st.
Из Ф(ргод) можно получить Ф(я() выделением
компоненты pt, и, следовательно, разлагая это- значение на
простые сомпожители, мы можем узнать детали
утверждения, помеченного номером i.
Используя подходящую «урезающую» функцию У,
мы получаем кодирование, которое является биекцией
между ^, множеством всех программ для машины с
бесконечной памятью и V.
1.3. Проблема останова. Теперь мы можем доказать,
что конструкции некоторых общих программ
невозможны: не только потому, что мы не находим решения, но
и потому, что решение может не существовать.
Формальные доказательства ограничим рассмотрением двух
основных случаев. Первое из доказательств получим,
исходя из начальных принципов, а затем докажем, как
второе выводится из первого, иллюстрируя, таким
образом, общее использование техники сведения одних задач
к другим. После этого сформулируем перечень проблем,
относительно которых будет показано, что они
неразрешимы подобным образом.
Строго говоря, все утверждения, приведенные ниже,
относятся к программам па машине с бесконечной
памятью со специальным кодированием функций Чг1 и Ч'г.
Однако, задав произвольную «универсальную» .машину
и подходящий язык программирования, мы в состоянии
построить адекватные кодирующие функции, и,
следовательно, полученные результаты применимы и в общем
случае.
Первой задачей, относительно которой мы докажем
ее неразрешимость, является задача самоприменимости.
Теорема. Для машины с бесконечной памятью не
существует программы, которая для чюбой заданной про'
315
ераммы А при ее кодировании а = ^¥ i (A) будет оста-'
навливатъся с выходным значением О, если А(а)
останавливается (г. е. программа А останавливается, если
входное значение равно а), и с выходным значением 1,
если А (а) не останавливается.
Доказательство. Будем строить доказательство
от противного. Предположим, что такая программа
существует; назовем ее В. Итак, В (а) останавливается с
результатом, равным 0, если а приводит программу А
к останову, и с результатом, равным 1,
если а не приводит к останову А.
Изменим программу В следующим
образом. Заменим команду останова
условной петлей, так что, если выходной
регистр имеет значение 0, мы обходим эту
команду; в противном случае — останов.
Назовем эту программу С (рис. 9.7).
Имеем следующее: С(х) останавливается (и
имеет то же самое выходное значение,
что и В{х)) тогда и только тогда, когда
выходное значение равно 1.
Рассматривая С при входном значении
с==Чг(С), получаем противоречие: так
как С {с) останавливается тогда и только
тогда, когда С(с) = В(с)= 1, то В(с)=1
тогда и только тогда, когда С (с) не останавливается.
Отсюда следует, что С не может существовать, а поэтому и
В не существует. /
Предыдущее доказательство по стилю подобно тому,
которое использовалось, чтобы опровергнуть
существование множества Рассела в примере 1.1 гл. 1. Кажется, что
оно но^ит тривиальный характер, однако, подобно многим
другим кратким математическим рассуждениям, является
достаточно тонким. Следует на это обратить внимание
перед тем, как использовать этот факт при
доказательстве более общего результата — неразрешимости проблемы
останова.
Теорема. Для машины с бесконечной памятью не
существует программы, которая по произвольным входным
данным, представляющим программу и ее данные, будет
определять, останавливается программа на этих данных
или нет.
Доказательство. Покажем, что если бы такая
программа существовала, то мы могли бы путем выбора
правильных входных данных решить проблему самоприл
316
менимости. Поскольку последнее невозможно, то отсюда
будет следовать, что решение проблемы останова также
невозможно.
Очевидно, что программа требует ввода двух сортов
даняых: а(=Чг1(Л))—кода программы А и а;(==Чг2(-У)),
где X— входные данные для А. Это может быть
закодировано обычным путем — с использованием двух
различных простых чисел р и q. Пусть входные данные будут
p"qz, а предположим, что существует программа для
решения нашей задачи; назовем ее В. Тогда B(paq*)
останавливается с результатом 1, если А(Х) останавливается,
и останавливается с результатом 0, если А (X) не
останавливается. В этом случае из В можно создать новую
программу С, добавляя к началу В последовательность
команд, которые превращают содержимое i-то входного
элемента в (pq)'. Тогда
/ » »ч |1> если А (а) останавливается,
C(a) = fi(pV)= ' .
4 ' 10, если А(а) не останавливается.
Следовательно, С решает проблему самоприменимости,
о которой мы знаем, что она неразрешима. Следовательно,
С не существует, а поэтому не существует и В. II
Проблема останова является классическим
результатом о неразрешимости в теории компьютеров.
Приведенное здесь доказательство использует общую технику
сведения одной задачи к другой. Далее показывается, что
первая задача неразрешима, поскольку если бы это было
не так, то была бы разрешима и другая задача, о которой
известно, что она неразрешима.
Используя этот принцип (и соответствующие
конструкции, детали которых здесь опускаются), можно
показать, что многие другие проблемы также неразрешимы.
В частности, неразрешимы следующие проблемы:
а) останавливается или нет произвольная программа,
если входное значение равно 0;
б) останавливается или нет произвольная программа
при любых входных данных;
в) выполнено ли равенство L(G)=0 для
произвольной контекстно-зависимой грамматики G;
г) выполнено ли равенство L(G\)(\ L,(G%) = 0,
где G\ и Gi — произвольные контекстно-свободные
грамматики;
д) выполнено ли равенство L(G)—T*, где G = (N, T,
Р, S)— произвольная контекстно-свободная грамматика;
317
е) выполнено ли равенство L(Gi) = Z/(G2), где G\ a
Gi — произвольные контекстно-свободные грамматики;
ж) является ли произвольная контекстно-свободная
грамматика неоднозначной.
1.4. «Расширенная» машина. Насколько реалистичной
является машина с бесконечной памятью в качестве
модели компьютера? Память такой машины, очевидно,
превосходит память любой существующей машины, которая
подвергается ограничениям как на число .регистров, так
и на значения, которые могут содержаться в каждом
регистре. Однако эта идеализация в пределах машины с
неограниченной памятью расширяет, а пе ограничивает
возможности машины. Существуют ли аспекты в
компьютерных системах, которые не могут быть смоделированы
на машине с неограниченной памятью?
Мы утверждаем, что нет. Хотя формально мы не
можем доказать это высказывание, остановимся на основных
моментах такой «расширенной» машины, которая может
моделировать все нужные свойства, хотя в качестве
абстрактной модели она применяется редко.
Нас будут интересовать следующие свойства:
а) большой набор операций;
б) более широкий набор внешних типов данных;
в) массивы;
г) стеки;
д) более сильные команды управления;
е) общий механизм управления;
ж) рекурсия.
В пп. 1.1 и 1.2 мы показали, как в случав а) можно
добавить арифметические операции к множеству команд,
а в случае б), добавляя простые периферийпые
устройства (для того чтобы иметь возможность работать с
символами, которых пет в машине с неограниченной
памятью), можно расширить диапазон представлений
входных и выходных данных над произвольным
алфавитом.
Остановимся на работе с массивами. Предположим, что
нам необходим массив с десятью компонентами A[i], ...
..., А [10] и что содержимое этих регистров суть ац ..., аю.
С помощью методики, которая уже использовалась, ми
можем сохранить эти значения, вводя величину
10
а = П pV,
которую затем можно запомвить в одном регистре. Мы
318
**-' ,
*т
*»=z
«оП "
sv
«^ '
■ /•'
2:
9
?
уже описывали процедуру выделения каждого а< из а.
Этот метод не зависит от границы массива и поэтому
переносится иа случай работы со стеками. В стеках
можно хранить результаты промежуточных вычислений, не
требуя существенно больше регистров. С помощью
подходящего механизма управления (см. ниже) мы можем
также поместить в стек адреса возврата из подпрограмм.
Любая программа на машине с неограниченной па-
Мятью конечна, и строки программы могут быть
пронумерованы (помечены) числами от 1 до п, п eN. В
контексте блок-схемы программы мы можем сконструировать в
случае е) «вычисление
goto», используя
табличную технику,
данную выше, для того,
чтобы получить «go to{Rk)»,
как указано на рис. 9.8.
Используя схему
прямого кодирования
для программ Ф (а не
Чг), мы можем
закодировать всю программу
одним значением,
которое запоминается в
регистре. Разложение на
простые множители
затем может
использоваться для выделения
кода «следующего
утверждения». Это
моделирует свойство ж), а
вместе с использованием
курсии з).
Следовательно, используя машину с неограниченной
памятью, можно произвести «расширение» путем
добавления этих свойств. Однако в действительности такие
расширения носят лишь внешний характер, а
результирующая система может быть смоделирована с
использованием другой машины с неограниченной памятью, у
которой блок-схема программы состоит из простых команд
увеличения, уменьшения и «равенства нулю».
Упражнение 9.1.
1. Построить на машине с неограниченной памятью
блок-схему программы, осуществляющей проверку
«Л( = т».
Рис. 9.8
стеков дает возможность ре-
319
2. Спроектировать машину с неограниченной памятью,
которая, если дана программа, закодированная в До,
будет выполнять эту программу. (За основу взять
кодирующую схему пз п. 1.2.)
§ 2. Конечные автоматы
Уже достаточно много сказано об универсальных
машинах (их свойствах и ограничениях на эти свойства),
которые могут вычислять все, что вычисляется, и,
следовательно, проводя рассуждения в обратном порядке,
получим, что любая вычислительная проблема, которая
неразрешима в такой общей системе, будет неразрешима и
в любой другой системе. Однако возникает вопрос: как это
связано с реальными компьютерами? Основная
проблема — это конечность памяти реальной машины (правда,
и ее можно несколько сгладить, используя машину с
неограниченной памятью, описанную в п. 1.1). Машина с
неограниченной памятью состояла из неограниченного
числа регистров, каждый из которых имел возможность
содержать любое число из множества V. Хотя, как это
следует из построений п. 1.4, мы можем обменять
«короткую и широкую» память (имеющую несколько
регистров, каждый с большой емкостью) на «длинную и
тонкую» память (в которой емкость каждого регистра
уменьшена, зато число регистров увеличено), существенное
ограничение состоит в конечности числа различных
конфигураций или состояний, которые может принимать
память. Такое ограничение вызвано физическими
ограничениями. Это понятие формирует основу нашей
математической модели конечных машин.
2.1. Детерминированные машины. В соответствии с
опытом электронного машиностроения (низким уровнем
аппаратуры при построении элементов типа «не и» и т. п.,
микропроцессорных систем или универсальных цифровых
машин) наша первая модель воплощает в себе понятие
детерминизма, т. е. если некоторая ситуация достигается
более одного раза, то в каждом случае устройство ведет
себя одинаковым образом. Начнем с формального
описания.
Определение. Конечным (детерминированным)
автоматом М называется алгебраическая структура
M = {Q,2,t,qotF,p)t
320
где Q—непустое множество состояний; 2—конечный
входной алфавит; t — отображение Q X 2 -* Q,
называемое переходом (или функцией переходов);
дое(?—начальное состояние; FsQ, F — множество заключительных
состояний (или принимающих состояний); р — функция
(?Х2-*2, называемая функцией печати (или функцией
выходов).
(В некоторых случаях полезно модифицировать
функцию выходов таким образом, чтобы она имела вид р: QX
Х2-»-2', где 2' — некоторый другой алфавит.)
Идея состоит в том, что мы начинаем из состояния до,
и если <7ie£(go, s), то под действием входного символа s
автомат переходит в состояние qt. Аналогично, если
(<7о, s)^Dp, то, когда автомат перейдет в состояние (go, s).
па выходе появится p{qo, «)• Продолжая таким образом
и читая каждый раз очередной входной символ, будем
переходить от одпого состояния к следующему, пока или
не прочитаем символ, которого нет в 2, или входные
данные будут исчерпаны — в этих случаях обработка
прекращается.
Входная последовательность называется представпмой
(автоматом М), если состояние, в которое перешел
автомат М, принадлежит F. Для наглядности рассмотрим
пример. Однако прежде опишем представление М в виде
диаграммы.
Во-первых, мы представим элементы Q вершинами
ориентированного графа, которые изображаются
маленькими кругами; имя состояния указывается внутри круга.
Элементы из F имеют дополнительные круги,
начерченные вокруг маленьких кругов. Если ((g(, Sj), qk)^t, то
проведем ориентированное ребро от д< к д» и пометим его
символом Sj. Далее, если ((д(, s,), s,)^p, то пометим
ребро через s,: s,. К одному и тому же ребру может быть
добавлено несколько меток. Наконец, определим до
стрелкой, входящей в до.
Пример 2.1. Рассмотрим машину, изображенную на
рис. 9.9. Предположим, что мы читаем строку ааЪЪаа».
Ребра, обозначающие функции перехода, заставляют
машину проходить через состояния go, gi, дг. gii go и gi в
указапном порядке. Легко видеть, что, начиная с до, под
действием £ получаем
(д0, а) — дх, (qv b) i- g2, (g2, b) i- qv
(q1,a)<-*q0, (qQ, a) -» qv
21 Д. Кук, Г. Б?йз 321
Однако q\ не является заключительным состоянием, и
поэтому этот вход не подходит. Проверка диаграммы
показывает, что строками, представимыми этой машиной,
являются только те строки над алфавитом {а, Ь), в которых
Рис. 9.9
имеется четное число символов а и четное число
символов Ь. У этой машины нет явного выхода; требуемая
информация может быть извлечена из результирующего
состояния только после останова машины. /
Следующие два примера относятся к арифметическому
«оборудованию» и фактически порождают
непосредственный входной результат.
Пример 2.2. Машина, изображенная на рис. 9.10
для пары строк над (0, 1}, вычисляет и выводит их
сумму. Входные данные начинаются с битов с наименьшими
(t,0):l (r,o): 0
(0,0):0 [/,/]: г
Рдс. 9.10
значениями, и пары читаются справа налево. По данным
двум и-разрядным числам эта машина вычисляет их
n-разрядную сумму. Однако она не распознает условий
переполнения и не работает с отрицательными числами. II
Проверяя свойства функции выхода (функция выхода
имеет вид @Х{0, I}2-»- (0, О), полезно вспомнить факты,
322
касающиеся двоичной арифметики и описанные в § 3
гл. 4. В более сложной модели можно учитывать условия,
при которых возможны ошибки при двоичном сложении.
Пример 2.3. Машина, изображенная на рис. 9.11,
также осуществляет двоичное сложение тем же самым
(0,Q):0
(0,1) :1
(1,0):1
(0,0): О
(0,1)-1
(1,0) -1
(0,0)-1
Рис. 9.11
(0,1)
(1,0)
)/N
■ о
■ 0
: 1
(0,1) :0
(1ь0):0
(/,/;■■ 7
способом, что и в предыдущем случае, за исключением
того, что она содержит два дополнительных состояния q%
и 9з, которые проверяют наличие ошибок, связанных с
внесением в знаковый бит и вынесением из знакового
бита соответственно. Заключительные состояния до и q\
обозначают выходы, в которых либо произошли оба эти
переноса одновременно, либо не произошел ни один из
них. Следовательно, эти выходы являются арифметически
правильными. /
Эти примеры показывают, что можно выполнить
некоторые полезные преобразования и вычисления, однако
остается открытым вопрос: насколько «сильными»
являются конечные автоматы? В ответе на этот вопрос
встречаются две точки зрения. Первая, хотя и нетипичная,
заключается в следующем: можно заметить, что
использованные в примерах алфавиты основывались лишь на
двух символах. Мы можем использовать любой конечный
алфавит, однако, как отмечалось в § 1 гл. 8, алфавита
размерности 2 всегда достаточно.
Вторая точка зрения заключается в том, что общая
доступная память в данное время в определенном
компьютере является конечной. Если она содержит п битов, то
существует ровно 2" конечных состояний, в которых
21*
323
память может находиться. Это число может быть
большим, но оно всегда конечно (см. упражнение 9.2), и,
следовательно, мы имеем конечную машину.
2.2. Недетерминированные машины. Рассмотрим с
математической точки зрения, что могут делать эти
абстрактные машины. Чтобы упростить дело, в определении,
данном выше, будем игнорировать функцию р.
Следовательно, мы будем иметь дело только с устройствами,
имеющими конечное число состояний; будем их для
краткости называть КР (конечными распознавателями или
акцепторами). В дальнейшем будет удобно расширить
область значений функции переходов t (см. определение)
так, чтобы выполнялось условие
t: QX2-+0>(Q).
Следовательно, из данного состояния под действием
заданных входных значений машина может иметь выбор,
куда идти дальше. Это ничего не добавляет к
определению, однако обеспечивает простой способ
конструирования КР, который будет активно использоваться в этом
параграфе. Машины такого тииа называют
недетерминированными КР.
Чтобы еще более прояснить, дело для заданного КР
М определим множество строк, представимых машиной М
(обозначим это множество через А(Л/)), как указано
ниже.
Пусть M = (Q, 2, t, q0, F) и sej*. Запишем s в виде
s = SiS2...s„ и определим множество Т($) индукцией по
длине слова s следующим образом:
Г(Л)-{?0} и Г(0*0- U Hq,sk),
яеТ(о)
где а — s\... sh-\ для всех к, 1 < к «£ п. Таким образом,
T(s)— это множество всех заключительных состояний М,
которые могут быть достигнуты под действием входной
последовательности s. Если T(s)(]F = 0, то слово s пред-
ставимо; поэтому множество строк, представимых
машиной М, имеет вид
A(M)~{s: T(s)(\F¥*0).
Недетерминированные КР полезны тем, что они
упрощают задачу построения сложных машин. Существенным
является то, что нам хотелось бы иметь возможность
собрать машины вместе таким образом, чтобы не было
нужды, по крайней мере па первом этапе, касаться вопроса,
324
является или нет результат перехода функцией или
отношением над (QX1,)XQ. (Напомним, что функция
Q X 2 -*■ &(Q) соответствует отношению QX 2 -*■ Q.)
Введение недетермипированности не увеличивает
потенциала КР. От недетерминированной машины всегда
можно перейти к детерминированной, как будет показано
в следующей теореме.
Теорема. Для любого недетерминированного КР М\
существует детерминированный КР Мг такой, что
AWi)-A(M2).
Доказательство. Дадим вначале общую схему
доказательства. Пусть
Мl = (Qv 2„ tv q0, F,), а Л/2 = (<?2, 22, tt, q0, F2).
Установим вначале, что £Ь — ^(Qi) (в общем случае все
эти состояния нам будут не нужны) и 22 = 2i. Для
этого, начиная с qo^Qi, рассмотрим множество всех
состояний в t{qo, st) (для sje2i) и назовем Это множество
образом vbi si) функции h; т. е. мы переводим различные
возможности машины М\ в единственное состояние
машины Mi. Предположим, что далее мы читаем символ si.
В Mi это могло бы вызвать перевод состояния ti(qo, S\)
в состояние из множества ti(t\(qo,si),S2). Множество всех
состояний, полученных таким образом, сейчас дает
единственное состояние в М% получающееся в результате
применения t2 к образу из (g0> si) и S2. Таким образом, мы
приходим к конструкции переходов между
состояниями в Q%.
Так как Q\ конечно, то конечно и Qi\ следовательно,
необходимо вернуться к ранее построенным состояниям,
и, таким образом, процесс в конце концов оборвется. Если
одно из «выбранных» состояний в Q\ было в F\, то
состояние в (?2 является заключительным и, следовательно
лежит в Fi.
Перейдем к подробному доказательству. В соответст-
вии с описанной выше конструкцией ?0 = {Яо}п
h' ({9*i> •••»■?«}, «ft)— U М?и» *ь)\
п
iffa. ..., 2<j) e^2 тогда и только тогда, когда
q,keFi при некотором k, 1 «£ А: < /.
Возвращаясь назад к определению множества А(М)
для данной машины Ми мы можем расширить t\ n fc,
325
чтобы получить Т\ п Га так, как это показано ниже!
^ (Л) = {<?„>, Г, (as;i)= U М?,**).
^2(Л) = {?о1. Г, (<»*)=■ U *,(?, sk) = ti(q, sh),
где 7,2(о) = (д'} и о = si... s„_i.
Поскольку Л (Д/)= {s: 7'(s) Л F # 0} и существует
естественное соответствие между F\ и Fa, то мы должны лишь
продемонстрировать такое же соответствие между Т\ (s)
и T2(s) для любого s; т. е. {..., g(, ...)*=T[(s) тогда н
только тогда, когда {{..., qt, ...}} = 7*2 (s). Сделаем это
индукцией по длине s.
Если Ы =0, то s = A, откуда
г1(Л) = ы, г2(Л) = {?;}={{?„}}.
Предположим теперь, что соответствие имеет место
для всех строк о: lol^fc—1, и рассмотрим строку osA.
По предположению индукции
{..., qt, ...} = Т\ (о) тогда и только тогда, когда
{{..., q„ ...}} = Т2(о).
Однако тогда, если q,&t\(qi, s»), то отсюда следует, что
q,^Tj(osk) и (ио определению t2)
{..., q„ ...)e/2({..., 7i, ...}, sJ,)=7'2(os(,).
Из определения Гг и t2 следует, что все элементы из
7*2 (os*) должны выводиться таким же образом; иоэтому
{.. ,,qt, ...} = Т\ (ask) тогда и только тогда, когда
«..., q П-Тл(о8к).
Следовательно, T'i(s) для любого seS* «соответствует»
Ti(s), и поэтому
4(Л/,)-{»: Tl{s){\Fl + 0}-
= {s: 7,2(s)nF2=?t0}=^(M2). /
Приведенная выше аргументация была достаточно
сложной и включала некоторое сомнительное (однако
строго определенное) понятие «соответствие», которое
подразумевало уровень вложения включаемых множеств.
В частных примерах мы можем обойти это путем
введения подходящих имен для результирующих состояний в
детерминированной машине Мч.
Как будет показано в последующем примере,
построение М2 из Ш\ является непосредственный, однако, чтобы
сохранить математическую строгость, напомним вначале
320
общепринятое соглашение, связанное с функциями. В
силу используемых построений такое соглашение было бы
здесь неуместным, однако краткое напоминание об этой
погрешности послужит объяснением, «откуда берутся
некоторые множества».
Пусть задана функция /: А -*■ В такая, что /: х»+у.
Мы должны были бы писать f{x)={y), однако часто
запись сводится к j(x) = y.
Аналогично обычно детерминированный перенос
обозначаем как
f. <?Х2-*<?,
где
t: (qu s)—g,-, t{qu s) = qjt
Однако, когда мы имеем t: QXH-+ &*{Q) (как в М\ и
Л/г), то мы должны заключать множества в скобки даже
тогда, когда li(gi, s)l = l, и писать t{qt, s)*={q,).
Перейдем к примеру.
Пример 2.4. Возьмем М\ таким, как указано на
рис. 9.12, а. Тогда
^i (go, x) = {q\, дг>
и gie F\', следовательно, получаем {gi, дг) в F2.
Аналогично
Mgi, x)={q0}, *i(дг, z) = {g2, дз>;
следовательно,
*2((gi, дг), x) = {q0, д2, дз) в М2 и т. д.
Окончательно получаем ситуацию, изображенную на
рис. 9.12,6. Тогда перенумерация дает нам рис. 9.12, с. //
С этого момента мы не будем выяснять, какие
машины рассматриваются — детерминированные или нет; они
всегда могут рассматриваться как детерминированные.
2.3. Составные машины. Сейчас мы в состоянии
описать, как заданную совокупность КР можно «собрать
вместе» для Tofo, чтобы получить некоторые корректно
определенные множества строк. Основные свойства даны в
виде предложения, однако вместо формальных
доказательств мы дадим лишь описание включаемых в
доказательство построений.
Предложение. По заданным машинам
Л/, = (<?1, 2, ti, q, Fu), Мг = (<?г, S, t2, p, Ft)
827
Рис. 9.12
мы можем построить машины Мз, ..., Л/s такие, что
А{Мг) = Ъ*\А{МЛ,
А(МА) = А(МЛ()А(М2),
A{M6)^A{M2)\A(Mi),
A(M6) = A(Ml)UA(M2),
A(M1)^A{Ml)A(M2),
А(Мв) = А*{МЛ.
Построение Л/3. Машина Л/3 получается из М{ заменой
множества F\ заключительных состояний на множество
Qi\F\. Следовательно,
Л/з =(0i, Е, tu q, Ql\Fl).
Чтобы получить Л/4, возьмем 04 — Q\ X 02, возможно,
с некоторыми подходящими переобозначениями. Пусть
г = (<7) />)■ Определим £4 как
h- ((?i. Pi)> *)'- Ci(?i. *). *2(Рл «))t
и множество
^ = {(?,-, Pj): 4i^Fu Pi^F2}.
Тогда
Д/4 = (04, E, и, г, Ft) (см. пример 2.5).
Построение Ms следует из Л/2 и Л/3, так как
А (М2) \А (Mi) = А (М2) П (S*V4 (Л/,)) = А (М2) П Л (А/3).
Построение Л/6 проводится подобно Л/4. Имеем 0а =
= 04, ^6 = ^4, однако
^е = ((?(, Pj): 9(е^1 или p,^F2).
Тогда
Л/6 = (06, Е, *„, г, F6).
При построении Л/7 используется идея присоединения
выхода из Mi к входу М2. Однако при этом следует быть
внимательными, чтобы не проделать лишний шаг при
движении от Л/i к Л/2. Итак, возьмем 07 = 0i| 102
(разъединяющее объединение | | изменяет названия так, что
01 и 02 не имеют общих состояний, и использует 0i U
О 0г), множество
\F„ p£F2,
и добавим переходы от элементов F\ к другим
состояниям М2, а именно
*7 = tilH2U{((g„ в). ft). гДе ?«е/?ь fteMft «)>•
Тогда
Л/7 = (07, Е, t7t ?1 F7),
Построение Л/8 проводится аналогично. Сначала
необходимо позаботиться о том, чтобы А°(М{) = 0 было
329
представимо. Для этого добавим новое начальное
состояние и (u<£Q\) таким образом, чтобы выполнялись
условия Qs = Qi U {и), Fg = FiU Ы), a t& расширим (так же,
как и h) следующим образом:
_ \h U {((и, s), qj), q} е= tt (q, s), s e= 2),
'8 ~ Ui U {((qi, s), q), h (qh s) e= FX) s e= 2}.
Тогда
M8 = (9e,S,i8)«,Fel. //
Пример 2.5. На рис. 9.13—9.15 даются
последовательность диаграмм состояний для машин М\ и Л/г и
результирующие составные машины Л/3, ..., Ма, которые
были построены выше. Заметим, что некоторые из этих
машин являются недетерминированными, однако от
недетерминированности можно избавиться при помощи
предыдущих результатов. II
Построения, включающие объединение, конкатенацию
и замыкание (операция «звездочка»), обеспечивают
основу алгебраических систем для описания множеств, пред-
ставимых конечными распознавателями. Эта алгебра будет
обсуждаться в § 3, а в оставшейся части этого параграфа
обратим внимание на моделирование реальных
компьютеров.
2.4. Моделирование «реальных* компьютеров. Как
уже отмечалось, если данный компьютер имеет память,
состоящую из п битов, то для того, чтобы смоделировать
его поведение, вообще говоря, необходим конечный
автомат с 2п состояниями. Пусть начальное состояние имеет
такую конфигурацию, что программа и значения данных
находятся в «ядре». Тогда не существует внешних
стимулов, которые могли бы дать начало
последовательности переходов. Однако рассмотрение машины в несколько
другом виде может привести к выполнению команд,
использующих конечное число (уже определенных)
состояний машины.
Предположим, что память состоит из т Z-битных
слов; тогда п = т*1. Теперь отделим программный
указатель (называемый также программным счетчиком или
указателем следующей команды) от оставшейся части
машины; получим машину с п' = 1*(т — 1) битами
памяти. (Для простоты предполагается, что указатель имеет
ту же длину, что и другие компоненты памяти.) Теперь
330
Рис. 9.13
можно программный указатель рассматривать после
каждого изменения состояния и его значение использовать
Рис. 9.14
для того, чтобы осуществлять очередной переход. Таким
образом, функция перехода имеет вид
P. QXP-+QXP,
где t: (qa, рь) <-*■ (<?е, Pd) соответствует значению
указателя рь, что означаем: выделить команду из состояния да
так, чтобы перевести машииу в состояние qc, а значение
332
рь в программном указателе заменить на pd. (Здесь
удобно рассматривать команду как действие, частично
осуществляемое программным обеспечением, а частично —
аппаратным методом. В этой модели мы не делаем
различия между ними; на практике бывает, что
программное обеспечение — это просто начальные даппые,
которые управляют аппаратными процессами.)
Обычно программы начинают работу с программного
указателя, установленного на определенное значение.
Начиная с этого значения, все последующие значения
порождаются автоматически при помощи описанного
выше процесса до тех пор, пока не выполнится команда
останова.
Конечно, не все 2' значений, которые могут
содержаться в программном указателе, должны быть
верными. Часто 2' может быть больше т, и, следовательно,
2' — т значений будут неправильными адресами и будут
вызывать ошибку, приводящую к останову.
Число правильных значений, которые может
принимать программный указатель, определяет число
переходов, которые могут быть нарисованы в виде стрелок из
каждого состояния. Однако это не ограничивает число
состояний, которое равно 2 .
При отсутствии дополнительной информации о
моделируемой системе мы можем сказать о ней довольно
мало, однако на один момент следует обратить внимание.
Если построенный нами конечный автомат
останавливается за «короткое» время или под воздействием команды
останова, или из-за полученного неправильного значения
указателя, то результат известен. Однако если машина
333
продолжает считать в течепие длительного промежутка
времени, то встает вопрос: остановится ли она
когда-нибудь и получим ли мы результат? Поскольку машина
конечна (и, следовательно, имеет ограниченную память),
то эта задача разрешима, однако неизвестно, как долго
ждать результат. В силу способа построения машины
пара (д, р), являющаяся указателем состояния,
единственным образом определяет последовательность
состояний, которые должны последовать за данным состоянием,
и, следовательно, повторение любой данной пары
подразумевает бесконечный цикл. Поэтому, чтобы
гарантировать, что последовательность вычислений никогда пе
остановится, мы должны обеспечить, чтобы она
пересекала заданную дугу перехода дважды. Все это требует
достаточно много времени, так как необходимо
выполнить 2" # т = 2 *(m-1) * m команд. Даже при достаточно
малых значениях т и I число операций очень велико,
и поэтому реальное время их выполнения требует
десятков, сотен и даже тысяч лет.
Урок, который мы должны извлечь из рассмотрения
этого упражнения, заключается в том, что практически
невозможно проверить корректность программы
разумных размеров, используя тестовые данные. Требуется
слишком много времени для выполнения всех прогонов
программы. Такие тестовые прогоны могут только
находить ошибки.
Упражнение 9.2.
1. Построить конечный автомат, который будет
распознавать четные числа, записанные в двоичной форме
и читаемые слева направо.
2. Построить конечный автомат с входным алфавитом
{а, Ы, который останавливается в заключительном
состоянии тогда и только тогда, когда входные данные не
содержат рядом двух соседних элементов а и двух
соседних элементов Ъ.
3. Показать невозможность построения конечного
автомата, на вход которого поступают только строки над
алфавитом {а, Ь), и только те из них являются предста-
вимыми, которые имеют равное количество символов
а и Ъ.
4. Построить (детерминированный) конечный
автомат, для которого представимыми являются только
строки над (0, 1), состоящие из чередующихся единиц и
нулей, следующих за чередующимися парами из единиц и
нулей.
334
5. Придумать конечный автомат, способный
распознавать десятичные числа, записанные в виде
±dd*. d*E±dd,
где d s {0, 1,2,..., 9).
§ 3. Регулярная алгебра
Способы комбинирования конечных распознавателей
могут использоваться для проверки аксиом множеств, из
которых могут развиваться алгебраические системы.
Классическая система, известная как регулярная
алгебра, основана на трех операциях — объединении,
пересечении и конкатенации, определенных на множестве
строк. Уравнения в алгебре могут точно определять
некоторые множества строк; эти множества являются
решением уравнений (п. 3.1). Результаты, вытекающие из
решений, имеют непосредственное применение к
аспектам теории языков (п. 3.2).
3.1. Выражения и уравнения. Перед тем как дать
формальное определение, мы введем две копстанты
внутри системы. Существует множество строк 0 и {Л),
которые обозначим символами 0 и 1 соответственно. Мы
обосновываем их использование изображением конечных
распознавателей соответственно на рис. 9.16, а и. Ъ.
_^р -hQ, j§)
а Ь
Рис. 9.16
Определение. Пусть X — множество строк, пред-
ставимое конечным распознавателем. Гогда X называется
регулярным выражением. Если X и У обозначают
множества строк, представимых двумя определенными
машинами, то (в силу определения построения конечных
распознавателей) X U У (далее будем писать X + У), X* и
ХУ также являются регулярными выражениями.
Разрешенные конструкции составных конечных
автоматов предполагают следующие аксиомы для работы с
произвольными регулярными выражениями А, В а С:
1) А+В = В + А; 2) А+(В + С) = {А + В) + С;
3) А+А=А; 4) 4+0 = 4;
335
5) A(BC)-(AB)C; 6) A\ - A = L4;
7) AO=*0=*OA; 8) A(B + C) = AB + AC;
9) (Л + В)С = ЛВ + В<:; 10) 0* = 1;
11) A*=A + A*; 12) (A*)* = A*.
Такую алгебраическую систему называют регулярной
алгеброй.
Проверка достоверности этих аксиом требует
рассмотрения совершенно общих случаев. Поэтому их трудно
должным образом описать. Тем не менее, чтобы
обозначить используемые ниже идеи, рассмотрим два примера,
исходя из двух аксиом, примененных к конкретному
регулярному выражению.
Пример 3.1. Пусть Л=*{аЬп: 0<л). Это
выражение регулярно, так как является представимым для
машины М, изображенной на рис. 9.17, а.
Используя машину, изображенную на рис. 9.16, а,
которая распознает 0, и применяя подходящее построение,
получим машину, изображенную на рис. 9.17,6, которая,
очевидно, эквивалентна М. Следовательно, А «= А + 0. /
Пример 3.2. Используя Л и 1, определяемые
машинами, данными выше, и обычной конструкцией
конкатенации, получаем недетерминированный конечный
распознаватель, изображенный на рис. 9.18, а, который будет
представлять строки в регулярном выражении 1Л. Эту
машину делаем детерминированной (рис. 9.18, Ь), затем
получаем машину (рис. 9.18,с), эквивалентную М,
которая удовлетворяет (в данном случае) части аксиомы 6),
а именно \А = А. II
Определив регулярную алгебру, посмотрим, как ее
использовать. Предположим, что А, В и С являются
заданными регулярными выражениями (мпожесниами строк)
336
и что X и Y — неизвестные регулярные выражения
такие, что выполнены следующие соотношения:
X = AX + BY, Y = XC + B.
Существуют ли решения этих «уравнений», и если да,
то как их найти? Как мы вскоре увидим, регулярные
Рис. 9.18
уравнения не имеют единственного решения; поэтому мы
вначале введем понятие аппроксимации для регулярных
выражений.
Определение. Для регулярных выражений X и К
отношение *S определяем следующим образом:
X ^ Y {X аппроксимирует Y), если X + Y = Y. /
Теорема. Отношение <, определенное над
регулярными выражениями, является отношением порядка.
Доказательство.
Трапзитпвпость имеет место, так как
Х< Y, Y^Z^X+ K=K, K + Z-Z. (*)
Поэтому
X + Z = X + {Y + Z) = (X+Y) + Z=Y + Z = Z
и, следовательно, X < Z.
Антисимметричность имеет место, поскольку
X^Y, Y^X*Y=*X+Y-Y + X~X.
Рефлексивность следует из X + X ■=» X. II
Отсюда также следует, что X *S Y =*■ ZX ^ZY для
регулярных выражений X, Y и Z, однако детали
доказательства оставим в качестве упражнения.
Перед тем как рассматривать уравнения, напомним,
что из определения операции замыкания следует
00
А* = А° + Л1 + ... +Ап+ ... = S Л",
22 д кук, г. Бейз 337
где А0 = 1. Это соотношение оказывается полезным при
доказательстве следующих утверждений.
Лемма. Пусть Y и Z — решения регулярного
уравнения X — АХ + В. Тогда
а) В ^ У,
б) AY^Y,
в) Y + Z — решение.
Доказательство.
а) Так как Y — решение уравнения X = АХ + В, то
У = A Y + В, и поэтому
Y + B = (AY + B)+B = AY + (B + B) = AY + B=Y.
Следовательно, В =S У.
б) Аналогично У + AY = (Z? + AY) + AY = 5 + AY =
= У. Следовательно, Л У «S У.
в) Имеем
У + Z = AY + В + AZ + В = A(Y + Z) + В. II
Уже достаточно много сказано о свойствах решепий
уравнения, однако существует ли хотя бы одпо решепие?
Лемма. А*В является решением уравнения Х=*
= АХ + В.
Доказательство. Подставляя А*В в уравнение,
имеем
А (А*В) + В = (АА* + А°)В=1а^Ап + А0) В -
= ( J А" + А*) В = ( 2 Ап)В = А*В. //
\n=i / \п=о /
Теорема. А*В является наименьшим (по отношению
к *S) решением регулярного уравнения X = АХ + В.
Доказательство. Из лемм следует, что А*В —
решение, и если У — какое-либо другое решение, то В ^ У,
AB^AY^ У. Поэтому А В «S У, А" В «S У, и, добавляя
неравенства для всех п е N U (О), получаем А*В ^ У.
Следовательно, утверждение теоремы верно. /
Заметим, что А*В — это множество строк, каждая из
которых является решением уравнения; если А = {а} и
В = {W, то все строки вида апЬ также являются решениями.
Заметим также, что так как А *В является наименьшим
решением уравнения X = АХ + В, то оно является
наименьшим выражением таким, что X ►-*• АХ + В
совпадает с тождественным отображением. Поэтому его также
338
называют наименьшей стационарной точкой уравнения
(или минимальной стационарной точкой).
Рассмотрев одно частное уравнение, мы сейчас можем
непосредственно получить аналогичные результаты для
других похожих уравнений; доказательства в этих
случаях будем опускать.
Теорема. Для заданных регулярных выражений
А и В уравнение X = АХ + В эквивалентно паре
уравнений
X*=YB,Y*=YA + i
в том смысле, что они имеют одно и то же наименьшее
решение, и это решение есть Х — А*В. II
Теорема. Лая заданных регулярных выражений А
и В уравнение X = АХ + В эквивалентно паре уравнений
X = BY,Y=-AY + 1.
(В этом случае обе системы наименьшее решение X =
-ВА*.) II
Эти две теоремы позволяют нам преобразовывать
правые линейные формы (X = АХ + В) в левые линейные
формы (X •= ХА + В), которые соответствуют правым и
левым рекурсиям внутри регулярных грамматик. Детали
этого соответствия даны в п. 3.2, однако сначала мы
обобщим результаты на системы алгебраических уравнений.
Предположим, что Хи ..., Ха — неизвестные
регулярные выражения и что Ац (1<4, /*£п) и В\, ..., Вп —
известные регулярные выражения такие, что
X, - Х,4„ + Х2А21 + ... + ХпА„, + Ви
X, - ХхА и + X2A2i + ...+ ХпА., + Ви
X. = Х\А',. + Х2А2п + ..'. + ХпА 1. + Вп. '
Теперь можно использовать операции, определенные на
регулярных выражениях, чтобы ввести операции на
матрицах из регулярных выражений:
(С + D)„ = Су + Щ,
(CBjii-SCikDw.
h
С* = S Cn;
n=o
С < D тогда и только тогда, когда Cfj «£ T)(j для всех f, /,
22* 339
где С и D — согласованные матрицы, элементы которых
являются регулярными выражециями. Обозначив через
X «регулярную матрицу», мы можем представить
приведенные выше уравнения в виде
X = ХА + В.
Применяя рассуждения, аналогичные тем, которые
использовались в случае одного уравнения, можно показать,
что эта система имеет минимальную стационарную точку
ВА*, которая достигается на решениях X «- BY, где Y =
= AY + I; I — единичная матрица. Соответствующие
результаты справедливы для правых линейных систем. Из
замечаний следует, что эти системы эквивалентны. Это
помогает удалению левых рекурсий в
контекстно-свободных грамматиках.
Ясно, что для уравнения X ■= ХА + В решение может
быть определено как
Xj =• (BY)i = 2j BftYfci,
k
где
Y« = (AY + I)y = 2-A»Yw + I«.
k
Пример 4.4 гл. 8 показывает, как этот результат
переносится на контекстно-свободные грамматики.
Преобразования, используемые в этом примере (хотя они и не
строго обоснованы), появились при помощи рассуждений
по аналогии. Мы завершаем этот раздел, указывая на
формальную связь между регулярной алгеброй конечных
распознавателей и регулярными грамматиками.
3.2. Представления регулярных грамматик. Напомним,
в гл. 8 структурная грамматика G=(N, T, Р, S)
называлась грамматикой Хомского типа 3 или (Л-свободной)
регулярной грамматикой, если все элементы Р имели вид
А -*■ х или А -*■ хВ, где х = Т и А, В е N, или же (если
Ле1(С)) S -*■ Л; в этом случае S не встречается ни в
какой правой части.
Множество предложений, порожденных регулярной
грамматикой, называют регулярным множеством или
регулярным языком. В настоящий момент мы в состоянии
обосновать использование дважды одной и той же
терминологии и, следовательно, использовать регулярную
алгебру в грамматиках.
Основной результат состоит из двух частей и дан в
виде теоремы с конструктивным доказательством.
Часть I является непосредственной, так как каждый пе-
340
реход определяют на всей его области определения; в
части II не обязательно, чтобы грамматика {N, T, P, S)
для данных X ^N aaef имела продукцию вида X -*■ а
или X -*■ aY при некотором Y ^-N.
Теорема. Множество, представимое конечным ав~
томатом, является в точности таким же, как если бы
выводилось из регулярных грамматик.
Доказательство. Опишем конструкции
доказательства.
Вначале рассмотрим конечный автомат М -• (Q, 2, t,
g, F). Теперь построим регулярную грамматику G**(N,
Т, Р, S). Если Л Ф А (М), то можно сделать следующее.
Пусть N — Q, Г = 2 и S = g; построим Р такое, что
P = (X*aY, Y<=t(X, a))U{X^a, t(X, a)flF^0}.
Если Л^А(М), то расширяем конструкцию, создавая
новый нетерминал q, полагая S = q а добавляя к Р
продукции
S-» Л,
S->aY (если Yet(q, a)),
S — a (если t(q, a)t\F = 0).
Сейчас легко показать, что для каждого х = 2*
условие х ^ А (М) выполнено тогда и только тогда, когда х s
e/,(G). Очевидпо, что если q e F, то Л представимо
автоматом М и S -*- Л — продукция G и наоборот. Если
также аб/1 (М) и \а\ ■« п, то
а = а\йг ... ап, а( s 2,
и поэтому существует путь в графе М, как показано па
—0^ц5>^ц§р а_-@^ф
Рис. 9.19
рис. 9.19. Здесь A,<=N (не обязательно все различны) п
В е F, и по построению
{S -*■ a\Ah А\ -*■ a-iAi, ,.., Ап-2-* ап-\Ак-\, А..-\ — аЛ) s Я
(рис. 9.20). Таким образом, a^L(G). Проводя
рассуждения в обратном порядке, аналогично получаем £(C»)S
&А[М), и, следовательно, равенство доказано.
341
Сейчас надо показать, что для данной (Л-свободной)
регулярной грамматики предложения этой грамматики
могут быть представимы некоторым конечным автоматом,
а все другие строки не представимы этим автоматом.
Возьмем G\ ={N\, Т\, Ри Sj) и построим М\ -=((>t, Si,
*b ?ii ^1)1 как показано далее. Пусть 2i = Т\ и Qi —
S
•А2
аз
ч
/
On
A„-i
Рис. 9.20
Рис. 9.21
== Л^1 U (т) U {л} (где т и я — специальные символы,
которых нет в N\\ т представляет правильную
терминальную строку, а л представляет ошибку), <7i *= Si и F\ *■
= {т). Если также A&L(G\), т. е Si -*• Л принадлежит
Pi, то F\ — (х, gi>. Окончательно имеем
t{ = {((X, a), Y): X-*aY есть в Pi> U
\)t{((X,a), т): Х-а есть в P,}U
U {((т, а), л) для всех а <= Si) U
U{((X, Ь), я): если XsiV, п ве X -*• bY для любого У е
s JVi и не выполняется условие X -*■ b есть в Р\) U
U (((л, с), я) для всех о s 2j}.
Обоснованпе того факта, что эта машппа представляет
L(G\), оставляем в качестве упражнения. /
Пример 3.3. Пусть задала регулярная грамматика
G -(М, В, С, D), {х, у, г), Р, А), где
Р = {А -* Л \хВ\ уС, B-*zB \у\ yC, C + xD, D - yD\x).
Используя описанную выше конструкцию, получим
машину, изображенную на рис. 9.21. /
342
Упражнение 9.3.
1. Пусть заданы регулярные выражения А, В, С и D
такие, что А «£ С и В «£ С. Доказать, что
а) А + D< С + D; б) AD *£ CD;
в) DA *£ DC; г) Л* < С*; д) Л + В «£ С.
2. Исследовать, как преобразуются результаты п. 1
данного упражнения, если А, В, С и D — регулярные
матрицы размера пХп.
3. Определить конечный автомат для языка L,
определенного как 11*01* (т. е. L = {w e (0, 1)*: w)
начинается с 1 и имеет только один нуль. Выписать правую
линейную грамматику, определяемую этим автоматом, и
последовательность перемещений, делающих представимой
строку 111011.
ГЛАВА 10
КОМПЬЮТЕРНАЯ ГЕОМЕТРИЯ
Эта глава дает некоторые сведения из геометрии,
которые широко используются в компьютерной графике и
компьютерном вспомогательном математическом
обеспечении; при этом делается попытка изложить все более
строго и унифицировапно, чем это делается во многих книгах
по компьютерам. Мы стремимся представить серию
«приемов* в некотором, очевидно, случайном порядке, а
также использовать концепции, развитые в предыдущих
главах (особенно в гл. 1—3, 5, 6), чтобы обеспечить основу
для обсуждения выбранных тем, включающих
однородные координаты, кривые и поверхности. Дано также
четырехмерное представление данных трехмерной
геометрии, широко используемое на практике.
Перед началом обсуждения будет полезно, чтобы
читатель имел некоторое представление о разнице между
терминами «топология* и «геометрия»: геометрия
изучает расстояния и углы, тогда как топология занимается
более общими свойствами. Например, две сферы с
различными радиусами являются топологически
эквивалентными, а геометрически — нет. Два объекта топологически
эквивалентны, если один из них может быть получен из
другого искривлением и растяжением последнего без
разрыва (чтобы быть более точными, путем использования
непрерывного отображепия, обратное к которому также
непрерывно), тогда как в геометрии эквивалентные
объекты должны быть идентичны во всех отношениях, за
исключением их положения и ориентации в пространстве.
Теория графов является частью топологии, поскольку
вершины не обладают свойством положения в
пространстве и топология графа есть отношение ребер.
Обычно удобно запоминать в памяти компьютера два
различных множества данных, относящихся к
рассматриваемому объекту,— топологические данные и
геометрические данные. Например, можно представить широкий
344
класс объектов при помощи каркасных моделей. На
рис. 10.1 дано такое представление конечного цилиндра.
Топология модели такого тина может рассматриваться
как граф и может быть представлена в виде связной
списочной структуры.
Геометрические данные могут
быть просто списком
векторов, определяющих
положения вершин в R3.
Целью разделения
содержания геометрии и
топологии является то, что мы
хотим преобразовать рашу
модель некоторым
образом, например чтобы она
была физически меньше,
пли передвинуть ее в не- Рис. 10.1
которое новое положение,
изменив ориентацию в пространстве. Такие
преобразования не изменяют топологии модели, и нам
просто изменить соответствующим образом
геометрическое множество данных. В § 1, 2 мы будем заниматься
системами координат, которые дают возможность
представить геометрические данные, и некоторыми полезными
в дальнейшем множествами преобразований, которые
могут применяться к геометрическим множествам данных.
§ 1. Системы координат для подмножеств R'
В общем случае система координат (координатная
система) или параметризация множества SsR"
является идентификацией каждой точки в S при помощи
единственного упорядоченного набора чисел (\\, ..., |,)eR'
(geN), В терминологии отображений система координат
для S может быть определена как непрерывная биекция
Ф: S -*■ 9", где 9" £ R'. Любое преобразование или другое
вычисление, осуществляемое на S, тогда выполняется в
терминах координат (|i,..., £,). Конкретное отображение,
которое выбирается для данной задачи, часто будет
определяться геометрией пространства S. Можно показать,
что q для фиксированного 5 является постоянным для
всех систем координат и называется размерностью S.
К сожалению, в одном из приведенных ниже примеров
(однородные системы координат) требуется, чтобы &
было всем пространством; кроме того, существует много по-
345
лезных подмножеств, для которых такие отображения не
существуют (например, круг или сфера). Чтобы
разобраться с этим, следовало бы совершить небольшой
экскурс в топологию; однако вместо этого будем надеяться,
что проведенное ниже рассуждение, несмотря на
недостатки определения, поможет хорошо разобраться в данном
вопросе.
В основном нас будут интересовать пространства
размерности 3 и меньше; например, кривые являются
одномерными объектами, а поверхности имеют размерность
2. В следующих примерах представлены некоторые
наиболее общие координатные системы в R2 и R3, однако
там, где легко обсудить более общий случай, мы это
будем делать*
Пример 1.1. Прямоугольная система координат в
Rn (raeN). Если 5 = {ei, ..., ej — базис в Rn, то
каждый элемент xeR" может быть записан единственным
образом в виде
п
х ■= 2atet> гДе flieR, ls^i^re.
Отображение Ф: R" -*• R", задаваемое как Ф(х) = (я1, ...
..., а„), определяет координатную систему в Rn. Если В
ортонормирован, то соответствующие координаты
называются декартовыми координатами в R". В R2 и R3 обыч-
по ортонормированный базис интерпретируют
геометрически как правостороннюю систему координат в смысле
§ 4 гл. 5. //
Следующий пример в R" является более сложным с
математической точки зрения. Необходимо некоторое
предварительное обсуждение перед тем, как мы оппшем
эту систему.
Начнем с определения отношения ~ на R"+l.
Определим его следующим образом: х ~ у, если х = осу для
некоторого aeR\(0}. Важные свойства этого отношения
сформулированы в следующем предложении,
доказательство которого оставляется в качестве упражнения.
Предложение. Отношение ~ является
отношением эквивалентности на Rn+1.
Отношение ~ определяет следующие классы
эквивалентности:
P" = {L\{0): L—одномерное векторное подпространство
R"+1, 0 — нулевой вектор в Rn+1} в (О).
346
Очевидно, что R"+l = P" U {0}. Определим
подмножество Р\
Определение. Пусть х е R"*1 имеет вид (х\, ...
..., хп, 0), где не все а:< равны нулю. Тогда [х] е Р" па-
вывают бесконечно удаленной точкой. Обозначим
множество всех бесконечно удаленных точек Р" через L/J> и
определим Я" как Pn\L£,. /
Следующий результат играет важную роль: он
устанавливает координатное отображение R".
Предложение. Существует биекция Q": Я" -*■
— R\
Доказательство. Определим отношение Q":
Я" -*• R" следующим образом: Qn([(*i, .... *n+i)]) =
«= (а;1, ...,£„). Вначале заметим, что правая часть
всегда определена, так как /..« исключена из области
определения (?"; следовательно, S)(Qn) = H". Необходимо
установить три факта:
Q" — отображение на Я";
Qn инъективно;
Q" сюръективно.
Q" является отображением, если
(х , zn+i)~(j/i, ..., »»+!)■*•
•+Q4K* *п+.)])=<?"(10/ y.+i)]).
Пусть (*,, ..., хп+1)~(у , уп+\); тогда существует
а е RM0} такое, что xt — ayt для всех i, 1 < i < n + 1.
Тогда по определению #"([(*!, ..., хп+1)]) = Qn {[aylt' ...
,.., otz/n+1)]) = —— (ау1 ayn) = -±-(yv ...,Уп)=
*= @"([(2/i> ..ч Уп+i)])- Следовательно, @" — отображение
на Я\
@" инъективно, если Q" ([х]) — Qn ([у]) =>• х ~ у.
Записывая выражение для х и у в виде x=(a:i, ..., хп, arn+i) и
У =(j/ Уп, i/n+i), получаем
Qnm)^QV([y])=>-T-(^ **)*—U/i Уп),
откуда Xi = {xn+\lyn+\)yt=*-x~ у, o = a:„+i/y„+i.
Следовательно, Q" инъективно.
Q" сюръективно, если для всех х=*(х\, ..., i.)s R"
сущестует х* е R"*1 такое, что @"([х*])=»х. Если
определим x*=(i|, ..., х„, 1)еК"+1, тогда очевидно,, что
@"([х*]) = х, т. е. Q" сюръективно. /
.347
Пример 1.2. Однородные координаты в Rn(raeN)1/
Однородные координаты в R" определяют как
отображение R" на //", имеющее обратное отображение О", так
что Ф: Rn -*■ Я", где Ф = (@")-1. Другими словами,
однородными координатами точки (ал, ..., LJeR" являются
(га + 1)-мерные наборы классов эквивалентности
[ (хи ..., хп, 1)] = {(рхи ..., рхп, р): рФ 0}.
Элемент из [(х\, ..., хп, 1)] называют однородным
представлением для (х\, ..., хп).
Часто бывает удобно представить в компьютере
геометрические данные в однородной форме (см. § 3).
Чтобы из однородных координат получить физические, осу-
1
ществим отображение (xv ..., хп+1) *-* (xv ..., хп).
xn + i
Сформулированное выше предложение показывает, что
все однородные представления данной физической точки
имеют те же самые физические координаты.
Чтобы прояснить ситуацию, рассмотрим
геометрическую интерпретацию однородных координат в R. Случай
более высоких
размерностей имеет подобную гео-
Кжсс як8и8а- метрическую иптерпрета-
лентпности. цию, однако ее нелегко
[(2,J)Jep7 изобразить на рисунке.
Элементы Р1 являются
бесконечными линиями в
R2, проходящими через
начало координат, однако
начало координат
выброшено (рис. 10.2). Ясно,
что единственной,
бесконечно удаленной точкой
РиС- 10-2 будет ось Oxi с
выброшенным началом
координат. Рис. 10.3 проясняет понятие «бесконечно
удаленная точка в Р1». Точки на линии £„ = [(«, 1)]
являются однородным представлением n = R. Из рис. 10.3
видно, что при п -*■ оо прямая Ь„ стремится к бесконечно
удаленной точке £«,. /
Пример 1.3. Полярные координаты в R2. Пусть
£s R2 — полубесконечная линия L = {(x, 0): х > 0} и
(х, у) = R2\L. Тогда, если Ф: R2\Z, - J0, °°[Х]0, 2я[
определено как Ф(х, у) = (г, 6), где г = (.г2 + у2)1'2, а 0 =
■■ arctg (у/х), то Ф определяет множество полярных ко-
348
ординат в R2. Обратное к Ф отображение задается
соотношением Ф~'(г» G) = (rcos0, r sin 6). Геометрическая
интерпретация г и 0 дана на рис. 10.4. Исключение L из
области определения Ф часто неправильно
комментируется в элементарных учебниках. Линию L удаляют,
чтобы получить непрерывность Ф.
Рис. 10.3
Пример 1.4. Цилиндрические координаты в R3.
Пусть Р с R3 — полуилоскость Р = {(х, 0, г): х > 0} а
(х, у, z)e=R3YP. Тогда отображение Ф: R3\P -»
-*- ]0, °°[Х]0, 2л[Х R, определяемое как Ф(х, у, z) =
= (р, ф, г), где р = (х*+у2)т, 9 = arctg(i//x),
определяет множество цилиндрических координат в R3\P.
Обратное к Ф отображение задается формулой Ф_1(р,ф,
z) = (pcos9, psincp, г). На рис. 10.5 изображены
величины р, ф, z, относящиеся к осям декартовой системы ко-
349
ординат. Полуплоскость Р исключена из области
определения Ф, чтобы получить непрерывность. II
Пример 1.5. Сферическая система координат в
R3\P; P определено, как в примере 1.4. Сферическую
систему координат определяют как отображение
Ф: RVP -+ ]0, оо[ X [0, я] X ]0,2л[,
где Ф(х, у, г) = (г, 6, <р) а г -(г* + у2 + z2)"2, 9 -
= arccos(z/r), 9 = arctg(i// ).
§ 2. Преобразования
Одной из наиболее часто используемых операций над
геометрическими данными является преобразование.
Например, вращение трехмерного пространства R3 дает
возможность рассматривать трехмерные геометрические
объекты с любой удобной точки. Это может оказаться
полезным при проверке геометрической целостности объекта,
или при подробном изучении какого-либо свойства, или
по какой-либо другой причине. Некоторые подходы
основаны на библиотеках основных геометрических
«строительных блоков», из которых путем преобразования
могут быть построены более сложные геометрии. Они
следуют из некоторых теоретико-множественных операций,
которые будут построены далее. Алгоритмы для такого
типа геометрического синтеза являются весьма
специальными и не будут здесь обсуждаться, однако мы
упомянем, что обобщенная форма теоремы Эйлера для графов
может быть использована для исследования топологии
конструируемого объекта. Преобразования используются
более широко. Некоторые из наиболее употребляемых
преобразований и их линейные представления будут
сейчас описаны.
2.1. Преобразования в R2. Переносом в R2
называется отображение вида Тх = г + г0 для всех г е R2, где
го е R2 — фиксированный вектор. Перенос перезлещает
всю плоскость сдвигом на фиксированный вектор и может
быть записан в координатной форме:
т (*, У) = (*> У) + (хо, J/o) = (х + х0, у + y0j.
Обозначим через Г(2) множество всех переносов па R2
и определим произведение в Г(2), используя композицию
отображений. Пусть Т\— перенос на вектор ri, а Гг —
перенос на вектор гг. Тогда произведение Т2 • Т\ опреде-
350
лим как
7,2°7',Г = 7'2(7'1Г) = Г + Г1 + Г2.
Очевидно, что Тч» Т\ есть перенос на Г| + гг, и,
следовательно, операция ° является бинарной на Г (2). В
действительности справедливо более сильное утверждение.
Предложение. (Г(2), °) — коммутативная
группа нелинейных преобразований R.
Доказательство. Замкнутость относительно
операции • уже доказана. Аксиомы группы следуют из
групповой структуры (R2, +); например, если 7\(1 ^ i ^ 3) —
переносы па гп, то
(Гз=(Г2°Г1))г = Гз((Г2 = 7,1)г)=Гз(г + г1+г2) =
= Г + Г[ + Г2 + Гз=(Г + Г1) + (Г2+Гз) =
= (Гз°7,2)(Г1г) = ((Гз'Г2)»Г1)г;
поэтому (Г (2), о) ассоциативна. Единицей является
перенос на вектор (0, 0), а обратным переносов к Tt = г +
+ го будет 7"г = г —го; поэтому
Т • 7" г = Т'Тт = г для всех г е R2.
Коммутативность также выполняется, поскольку
(Г2 ° Ti) г = г + п + г2 = г + г2 + г, = (fi • Г2) г.
В общем случае, если Т^Т(2), то Г(0, 0)^(0, 0);
поэтому начало координат смещается и, следовательно,
перенос является нелинейным отображением. II
На практике это означает, что можно применить любое
число переносов к геометрическому объекту и получить
один и тот же результат. Кроме того, нелинейный
характер элементов Г (2) означает, что мы не можем
выполнить Т (2) при помощи элементов из Jt (2, R); другими
словами, уравнение
,а21 e„|W = l'+'oJ ДЛЯ ВСеХ (*'*/) eR2
не имеет решения. Следствия из этого факта будет
рассмотрены ниже.
Опишем поворот в R2, используя рис. 10.6.
Интуитивно ясно, что поворот на угол 0, обозначаемый W(0),
отображает точку (х, у) в точку (х', у'), где llrll = llr'ii = г.
Из рисунка видно, что
х = г cos 0, у — г sin 0,
х' = rcos(0 + 0i), i/' = rsin(0 + 0i).
351
Применяя тригонометрические формулы, получаем
х = r(cos Э cos 0] — sin 0 sin 0i) = x cos 0 — у sin 0,
y' = zsin0 + i/cosO,
так что
W(B) (x, y) = (xcosQ — j/sin0, zsin0 + ycosQ).
В матричной форме это можно записать следующим
образом:
'cos 0 — sin ff]
sin 0 cos
W(Q)(x,y)
m
lx>y>
Pnc. 10.6
W(Q) геометрически соответствует повороту вокруг
начала координат О.
Следующее предложение
непосредственно вьп екает из
представления Ж (2, R) и, с нашей точки
зрения, суммирует основные
свойства поворотов.
Предложение.
а) Преобразование W(Q):
— линейно,
— ортогонально, det №(0)= 1.
б) Множество {№(9): 0 «£ 0 <
< 2п) является коммутативной
группой по отношению к композициям отображений
(умножением матриц). II
С практической точки зрения из а) следует, что для
вычисления преобразования, обратного к повороту,
достаточно лишь транспонировать матрицу. Часть б)
означает, что любое число поворотов может применяться ч
множеству геометрических данных в любом порядке п
будет давать одинаковые результаты. На самом деле
верно обратное к а) утверждение. В частности, если We
^Л(2, R) и выполнены условия, a) W является
попоротом. Другими словами, мы можем определить поворот
в R2 как элемент группы 50(2).
Хотя Г (2) и SO (2) являются коммутативными
группами, преобразования из Г(2) не коммутируют с
преобразованиями из 50(2), так как если W&SO(2) и Ге
е7,(2)- сдвиг на го, то мы имеем TWt = Wt + го и
WTr = №(r + r0)=W'r + Tyro^7Wr при г0^(0, 0). На
практике это озпачает, что преобразования переноса и
поворота надо применять строго в том порядке, в каком они
ваписапы. Некоммутативность проиллюстрировапа на
352
рис. 10.7, где показаны результаты применения
преобразований Т • W(n/2) a W(n/2)> T к полусфере. Из рис. 10.7
видно, что если площадь {(х, у): 0<*<а, 0<у<Ь}
соответствует экрану графического терминала, то
результат применения W(n/2)»T к полукругу даст в итоге
пустой экран.
Wlntf)
V^\
d
\r\
Рис. 10.7
Группы Т(2) и 50(2) могут быть объединены в виде
третьего множества Е(2) преобразований плоскости,
называемых евклидовыми. Элементы U е Е(2) имеют вид
Ut=- Wt + t0 для всех г е= №, где Wе= 50(2), ar0eR2-
фиксированный вектор. Эти преобразования часто
записывают в виде пар вида (W, г0). Если (Wt, t\) = E{2)
и (W2, Г2)е£(2), то (W3, r2).(W,, r,)r = (W2, r2)(W,r +
+ ri)= W2(Wlr + t\)+r2 = (W2Wl, W2ti + t2)t, так что
(W2, r2).(Wu r,) = (W2W,, W2r, + r2)e£(2)
и Е(2) замкнуто. В действительности имеет место
следующее предложение.
Предложение. Е(2) является группой по отно*
шению к операции композиции.
Доказательство. Ограничимся указанием
основных моментов доказательства. Замыкание уже
доказано. Ассоциативность следует из применения
преобразований несколько раз. Если I^GL(2, R)—единица, то
справедливы соотношения
(7, OKW, r0) = (W, ГоКЛ 0) = (W, ro)
для всех (W, г0)еЯ(2);
следовательно, (7,0) является единицей в Е (2). Обратный
23 д. кук, г. Бей»
353
элемент (W, Го)-1 к (W, г0) будет равен (W*, — Wr0),
при (W, -WTt0)^E(2), и
(W, T0)°(WT, -Wr0) = (/, 0) = (ТУ, -JFftHH\ го). /
50(2) и Г(2) являются подгруппами {(W, 0)'. Wa
eS0(2)} и {(/, го): neR') из Е(2) соответственно, и
каждый элемент (W, to)^E(2) может быть представлен
следующим образом:
(W, ro)-(/, r0)°(W,0).
Е(2)— некоммутативная группа, так как
(W2, r2)°(Wu r,)-(WW,f W2r, + r2),
(Wu tl)o(W2, r2) = (W\W2, W,r2 + r,)*(W2, r2)°(W,, r,).
В приложениях компьютерной графики часто хотят
повернуть объект около некоторой фиксированной точки,
отличной от начала координат. Например, на рис. 10.8
о!
Рис. 10.8
полукруг повернут на я/2 около точки Р. Общая ошибка
при этом заключается в попытке применить
преобразование W(n/2); однако это приводит к результату,
изображенному на рис. 10.9. Проиллюстрируем
последовательность преобразований поворота вокруг фиксированной
точ1и го s R2 на рис. 10.10, используя попятия Е(2).
Требуемое преобразование, таким образом, будет равно
(7,Го)°(ИЧя/2), 0)"(7, -го).
Эту запись можно упростить, используя правило
произведения в Е(2); получим
(ИЧя/2), -W(n/2)r0 + r0).
Ясно, что применять составное преобразование к
множеству геометрических данных более эффективно, чем
применять в отдельности каждое преобразование. #(2) дает
354
возможность расположить объект в любой точке
плоскости и в требуемой ориентации.
Множество полезных операций на плоскости
включает в себя преобразование масштаба. Преобразованием
масштаба на R2 называют отображение вида
S(x, у) = (\х, цу), К ц>0,
или же (в матричной форме)
S(x, у) = [о Ц [у\.
Множество всех преобразований такого типа обозначается
(W(/e/zi,0)
—*•—
kCX
W(rt/2)r0
Рис. 10.9
Рис. 10.10
5(2). Важные свойства 5(2) сформулированы в
следующем предложении, доказательство которого оставляем в
качестве упражнения.
Предложение. 5(2) является коммутативной
группой линейных преобразований по отношению к
операции композиции. (Другими словами, 5(2) является
коммутативной подгруппой GL(2, R).) /
Преобразование масштаба не коммутирует с
переносом, так как если Т — перенос на вектор го и
S{x, y)=*(U, \iy),
то
S'T(x, y)*=S(x + xQ, у + уо) = (Ь(х + хо), \i(y + yo)),
T°S(x, y)~T{U, \iy)*~(\x + x0, \iy + yQ)is'S'T(x, y)
в общем случае некоммутативность проиллюстрирована
23* 855
на рис. 10.11; используются преобразование масштаба
S(x, у) = (2*. 2у)
и перенос
Т(х, у) = (*+1, у+1)
единичного квадрата с вершиной в начале координат.
Аналогично можно показать, что преобразования
масштаба не коммутируют с поворотами. Доказательство этого
S
—*-
1 *
1 Г а
—»-
Ш)
г
»-
* >
S
—»-
П
(2,2)
Рис. 10.11
и построение соответствующего рисунка, который это
демонстрирует, оставляем в качестве упражнения.
На практике это означает, что если преобразование
масштаба комбинируют с переносом или с поворотом, то
следует обращать особое внимание на порядок
применения преобразований.
Языки высокого уровня предусматривают массивы как
структуры данных; следовательно, матричное
представление всех рассмотренных выше преобразований должно
существенно упростить их примопепие. Например, все
произведения преобразований тогда могли бы
вычисляться путем умножения матриц (см. гл. 6) вместо того,
чтобы работать с определениями этих преобразований.
Нелинейная природа переносов препятствует представлению в
JC(2, R); однако возможно получить подходящее
представление обсуждаемых выше преобразований в Л(Ъ, R),
35в
где матрицы оперируют в пространстве Я2 однородных
координат R2. Поскольку техника получения
представления в однородных координатах поснт весьма общий
характер и, в частности, может быть применена к
преобразованиям в R3 (где получается представление в Ж(4, R)),
мы отложим рассмотрение до описания преобразований
в R3.
2.2. Преобразования в R3. Перенос в R3 есть
отображение Т: R3 -*■ R3 вида
Tt = г + го для всех г е R3,
где го е R3 — фиксированный вектор. Если го = (хо, г/о,
zo), то перенос иа Го может быть записан в компонентной
форме как
Т(х, у, z) = (x + x0, у + Уо, z-bzo).
Пусть Т(3) обозначает множество всех переносов R3.
Тогда Г(3) образует коммутативную группу (по
отношению к операции композиции) нелинейных
преобразований R3, изоморфную группе (R3, +). Следствием этого
является тот факт, что последовательность переносов R3
может применяться в произвольном порядке и будет
давать один и тот же результат и что мы не можем
выполнить Г(3) при помощи элементов из Л(3, R).
Рис. 10.12 Рис. 10.13
Группа поворотов в R3 имеет более сложную
структуру, чем 50(2). Рассмотрим поворот W~(Q) на угол 0
вокруг оси, определяемой единичным вектором n e R3,
как это изображено на рис. 10.12. Тогда
W-(0)r = r',
где г _ вектор с концом в точке Р, а г' —
преобразованный вектор с коицом в точке Р'. Чтобы определить явно
357
VTj-(0), мы должны выразить г', как функцию г, n и б.
Ясно, что если гж — вектор, определяемый точкой N,
лежащей на оси поворота, то
г*=(п; г)п,
и если tnp — вектор, соединяющий N и Р, то
Гир = Г — TN = Г — (П • Г) П = (П X Г) X П.
Рисунок 10.13 показывает, как выглядит поворот из
точки N в направлении начала координат О; Q — точка,
полученная поворотом точки Р на я/2 относительно оси
ON. Таким образом, W~(Q)— поворот; следовательно,
11гл'<з|| = !'глр|! = ||гКр4
rjvp' = tjvq sin 8 + Tjvp cos 8,
где гиэ —* проекция вектора на ось NQ. Отсюда следует,
что
rNQ = n X tnp = n X ((п X г) X n) = n X г
(см. упражнение 10.1); следовательно,
rNP, = (н х г) sin 8 + ((п X г) X n) cos 8 =
= (п X г) sin 0 — (п X (я X г)) cos 8,
но
И^(8)г = г' = гл + гЛР< =
•= г + (п X (п X г))(1 — cos 6) + (п X r)sin 8.
Предложение. W- (8) е SO (3).
Доказательство. Некоторые детали
доказательства будем оставлять в качестве упражнений. Запишем
W~(Q) в несколько иной форме. Если nsR3 определяет
ось поворота, то определим преобразование А~: R3-»-R8
следующим образом:
ЛпГ=пхг;
А~ является непрерывным и антисимметричным (см.
упражнение 10.1). Тогда
4"г - А~ (Л~г) = А~ (п X г) = п X (п X г);
А~ линейно и симметрично. Сейчас мы можем записать
853
W~ (0) как сумму
W~ (0) = / + (1 - cos 0) A\ + sin QA~
в М(Ъ, R). Ho ^(3, R) — векторное пространство;
следовательно, W~ (0) линейно. Ортогональность следует из
свойств .4-, так как
И^ (0)г = / + (1 _ cos 0) (^i)T + sin e (Л_у _
= / + (1 - cos 0) А% — sin QA£f
W~ (0) W~ (0)r = [/ + (1 - cos 0) A\ + sin BA~] *
* [/ + (1 — cos 0) A\ — sin 0Л-] =
= / + [2 (1 — cos 0) — sin2 0] A\ + (1 — cos 0)2 41 =
= / + (l-cos9)«(4 + 4l),
по (см. упражнение 10.1)
A± = -A\
n n
Следовательно,
W~(0)F/~ (0)^ = 7
и W~ (0) ортогонально.
Доказательство того, что dot W~ (0) = 1, оставляем в
качестве упражнения. II
Обратное утверждение также справедливо (см.
задачу 12 упражнения 10.1); в частности, если WeSO(3),
то можно показать, что сущестзуют единичный вектор
и е R3 в угол 0 в пределах 0 «S 0 < 2л такой, что
W - W~ (0).
Следовательно, разумно определить повороты в R3 как
группу 50(3).
Определим некоторые подгруппы 50(3). Часто
требуется повернуть объект вокруг одной из декартовых осей
координат. Соответствующие матрицы могут быть
получены из общего вида W~ (0). Например, чтобы
осуществить поворот на угол 0 вокруг оси OZ, выберем n = k =•
■=(0, 0, 1), для которого
[О —1 01 Г-1 О ОТ
1 00,4= ° -1 ° '
о о oj [ ) о oj
359
так что
И^(0) =
Аналогично матрицы
"10 0
cos б — sin б
sin 9 cos 0
О О
•1
О cosq>
О sin ф
■ sin ф
cos ф
[со
0
-si
cosx 0 sinx'
1 О
sinx 0 cos%.
соответствуют поворотам па углы ф и % вокруг осей ОХ
и OY соответственно. Доказательство этого оставляем в
качестве упражнения. Сейчас легко показать, что
50(3)—некоммутативная группа, так как в общем
случае
[WT (ф), W1 (х)] ФО, [Wr (ф), W£(9)] фО,
Однако все подгруппы
1^(0): 0<9<2я], dgR3
коммутативны (см. упражпепие 10.1).
С практической точки зрения из этих результатов
следует, что для обращения поворота надо просто
транспонировать матрицу, и если к некоторому
геометрическому объекту применяют несколько поворотов, то порядок
их применения важен.
Следуя двумерному случаю, объединим ^(З) и 50(3)
в виде множества /?(3) евклидовых преобразований R3.
Элементы Е(3) имеют вид Ut — Wr + г0 для всех reR3,
где W^SO(3) и го е R3. Правило композиции в Е(3)
записывается следующим образом:
№, r2)*(Wu tl)~(W2Wu W2rl + t2);
по отношению к нему Е(3) становится некоммутативной
группой нелинейных преобразований R3. Отсюда
вытекают следствия, аналогичные двумерному случаю.
В частности, подчеркнем, что £(3) не может
выполняться в Ж(Ъ, R).
Преобразование масштаба в R3 является линейным
отображением вида
S(x, у, г) = (Х.г, \iy, 02), (х, у, z)e R»,
где К, jx, о > 0. Множество 5(3) всех преобразований
360
Масштаба определяет коммутативную группу по
отношению к операции композиции.
Остальные преобразования, рассматриваемые в этом
параграфе, имеют цели и свойства, отличные от
рассмотренных выше. Нашей целью является задача
представления трехмерного геометрического объекта на
двумерном графическом терминале. С математической точки
зрения мы ищем преобразования R3 в двумерные
подпространства, в которых получаются необходимые
графические представления нашего объекта. Напомним, что
преобразование Р векториого пространства называют
проекцией, если Р2 = Р.
Пусть объект описывается в декартовой системе
координат (х, у, z) и в этой системе экран графического
дисплея соответствует прямоугольному подмножеству
{(х, у): О^х^а, О ^ у ^ Ь)
на плоскости ху. Простейший метод получения образа
объекта на экране — это применить преобразование
Pir = r', где г = (х, у, z) и г' =(х, у, 0), к множеству
геометрических данных. При условия что все значения
х и у для множества данных находятся внутри экрана,
получаем полную картину объекта. Если некоторые
значения х и (или) у находятся вне проделов экрана, то
надо вначале произвести подходящее преобразование
масштаба. Р\ — линейная проекция, так как
"1 0 01
Р^Х, у, 2) =
0 1 0
0 0 0
и Р\т = Рхг для всех г ^ R3. Однако Pj г не
существует, так как
det
1 0 0]
0 10 =
О 0 oj
0.
Геометрически Pi можно получить следующим
образом. Начертим линию сегмента (линию проекции) из
точки Q, определяющей положение вектора г, в точку
Q', определяющую положение г', в плоскости ху так,
чтобы линия отрезка QQ' была ортогональна плоскости
ху (рис. 10.14). Тогда ясно, что
r' = r + (-2k) = (z, j/,0)=P,r.
Pi называют параллельной ортогональной проекцией R3.
861
В параллельной проекции не отражается глубина
получаемого образа; высота объекта появляется на экраие
такой же независимо от его расстояния до плоскости ху.
Рис. 10.14
Рис. 10.15
Рис. 10.16
Последнее преобразование, которое мы опишем,
предназначено для того, чтобы дать глубину образа или
«перспективу». Вместо линий параллельной проекции
построим линии проекции, выходящие из некоторой фиксиро-
S62
ванной точки. Определим проекцию Pit***', где
фиксированной точкой является конец вектора zpk (как
показано на рис. 10.15) и, следовательно, точка Q
отображается в точку О'. Рисупок 10.16 представляет вид
рис. 10.15, если смотреть вдоль оси ОХ. Очевидно, что
у' _ у
*р zp~z'
или же
Аналогично получаем
явная форма для Рг имеет вид
Ра (*> У у z) = i Jz/z (х, у, 0).
Предложение. Рг является нелинейной
проекцией R3.
Доказательство.
Р2Х (х, у, z) = Ра (Хх, %y, Xz) = 1_ь/, fix, Ху, 0),
ХР2 (х, у, z) = i Jzjz (Хх, Ху, 0) Ф PZX (z, у, z)
для произвольного X. Следовательно, Рг нелинейно.
Имеем
Pi{Pi{x,y,z)) = P2(T-^,T-l-I-,0)~
и, таким образом, Рг — проекция в R3 по определению. /
Отсюда можно сделать заключение, что Pi нельзя
включить в Л(3, R). В образе можно достигнуть
хорошей глубины применением Рг, при условии что выбрана
подходящая точка проекции. Па рис. 10.17 показан вид
прямоугольного параллелепипеда, полученный
проекциями Pi и Pi.
363
2.3. Однородные координаты и линейное
представление. В этом разделе мы опишем технику представления
преобразований R2 и R3, рассмотренных выше, при
помощи элементов из Л {3, R) и ^#(4, R) соответственно.
Рис. 10.17
Идея является общей и описывается в R"; мы ищем
вложение некоторых специальных классов
преобразований Rn, не все из которых являются линейными, в
алгебру матриц J((n + i; R).
В § 1 было показано, что Q" является биекцией
Нп -»- R" и может быть использовано для определения
системы координат в R". Это означает, что если Т —
преобразование R", то мы можем его выразить как
преобразование Нп. Другими словами, существует
отображение Т: Нп -»- Нп такое, что диаграмма на рис. 10.18
коммутативна. Имеем Q" ° Т — Т ° Q", но отображение Qn
имеет обратное. Поэтому мы можем записать Т —(Q")~l °
°Т ° Q". Если S — другое преобразование R", то
S^~T~(Qn)-l°S°T°Qn =
-(<?")-' • S» Qn »(<?")-'. Т' Qn = S • Т.
Другими словами, мы можем соединить вместе
диаграммы, не нарушая коммутативность, как это показано на
рис. 10.19. Для некоторых преобразований Т
пространства Rn существует линейное преобразование
TL: R"+1 -*• Rn+1
такое, что Т [х] = [TLx] для всех х е Rn+I.
TL существует для всех преобразований,
рассмотренных в этой главе, и является требуемым представление.».!
Т в Rn+1, так как если г е R", то мы имеем
TI = Qn°T°(Q")-lr = Qn°T{t, i] = Qn[TL(r, l)].
Таким образом, преобразование Т получается путем
применения Ть к однородному представлению и
последующим применением Q" для возврата к физическим
координатам.
364
Чтобы иметь уверенность в том, что все работает
правильно, надо показать, что композиция З'Т
соответствует произведению матриц SLTL. Это
легко сделать, так как н" —R"
S'T[x] = S[TLx] = [SLTLx].
Графически это означает, что мы можем
Рис. 10.18
Рис. 10.19
расширить коммутативную диаграмму, изображенную на
рис. 10.19, до коммутативной диаграммы, изображенной
на рис. 10.20. Отсюда следует, что, один раз определив
матрицы TL, SL, ..., соответствующие преобразованиям
Я"±
Н"-
а"
"I
-*~Нп
Я"
т
п
+ Н"
s
Рис. 10.20
Т, S, ..., которые мы хотим осуществить, мы затем
сохраняем их, опуская обозначения классов
эквивалентности и работаем с векторами, представляющими эти
классы. Произведения преобразований в R" получают путем
умножения матриц из^Г(п + 1, Н), примененных к
векторам, представляющим классы. Все представители
данного класса будут давать те же самые физические
координаты в соответствии с отображением
\х±, ..., xn, xn+i) !-♦ - (xlt ..., Xn),
"n+i
Обычно выбирают вектор (г, l)<=Rn+1, чтобы
представить te R". Такой выбор, очевидно, всегда возможен.
365
В следующих примерах мы получим матрицы TL для
преобразований, описанных в пп. 2.1, 2.2. Все матрицы
вычисляются в стандартном базисе.
Пример 2.1. Пусть Т: R" -*- R" — линейное
преобразование с матрицей Ат. Тогда матрица TL будет равна
Lo-..о lj
так как если x = (r, l)eR"+!, то
Т М - {Qn)~1»T»Qn [х] - (<?п)_1оГг
- (<?n)-Mrr =[(Лгг, 1)] =
0-л
О
L0...0 ij
Для I т g I, если это удобно, используют обозна-
Ь...О lj
\АТ 01
чение L А, Раскладывая по последней строке,
\АТ 0]
видим, что det L . = 0 тогда и только тогда, когда
\АТ 0 "l-i [д-г q]
det Ат •= 0; очевидно, что L i — \ т \. f
•]
Пример 2.1 показывает, как применять линейные
преобразования; например, применяя преобразования к
50(2), получаем представление
[cos в — sin в 01
sin 0 cos в
0 0
в J?(3, It) для матрицы
[cos в — sin б!
sine cosOj*
Аналогично, если W е 50(3), то WL имеет вид
\W о]
[о ij
в JT(4, R) и
866
Пример 2.2. Пусть Т: R" -*■ R" — перенос
Tt = г + а для всех г е Rn,
где a«=»(oi, ..., o„)sRn — фиксированный вектор. Тогда
матрица TL будет равна
■Г
• •
п
_0...0 1 _
она может быть записана в более краткой форме:
[J ;]•
Легко показать, что если х =»(г, 1), то
Т М - (<?")-1 • Т. Qn [х] - (Q")'1 о Tt -
- О?")-1 (г+«) =- кг+а, 1)] = [[07;][;]]./
Пример 2.3. Аналогичными вычислениями можно
показать, что преобразование (W, а)е/?(2) можно
выполнить, используя
[* j] е GL (3, R), где W е= SO (2) и о е Ra,
а преобразование (W, а)е£(3) можно выполнить,
используя
[* j]«=GL(4,R), где JFe=,S0(3) и asR'.
Обратные матрицы имеют вид
W a]"1 \WT ~WTa]
О lj "L 0 1 J
как в Е(2), так ив £(3). /
Пример 2.4. Проекция Рг: R3 -*• R3, определяемая
соотношением
^>,(а;,1/,2)=г^7Г(а;,у,0),
может быть выполнена в Ж{\, R) как
-10 0 0"
0 10 0
0 0 0 0 »
О 0 —1/*,, 1_
367
так как если х —(г, 1)е R* и г— (г, у, г), то
Р. М = «ГУ^О* Кг, 1)] = (СТ1-^ =
-«^(i^v ^ о)-[(^. ^ о, 1)]
I—10 о о
0 10 0
[{х, у,0,1 — Фр)] =
оо о
О 0 — 1/г„ 1
1
J> *Л!~*_'-!
Упражнение 10.1.
1. Показать, что группы (Г(2), •) и (R2, +)
изоморфны.
2. Доказать, что если
-[! "Л
то матрица поворота ТУ(0)е50(2) может быть
записана в экспоненциальной форме W(Q)** ехр{0Л.
3. Определить евклидово преобразование,
отображающее треугольник PQR, изображенный на рис. 10.21, а, в
треугольник P'Q'R', изображенный на рис. 10.21, Ь.
R*(3,3)
P-tiJ) 4=(3,2)
ffr=l0,2)
а'=(1,2)
Р'=(Ы)
Рис. 10.21
4. Доказать, что 5(2)—коммутативная подгруппа
линейных преобразований R2.
5. Показать, что в общем случае элементы S(2) не
коммутируют с элементами £0(2), в построить рисунок,
демонстрирующий: это.
6. Доказать, что единица нетривиальной подгруппы
5(2) не коммутирует с 50(2).
7. Используя преобразование S(x, y)*=(3x, 5у),
изменить масштаб R2 так, чтобы точка (2, 2) оставалась
фиксированной. Определить это преобразование.
368
8. Показать, что если nsR2- единичный вектор, то
nX((nXr)Xn) = iiXr для всех rsR1.
9. Пусть n s R3 и А а- R3 -*- R3 определено
соотношением Лпг>=пХг для всех rsR!, Показать, что Аа-*~
линейное преобразование R3, и определить матрицу .da—
в стандартном базисе {i, j, k).
10. Используя результаты п. 9 этого упражнения и
выражение W~{Q) через А~, получить в явном виде
матричную форму поворота Wj(6) в R3. Показать, что
detW~(9) = l.
11. В обозначениях п. 9 показать, что для всех
г s Rs имеем
А*-т А~г, Л*~г = - А*~т,
а а а а '
А*~г = Л-r, Ла~г = Л2~г,
а а ' а а '
A^+kt - A*-+kr
о п
для всех к е N; использовать эти результаты для
доказательства равенства
W~(0) = exp(BA~).
12. а) Использун экспоненциальную форму W~(B),
получить другое доказательство того, что
б) Если A &J[(n, R), то можно показать, что
det(exp Л) = ехр|2 Ан ;
используя этот факт, получить другое доказательство
соотношения
detW~(9) = l.
13. Доказать, что п является собственным вектором
W~ (8) при любом 9, 0 «S 9 < 2я. Чему равно
собственное значение? Дать геометрическую интерпретацию
этому результату.
14. Вывести формулу для матриц поворота
15. Показать, что все подгруппы S~«={W~(9):0s^9<2n]
изоморфны £0(2].
24 д. кук, Г. Бейз 369
16. Пусть aeR! — фиксированный вектор и
преобразование Т: R3 -*■ R3 определено как
Тт
■£-} при а-г^О,
О в противном случае.
а) Доказать, что Т — нелинейная проекция в R8.
б) Доказать, что
Т[(т, !)]-[(», а-г)]
для всех ieR! при г • а Ф 0.
в) Определить матрицу 4е^(4, R) такую, что
Г [х] = [Ах] для всех х е R4, где [х] в Н3.
§ 3. Кривые и поверхности
3.1. Математическое представление. Кривые и
поверхности образуют основу большинства
вспомогательных устройств компьютера и графического
математического обеспечения. Возможны различные математические
описания одноц и той же геометрической формы;
некоторые из них обсуждались и доступны с точки зрения
приложений.
Если / <=■ R — интервал, то через хп обозначим
множество всех отображений класса С1:
с: I-+ Rn,
причем с' Ф 0 на /. На и" определим отношение ~
следующим образом. Пусть
et: /i-R", c2: 78-R4;
тогда ci ~ Ci, если существует отображение ф: 1\-*-1% из
класса С1 такое, что с\ = сг • <р и ср' ч* 0 на /ь
Предложение. Отношение ~ является
отношением эквивалентности на %п. II
Доказательство оставляем в качестве упражнения.
Пусть ^п обозначает классы эквивалентности v.nl~.
Определение. Кривой в R" называется элемент
<8\ II
Если сек" и с: /->■ Rn, то I называют
параметрическим пространством с, a t — параметром или
координатой с. График с (graph с) определяют как множество
точек
ic{t): t^D.
870
Если [с] обозначает класс эквивалентности с в Фп, то для
всех С\ е [с] имеем
graph c\ = graph с,
так что разумнее говорить о графике кривой [с].
Обратное неверно; мы можем иметь соотношение graph [c\\ =
■=■ graph [сг], но при этом [с\] Ф [са]. Отношение
эквивалентности ~ группирует вместе элементы к", которые
параметризуются «аналогичным» образом.
Для вычислительных целей выберем элемент с е [с]
и назовем кривую также с, хотя с точки зрения
терминологии это неправильно. Это возможно при условии, что
мы понимаем разницу и проявляем осторожность, когда
это необходимо. График кривой в V2 является
множеством точек, которые мы видим отображенными на
графическом терминале. Тогда Ч?2 — множество плоских
кривых, а элементы ЧР3 — множество пространственных
кривых. ft2 и <$?* важны для приложений, однако, где легко
провести рассуждения в более общем случае, будем это
делать.
В литературе по компьютерной графике употребляют
термины «параметрический», «явный», «неявный» по
отношению к различным методам определения кривых.
Если (£i, ..., £„)— система координат в R" и элемент с«н
бх" определен при помощи п функций t>—^{t)
(1 <*«£«), то такое задание кривой называют явным
параметрическим описанием. Иногда выделяют два
типа— «симметричный» и «несимметричный». Описание
несимметрично, если параметр является одной из
координат, т. е. t •= %( для некоторого £, 1 ^ i < га.
Следовательно, несимметричные описания имеют вид
(£«, (ЫЬ), bib) Ь In(?<))), %,&I\
в случае V* и декартовых координат эта запись имеет
знакомый вид
(х, (х, у(*))), *«[х0, *i],
и кривую определяют, задавая явно у как функцию от
х. С другой стороны, мы можем описать кривую в R",
определяя подходящую функцию /: R" -»- R. Для
фиксированного а е R функция / определяет кривую с
графиком
Г1 («)=<(£• S.):/(5i £»)=*>;
/(Sii •••! In) называют уравнением кривой (строго
говоря, следовало бы назвать графиком кривой). В приаципо
24* 8"
уравнению такого типа можно придать явную форму,
хотя в общем случае это сделать достаточно сложно.
Говорят, что кривые, определяемые такими уравнениями,
описаны неявно.
Заметим, что не все отображения /: R" -*■ R будут
задавать кривые описанным выше способом. Например,
постоянное отображение задает все Rn. Далее функция
/: R" -*■ R может для одних значений постоянной а
задавать кривую, а для других — нет, как мы это увидим
ниже.
Плоская кривая, заданная неявно уравнением вида
ах2 + by2 + сху + dx + еу + / = О,
называется квадратичной кривой (кривой второго
порядка).
Пусть с\\ [a, b]-»-Rn и а: [с, d]'-*■ Rn, где а < Ь =
■=c<d и С\(Ъ) = С2(Ъ). Тогда с\ V Сг определяют
следующим образом:
_fci на [а, Ь],
ClVC2-Ua на [c,d]
и называют объединением функций с\ и сг. Для
симметричных описаний, если сФ Ь, а может быть
параметризовано таким образом, чтобы это условие выполнялось.
Это означает, что мы можем построить с2 е [с2] такое,
что интервал для сг начинается с Ь. Следовательно, при
условии Ci(b)=C2(b) объединение С\ V Сг имеет смысл,
но может не быть, строго говоря, кривой. Проблема
состоит в том, что Ci V а может не принадлежать С1.
. Пример 3.1. Прямо-
Ул (Х1'У1> линейная кривая (пря-
^larctgm мая) может быть
определена в R2 обычным обра-
-' (х0,у0) зом как
у{х) = пгх + с,
X
-*- Хо < X < Х\,
Рис. 10.22
где m — наклон прямой,
а с — точка пересечения с осью Оу (рис. 10.22). В
наших обозначениях это будет
(х, (х, mx + c)), хо<х<Х\;
mac могут быть заданы непосредственно, однако более
372
естественно использовать концы Го = (х0, Уо) и Г| =
= (xi, yi), откуда получаем
m = (yi — уо)/(х1 — хо), с = у1 — тхи
Проблема, возникающая в несимметричных описаниях,
теперь очевидна. Эта форма не описывает вертикальную
линию (когда xo = xi). Если вместо этого
воспользоваться неявной формой
(У — Уо) (*i — х0) — (yt — уо) (х — хо) = 0, х0 < х < хи
то при xi = хо получим уравнение вертикальной линии
х = хо. Неявное уравнение прямой линии в общем
случае имеет вид
ах + by + с = О,
и вертикальные линии описываются этим уравнением
при 6 = 0.
Обычное симметричное описание может быть
записано в векторной форме:
(*, го + fu), *е=[0, In — г0И],
где и — единичный вектор, и = (т\ — ro)/Nri — г0И. /
Рассмотренные выше примеры приводят к общим
наблюдениям о природе кривых, определенных
несимметричным способом. Перед тем как обсуждать это, дадим
несколько необходимых определений.
Определение. Говорят, что плоская кривая
(и, (х(и), у (и))), це/ = [цА, ub] является:
— однозначной, если для всех щ, юге I имеем
jc(ui) —x(u2)**- y{ui) — y{ui)\
— многозначной, если предыдущее условие не
выполнено;
— замкнутой, если (х(иА), #(ид)) = (х(ив), у(ив)). II
На рис. 10.23 проиллюстрированы все три случая.
Очевидно, что замкнутая кривая является многозначной.
Несимметричное описание (х, (х, у (х))), хо < х < х\
может определять только однозначную кривую. Это
потому, что у является функцией от х и, следовательно,
х,=х2=> y{xi) = y(x2).
Вертикальпая линия является многозначной кривой.
Многие приложения в компьютерной графике
требуют, чтобы замкнутые и многозначные кривые были вклю-
873
чены в описания. Единственный путь достижения этого —
объединять кривые, как это описывалось ранее. При
использовании несимметричных форм это не очень удобно
~Р
Однозначная
кривая
а
Многозначная
крибая
Ъ
Ряс. 10.23
Замкнутая
кривая
о
и редко применяется на практике. Симметричные
описания не имеют этого ограничения и, следовательно,
являются более удобными для таких приложений.
Несимметричные формы обычно
используют, когда требуется
однозначная кривая.
Пример 3.2. Окружность
является примером замкнутой
кривой. Рассмотрим окружность
в R2 радиуса а с центром в
начале координат (рис. 10.24).
Чтобы записать окружность
в несимметричной форме,
необходимы две кривые: у\(х)=-
Рис. 10.24
(а2-х2)
1/2
= (а2-х2)1/2, -
квадрантах 1 и
- а в квадрантах 3
■а
2
и
<
и
4.
rs£ a
Ы*) =
Уравне
ние окружности в неявной форме имеет вид
х* + у2
0
или же в векторных обозначениях,
Urll - а - 0.
Это уравнение описывает всю окружность; оно может
быть записано в симметричной параметрической форме
(9, a (cos 9, sin 9)), 9 е [0, 2я[,
л
(Чгт^гЫ)'
+ *2' 1 + :
Волможно бесконечное число других симметричных форм,
374
выбор которых зависит от приложений. Для выполнения
рисунков более предпочтительной является
параметризация с относительно постоянным изменением г(4).
Математически это означает, что величина llr'(f)ll
приблизительно постоянна на /. Несимметричное представление в
большинстве случаев является неудобным, так как
требуется проверка, на какой ветви кривой мы сейчас
находимся. II
Примерами кривых второго порядка являются эллипс,
гипербола и парабола.
Если G — группа преобразований R", тогда G
преобразует <&п естественным образом. Если се?" — кривая
с-(*.'(*)). tel,
и g e G, то определим кривую gc следующим образом:
gc-(t,gi(t)), *s/.
Например, когда G = SO(2) и ce'g'2, то график W(Q)c
является графиком с, повернутым на угол 9 (рис. 10.25).
График а График W(9)c
а Ъ
Рис. 10.25
Уравнения обычно описывают кривые в
«стандартном» положении, когда ось ОХ является осью
симметрии. Чтобы получить уравнение геометрически
эквивалентной кривой в некотором другом положении и
ориентации в пространстве, надо просто применить
подходящий элемент группы Е(2) к уравнению. В качестве
примера выведем уоавнение эллипса с графиком е,
изображенным на рис. 10.26. В стандартном положении
(изображенном штриховой кривой на рисунке) кривая
записывается в виде
с = (ф, (acoscp, bsin<p)), <p^[0, 2я[;
875
следовательно, кривая с графиком г имеет вид
(W(8), d)c=(cp, (W(Q), d)(acoscp, 6sinq>))-
*= (ф, (a cos ф cos 6 — b sin ф sin 0 + du a cos ф sin 6 +
+ b sin ф cos 6 + йг)), ф e [0, 2n[.
Неявные уравнения для кривых в нестандартном
положении могут быть получены аналогично.
Перед тем как перейти к
другой теме, упомянем один
интересный факт, проверка которого
осуществляется довольно легко,
когда кривые заданы неявными
уравнениями. Пусть ](х, у) = 0 —
уравнение плоской кривой, которая
делит плоскость R2 на три части,
тогда, если (х',
у')—произвольная точка пространства,, то зпак
Рис. 10.26 /(*'. У') определяет область,
в которой лежит (х', у').
Например, возьмем уравнение окружности
/(*, у) = х2 + у2-а2 = 0;
тогда
}(х', у')> 0 ■*• (х', у') лежит 8а пределами круга,
/(*'i y')n0^-{x\ у') лежит на окружности, f(x', y'}<
< 0 =>• (x't у') лежит внутри круга.
Проверки такого типа используют в трехмерных
случаях в алгоритмах удаления невидимых линий с
изображений. Исследование поверхностей может быть
проведено по аналогии с исследованием кривых. Методы
представления имеют те же самые преимущества и
недостатки.
Поверхности двумерны и имеют пространство
параметров вида 1\ X h, где Л, h — R — интервалы.
Параметрическое представление в общем случае имеет вид
((в, »), г(и, р)), (и, v)^hXh.
Неявное уравнение поверхности записывается в виде
f(x, у, z)=0, а поверхностью второго порядка является
поверхность, определяемая уравнением
ах2 + by2 + cz2 + dxy -Ь exz + fyz + gx + hy + iz + j = 0,
где a, b, с, d, e, /, g, h, I, / e R.
876
Пример 3.3. Пусть D = (r,: r(eR9, 0<*<2> —
множество линейно независимых векторов. Тогда
r(u, У)=го + и(п-г0)+у(г2 — г0), (и, u)eR2,
есть симметричное описание плоскости Р, проходящей
через точки D (рис. 10.27). Если q = (r2 — r0)X(ri — r0),
Рис. 10.27 Рис. 10.28
тогда n = q/HqH — единичный вектор, ортогональный Р
(называемый нормалью). Таким образом, геР тогда и
только тогда, когда (г — Го) • п = 0, или
(х — х0)щ + (у — уо) п2 + (z — z0) re3 = 0.
Это является неявным представлением Р. II
Пример 3.4. Пусть S — сфера в R3 радиуса а с
центром в начале координат. Очевидно, что г^5 тогда и
только тогда, когда llrll = а, или же
х2 + у2 + z2 - а2 = 0.
Сферические координаты дают симметричное
представление
((0, ф), a (sin G cos ф, sin G sin ф, cosO)),
(G, ф)е[0, я]Х]0, 2я[. //
Пример 3.5. Пусть С — цилиндр радиуса а с осью
симметрии OZ. В этом случае (х, у, z)^C тогда и
только тогда, когда
х2 + у2 — а2 = 0.
Используя цилиндрические координаты, получаем
симметричную форму
((ф, z), (асовф, озшф, z)).
377
Обычно рассматривают «конечный» цилиндр (рис. 10.28).
Для него уравнение будет иметь вид
з? + у2 — а2 = 0, zo<zs£zi. /
Относительно уравнений поверхностей, находящихся
в нестандартном положении, можно сделать те же
замечания, что и для случая кривых; надо лишь Е(2)
заменить на Е(3).
3.2. Геометрия плоских кривых. Целью данного
раздела является определение понятий длины, касательной
и кривизны плоских кривых. На рис. 10.29 изображена
плоская кривая
c-(t, r(0), te[tA,tB].
Р — произвольная точка на с, являющаяся концом
вектора t(t), а Р' — конец вектора t(t + 8t), 52eR\{0).
Рис. 10.29
Пусть 6r(f) обозначает вектор РР'. Тогда, очевидно,
&r(t)~T(t + &t)-r(t),
есть длина отрезка РР'.
Если разбить интервал [tA, tB] на много маленьких
интервалов равной длины [и~\, U], tA = to < t\ < ... < tn =
*~tB, то можно образовать сумму
Sab =2 1Ы
где 6г| = г(<()—r(fj_i), которая равна длине ломаной ли-
878
нии вдоль с. Интуитивно ясно, что мы получаем
аппроксимацию кривой SAB между r(tA) и r(tB). Приближение
будет тем лучше, чем больше число разбиений отрезка
[<а, te] • Эти интуитивные понятия приводят нас к
определению длины Кривой Оав''
п
<5AB=Hm2lSri||.
n-*oc i=i
С вычислительной точки зрения эта формула трудна для
использования. Поэтому мы перепишем ее в более
удобном виде:
lim 2 1 вг, || = 11т 2 || г (U) - г (t^) || =,
lim 2
г('-+бГг('-)1«-
где 6t = (tB — tA)ln. Но это по определению интеграл
'в
ЛИ
и*
следовательно,
$ав ;
fill*
=ШЫ§)*Г-
Если r(t) — (x(t), y(t)), то формула принимает вид
'в
Sab ;
*А
Интуитивно ясно, что линия наклона (па рис. 10.29
это QQ") к кривой с является прямой, касающейся этой
кривой и имеющей тот же самый наклон, что и с, в
точке Р. Пусть 8 — это угол между отрезком РР' и
касательной QQ'. Тогда при Ы -*■ 0 следует ожидать, что
6 -»■ 0. Это означает, что направление 6r(f) или же
6r(£)/67 стремится к направлению QQ' при б£-»-0.
Другими словами, вектор
dx ,. бг
-п = limjjj
dt 6t->Q 6t
379
параллелен QQ'. Если
-j
dt,
тогда в принципе все кривые могут быть выражены в
терминах параметра длины дуги (s, r(s)), se[0, SAB].
Из определения длины дуги получаем
Л£Н
дифференцируя обе части по s, имеем
i — II —
II ds
Другими словами, dr/ds — единичный вектор,
параллельный касательной линии к r(s). Это вызывает следующее
определение.
Определение. Пусть (s, r(s)), se[0, SAB],—
кривая с длиной дуги в качестве параметра. Определим
единичный вектор касательной T(s) к кривой в точке
s как
*«-§(').
а нормальный вектор N(s) к кривой как
N(s)=W(n/2)T(s). II
Базис (Т, N) образует правостороннюю систему
координат в R2. Если кривая не параметризуется в терминах
длины дуги, то выражение для Т (см. упражнение 10.2)
будет иметь вид
Т(ц) =
rir I
du\
_dr_j
du\
dt_
du
EL
\du
если
если
£>0,
du
^<0.
du
Эти формулы неявно предполагают условия на s.
В действительности знак Т не образует класса
эквивалентности, инвариантного на 'S'2, а является функцией
выбранного параметрического представления. Даже если
параметризация осуществлена с помощью параметра —
длины дуги, она зависит от того, с какого конца мы на^
280
чянаем измерять s. Касательное пространство к точке
кривой является классом, инвариантным на W2, где
касательное пространство к [с] в точке Р имеет вид
(«Т: а s R, где Т — касательный вектор в Р для
некоторого с s [с]}.
Из упражнений к § 4 гл. 5 следует, что dT/ds
ортогонален к Т; следовательно, существует функция х:
[О, SAB] -*• R такая, что —^ — x(s)N (s); x (s)
называют кривизной кривой r(s), a l/x(s)— радиусом
кривизны t(s).
Упражнение 10.2.
1. Получить в R2 явное уравнение прямой,
проходящей через точки (—1, 3) и (2, —1). Определить
единичный вектор, параллельный этой прямой, и написать
уравнение в параметрической векторной форме. ^
2. Определить касательный и нормальный векторы Т
и N и кривизну х следующих плоских кривых:
а) окружности — (8, a (cos 8 i + sin 9/)), 0<6<2я;
б) эллипса — (ф, (acosq)£+ bsinyj)), 0*£ф<2я;
в) параболы — (t, (at2i + 2atj)), — °°<t<°°, где
a > 0 и Ъ > 0 действительные.
3. Плоская кривая определена формулой
(u, (acosui+b(l — e-u/2)j)), 0 *S и < «>,
где а > 0 и Ъ > 0 действительные.
а; Показать, что касательный вектор к кривой
Задает - ™ / \ — 2a sin и? + be~u/2J
ется формулой Т (а) - ^ ^ ц + ^_ц)1/2 .
б) Начертить кривую в интервале 0 < и < 2я.
в) Найти нормаль к кривой.
4. Начертить кривую (ц, (acos и, Ъ sin и, Ъи)),
—оо <и<°°, и найти выражение для касательного
вектора Т(и).
5. Пусть (х, (х, у(х))), х0^х^х\, описывает
плоскую кривую. Показать, что касательный вектор Т(#)
может быть записан как
f /r\ = (1, dy/dx)
1{Х) (l + idy/dxfV*'
881
и, следовательно, кривизна х(х) в точке х имеет вид
, . d%yldx*
*W (i + Wdz)W
6. Получить формулы, аналогичные полученным в
п. 5, для симметричного представления (а, (х(а), у(и))),
МО ^ tl «S В].
7. Найти симметричное параметрическое уравнение
плоскости Р, проходящей через точки (0, 1, 0),
(3, —2, 0) и (1, 3, 4) в R3. Показать, что нормальный
вектор будет параллелен (—4, —4, 3), и использовать
этот факт для вывода неявного уравнения для Р.
8. Поверхностью вращения называется поверхность,
являющаяся результатом вращения плоской кривой
вокруг некоторой фиксированной оси в R3.
а) Показать, что если плоская кривая
(и, (p(u)i +q(u)k)), иА<,и^ив
делает поворот па угол 2я вокруг оси OZ, то
соответствующая поверхность вращения описывается уравнением
((и) ф)| (р(и)cos<fi + р(й)sin<f\ +д(и)к)),
где иА s£ и < ив, 0 < ф < 2я.
б) Использовать результаты задачи 8, а) для
получения симметричных параметрических представлений
следующих поверхностей:
— цилиндра; — конуса; — тора.
9. Цилиндр С\ длины 21 определяется уравнением
Xs + z2 = ft2, — I < у < I, и пересекается с цилиндром Сг
длины h, который определяется уравнением у2 + (z — <х)2=»
-=• а8, 0<х <h, где 0 < а < ft, h> ft.
Используя параметрические координаты
{(*, 9): 0 < х < h, 0 «£ 9 < 2я> на С2,
показать, что кривая, являющаяся пересечением С\ и Сг,
может быть записана как (0, г(0)), О<0<2я, где
r(9)=»((ft2-(a + asin0)2)1/2, acosB, a + asin0).
Показать также, что единичный касательный вектор в
кривой в точке 9 = 0 задается формулой
U-aa,0,a(b*-a*f*).
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ
Автомат конечный 320
Автоморфизм 136
Алгебра Булева 176
— линейная 162
— регулярная 336
Алгебраическая структура 134
Алфавит 138, 257
Атрибут 56
База данных 64
Базис 157
— ортонормированный 165
Бнекция 70
Бит 125
Буква 257
Вектор 154
— единичный 165
— собственный 170
Вектора компонента 155
Гомоморфизм 134
Грамматика 264
— регулярная 340
— Хомского 268
Граница верхняя 52
— нижняя 52
Граф 217
— двудольный 223
— ориентированный 242
— пленарный 228
— полный 223
— , пометка 221
—связный 224
Графа ребро 218
Группа 139
Делитель нуля 142
Дерево 224
Доказательство по индукции 81
Дополнение 17, 18
Единица 111
— левая 111
— правая 111
Законы де Моргана 29
Замыкание процесса 65
— рефлексивное 201
— транзитивное 66
Запись 54
Значение собственное 170
Изоморфизм 136
— неопределенный 101
Интеграл Римана 99
Карта графа 229
Класс эквивалентности 48
Кольцо 141
— коммутативное 141
— с единицей 141
Комбинация линейная 158
Композиция 159
Конкатенация 138
Кривизна 381
Логарифм натуральный 104
Маршрут 224
Матрица 195
— булева 201
— смежности 2*8
— транспонироь иная 200
Машина с неограниченной памятью
303
Множество 10
— бесконечное 19
— конечное 19, 75
— пустое 17
— счетное 75
— универсальное 18
— частично упорядоченное 52
Моноид 137
Мощность множества 19
Набор длины п 34
Надмножество 25
Неравенство треугольника 171
Нетерминал 265
Нормаль 377
Нормальная форма
дизъюнктивная 181
— конъюнктивная 181
Область значений 37
— определения 37
— целостности 143
Объединение множеств 16
Операция ассоциативная 110
— диадическая 106
— дистрибутивная 111
— замкнутая 106
— коммутативная НО
— монадическая 106
— над множеством 106
Определитель 212
Основание индукции 81
Отношение антисимметричное 43
— бинарное 36
— обратное 39
— порядка 51
<— полное 51
— пустое 37
— рефлексивное 43
— симметричное 43
*— составное 62
883
Отношение тождественное 37
— транзитивное 43
— универсальное 37
— эквивалентности 47
— п-местное 38
Отображение 69
— линейное 159
— тождественное 70
Перенос 357
Поворот 359
Подмножество 25
— собственное 25
Подпространство векторное 155
Подстановка 83
— циклическая 85
Подуказатель 134
Покрытие 47
Поле 54, 143
Полугруппа 137
Полукольцо замкнутое 192
Порядок аддитивный 148
Последовательность 88, 92
Предел функции 94
Принцип двойственности 178
Продукция 265
Проектор 169
Проекция 56
Произведение векторное 165
— внутреннее 164
— скалярное 163
Производная 96
Пространство векторное 154
конечномерное 159
Разбиение 47
Размерность 158, 159
Разность множеств 17
— симметрическая 17
Решетка 174
Ряд 93
— Маклорена 104
— сходящийся 93
Сочетание 88
Степень множества 30
Сумма ряда 93
Таблица истинности 178
Терминал 285
Трансформация в»
Указатель 134
Файл нормированный 54
Функционал 89
Функция 68
— биективная 70
— ииъективная 70
— сюръективная 69
— екслоненциальвая 104
Характеристика 14S
Цикл 85, 224
— длины п 88
Число рациональное 49
— связности 227
Шаг индукции 81
Эквивалентность множеств 25
'Элемент идемпотентный 111
— обратный 111, 139
Эндоморфизм 133
Ядро 170
Научное издание
КУК Д., БЕЙЗ Г,
КОМПЬЮТЕРНАЯ МАТЕМАТИКА
Зуведующий редакцией Е. Ю. Ходан
Редакторы: Е. В. Ильченко, А. Б. Угольников
Художественный редактор Т. Я. Колъченко
Технический редактор С. Я. Шкляр
Корректоры: М. А. Смирнов, И. Я. Кришталъ
ИБ J* 32537
Сдано в набор 02.03.89. Подписано к печати 20.04.90. Формат 84X108/32.
Бумага книжно-журнальная. Гарнитура обыкновенная. Печать высокая.
Усл. печ. л. 20,16. Усл. кр.-отт. 20,16. Уч.-изд. л. 19,84. Тираж 23 000 акз,
Заказ М 604. Цена 1 р. 70 к.
Ордена Трудового Красного Знамени издательство «Наука»
Главная редакция физико-математической литературы
117071 Москва В-71, Ленинский проспект, 15
4-я типография издательства «Наука»
630077 Новосибирск, 77, Станиславского, 25