Текст
                    КОМПЬЮТЕРНО
МАТЕМАТИКА
Л К) к Г laft.i

Д. КУК, Г. БЕЙЗ КОМПЬЮТЕРНАЯ МАТЕМАТИКА Перевод с английского Г. М. КОБЕЛЬКОВА МОСКВА «НАУКА» ГЛАВНАЯ РЕДАКЦИЯ ФИЗИКО-МАТЕМАТИЧЕСКОЙ ЛИТЕРАТУРЫ 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 90 ISBN 5-02-014216-6 ©Cambridge University Press, 1984 ©«Наука». Физматлит, перевод на русский язык, 1990
ОГЛАВЛЕНИЕ Предисловие ............................................. 5 Введение ....... ........................................ 7 Глава 1. Множества ............................... § 1. Множества и их спецификация.............. § 2. Простейшие операции над множествами § 3. Диаграммы Венна.......................... § 4. Подмножества и доказательства .... § 5. Произведения множеств ................... Глава 2. Отношения ............................... § 1. Основные понятия......................... § 2. Графические представления................ § 3. Свойства отношений....................... § 4. Разбиения и отношения эквивалентности § 5. Отношения порядка........................ § 6. Отношения на базах данных и структурах данных § 7. Составные отношения...................... § 8. Замыкание отношений...................... Глава 3. Функции ................................. § 1. Функции и отображения.................... § 2. Обратные функции и отображения .... § 3. Мощность множеств и счетность............ § 4. Некоторые специальные классы функций § 5. Аналитические свойства вещественных функций § 6. Операции ................................ Глава 4. Основные понятия арифметики .... § 1. «Малая» конечная арифметика.............. § 2. «Большая» конечная арифметика .... § 3. Двоичная арифметика . ................... § 4. Логическая арифметика.................... Глава 5. Алгебраические структуры................. § 1. Алгебраические структуры и подструктуры . § 2. Простейшие операционные структуры § 3. Кольца и поля............................ § 4. Линейная алгебра......................... § 5. Решетки и булевы алгебры................. § 6. Замкнутые полукольца..................... 10 10 15 22 24 33 35 36 40 43 46 50 53 62 64 68 68 72 73 83 91 105 114 141 119 123 125 134 Л Q7 140 154 172 192 1* 3
Глава 6. Матрицы . . ........ § 1. Матрицы и бинарные отношения на конечных мно- жествах .............................. § 2. Матрицы над другими алгебраическими структура- ми ..................................... § 3. Матрицы и векторные пространства . . . 195 195 202 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. Множества--->"4. Арифметика 2. Отношения I | 3. Функции Численный г анализ '5. Алгебраические^— | структуры---------- 6. Матрицы1----► 10. Компьютерная геометрия ----8. Языки— 7. Теория графов г 9. Теория —* Компиляторы автоматов -------- Диагностика программ Формальная теория вычислений Сети Искусственный интеллект Терминология и обозначения обычно строго вводятся в соответствующем месте текста. Однако иногда в при- мерах мы используем термины, которые раньше не опре- 8
делились. В таких случаях обычно следует руководство- ваться интуицией, а не формальными соображениями. Так, в одном из случаев в гл. 1 используется термин «конечная машина», в то время как определение дано лишь в гл. 9. В § 5 гл. 3 некоторые свойства действи- тельных чисел используются без доказательства. Напри- мер, мы используем неравенство треугольника + |х| + lyl, где I • I обозначает абсолютную величину числа, в некоторых доказательствах, относящихся к пре- делам. При желании читатель может опуститв эти дока- зательства до прочтения из п. 3.4 гл. 5. Повсюду в книге символ И будет означать конец определения, примера, доказательства и т. п., а символ #—обнаружение логи- ческой ошибки, т. е. противоречие. Также по причинам, которые станут ясными в § 5 гл. 1, мы обычно будем ис- пользовать для обозначения операции умножения символ * (а не X), хотя, когда мы будем иметь дело с обычны- ми числами, символ * иногда будет опускаться с целью упрощения записи в больших выражениях.
ГЛАВА -t МНОЖЕСТВА § 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 е Л». Утверждение «6 не является элементом А» будем обозначать как «6 Л», 11
Символ е происходит от греческой буквы в. Отрица- ние обозначается через Такое обозначение отрицания операции (или операционного символа) является общим в математике и часто будет использоваться в дальнейшем. Надо подчеркнуть, что следовало бы обратить боль- шее внимание на спецификацию множеств. Для каждого множества должна быть записана его спецификация. Процесс образования множества может продолжаться бесконечно долго. В результате получается множество, соответствующее определению. Частичная спецификация может быть полезной в том случае, когда не ясно, при- надлежит данный элемент множеству или нет. До сих пор нам встречались символы {:}, s и Их применение кажется достаточно простым, однако оно требует определенных навыков, которые будут проиллю- стрированы на следующих примерах. Пример 1.1. Какие из приведенных определений множества являются правильными: А - {1, 2, 3), В = {5, 6, 6, 7), С — {х; х &А}, D - {Л, С), Е — {х\ х = 1 или х = {у} и у е Е}, F = {множества, которые не являются элементами самих себя) = (х: х — множество и х & xYl Если число членов множества А легко вычисляется и среди элементов множества нет повторений, то определе- ние верно. Множество В выглядит также правильным, за исклю- чением лишь того, что число 6 встречается дважды. Мы можем проверить, принадлежит ли элемент множеству или нет. Таким образом, это наиболее важное требование в определении множества выполнено. Следовательно, мы может рассматривать эту запись как верную и эквива- лентную {5, 6, 7), Однако в этой ситуации возникают сле- дующие проблемы. Если мы рассмотрим первоначальное определение В и выбросим одно из чисел 6 из множества, то мы, очевидно, будем иметь 6 е В и 6^5. Возникает противоречие. Поэтому мы будем рассматривать повторе- ние символов в определении множеств как упоминание одного и того же символа, а его дублирование как нецо- 12
смотр; удаление повторяющихся символов образует осно- ву для некоторых дальнейших математических рассуж- дений. Множество А содержит числа; это может вызвать не- доумение, так как числа не существуют. Более точно, мы используем символы чисел; эти символы называются так же, как и числа. Поэтому В — множество имен, и мы обычно используем имена, чтобы представить объекты (элементы), на которые ссылаемся. В вычислениях име- на имеют особое значение, особенно в изучении семанти- ки программных языков (смысла программ). Здесь не место входить в детальное обсуждение этих проблем; до- статочно указать ловушки и необходимость адекватных спецификаций рассматриваемых объектов. Возьмем, например, множество X = {«Введение в Паскаль», «Основы структурных данных», «Введение в Паскаль»}. Это — множество названий двух книг с одним элементом, по невнимательности записанным дважды, или же это — множество трех книг, две из которых имеют одно и то же название? Если верно последнее, то две книги «Введе ние в Паскаль» следует разделить каким-либо способом. Из данной информации нельзя выяснить правильный ответ, поэтому в данном случае следует быть осторожным. Определение С также справедливо как А, так как, если х е А, то х ?= С и, если х& А, то хе С. Множество С очень велико: оно содержит «всё», за исключением чи- сел 1, 2 и 3. Обозначение «всё» выделено и, как мы скоро увидим, «опасно» с математической точки зрения. Так как определения D, А и С представляют множе- ства, то отсюда получаем, что определение D также спра- ведливо. Заметим, что это — множество множеств (ниче- го неверного в этом нет!) такое, что оно имеет только два элемента, в частности 1 D, даже если 1 s Л и А е D. Это легко проверить, так как 1¥>А, 1 ¥> С и только А и С являются элементами D. Множество Е является первым примером рекурсивно определяемого множества; оно определяется (частично) в терминах самого себя. Конструктивный процесс продол- жается бесконечно, поэтому мы должны иметь правило для определения элементов. Мы не можем записать их явно. Заметим, что Е не определяется полностью в тер- минах Е, Мы должны знать о множестве что-то, что не 13
зависит от определения; в данном случае это то, что 1 е Е. Имеем: 1 е Е, поэтому (1)е£, поэтому {{1}}еЯ, {{1}}е£, поэтому {{{1}}} е Е и т. д. Хотя конструктивный процесс неограничен, беря любой элемент и располагая достаточным временем, можно опре- делить, содержится ли этот элемент в Е. Перейдем теперь к Я; это достаточно трудная задача. Чтобы увидеть, почему F не может существовать, мы сначала допустим существование, а затем продемонстри- руем, что существует особый элемент (обозначим его че- рез у) такой, что мы не можем определить, у & F или y&F. Вообще исследование «неудобного» примера, па котором мы можем показать логический изъян, проводит- ся нелегко; однако в данном случае мы можем использо- вать само множество F. Чтобы прояснить дело, давайте обозначим это множество через G. Если, как мы предпо- лагаем, F — искомое множество, то или G & F, или G & F. Рассмотрим два возможных случая: a) G^F. Тогда G удовлетворяет условию содержа- ния, т. е. G G, и, следовательно, G & F; б) G&F говорит о том, что G не удовлетворяет усло- вию вхождения в F, и, следовательно, G & F. Следовательно, во всех случаях мы приходим к про- тиворечию. Поэтому F не может существовать. Где же была сделана ошибка? Множества множеств, вероятно, разрешаются, и бесконечно большие множества (напри- мер, рассмотренное выше множество Е) также разреша- ются; однако с «множеством всех множеств» нельзя ра- ботать в обычной теории множеств — это требует другого рода математики. Эта аномалия теории множеств из- вестна как парадокс Рассела. Если мы уже имеем мно- жество Я, то можно определить J: J = {х\ х е Я и х е х). / Таким образом, мы будем использовать только мно- жества, которые могут быть явно записаны или же по- строены путем хорошо определенных процессов. Поэтому множества не так тривиальны, как они могли вначале показаться. Однако, следуя приведенным выше правилам, работа с ними не будет особо трудной. Попытайтесь сде- лать самостоятельно следующее упражнение, 14
Упражнение 1.1. 1. Рассмотреть но крайней мере две возможные ин- терпретации множества {Смит, Смит, Браун}. Определить каждую из них настолько однозначно, на- сколько это возможно. 2. Рассмотреть следующие четыре множества. Выяс- нить, как записи этих множеств могут быть упрощены и какие из них эквивалентны. Предложить все возможные интерпретации, удовлетворяющие описанным выше пред- положениям: а) {1, 2, 3, 4); б) {I, II, III, IV, V}; в) {1, один, one, uno, ein}; г) {5, V, пять, five}. 3. Проверить справедливость утверждений «Это утверждение неверно» и «я лгун». Какие слова в утверждении требуют собственного (т. е. математически точного) определения для того, что- бы сделать ответы математически строгими? 4. Пусть X — множество {1, 2}, a Y — множество {х: х — у + z; у, ze X}. Определить в явном виде мно- жество У. Какие это множества: {у; у — х + z; х, z е X} и {у: х — у + z; х, z е X}? 5. Предположим, что х является элементом, а не мно- жеством. Тогда у <£ х для любого у, и отсюда следует, что х&х. Можно ли упростить множество {х, {х}, {{ж}}}? Что можно сказать относительно {х, у, {х, у}}? 6. Пусть А — множество всех целых чисел. Описать словами множество X = {х-. жеЛ и z = 1 или (х — 2)е X}. § 2. Простейшие операции над множествами Как мы видели из рассмотрения «ошибочного множе- ства» F в примере 1.1 необходимо проявлять вниматель- ность при определении множества. Тем не менее, строя новые множества из старых по простым правилам, можно безопасно получить много интересных примеров. Позднее будут выписаны формальные правила, кото- рым должны удовлетворять операции с множествами, а сейчас введем некоторые обозначения. Начнем с простей- ших операций. 15
Определение. Пусть даны множества А и В. Пересечением множеств А и В называется множество всех элементов, принадлежащих А и В, и обозначается А П В\ таким образом, А П В — {х: хе А и х е В}. Аналогично объединение А и В обозначается A U В и определяется следующим образом: A U В •= {х: хе А или х е В}, Значения этих обозначений нетрудно запомнить, но иногда бывают ошибки. Один из путей запомнить, какой символ обозначает какую операцию,— объединить сим- волы в слова и записать « Пересечение» и «Объединение». Эти определения выводятся из слов «и» и «или», и, как следствие, мы имеем AU5 = 5UA, А(\В = В(\А и, что, вероятно, менее очевидно, ЛиЛ=Л, А(\А=А. Эти тождества важны по двум причинам. Во-первых, из дальнейших математических рассуждений будет видно, что иногда следует сводить А 0 А (соответственно Л Л Л), к А или, наоборот, расширять А до Л 0 Л (соответствен- но Л ПЛ). Во-вторых, можно не обратить на это внима- ние из-за того, что, выраженные словами, эти тождества могут казаться лишенными смысла даже тогда, когда они логически верны. Заметим также, что определение объединения исполь- зует включение «или», называемое так потому, что оно включает «и» так, что {1, 2} U {2, 3) = {1, 2, 3), {1, 2} П <2, 3) - {2}. Элементы в пересечении множеств (в данном случае это — единственное число 2) включаются в объединение. Это обычная математическая договоренность, и существу- ет пример, в котором математическое значение является более точным, чем при общем употреблении. Пример 2.1. В предположении, что каждый день или дождливый, или ясный, математическим (или логи- ческим) ответом на вопрос «Ясно или дождливо сегодня?» 16
будет «Да». Оиределение. Разность множеств А и В (также называемая дополнением В до Л) записывается в виде А\В и определяется соотношением А\В = {х: х е А и х В}. Поэтому, если А = {1, 2, 3) и В = {2, 3, 4), то Л\5 = {1} и В\А = {4}. Следующее определение включено для полноты. Хотя мы будем редко использовать его непосредственно, одна- ко, как мы увидим в дальнейшем, этот оператор имеет большое значение в машинной арифметике. Определение. Симметрическая разность множеств А и В, т. е, А&В, определяется как АЬВ~(А \) В)\(А ПВ). Возможно, читателя запутали обозначения U, П, \, А, или, наоборот, он поверил, что они настолько элементар- ны, что не имеют никакого практического применения, Следующие примеры помогут в этом разобраться. Пример 2.2. Предположим, что мы имеем две про- граммы, называемые Р и Q, и что А — множество всех значений данных, доступных Р, а В — множество всех значений данных, доступных Q. Тогда А П В — множество всех данных, доступных Р и Q; A U В — множество всех данных, доступных по крайней мере или Р, или Q; Л \В — множество всех данных, доступных Р, но недо- ступных Q; В\А — множество всех данных, доступных Q, но недоступных Р; А&В — множество всех данных, до- ступных только одной из программ Р или Q, Чтобы полностью определить А и В, мы должны знать некоторые данные о вычислениях, связанные с Р и Q. В нашем случае достаточно сказать, что они произ- водятся на некоторой конечной ЭВМ. Перед дальнейшим изложением будет удобно опреде- лить два специальных множества. Первое из них — пу- стое множество. Определение. Пустое множество (обозначает- ся 0) есть множество, обладающее свойством х & 0 при любом х. Второе множество, определение которого зависит от задачи, называют универсальным множеством, 2 Д. Кук, Г. Бейз 17
Определение. Универсальное множество (обозна- чается S) есть множество всех рассматриваемых в дан- ной задаче элементов. Ограничение <S в этом случае помогает избежать труд- ностей, подобных тем, которые возникали при рассмотре- нии «множества» F примера 1.1; в любом случае боль- шинство элементов несущественно в каждой данной задаче. Например, размеры «Английского словаря», несом- ненно, неинтересны, если рассматривается поведение от- дельной программы на Фортране. Определение. Два множества А и В не пересека- ются, если А П В — 0. Определение. В каждом случае, когда <S задано, определим дополнение множества А (обозначается А') как А' = ё>\А — {х: х<£ А). Из определений 0, § а А' следует справедливость тож- деств А\)А' — &, АПА' = 0, В § 4 будет показано, что для данного <8 эти тождества достаточны, чтобы однозначно определить А'. Пример 2.3. Пусть ^ = {1,2, 3,4}, А = {1, 3, 4}, В = {2,3}, С = {1,4}. Из определений легко найти, например, А', В П С, С\А и т. д. Однако может понадобиться исследовать более сложные выражения, включающие две или более опера- ций. Поскольку в этих случаях встает вопрос, как опреде- лить порядок, в котором мы должны осуществлять эле- ментарные операции над множествами, будем использо- вать скобки. Каждое выражение, заключенное в скобки, должно быть выполнено перед тем, как его результат может быть использован в других вычислениях. Напри- мер, в (АП В)' пересечение ({3}) вычисляется раньше, чем дополнение ({1,2,4}). Этого соглашения, очевидно, достаточно. Однако, чтобы избежать такого множества скобок, мы не будем требовать скобок, когда хотим произ- вести операцию дополнения перед любой из операций с множествами {0, П, \, Д}. Поэтому АЬВ' означает А П(В') и т. д. Следовательно,1 А Л 5' = А Л {1,4} = {1,4}, (А (\В)' = {3}' = {1, 2,4}, (В\А) U С = {2} U С = {1, 2,4}.// 18
Читатель может быть удивлен, почему изложение по- строено на понятии множества, а не числа. Действитель- но, до сих пор мы использовали числа только как эле- менты множеств. Это делалось лишь для того, чтобы чи- татель познакомился с объектами, с которыми ему при- дется работать. Дело в том, что существуют множества более сложные, чем числа; мы можем получить числа из множеств, но не наоборот. Однако для многих приложе- ний последующей теории необходимо сделать точные утверждения о некоторых специальных множествах чи- сел. Чтобы обеспечить основу, с помощью которой будут конструироваться такие множества, определим множество N целых положительных чисел (натуральных чисел): N = {1, 2, 3, Точное определение множества N вместе с арифмети- ческими операциями + и * и его упорядочивание будут даны ниже. Однако в настоящей главе мы будем предпо- лагать, что читатель знаком с некоторыми свойствами N. Аналогично Z определяют как множество всех целых чисел: Z = {.,., —2, -1, 0, 1, 2, ...}. Конечно, множества N и Z не могут быть выписаны явно (они достаточно велики), но в настоящее время мы должны понимать «...» как «и так далее». Рассмотрим теперь множество А = {1, 2, ..., п} = {х: х е N, 1 «S х «S и). Оно имеет п элементов. Будем говорить, что мощность (или размер, норма, длина) этого множества есть п. Это обозначается как |Л| = card (/!)•= п. Далее любое множество В, которое имеет то же число элементов, что и А, имеет такую же мощность, и, конеч- но, эти элементы не надо пересчитывать. Для небольших множеств достаточно легко пересчитать элементы, но для других множеств (например, N) это может быть невоз- можно. Далее мы дадим строгое, но в то же время неформальное правило для вычисления количества эле- ментов. Определение. Говорят, что множество X конечно, если X = & или если для некоторого neN существует множество {1, 2, ,,., п} такое, что оно имеет то же самое 2* 19
число элементов, что и X. Если X ¥= 0 и никакого п не может быть найдено, то X называют бесконечным. Сейчас, когда мы ввели некоторые определения, мож- но сформулировать несколько упражнений. Чтобы сде- лать множества легко записываемыми, мы снова будем использовать числа и буквы для элементов, но будем помнить, что те же операции могут быть применены к произвольным множествам. Упражнение 1.2. 1. Пусть #-{1,2, 3,4}, Х={1,5}, Г ={1,2, 4}, Z = {2, 5}. Найти множества: а) X Л У'; б) (XnZ)U У'; в) ХЩУ 0Z); г) (X U У) Л(Х U Z)'; д) (X U У)'; е) X' Л У'; ж) (X Л У)'; 8) (X U y)UZ; и) Хи(У UZ); к) X\Z; л) (X\Z)U(y\Z). 2. Пусть <8 — {а, 6, с, d, е, /}, А = {а, Ь, с}, В — {/, е, с, а}, С = {d, е, f}, Найти множества: а) А\С; б) В\С; в) С\В-, г) А\В; д) A' U В; е) ВЛ А'; ж) 4 ПС; з) С Л А; и) С&А. 3. Даны два произвольных множества А и В такие, что А ПВ = 0, Что представляют собой множества А\В и В\4? 4. Даны два произвольных множества С и D такие, что С Л D' = 0. Что можно сказать оСПОиСи/)? 5. Дано произвольное множество X. Найти множества: а) X Л Xх; б) X U X'; в) Х\Х'. 6. Какие из следующих утверждений справедливы: а) Ое0; б) 0 = {0}; в) |{0}| = 1; г) {{0}} е {{{0}}}; д) |{{0}}|=2? Это вопрос коварный. Хотя это может показаться простым или надуманным, пустое множество и его свойства явля- ются достаточно важными. Если вы не совсем уверены в ответе, проработайте вопрос, используя аналогию порт- феля вместо множества. Таким образом, {{}, {}} — порт- фель, содержащий два пустых портфеля, и, следователь- но, |{{},{}}| = 2 и т. д. 20
7. Пусть М и N -— два конечных компьютера (см. пример 2.2) с фиксированными программами. Далее пусть А — множество значений данных, доступных М и таких, что если х s А и машина М работает с входным словом х, то М останавливается и выдает результат. Ана- логично пусть В — множество значений данных, которые приводят N к остановке и выдаче результата. Если лю- бой элемент А доступен М и N, что мы может сказать об элементах В'? Объяснить эту ситуацию с помощью сим- волов и пояснить бесполезность этой информации. 8. Объяснить в терминах множеств, почему пример 2.1 верен. 9. При определении операции объединения подчерки- валось, что мы использовали включение «или». Как в терминах множеств можно выразить исключающее «или»? 10. Часто в вычислениях будут использоваться ариф- метические операции для образования новых множеств. Так, если А и В — множества чисел, то А + В = {х-. х = а + b, as А, Ь s В). Аналогично определяются операции *, —, / между мно- жествами чисел. Найти следующие множества: а) {1, 2) + {1, 3); б) {1,2? U {1,3}; в) {1,2} *{1,3); г) {1,2} П {1,3}; д) {1,2}-{1,3}; е) {1,2}\{1,3}; ж) {2, 4}/{2}; з) {2, 4}\{2); и) {2,4}-{2}. 11. Для того чтобы быть в состоянии применить тех- нику операций с множествами к конкретной задаче, мы неизбежно должны на некотором этапе взять «нематема- тическое» утверждение и перевести его в математическое. Обычно (но не всегда) это делает описание более ком- пактным. Однако математическое выражение будет всегда математически строгим, тогда как исходное выражение может таким не быть. (Где это случается, требуется най- ти, чего же недостает в первоначальной формулировке.) Теперь надо: а) попытаться сформулировать следующие утвержде- ния на языке множеств: — даны множества А, В и С', определить множество, включающее в себя только два из этих множеств; — решить предыдущую задачу при условии, что А, В и С взаимно не пересекаются; 21
• — даны множества V, W, Y, X и Z. Определить множество, включающее по крайней мере два из множеств V, W, X и Y и не включающее Z; б) аналогично описать словами следующие множества: (7 Л (Я U L))' (PU RUQ)\(P(\(Q\R))t ((Е V) U (F\£))' U G. § 3. Диаграммы Венна Уже можно было заметить некоторые специфические свойства операций над множествами, в особенности то свойство, что одно и то же множество может быть опре- делено различными путями. Далее в этой главе мы обсу- дим способы доказательства этих свойств формальным путем, однако часто полезно иметь геометрические пред- ставления множеств. Такие представления не могут за- менить доказательства, но могут быть полезны, чтобы быстро и просто убедиться, справедливо ли конкретное утверждение и, следовательно, доказательство его воз- можно или же оно неверно. В этом случае можно заме- тить, как следует строить пример, чтобы доказать, что оно неверно. Диаграммы, ко- торые мы будем использо- вать, называют диаграммами Венна (по имени английско- го математика Джона Вен- на) и строят, как это описано ниже. Во-первых, начертим большой прямоугольник, пред- ставляющий <$ (рис. 1.1). Во-вторых, начертим круги (или какие-либо другие подходящие замкнутые кривые) внутри прямоугольника, чтобы представить множества. Они должны пересекаться в наиболее общем случае, тре- буемом в задаче, и должны быть соответствующим обра- зом обозначены (рис. 1.2). Точки, которые лежат внутри различных областей диаграммы, сейчас могут рассматри- ваться как элементы соответствующих множеств. Если число элементов в множествах мало, тогда отдельные эле- менты могут быть записаны внутри подходящих обла- стей, как это показано в примере 3.1. Пример 3.1. Пусть <S = {b, с, d, е), А — (b, с, d), В — {с, е}. Соответствующая диаграмма изображена па 22
рис. 1.3. Этот рисунок полностью иллюстрирует при- мер 3.1, обеспечивая знание элементов &>. Если ate, на- пример, A s тогда неясно, что предполагалось изобра- зить на диаграмме. В тех случаях, когда используются более сложные конструкции множеств, следует избегать изображения их в виде диаграмм. Имея построенную подходящим образом диаграмму, мы можем заштриховать определенные области для обо- значения вновь образованных множеств. Пример 3.2. Чтобы представить множество Л U (В'Л С), начнем с общей диаграммы, показанной на рис. 1.4. Заштрихуем В' диагональными линиями в од- ном направлении, а С диагональными линиями в другом Рис, 1.4 Рис, 1.5 направлении (рис. 1.5). Площадь с двойной штриховкой представляет собой множество В' 0 С. На новой копии диаграммы заштрихуем эту область горизонтальными линиями, а А вертикальными. Вся за- штрихованная на рис. 1.6 область представляет множе- ство A U (В' П С). Если в отдельных случаях мы имеем дополнительную информацию о рассматриваемых мно- жествах, то ее можно использовать для упрощения диа- граммы Венна. 23
Пример 3.3. Пусть ИЛВ = 0; это соответствует диаграмме на рис. 1.7. II Заметим, что в большинстве случаев множества со- держат довольно много элементов, и, следовательно, эти элементы не могут быть представлены отдельно, Поэтому более удобно в этом случае говорить о каждом из мно- жеств как о целом и не упоминать отдельных элементов. Упражнение 1.3. 1. Начертить диаграмму, иллюстрирующую построе- ние множеств, рассматриваемых в задаче 1 упражне- ния 1.2. 2. Как можно представить следующие множества, ис- пользуя диаграммы Вейна: {А, М», {{а}, {£>}}, {X, Y, Z}, где Х — {х: х = 1 или (х — 2)еА'}, Y = {x: х = 3 или(х —3)еУ), Z = {x: « = 2 или (х — 2)eZ)? § 4. Подмножества и доказательства Операции пересечения, объединения, разности и до- полнения позволяют нам формировать новые множества. Однако, как правило, мы не можем сказать, как одно множество соотносится с другими. Например, пусть даны два множества X и У; пересечение X Л У в некотором смысле «меньше» (или по крайней мере не больше), чем X. Действительно, все элементы множества X Л У при- надлежат также множеству X, Из этого наблюдения мож- но формально определить равенство множеств и различ- ных выражений для того же самого множества. G по- 24
мощью этих определений мы также в состоянии написать подходящие логические доказательства важных фактов, относящихся к множествам. Эти результаты, хотя и оче- видны, обеспечивают подходящие ситуации, в которых можно ввести некоторые из основных способов доказа- тельств, используемых в дальнейшем. Определение. Пусть множества А и В таковы, что из принадлежности х е А следует, что х е В. Тогда говорят, что А есть подмножество В, и обозначают это как A s В. Соответствующая диаграмма Венна изображена на рис. 1.8. Далее, если су- ществует элемент В, кото- рый не принадлежит А, то А называют собственным подмножеством В и записы- вают в виде -А с= В. Это оз- начает, что в некотором смыс- ле В больше, чем А, но, как мы впоследствии увидим, та- кие термины могут вводить в заблуждение. Следовательно, при употреблении этого тер- мина требуется проявлять осторожность. Эти отношения могут также быть записаны в обратном порядке, или В => А и В э А; тогда говорят, что В—(собственное) надмножество А. Очевидно, что для любого множества А справедливы следующие три соотношения: 0 s Л, As A, As&. Второе из них является наиболее важным. Говорят, что множества А и В эквивалентны (записывается как А = — В), если 4 = В и В = А. Это означает, что все элементы А являются элементами В, а все элементы В — элементами А. II Используя определение эквивалентности множеств, до- кажем теперь идентичность некоторых множеств, разо- брав серию из пяти примеров. Они являются примерами доказательств. Поэтому мы обязаны кратко рассмотреть вопрос о том, почему следует заботиться о доказатель- ствах в компьютерной науке. Строго говоря, как это обычно делается, мы должны доказать что-либо только один раз. Затем мы исходим из того, что эта часть инфор- 25
мации является правильной и, следовательно, может рас- сматриваться как факт. Однако, как бывает в большин- стве аспектов вычислительной науки, метод, которым мы получаем результат, по крайней мере так же важен, как и сам результат. После анализа доказательства становят- ся ясными сделанные предположения и последствия, к которым они приводят, а также становятся понятными процессы вывода, которые можно использовать при ре- шении других задач. (Аналогично проведению экспери- мента на ЭВМ с подобными структурами данных при их использовании в программировании.) Можно также заметить, что доказательства теорем формируют основу всех решающихся автоматически за- дач, но это будет обсуждаться позднее, Рассмотрим не- сколько примеров. В примере 4.1 непосредственно доказывается справед- ливость следующих двух соотношений: а) An(5UC) = (A ЛВ)и(АПС); б) (А Л Z?)U (А П C)s А Л (5 U С)’. Каждое из этих доказательств состоит из последователь- ности утверждений вида «если Р, то Q» (если справедливо Р, то справедливо и Q). Для удобства запишем это утверждение как «Р =*• Q» и будем читать «из Р следует Q». Следовательно, если имеется последовательность Ро, Pi,..., Рп такая, что Ро Pi, Pi Рз,..., Pn-i Рп (из Ро следует Pi, из Pi следует Рг, .... из Pn-i следует Р„), то мы имеем прямое доказательство Ро =* Р„. Пример 4.1. Относительно множеств А, В и С рр- кажем, что А Л(В11 С) = (А ЛВ)и(А ПС). Доказательство. хеАЛ(511С)=*-хеА и х е(В U С)* (Такая группировка необходима, так как скобки означа- ют, что объединение следует вычислить перед пересече- нием.) => хе А и (хе 0 или х е С)=> (х s А и х е В) или (х е А и х е С) =*- (х е А П В) или (х s А П С) =* х s (А П В) U (А П С). 26
Таким образом, А П(В U C)s(4 Л В) U(Л П С). Сейчас необходимо доказать включение s в обратную сторону: х^(А ЛВ)и(Л ПС1=> => (х е А П В) или (х & А П С)=> => (х е А и х s В) или (х е А и х s С) => =► хе А и (хе В или х S С) => => хе А и х е В U С => х<^ А Г1(В U С). Следовательно, (Л ЛВ)и(Л Л С)^А Л(Ви С). Поэтому Л П(ВиС) = (ЛПВ)и(Л ПС). II В этом частном случае вторая часть доказательства точно совпадает с первой, и, следовательно, можно за- писать хе А Л (В U С) xs Л и х^ BUC и т. д. Здесь символ «**» («Р-**@») означает, что Р => Q и Q => Р. Он может читаться как «тогда и только тогда» (иногда также читают «если и только если») и означает эквивалентность двух утверждений Р и Q. Однако не всегда так просто обратить аргумент и следствие. В об- щем случае мы должны провести доказательства в обе стороны раздельно. Заметим также, что эквивалентность может быть легко получена (хотя и не доказана) из под- ходящей диаграммы Венна, однако не всегда можно на- чертить диаграмму, относительно которой можно быть уверенным, что она настолько отвечает требованиям, на- сколько необходимо. Поэтому непосредственное доказа- тельство необходимо. Это доказательство зависит от вну- тренних взаимосвязей между значениями «и» и «или» и, следовательно, может быть выбрано для каждого случая своим. Далее, когда будут определены некоторые алге- браические структуры, мы покажем, что это не составля- ет трудностей. Примеры 4.2—4.5 также используют прямые доказа- тельства, однако эти доказательства записаны в несколько другом виде. Пример 4.2. Относительно данного множества S до- полнение любого множества А(А^&) единственно. 27
Доказательство. Предположим, что существует два множества В и С, каждое из которых удовлетворяет требованиям дополнения А, т. е. ВПЛ=СПЛ = 0 и 5U4 = CU4=<F. Тогда Я = 5П#==ВЛ(СиЛ) = (5Г1С)и(ВЛ/1) = = (В Л C)U 0 = 5 Л С; поэтому х & В => х& В и ^В и В £ С. Однако мы знаем, что В s В, Поэтому отсюда следует, что BsC. Аналогично (меняя ролями В и С) получаем CsB, откуда В = С, т. е. В = С =* А', и А' единственно. / Приведенный выше пример содержит в себе основной математический подход, употребляемый для доказатель- ства единственности,— сначала предполагается, что су- ществуют два таких объекта, а затем доказывается, что они совпадают. В следующем примере мы опять прибегнем к предпо- ложениям об «или», чтобы иметь возможность написать выражение A II В U С как A U (В U С) или (4 II В) U С, когда это будет более удобно для требуемых преобразо- ваний. Пример 4.3. Дапы множества А, В и С такие, что А иВиС = ^ в А, В а С попарно не пересекаются. Тогда А' » В U С, В’ = A U С и С' ~ A II С. Доказательство. A UBUC = 4U(SUC) = <F, А Л(ВиС) = Ц Л 5) U (4 ПС)=0и0 = 0. Следовательно, 5UC удовлетворяет условиям для А', которое единственно. Поэтому А' = В U С. Аналогично проводятся доказательства для В' и С, И 23
Пример 4.4. Для произвольных множеств X и У справедливо соотношение {X Л У)' = (X Л У') U {X' Л У) U (X' Л У'). Доказательство. Предположим, что мы имеем множества А, В и С из примера 4.3 и C = DUE и ЯЛЕ = 0, (Диаграмма Венна на рис. 1.9 может разбить &, как тре- буется.) Тогда множества А, В, D и Е взаимно не пере- секающиеся и 4U23UDUE = ^. Более того, Л' = ви с, поэтому А' = В U D U Е. Сейчас легко показать, что если положить Л=ХЛУ, В = ХЛУ', Я = ХЛ У и Е = X' Л У', то требуемые условия будут выполнены, и поэтому нужный результат немедленно следует из пре- дыдущих рассмотрений. И Пример 4.5. Для любых множеств X и У верно соотношение s А в £ Рис. 1.9 (ХЛУ)' = Х'и У'. Доказательство. je^nyj'oie^Oyj'U^'nyjU^'ny')**- ** х s (X Л У)' U (X' Л У') U (X' Л У) U (X' Л У') о (Один член здесь продублирован. Это разрешается, так как А = A U А для любого Л.) ^xE((Xfiy')U(X' Л У'))и((Х'Л У)11(Х' Л У'))’<=> х е ((X и X') Л У') и (X' Л (У II У')) х е (# Л У') U U(X'nff)<*jsy'UX'**«eX'U У'. Следовательно, (X Л У) = X' U У'. / Результат, полученный в примере 4.5, и подобные ему (см, упражнение 4.5) называют законами де Моргана. 29
Они играют важную роль в математической логике. Наи- более непосредственные приложения к вычислениям на- ходятся в области комбинаторных цепей в логике. Последовательность примеров 4.1—4.5 иллюстрирует, как можно развивать математическую теорию путем по- следовательности доказательств простых теорем и выво- дить такие важные результаты, как законы де Моргана. Перед тем как перейти к заключительной части этой гла- вы, попытаемся переписать доказательства задач, разо- бранных в примерах 4.2—4.5, формальным образом, как это делалось в примере 4.1. В частности, каждый шаг должен быть проверен ссылкой на доказанный результат из предыдущих работ или же непосредственно выведен. Позднее мы введем необходимую терминологию, которая позволит использовать более краткие обозначения. Дадим сначала два определения. Определение. Говорят, что два множества Л и В неэквивалентны, если они не эквивалентны. Это свойство равносильно тому, что одно из множеств А\В или В\А непусто. Определение. Множество всех подмножеств дан- ного множества X назовем степенью множества X и бу- дем обозначать через ^(Л). (Некоторые авторы исполь- зуют обозначение 2х; причина этого будет ясна немного позднее, когда мы разберем несколько примеров.) Фор- мально ^(Х)={У: УеП. В частности, заметим, что поскольку 0 s X и X X, то 0е^(Х), Х^^(Х). // Пример 4.6. Пусть Л = {1, 2, 3}. Тогда ^(Л)={0, {1}, {2), {31, {1,2), {1,3}, {2,3), Л). // Завершим этот параграф упоминанием о двух косвен- ных методах доказательства. Первый из них — доказа- тельство от противного. Вспомним парадокс Рассела (при- мер 1.1): FeF => FФF и F<£F => F<=F, Если обозначить утверждение F <= F через Р, то получим Р справедливо =>Р ложно и Р ложно =>Р справедливо. Основой математики является предположение о том, что не может быть утверждения, которое является истинным и ложным одновременно (т. е. логическая система долж- на быть содержательной; мы отвергаем множество Рас- 30
села потому, что его определение несостоятельно в рас- сматриваемом смысле), и мы используем это положение как основу доказательства от противного. Предположим, что мы имеем совокупность высказываний Рь Р2, ..., Рп и хотим доказать (Pi истинно и Р2 истинно и... и Рп ис- тинно) =*• Q истинно, или же более просто (Pi и Р2 и... п Р„) =► Q. Если мы допустим высказывание (Pi и Р2 и ... и Рп и не Q), т. е. что Pi, ..., Р„ истинно, a Q ложно, и отсюда сможем вывести некоторое утверждение Р, которое одно- временно является и истинным, и ложным, то логическая система, основанная на (Pi и Р2 и ... и Рп и не (?), является недопустимой. Таким образом, доказано, что ес- ли имеет место (Pi пР2и .. . иРп), то мы можем заключить, что (Pi и Р2 и ... и Pn) => Q, так как предположение не Q приводит к противоречию. Для иллюстрации вышесказанного, рассмотрим пример. Пример 4.7. Докажем, что для произвольных мно- жеств А и В имеет место соотношение А е В В' е А'. Доказательство. Допустим, что свойства (т. е. определения) множеств 0 и т. д. выполнены и что А е В и В’ А. (В терминах описанной выше об- щей ситуации Q это В' е Л'.) Тогда А е В если х s А, то х е В; (») В'фА'=> существует некоторый элемент у такой, что у&В' и у Ф А'. Из (*) следует соотношение yt=A*s-y^B=> у В' и z/e=Z?=>z/G=Z?'n5 = 0 (противоречие), Следовательно, полученное утверждение В' ф А' ложно, и поэтому В'^А'. Аналогично можно показать, что В' е E А' => А е В, и, следовательно, А В В’ е А’. / 31
Этот пример также распространяется и на второй ме- тод косвенного доказательства. Пример 4.8. Пусть Р означает высказывание «се- годня четверг», a Q — «сегодня день недели». Тогда (Р =*• Q) означает «если сегодня четверг, то это день не- дели», а (не Q => не Р) означает «если сегодня не день недели, то это не четверг». Следует убедиться, что эти два высказывания эквива- лентны (т. е. что они оба одновременно являются либо истинными, либо ложными). И С этой точки зрения, хотя диаграммы Венна могут использоваться для прояснения ситуации, все результа- ты должны быть выведены из предположений, данных в задаче. Следует помнить, что если какое-либо утвержде- ние истинно, то мы должны быть в состоянии доказать его. Если это действительно очевидно, то мы легко дока- жем его, если же нет, то, по-видимому, это не так оче- видно, как мы думали, и вполне возможно, что это даже неверно. Упражнение 1.4. 1. Доказать, что А Л(5ЛС) = (4 ЛВ)Л(7. 2. Пусть дапы множества А, В и С’. С s В. Доказать, что: а) 4 Л С s 4 Л Я; б) 4 U С s 4 U В-. в) 4\5 = 4\С; г) С\4!=В\4; д) B'\4sC'\4. 3. Доказать, что если А^В, то ^(А)^ ^(В). k. Показать справедливость равенства А U(Z? Л С) = (4 U 5)Л(4 U CJ. 5. Доказать, что (4 U В)' = 4' П В'. (Указание: показать, что (4 U В) U (4' Л В') = § и (4 UB)f) Л(4'Л5')=0.) 6. Доказать эквивалентность следующих утверждений т. е. что из каждого следует другое: а) 4 U В = б) 4's В; в) А' Л В' = 0. 7. Какие из следующих утверждений справедливы: а) Ое0; б) {0}s0; в) 0 = {0}; г) 0 5^;д) {0}s{{0}}? Сравните ответы на этот вопрос с ответами к упражне- нию 1.2,6. Существует связь между символами s и s однако это не одно и то же. Как аналогия «портфеля» связана с символом s ? 32
8. Показать, что для конечного множества А 12А| = 2|А|. (Указание: выписать множество А = {at, aB) и рассмотреть его подмножества.) § 5. Произведения множеств Пока мы в основном занимались построением из су- ществующих множеств множеств меньшего размера. Сей- час будет рассмотрен один из наиболее общих способов конструирования больших множеств. Рассмотрим для ил- люстрации множество размеченных клеток шахматной доски (рис. 1.10). Рассмотрим множество столбцов, кото- рые обозначим буквами а, Ь, ..., h (слева направо), и Рис. 1.10 множество строк от 1 до 8 (снизу вверх). Следовательно, каждая клетка может быть однозначно задана двумя сим- волами: один — из множества F = {а, Ь, ..., М, другой — из множества й = {1, 2, .... 8), например al, /7, еЗит.д. Таким образом, из множества столбцов F и множества строк R мы образовали множество всех клеток доски. Этот пример содержит в себе новые идеи, которые ис- пользуются при построении произведений множеств. Од- нако для того, чтобы быть в состоянии обобщить рассматри- ваемую ситуацию, следует быть немного более точными. 3 Д, Кук, Г. Бейз
Определение. Обозначим последовательность из п элементов xi, х2, ..х„ через (xi, х2, ..х„). Здесь круглые скобки исполтзуются для того, чтобы указать на порядок, в котором з. тисаны элементы. Например, если х1 =/= х2, то последовательность (ха, Xt, ..., х„) не совпа- дает с исходной. Будем называть такую последователь- ность набором длины п; набор длины 2 будем называть парой. Пусть даны п множеств А\, А2, ..., Ап", множество всех наборов (xi, ха, ..., хп) таких, что xi е Ai, ..., х„ <= еЛ„, называют прямым произведением Л1, ..., Ап и обо- значают Ai X А2 X ...X Ап. Используя другие обозначе- п ния, это произведение запишем более кратко: ТТ А^ // Пример 5.1. Пусть X = {0, 1}, Y = {х, у}, Z — = {О, 1, 2). Тогда ХХУ = {(0,х), (0,у), (1,х), (1,у)}, УХХ = {(х, 0), (х, 1), (у, 0), (у, 1)}. Таким образом, X X У Ф У X X. При рассмотрении снова примера с шахматной доской становится ясно, что будет, если написать выражение Зе. Множества F и R пе пересекаются и (е, 3) s F X R, a (3, е) F X R. На- пример, XX У = {(0,0), (0,1), (0,2), (1,0), (1,1), (1,2)} и (0,1) и (1,0)—различные элементы X X У. Следова- тельно, с математической точки зрения нам следует от- вергнуть запись Зе как неверную для шахматной доски. / Мы часто будем использовать прямое произведение для одинаковых множеств. В этом случае будет удобнее записывать А X А X ... X А как А\ Упражнение 1.5. 1. Пусть X = {а, Ь, с} и У = {a, b, е, fl. Найти X X У и У2. 2. Доказать: при AsX nBsY, АХ В s X X У. 3. Доказать, что А Х(В Л С) = (А X В) Л (Л X С). 4. Доказать, что для любых непустых конечных мно- жеств А и В выполняются соотношения: а) 0 X Л = 0; б) # X Л * Л; в) Л s Л X Л; г) |Л X {х}| = |Л1; д) АХВ =* ВХ А тогда и только тогда, когда А = В.
ГЛАВА 2 ОТНОШЕНИЯ Часто в вычислениях необходимо выбирать элементы множеств, которые удовлетворяют некоторому «отноше- нию». Это понятие довольно общее. Поэтому оно широ- ко применимо. Естественно, что при соответствующем вы- боре отношения его аргументы могут быть связаны доста- точно просто. Они не обязательно должны быть связаны какой-либо простой или очевидной формулой, хотя в си- туациях, когда требуется осуществить некоторые вы- числения, иногда можно найти удачное описание отно- шения. Перед тем как подойти к этому вопросу с математи- ческой позиции, рассмотрим несколько идей, возникаю- щих из рассмотрения следующей простой ситуации (кото- рая также приводит к возникновению понятий отноше- ния). Предположим, что для некоторой конечной машины мы имеем множество программ Р, конечное множест- во значений данных D и множество результатов R. Если мы выберем конкретное значение из D, то оно может ис- пользоваться в некоторых программах из Р, и для каж- дой программы из Р существует совокупность значений из D, которые в ней используются. Таким образом, мы имеем соответствие между значениями данных и програм- мами, и, следовательно, существуют элементы в DX.P, представляющие интерес. Аналогично, если мы сведем рассмотрение к р е Р, то р связывает соответствующие значения данных из О с результатами из R. Можно рас- смотреть данные, приводящие р к остановке, или резуль- таты, которые не могут быть получены из р. Следова- тельно, мы приходим к подмножеству DXR. (При пере- работке данных от D к R возникают некоторые ассоциа- ции, которые могут оказаться полезными для запомина- ния терминологии.) Перейдем теперь к формальным рассмотрениям. 3* 35
§ 1. Основные понятия п-местным отношением R на множествах Лх, А„ называется подмножество прямого произведения Л1Х...ХЛ». Другими словами, элементы xt, хп (где Xi&Ai, ...) связаны отношением R тогда и только тогда, когда (®i, Х2, ..х„) е R ((xi, Х2, ..хп) — упорядоченный на- бор из п, элементов). Наиболее часто встречаются отношения при п = 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, е, f, g, /г), R = {1, 2, 3, 4, 5, 6, 7, 8} и пусть S = FXR. Таким образом, S — множество всех клеток, обознача- емых парами (х, у), где x&=F, у <=R. Определим бинар- ное отношение С (для ладьи!) на S так, что (s, ()е£ тогда и только тогда, когда s и t — элементы S и ладья может пройти от s к t одним ходом на пустой доске. (На- помним, что ладья может изменять либо горизонтальную координату, либо вертикальную, но не обе координаты 36
одновременно.) Поэтому С s S X S и £=<((/., г.), (/„ г,)): (/.-=/< и г.¥=г() ИЛИ (/, А И Г, = Г.)}. И На первый взгляд определение С может выглядеть сложно, но внимательное исследование показывает, что значение отношения находится непосредственно и вся необходимая информация содержится в определении. В общем случае ряд различных отношений на мно- жестве А зависит от |Л I. Большая часть этих отношении не представляет особого интереса. Ниже приведены три отношения, которые полезны при рассмотрении множеств. Определение. Для любого множества А опреде- лим тождественное отношение 1Л и универсальное отно- шение следующим образом: Z = {(a, а): а^А}, U~{(a, Ь): а^А, Ъ^А}. Таким образом, = А2. Так как 0 = А2, то 0 является отношением на А и называется пустым отношением. И Пусть отпошепие R определено в соответствии с изо- бражением на рис. 2.1. Необходимо сконцентрировать на- ше внимание на том, что происходит на концах R, т. е. рассмотреть элементы А и В, которые принадлежат R. Они являются элементами подмножеств А и В соответ- ственно и, как следовало ожидать, имеют специальные названия. Определение. Свяжем с каждым бинарным отно- шением R между А и В два множества — область опре- деления D(R) и область значений Они определя- ются следующим образом: D(R)=(x: (z, y^R}, Sl(R)={y: (x, y)^ R}. II 37
Пример 1.3. Пусть отношение R такое же, как и в примере 1.1. Тогда 0(7?)= {1, 2, 3, 4, 5), 32(2?) = 4. / Пример 1.4. Предположим, что мы имеем некото- рую программу. Она читает два числа из множества А — = {1, 2, 3, 4, 51, обозначаемых х и у, и, если х<у, печа- тает число z (также из А) такое, что х < z < у. В любом случае программа останавливается после считывания всех чисел из А. Задача определяет отношение Р, Р s А ХА такое, что Р = {((я, у), z): х<у, 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)}; 0(Р)={(1, 2), (1,3), (1,4), (1,5), (2,3), (2,4), (2,5), (3,4), (3,5), (4,5)}; 32(Р)= {1,2, 3, 4}. / Хотя каждое отношение является множеством и мо- жет быть обозначено прописной буквой, существует так- же практика обозначения отношений строчными гречески- ми буквами, например р, о и т. Часто используют следу- ющие обозначения: а) (а, b)s р, т. е. (а, Ь) находится в р; б) арЬ, а связано с Ъ отношением р; в) ftsp(a). Первое из обозначений является естественным (оно следует из определений теории множеств). Второе де- лается более разумным, если мы рассмотрим отношение порядка (которое будет определено несколько ниже), где R s N2 и R = {(х, у): х < у}. 38
Здесь вместо 6Я7 мы можем написать 6 < 7; следова- тельно, мы разрешаем запись любого отношения с ис- пользованием рассмотренных выше символов, если результирующая последовательность символов будет од- нозначно определенной. Третья форма записи является новой и будет преобразована к более привычным обозна- чениям в гл. 3. Из заданного бинарного отношения мож- но вывести ряд других отношений, большинство из кото- рых будут обратными отношениями. Определение. Пусть R — бинарное отношение. Определим обратное отношение Я-1 следующим образом: Я-1 = {(ж, у): (у, г)е Я}. Таким образом, Я'1 связывает те же пары элементов, что и Я, но «в другом порядке». И Следовательно, если Я е А X В, то Я"1 еВХЛ, ^(Я-‘) = ^(Я) и Я(Я-') = 0(Я). Чтобы избежать использования большого количества ско- бок, будем также использовать обозначения 3)R a вме- сто 3){R) иЙ(Я) соответственно. Упражнение 2.1. 1. Пусть X = {2, 4, 6, 8) и р = {(х, у): х, у е X и х у}. Выписать все элементы р и р-1. 2. Пусть & = 0>({а, Ь, Л). Найти все элементы отно- шений С и Е на .Г. 3. Пусть & = Z2 и р = {(х, у): х<у}. Описать р'— дополнение р — без использования отрицания отношения «меньше». 4. Пусть о = ((х, у): xczy}. Может ли о' быть опи- сано тем же способом, что и р' в 2.1, 3? Ответ проверьте. 5. На улице есть 30 домов, пронумерованных обычным способом: нечетные номера с одной стороны, а четные с другой. Пусть hn обозначает жителя, живущего в доме с номером п. Описать при помощи символов отношение N на множестве жителей такое, что ht находится в отно- шении N к hh если они являются соседями. Как будет выглядеть /V, если улица является тупи- ком? 6. Вернемся к множеству S клеток шахматной доски. Отношение К связывает клетки, которые определяются ходом копя (т. е. если копь может перейти с х на у за один шаг). Определить К при помощи символов. 39
7. Пусть G — отношение на S такое, что xGy тогда и только тогда, когда х есть начальная позиция (белой) пешки, а у есть клетка, где первый ход игры заканчива- ется. Описать G, 3)(G) и 32(G). § 2. Графические представления При решении задачи на первом этапе часто полезно начертить «рисунок» для того, чтобы более ясно увидеть компоненты задачи. Особенно это полезно для описания отношений, так как записанные в виде множества упо- рядоченных пар отношения нелегко расшифровываются. Отношения — это множества, обладающие определен- ной структурой; их элементы имеют несколько компо- нент, и поэтому, в принципе, мы можем использовать диа- граммы Венна для их изображения. Хотя этим методом и можно воспользоваться, особенно при описании некото- рых больших множеств чисел, существуют методы, ко- торые более эффективны в общих ситуациях (включаю- щих, в частности, бинарные отношения на небольших множествах). В этом параграфе мы кратко рассмотрим некоторые из них. Для описания этих методов использу- ем множество X = {а, Ъ, с, d} и отношения lx, Ux и R, где R = {(a, Ь), (а, с), (Ь, d), (с, е), (е, Ь)}. Вначале рассмотрим метод, относящийся к традици- онной аналитической геометрии. Начертим пару взаимно перпендикулярных осей (ОХ — горизонтальная ось, а OY — вертикальная ось) и на каждой отметим точки, представляющие элементы множества X (рис. 2.2, а). Теперь в правом верхнем координатном углу отметим точки с координатами (х, у), у которых х е X я у ^Y. Множества, соответствующие 1Х, V* и R, изображены на рис. 2.2, Ъ, с и d. Основной недостаток этого метода заключается в том, что при увеличении |Х| трудно увидеть элементы в обла- сти и установить соответствие с точками, обозначающими отношения. Чтобы преодолеть этот недостаток, можно опустить точки и соединить стрелкой х е и у е St, когда (х, у) принадлежит отношению (рис. 2.3). Ди- аграмма, представляющая Ux, получилась довольно запу- танной, но это естественно, поскольку число элементов в 40
Ux увеличилось. С другой стороны, отношения 1х и R представлены наглядно, и легко увидеть их области опре- деления и значений. Диаграмма для Ux наиболее неудоб- на в месте пересечения осей. Теперь, когда не использу- ются координаты в областях определения и значений для Я е _1____I_____L а Ь с Ъ : & d е Я) । । । । abode Рис. 2.2 расстановки элементов, отношения (как в первом мето- де) можно начертить параллельными. Поэтому, исполь- зуя параллельные вертикальные линии и двигаясь слева направо (линия слева является областью определения), мы получаем диаграмму, изображенную на рис. 2.4. Здесь стрелки не требуются, так как мы знаем, что от- ношения идут от области определения к области значе- ний. Это приводит к двум возможностям: мы можем или заменить стрелки прямыми линиями, или заменить две линии, изображающие области определения и значений, простой совокупностью точек. (Например, точка с в об- 41
42
ласти определения является той же самой, что и точка, представляющая с в области значений.) Это показано на диаграмме, изображенной на рис. 2.5. Итак, обозначены наиболее важные методы графиче- ского изображения бинарных отношений. Они будут ис- Рис. 2.5 пользоваться в оставшейся части книги. Обсуждение гра- фических методов, связанных с соотношениями, мы про- должим в гл. 7. Упражнение 2.2. 1. Начертить диаграмму, представляющую отношение р из упражнения 2.1, 1. 2. Начертить диаграмму, представляющую отношение N (см. упражнение 2.1, 5) на улице, имеющей десять до- мов. Как изменится диаграмма, если улица является ту- пиком? § 3. Свойства отношений Очевидно, что общие отношения, будучи только под- множествами произведения множеств, не особенно инте- ресны, поскольку о них можно сказать очепь мало. Од- нако, когда отношения удовлетворяют некоторым допол- нительным условиям, относительно них можно сделать более содержательные утверждения. В этом параграфе мы рассмотрим некоторые из осповпых свойств, которы- ми могут быть наделены отношения. Говорят, что свой- ство имеет место, если только выполнено соответствую- щее условие. Определение. Пусть р — отношение на множест- ве А. Тогда: а) р рефлексивно, если хрх для любого is А; б) р симметрично, если хру влечет урх; в) р транзитивно, если хру и ypz влечет xpz; г) р антисимметрично, если хру я урх влекут ж = у. 43
Терминология, введенная здесь, вероятно, является новой для читателя, однако он, по-видимому, знаком с этими понятиями. Поясним их на следующих примерах. Пример 3.1. Пусть р = {(х, у): х, у е= N и х —• делитель j/>, о = < (х> У): х> У е N и х < у}, т = {(х, у): х,у «= N\{ 1} и х и у имеют общий делитель). Тогда р: а) рефлексивно, так как х/х== 1 для всех xeN; б) несимметрично, поскольку 2 — делитель 4, но 4 не является делителем 2; в) транзитивно, так как если у/х е N и z/y е N, то z/i=(y/x)*(z/i/)eN; г) антисимметрично, так как если х/у <= N и у/х е N, то х = у. Аналогично о: а) рефлексивно, так как х < х для всех х <= N; б) несимметрично, так как 2 < 3, но 3 в) транзитивно; г) антисимметрично, так как если х < у и у < х, то х = у. Наконец, т рефлексивно и симметрично, но не тран- зитивно или антисимметрично. И Пример 3.2. Пусть Р — множество всех людей, а А и S определяются следующим образом: А = {(х, у}: х, у^Р и х — предок у}, S — {(х, у)<= Р я х и у имеют одних и тех же родителей). Очевидно, что А транзитивно, a S рефлексивно, симме- трично и транзитивно. / Заметим, что свойства симметричности и антисимме- тричности не являются взаимоисключающими. Для лю- бого множества X отношение /х является симметричным и антисимметричным. (Проверьте!) Мы можем также иметь отношения, которые не являются ни симметрич- ными, пи антисимметричными. Пример 3.3. Пусть опять Р есть множество всех людей. Определим отношение В такое, что хВу тогда и только тогда, когда х является братом у. В семье, состоя- щей из двух братьев р и q и сестры г, мы имеем ситуа- цию, изображенную на рис. 2.6. Отношение В не сим- метрично, так как рВг, но не гВр. Это отношение также 44
не является антисимметричным, так как pBq и qBp, хо- тя р и q различны. В более общей ситуации мы можем интерпретировать рассмотренные выше характеристики отношения путем построения диаграммы: а) отношение рефлексивно ______ тогда и только тогда, когда для р, t каждого узла (точки) на диаграм- “ " ме существует стрелка, которая / начинается и заканчивается на \ X этом узле; *•* б) отношение симметрично то- Рис- 2.8 гда и только тогда, когда для каждой стрелки, соединяющей два узла, существует так- же стрелка, соединяющая эти узлы в обратном на- правлении; в) отношение транзитивно тогда и только тогда, когда для каждой пары узлов х и у, связанных последователь- ностью стрелок от х к а\, от а\ к aj, .. -, от a„-i к ап, от ап к у, существует также стрелка от х к у, г) отношение антисимметрично тогда и только тогда, когда не существует двух различных узлов, связанных парой стрелок. Существует много других свойств отношений, кото- рые можно было бы рассмотреть. Однако рассмотренные выше свойства являются наиболее важными и будут ча- сто использоваться в дальнейшем. Упражнение 2.3. 1. Являются ли следующие отношения рефлексивны- ми, симметричными, транзитивными или анситимметрич- ными: а) отношение на {1, 2, 3, 4, 5} определяется как {(а, Ь): а — Ъ четное); б) отношение на {1, 2, 3, 4, 5) определяется как {(а, Ъ): а + Ъ четное); в) отношение на Р (множестве всех людей) опреде- ляется как {(а, Ь): а и Ъ имеют общего предка)? 2. Следующее утверждение ошибочно. Симметричное и транзитивное отношение на S является также рефлек- сивным, так как aRb и bRa влекут aRa. Внимательно 45
изучив определения, найти ошибку. Построить отноше- ние на {1, 2, 3), которое является симметричным и тран- зитивным, но не рефлексивным. 3. Пусть р — отношение между А л В, a s А. Тогда р(а) определено как множество {b: арб} и является под- множеством В. Пусть на {—4, —3, —2, —1, 0, 1, 2, 3, 4} определены следующие отношения: р = {(а, б): а<б), а « {(а, б): б — 1 < а < б + 2}, т = {(а, б): а2 < б). Какие это множества: а) р(0); б) о(0); в) т(0), Г) р(<); д) а(—1); е) т(—1)? § 4. Разбиения и отношения эквивалентности Во многих вычислительных задачах берутся большие множества и разбиваются таким образом, чтобы все ин- тересующие нас ситуации можно было исследовать на нескольких правильно выбранных примерах. Например, один из путей получения качественной оценки характе- ристик языка программирования — это посмотреть кон- кретные программы, написанные на этом языке. Однако каждый интересный язык, включая такие языки высоко- го уровня, как Паскаль и Фортран, порождает бесконеч- но много программ, и, следовательно, мы должны выби- рать программы так, чтобы опи правильно отражали до- стоинства и недостатки языка. Чтобы быть более кон- кретными, давайте в дальнейшем предполагать, что язык имеет три основные управляющие структуры и четыре метода доступа и более у него нет никаких особы к свойств. Мы могли бы в качестве примера взять семь программ, каждая из которых включает только одну ха- рактеристику языка (хотя, вообще говоря, каждая про- грамма может использовать более чем одну характеристи- ку языка). Исследование этих програм тогда могло бы покрыть большую часть свойств языка. Математически это можно определить следующим образом. Определение. Пусть А—непустое множество и {А^ — совокупность подмножеств (i = 1, ..., п, nsN) таких, что п и А = Л i=l 46
Совокупность этих подмножеств называется покры- тием А. И Пример 4.1. {А, В} — покрытие A U В, {Л, A U В, В, С) — покрытие A U В U С. И Используя понятие покрытия, можно обеспечить, что- бы ни одно из свойств пе было пропущено, так как каж- дый элемент включен по крайней мере в одно из под- множеств покрытия. Однако в общем случае могут встречаться случаи дублирования. Если в дальнейшем потребовать, чтобы элементы покрытия попарно не пе- ресекались, то дублирования не будет. Отсюда возникает понятие разбиения. Определение. Разбиением непустого множества А называется совокупность подмножеств ^(А) таких, что объединение всех элементов ^(А) совпадает с А п все элементы &(А) взаимно не пересекаются, т. е. А разбито таким образом, что каждый элемент А содер- жится только в одном подмножестве разбиения. II Пример 4.2. {Л, Л'} — разбиение <S, {Л П В, А Л В', А' П В, А' П В'} — разбиение <8, {Л\В, Л П В, В\Л} — разбиение Л U В. II Разбиение определяется однозначно, и части разбиения индуцируют особый род отношения, называемого отно- шением эквивалентности. Эти отношения ведут себя по- добно отношению «=» между числами или множествами. Выделяя основные свойства равенства, мы приходим к следующему определению. Определение. Бинарное отношение на множест- ве называют отношением эквивалентности, если оно ре- флексивно, симметрично и транзитивно. И Пример 4.3. На множестве всех треугольников от- ношение, определяемое как {(х, у): х и у имеют одина- ковую площадь), является тривиальным отношением эк- вивалентности. Более интересно следующее отношение, определенное на множестве всех программ: {(а, Ъ): а и Ъ вычисляют одну и ту же функцию на определенной машине). Это отношение является отношением эквива- лентности. II Напомним, что мы рассматриваем более простые спо- собы создания больших множеств, разбивая их на мел- 47
кие части, чем если бы в качестве этих частей брали элементы множества. В настоящий момент у нас уже имеется математический аппарат, однако недостает под- ходящих простых обозначений. Сейчас это будет сделано, после чего приведем несколько известных примеров. Определение. Пусть р — отношение эквивалент- ности на множестве А. Определим класс эквивалентно- сти [г] для х е А: [®] = {у: хру}. Таким образом, [я] есть множество всех элементов Л, которые p-эквивалентны х. В случаях, когда рассматри- вается только одно отношение эквивалентности, мы мо- жем также использовать обозначение «^» (эквивалент- но), поэтому Ы = {у: X ев у}, В отдельных специальных случаях для обозначения эк- вивалентности иногда используют символ Теперь вместо проверки всего множества мы можем любым спо- собом выбрать представителей (по одному от каждого из классов эквивалентности), что упрощает вычисления. Следующий пример иллюстрирует вышесказанное. Пример 4.4. Пусть « — фиксированный элемент N; ''^неделим отношение р, на Z: р. = {(х, у): х — у == ns, где п е= 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. По-видимому, наиболее известное отношение эквива- лентности знакомо читателю, хотя он мог и не знать, что оно — отношение эквивалентности. Это отношение связано с дробями. Рассмотрим множество ZXN. Пару (а, Ь) мы можем рассматривать как дробь а/b. Эти два способа обозначения элементов Z X N являются различ- ными, но они «изоморфны». Мы будем их рассматривать далее в § 1 гл. 5. Отметим, что можно переходить от од- ной формы обозначения к другой. До сих пор все было хорошо, однако существуют раз- личные элементы в Z X N, которые желательно рассмат- ривать как одни и те же, хотя записываются они по- разному. Чтобы преодолеть эту трудность, определим от- ношение эквивалентности на ZXN следующим образом: (a, b) “ (с, d) тогда и только тогда, когда а * d •= b * с. Множество всех классов эквивалентности, определяемых этим отношением на Z X N, называют рациональными чис- лами и обозначают символом Q. Обычно выбирают тех представителей классов, у которых самые малые а и Ъ. Следует упомянуть, что предполагается существова- ние действительных чисел (множество действительных чисел обычно обозначают через R). Эти числа можно представить в форме ,.. О dB ... di di do 6i 62 ... 6m ..., где каждое dt и б, принадлежат множеству {О, 1, 2, 3, 4, 5, 6, 7, 8, 9) = Zio, dn + О, исключая случай п = 0. В частности, допускается беско- нечная непериодическая десятичная дробь, хотя нули перед dn обычно опускают. (Отрицательные числа пред- ставляют ненулевыми положительными числами со зна- ком минус.) Заметим, что индекс отношения эквивалентности р на множестве А — это количество частей А, индуцируе- мых р (число p-эквивалентных классов). 4 д. Кук, Г. Бейз 49
Упражнение 2.4. 1. Доказать, что любое отношение эквивалентности порождает такое разбиение, что для любых х, у s А или И = М, или [х] П [у] = 0. 2. Пусть А — конечное множество. Какие отношения эквивалентности дают наибольшее и наименьшее число эквивалентных классов? 3. Если {Ai, Аг.Ап} — разбиение А и А конеч- ное, показать, что п M| = SUi|. i=l § 5. Отношения порядка Поскольку из понятия равенства (скажем, между числами) возникает математическое понятие эквивалент- ности, некоторые неравенства могут также использовать- ся как модели для более широкого класса отношений. Частичным порядком на множестве А назовем отно- шение, которое рефлексивно, антисимметрично и транзи- тивно. Порядок (называемый также отношением поряд- ка) — это обобщение отношения < на N. Поэтому мож- но легко проверить требуемые три свойства. Заметим, что мы могли бы в качестве определения взять отноше- ние <. Тогда отношение порядка было бы только тран- зитивно. Поэтому свойство транзитивности является наи- более важным для отношения порядка. Определив отношение <, можно определить отноше- ние < следующим образом: а<. Ь а < Ь и а’&Ь. Аналогично, если задано <, то а < Ъ <=> а = Ь или а < Ь. Пр им ер 5.1. Пусть задано произвольное множест- во А. Тогда отношение s на ^(А) есть тривиальное отношение порядка. (X s X для всех X; если X s Y и УеХ,тоА’ = У; А'еУ и / Отношение порядка р на А называется полным, если для любых х, у е А или хру, или урх (или же выпол- няются оба). Пример 5.2. Очевидно, что порядок на подмноже- ствах данного множества не является полным. Естест- венный порядок чисел на действительной оси R являет- ся полным. 50
По мере достижения прогресса в изучении матема- тики становится ясным, что математика не набор разроз- ненных идей, а совокупность связанных между собой концептуальных понятий, которые используются во мно- гих непохожих друг на друга ситуациях. Отсюда следу- ет, что, если основной принцип установлен и исследован, он фактически единым образом решает проблемы для всех этих различных случаев. Следующий пример явля- ется простой иллюстрацией этой идеи. Пример 5.3. На основе порядка, определенного на N, мы можем формально получить обычные отношения порядка на множествах чисел Z, Q и R. (Как уже упо- миналось, исследование N будет проведено в § 3 гл. 3.) Вначале рассмотрим Z. Чтобы облегчить рассужде- ния, разобьем Z следующим образом: Z = NU{O}U4. Поэтому А = {—х: х е N}. Определим отношение (кото- рое будем называть полным отношением порядка) на Z рассмотрением всевозможных элементов х и у из разбие- ния {N U {0} U АУ. Если х = у, то х < у и у < х. Пусть х ¥ у. Тогда: а) если х, у е N, то порядок в Z тот же самый, что и в N; б) если х, у s А, то х < у тогда и только тогда, когда —у < —х в N (т. е. —5 < —4, так как 4 < 5); в) если х = 0 и у е N, то х < у; г) если х <= А и у = 0, то х у; д) если хеА и у е N, то х < у или в противном случае у<х. На основе порядка на Z и обычных арифметических операций с целыми числами мы можем определить поря- док на Q: а/Ь < c/d тогда и только тогда, когда а • d < Ь * с. Проверку этого утверждения оставляем в качестве упражнения. Наконец, определим отношение порядка на множестве действительных чисел R. Рассмотрим деся- тичные представления двух действительных положитель- ных чисел: D = ... 0d„... £/2^1^06162..., C = ...Ocm...c2c1Co'ii'i2.... 4* 51
Если dt == ct и б< = для всех I, то D — C и, следова- тельно, D^CnC^D. В противном случае: а) если d„ ¥= 0, ст ч* 0 и п ¥ т, то D < С, если п < т, и С D, если т < п; б) если п — т и й{¥=с(, но d,= с} для всех / таких, что i < j < п, то из dt < ct следует, что D С, и, обрат- но, если с{ < d(, то С < D; в) если т — п u di = ct для всех i, но бй =5^- для не- которых к и б; = ifj для всех / таких, что 0 < j < к, тог- да С < D, если у* < б*, и С, если б* < 'f*. Читатель может проверить это самостоятельно. Отри- цательные числа могут быть исследованы так же, как в Z. И Множество X вместе с отношением порядка < назы- вается частично упорядоченным множеством (обознача- ется (X, <)). Тогда любой элемент ие(Х, <) такой, что х < и и у < и, называется верхней границей х и у. Ана- логична если ls(X, <), и 1 < у, то 1 является нижней границей х и у. Множество всех верхних границ х я у является подмножеством X и упорядочено отноше- нием <. Если существует единственный наименьший элемент этого множества, т. е. если существует р е «=(Х, <) такое, что а: < р, у < р и р<и для любой верхней границы и, то р называют верхней гранью (sup) х я у. Аналогично, если существует единственная наибольшая нижняя граница х я у, ее называют нижней гранью (inf) х и у. Мы отложим изучение верхней и нижней граней до § 5 гл. 5, где будут изучаться решетки. Наконец, заметим, что использование естественного порядка на R определяет новые множества. Их называ- ют интервалами'. [а, Ь] = {х: х е R, а < х < Ъ} есть замкнутый интервал (отрезок) от а до Ь; ]а, = (х: х е R, а < х < Ъ) есть открытый интервал от а до Ъ. В каждом случае числа а и b называются концевыми точками. Замкнутый интервал включает в себя концевые точ- ки, а открытый нет. Удобно также определить полуот- крытые интервалы: [а, &[ = (#: х s R, а < х < Ь), ]а, 6] = {х; х е R, а < х < 6}. 52
Для удобства будем использовать следующие обозна- чения: ]—оо, а] = {г: х < а), а[ = {х: х<а}, [а, °о[ = {х; а < х}, ]а, оо[ = {х: а<х), ]—°0, Ю[ = К. Хотя интервалы и множества чисел в общем-то не яв- ляются центральной частью нашего рассмотрения, мы увидим, что их удобно использовать время от времени. Упражнение 2.5. 1. Пусть А — произвольное множество и р — отноше- ние на множестве &(А)Х &(А), определенное следую- щим образом: (Р, Q)p(X, Y) тогда и только тогда, когда (РД<2)е(ХДУ). Является ли р отношением порядка? 2. Пусть А — произвольное множество и а — отно- шение на ^’(A)XJ’(A), определенное следующим об- разом: (Р, Q)a(X, У) тогда и только тогда, когда P^XnQsY. Является ли о отношением порядка? Если да, то явля- ется ли этот порядок полным? 3. Пусть тип — отношения на №, определяемые соотношениями: (а, 6) г (с, d) тогда и только тогда, когда а<с и (а, Ь) л (с, d) тогда и только тогда, когда а < с и Ь > d. Являются ли т и л отношениями порядка? 4. Пусть л определено на положительных элементах Q следующим образом: (а/b) л (с, d) тогда и только тогда, когда а * d < Ъ * с. Показать, что л является полным отношением порядка. § 6. Отношения на базах данных и структурах данных Как уже установлено, все вокруг определяется отно- шениями. Достаточно лишь взять отношение s на пере- менных (zi, ..., хп) так, чтобы можно было построить 53
множество {(Xl, Х2, Х„): $(Х1, Х2, ..., х„) истинно). Пусть задан набор (xi, ж„). Отношение s(xi, ж„) можно разрешить, т. е. выяснить, s(xi, хп) истинно или ложно. Конечно, $ не обяза- тельно будет представлено «хорошей» формулой. Не- трудно показать, что вместо отношения $, определяюще- го множество наборов длины п, любое множество таких наборов также определяет отношение (и содержатель- ные свойства а). Эти два подхода эквивалентны. Определение. При обработке данных наборы из п элементов называют записями; элементы этих набо- ров называют полями. Записи, определяющие отношение, обычно содержатся в файле. Если потребовать, чтобы несколько файлов содержали совокупность записей, удовлетворяющих некоторым отношениям, то мы полу- чим (относительную) базу данных. Замечание. Для случая обработки данных мы сей- час употребили термин «поле». В гл. 5 мы будем упо- треблять этот термин в математическом смысле, однако в данном случае это не приводит к недоразумению. Таким образом, это дает нам первый реальный при- мер отношений, которые в большей мере связаны с вы- числениями, в частности, с прикладными задачами. Тем не менее краткое обсуждение некоторых простейших свойств баз данных не только обеспечивает основу даль- нейшего математического исследования отношений, но и проясняет некоторые факторы, понимание которых необ- ходимо для эффективного управления системами баз данных. Современная теория баз данных включает в себя изучение так называемых нормальных форм, одпако обо- снование некоторых из них очевидно лишь в простых случаях. Мы рассмотрим только три формы для следу- ющих задач: — вставить новый набор из п элементов; — удалить набор из п элементов; — модифицировать набор, содержащий п элементов. Начнем с простейшей нормальной формы. Определение. Файлы в первой нормальной фор- ме (1NF), или — более просто — нормализованные фай- лы, имеют записи фиксированной длины, состоящие из элементов, взятых из множеств, чьи элементы далее не могут быть разбиты, и в каждый момент времени этот 54
файл может быть представлен как Массив значений MXN. Каждая запись, будучи набором из п элементов, может быть записана как строка массива. / Пример 6.1. Рассмотрим отношение FAM1 (см. выше), в котором мы собрали вместе родителей и детей. Каждая запись содержит в указанном порядке фамилию и имена отца, матери и детей. Следовательно, мы имеем записи (Смит, Джой, Джойс, (Сэлли, Бен))е FAM1, (Браун, Фред, Лиза, (Люси))<= FAM1. Теперь, если мы обозначим через F и М множества от- цов и матерей, то из определения следует, что Джой (Смит) е F, Джойс (Смит) е М, Фред (Браун) е F, Лиза (Браун) е М. Таким образом, Люси является членом семьи Браун, но Сэлли и Бен не являются детьми семьи Смит. Так как в этой семье более одного ребенка, то соответствующая запись больше, и, следовательно, нарушены условия пер- вой нормальной формы. Из FAM1 мы можем получить отношение FAM2, по- строив его из S, F, М и С, где S — множество фамилий, а С — множество детей, путем конструирования записей: (Смит, Джой, Джойс, Сэлли), (Смит, Джой, Джойс, Бен), (Браун, Фред, Лиза, Люси). Отношение FAM2 находится в 1NF и может быть пред- ставлено при помощи табл. 2.1. Таблица 2.1 Фамилия Отец Мать Ребенок Смит Смит Браун Джой Джой Фред Джойс Джойс Лиза Сэлли Бен Люси Однако не совсем ясно, что будет, если, например, супруги Джонс не имеют детей? Если мы хотим иметь в файле запись о них, то следует пересмотреть структу- ру файла. Это означает, что все следует начать сначала. Введем следующую терминологию. 55
Определение. При использовании таблицы для изображения отношения (файла с n-мерными набора- ми/записями, записываемыми в виде строк) столбцы на- зываются атрибутами. И Следовательно, ФАМИЛИЯ, ОТЕЦ, МАТЬ и РЕБЕ- НОК являются атрибутами различных полей в FAM2. Для получения доступа к записям в файле используют- ся так называемые ключи. Более точно это может быть определено в терминах атрибутов. Определение. Атрибут или (упорядоченное)' множество атрибутов, чьи значения однозначно опреде- ляют запись в файле, называются ключом этого файла. (Заметим, что в файле может быть много различных ключей.) / Каждый ключ отношения/файла FAM2 должен вклю- чать атрибут РЕБЕНОК. Перейдем к другим примерам. Пример 6.2. Каждый владелец компьютера дол- жен покупать к нему запасные части. Поэтому мы мо- жем рассмотреть файл, структура которого показана в табл. 2.2. Таблица 2.2 КОМПАНИЯ ОТДЕЛЕНИЕ МЕНЕДЖЕР АСЕ LONDON SMITH IBL LONDON JONES DATAMETZ BIRMINGHAM JONES PRINTACO MANCHESTER BROWN WOOLIES BIRMINGHAM BROWN RTX LONDON SMITH OXONDATA OXFORD WILSON Атрибут КОМПАНИЯ является ключом в SUP1; вся другая информация в файле доступна при посредст- ве ключа. Таким образом, например, можно извлечь ат- рибут ОТДЕЛЕНИЕ при помощи ключа WOOLIES или же МЕНЕДЖЕР из RTX. / Определение. Если запись локализована с по- мощью некоторого ключа, то поле, выделяемое из этой записи, называется проекцией. В данном контексте про- екцией является «из». Будем также говорить, что эти атрибуты вависят от ключа. И 56
На рис. 2.7 представлен графический пример зависи- мостей в SUP1. Пример 6.3. Модифицируем файл SUP1 с целью включения туда информации об имеющихся на складе запасных частях и об их количествах, которые отдельный Рис. 2.7 поставщик желает продать в отдельной сделке. Вклю- чим в файл также код поставки, из которого мы можем выяснить скорость и частоту поставок. Во избежание излишней детализации введены номер компании и но- мер запасной части (табл. 2.3). II Таблица 2.3 КОМПАНИЯ МЕСТО РАС- ПОЛОЖЕНИЯ ПОСТАВЩИК ЗАП. ЧАСТЬ КОЛИЧЕСТ- ВО 1 LONDON 2 1 10 1 LONDON 2 2 1 1 LONDON 2 3 10 2 LONDON 2 2 2 2 LONDON 2 4 5 3 B'HAM 4 2 2 3 B'HAM 4 3 10 3 B'HAM 4 4 4 5 B'HAM 4 1 10 5 B'HAM 4 3 10 6 LONDON 2 1 10 Из табл. 2.3 выясним, какие преобразования мы мо- жем делать с SUP2, а какие нет: а) вставка. Например, мы не можем добавить в файл запись, указывающую, что компания 4 (PRINTACO) на- ходится в Манчестере, без указания деталей, которые она может поставлять; б) удаление. Если компания 6 (RTX) прекратила поставки запчастей 1, тогда мы обязаны удалить все записи, относящиеся к этой компании и имеющие в по- ле ЗАП, ЧАСТЬ код 1; 67
в) модификация. Если код поставщика для Лондона изменился, например, из-за транспорта, то соответствую- щее поле должно быть изменено в каждой записи, где есть код LONDON в поле МЕСТО РАСПОЛОЖЕНИЯ. Что можно сделать для того, чтобы уменьшить или отодвинуть эти проблемы? С практической точки зрения мы должны выделить информацию в SUP2 так, чтобы по возможности избежать повторений. Таким образом, Таблица 2.4 SUP3 КОМПА- НИЯ МЕСТО РАС- ПОЛОЖЕ- НИЯ ПОСТАВ- ЩИК 1 2 3 5 6 LONDON LONDON В'НАМ В'НАМ LONDON 2 2 4 4 2 ЗАП. ЧАСТЬ КОМПА- НИЯ ЗАП. ЧАСТЬ КОЛИЧЕ- СТВО 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 Таблица 2.5 КОМ- ПА- НИЯ МЕСТО РАСПО- ЛОЖЕНИЯ ПО- СТАВ- ЩИК 1 2 3 4 5 6 LONDON LONDON В'НАМ M'CHESTER В'НАМ LONDON 7 7 3 4 7 ЗАП. ЧАСТЬ КОМПА- НИЯ ЗАП. ЧАСТЬ КОЛИ- ЧЕСТВО 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);
б) удалить ссылку на компанию 6 как на поставщи- ка запчасти 1, но оставить соответствующий код в SUP3; в) изменить код поставщика для LONDON на 7 пу- тем замены только трех входов, соответствующих компа- ниям с кодом 1, а не всех шести. Результаты этих изменений приведены в табл. 2.5. Это уже значительно лучше, однако все же может быть SUP3 КОМПАНИЯ ЗАП. ЧАСТЬ -> КОЛИЧЕСТВО ЗАП. ЧАСТИ Рис. 2.8 еще усовершенствовано. Чтобы увидеть, в каком направ- лении продолжать исследования, отделим ключи и под- чиненные части (рис. 2.8). Заметим, что ЗАП. ЧАСТЬ требует объединенного ключа. Все не-ключи непосредственно связаны с ключом. Это дает нам следующее свойство нормальной формы. И Определение. Файл имеет вторую нормальную форму (2NF), если он имеет форму 1NF и неключевые атрибуты полностью независимы от ключа. / Пример 6.3 (продолжение). Файл SUP3 все еще является достаточно сложным в том смысле, что для данной записи ПОСТАВЩИК может быть установлен при помощи исследования поля КОМПАНИЯ или же поля МЕСТО РАСПОЛОЖЕНИЯ. Это является причиной то- го, что в требовании а) код поставщика для Манчестера должен быть вставлен перед записью кода 4 компании, а требование б), возможно, потребует изменить более одной записи для модификации единственного поля дан- ных, относящегося к коду поставщика. На практике мы можем убрать эту проблему проектированием SUP3 в SUP4 и DEL (табл. 2.6). (Заметим, что коды поставщи- ка, изменяемые таким образом, препятствуют той воз- можности, что любые другие записи в файле вызывают противоречивую информацию. В SUP3 можно иметь за- пись вида «ПОСТАВЩИК КОМПАНИИ 6-2» и «ПО- 59
СТАВЩИК КОМПАНИИ 1-7» на некотором этапе мо- дификации SUP2, несмотря на тот факт, что обе компа- нии находятся в Лондоне.) Зависимость отношений в SUP4 и DEL изображена на рис. 2.9. И Нетранзитивность отношения зависимости является внутренним свойством, из которого возникает понятие третьей нормальной формы. КОМПАНИЯ МЕСТО РАСПО- ЛОЖЕНИЯ 1 LONDON 2 LONDON 3 B'HAM 4 M'CHESTER 5 B'HAM 6 LONDON Таблица 2.6 МЕСТО РАСПО- ЛОЖЕНИЯ ПОСТАВЩИК LONDON 7 B'HAM 4 M'CHESTER 3 Определение. Файл находится в третьей нормаль- ной форме (3NF), если он является файлом 2NF, и каж- дый атрибут, не являющийся ключом, нетранзитивным образом зависит от ключа. // Возможен и другой путь — каждый атрибут, не яв- ляющийся ключом, зависит только от ключа и пи от че- го другого. Как было отмечено ранее, существует много других «нормальных» форм, но мы не ставим изучение файлов КОМПАНИЯ ------► МЕСТО РАСПОЛОЖЕНИЯ SUP4 МЕСТО РАСПОЛОЖЕНИЯ ----> ПОСТАВЩИК DEL Рис. 2.9 своей целью в дальнейшем. Достаточно лишь иметь в виду, что информация в файлах является одной из реа- лизаций математического понятия отношения. Практическое использование отношений SUP4 и DEL требует явной связи атрибута МЕСТО РАСПОЛОЖЕ- НИЯ файла SUP4 с атрибутом МЕСТО РАСПОЛОЖЕ- НИЯ файла DEL. Это — отношение эквивалентности 6»
(между компонентами различных файлов, имеющих одно и то же имя). Подобные отношения эквивалентности мо- гут быть использованы для определения внутренних свя- зей и других структурных данных. В качестве иллюст- рации рассмотрим рис. 2.10. Диаграмма на рис. 2.10, а 1 2 а з 1 0 с о 2 а 3 0 с . 0 ♦ ъ 5 5 Ь 3 0 С 0 0 е 0 0 d 0 2 а г 0 е 0 0 d 0 с d Рис. 2.10 изображает дерево, диаграмма на рис. 2.10, b подобна диаграмме структурных данных, а диаграммы на рис. 2.10, end описывают их возможные применения. Отметим, что отношения эквивалентности различны, но результирующие структурные связи сохраняются. С ма- тематической точки зрения это является разбиением на классы эквивалентности. Следовательно, мы можем опре- делить произвольное представление этого дерева как эле- мент множества Т — DIE, где D = {а = (ж, а, р), b — (y, b, z), с = (u, с, v), d=(g, d, г), e==(s, е, t)}, Е = {(х,Ъ), (у, d), (р, с), (z, е)}. Эти вопросы будут обсуждаться в § 4 гл. 3. 61
§ 7. Составные отношения Подобно тому как мы устанавливали внутренние связи в файлах, для выделения некоторых данных из информации (например, ПОСТАВЩИК и МЕСТО РАС- ПОЛОЖЕНИЯ 3 посредством файлов DEL и SUP4 в примере 6.3) часто приходится связывать бинарные от- ношения друг с другом. Руководствуясь предыдущими рассуждениями, можно определить это понятие следую- щим образом. Определение. Пусть заданы множества А, В и С и отношения а между А и В и р между В и С. Опреде- лим отношение между А и С следующим образом: опо действует из А в В посредством о, а затем из В в С по- средством р. Такое отношение называют составным и обозначают р ° о, т. е. (р • о) (а)= р(о(а)). № Следовательно, (х, y)s(p°o), если существует такое, что (х, z)&a и (z, у)^р. Отсюда следует, что ^р<>о = о-1^р. Чтобы проиллюстрировать ситуацию, рас- смотрим рис. 2.11. Области определения и значений о и Рис. 2.11 р заштрихованы в разных направлениях. Следовательно, сегменты с двойной штриховкой на А, В и С представ- ляют собой SJpop, Фр Л Яа и Яроа соответственно. Замечание. Из записи отношений аир следует, что они применяются справа налево. Следовательно, (р ° о) (а) означает, что вначале берется а и преобразу- ется посредством о, а затем преобразуется посредством р. В алгебре это иногда записывают в виде пор. Следу- ет обращать внимание при чтении других математиче- ских книг на то, какой порядок выполнения отношений принят в той книге. 62
Пример 7.1. Пусть аир — отношения на N такие, что о = {(i, I т 1): I е N), р = { (z2, х): i е N}. Тогда = {ж2: х е NJ, = {х: х, х + 1 е N) = N, 0р»а = а~'^р = •= {х: х s N и х + 1 = у2, где у е N) = {3, 8, 15, 24, ...} (рис. 2.12). й В случае, когда мы рассматриваем отношение на множестве, оно может быть скомбинировано само с Рис. 2.12 собой. Например, используя отношения из примера 7.1, имеем а»о = {(х, х + 2): хе N) и р • р = {(ж4, х): х е N}. Эти отношения можно также обозначать соответственно о2 и р2. В общем-то эти обозначения не совсем законны для множеств, однако их легко можно обосновать, по- скольку если (х, у)^а°а, то ((х, z), (z, у))еаХа при некотором z; никакого недоразумения при этом не возникает, поскольку известна структура получаемого результата. Используя это обозначение, мы можем определить оп для любого п s N, п > 1, следующим образом: <з” — {(х, у): xaz и гоп~'у для некоторого z}. Если мы вновь возьмем отношения а и р из примера 7.1, то получим о” = {(х, х + п), х е N) и р" = {(х2П, х): х е N}. Хотелось бы рассмотреть вопрос о том, насколько в этих 63
случаях применима аналогия с умножением. Пусть А — множество, a R — отношение на А. Тогда отношения 1а • R, R и R° 1а эквивалентны; поэтому 1А является тождественным отношением на А, которое ведет себя подобно числу 1 по отношению к умножению чисел. Чтобы дополнить аналогию, желательно было бы иметь возможность писать R~l ° R •= Ia = R ° R~l. Однако в об- щем случае этого делать нельзя. Для того чтобы иметь такую возможность, необходимо наложить дополни- тельные условия, которые мы рассмотрим в сле- дующей главе. Рассмотрим теперь несколько упражнений. Они изо- бражают ситуации, которые «легко описать» в математи- ческих терминах, однако следует заботиться о том, что- бы в отношение включались только те пары, которые ему принадлежат. Мы обнаружим, что иногда полезно воспользоваться диаграммами. Упражнение 2.6. 1. Пусть R и 8 определены на Р, где Р — множест- во всех людей, следующим образом: R ={(х, у): х, у е Р и х является отцом у}, 8 -”{(х, у): х, у Р и х — дочь у}. Описать явно следующие отношения: а) Я2; б) 82; в) Я»8; г) 8»Я; д) 8 ° R-1; е) R~l • 8; ж) R~l°8"1; в) 8"1 • R; и) 8-1 • 8-1; к) 8"1«R~l. § 8. Замыкание отношений Понятие замыкания является фундаментальным ма- тематическим понятием и используется в большинстве разделов математики. Чтобы проиллюстрировать это по- нятие, рассмотрим следующий пример. Возьмем объект xq и процесс р, который порождает множество и определяет последовательность xi, Х2, ... ..., хп, ... такую, что xt&pfxo), Х2 Е р(Х1), • • • а Хп ер(х„-1), 64
Множество, содержащее все элементы всех последова- тельностей, которые могут быть выведены при помощи р, и начинающиеся с хо, называется замыканием процес- са р относительно хо. Поэтому «ответ» будет содержать- ся в рп(хо) при некотором п. Однако мы не знаем зара- нее значение п. Более того, если мы возьмем произволь- ный элемент у из этого замыкания и выполним процесс р, начиная с у, то не получим ничего нового. Результат уже содержится в замыкании. Множество не может быть расширено таким путем (оно замкнуто). Пример 8.1. Возьмем квадрат S, размеченный, как это показано на рис. 2.13, и определим процесс г следу- ющим образом. Из заданного положения S процесс г по- рождает множество всех положений, получаемых в ре- зультате поворота по часовой стрелке на прямой угол. Рис. 2,13 Рис. 2.14 Таким образом, r(S) дает конфигурации, изображенную на рис. 2.14. После применения г четыре раза, мы вер- немся к положению, с которого начали, и, следователь- но, замыкание в данном случае есть множество из че- тырех позиций. РА СР в С') □ К // A PJ Рассмотрим теперь, что произойдет, если процесс оп- ределить при помощи отношения. (В действительности это всегда возможно, потому что мы можем определить подходящее отношение при помощи множества {(х, у): у^р(х), где р — изучаемый процесс).) Для построения замыкания отношения А достаточно иметь составные отношения А, А2, ..., 4", ..., которые затем комбиниру- ются обычным теоретико-множественным путем. Б д. Кук, г. Бейз
Определение. Транзитивным замыканием (или просто замыканием) отношения А на множестве назы- вается бесконечное объединение U Ап = A U A2 (J Л3 U ... 77 Транзитивность замыкания отношения следует, оче- видно, из его определения, однако слово «транзитивное» часто включают, чтобы подчеркнуть различие между этой и подобной ей операцией, которая вскоре будет оп- ределена. Транзитивное замыкание отношения А обозна- чают Л+. Пример 8.2. 1. Пусть R — отношение на N такое, что R •={(ж, У)'- У = х+1}. Тогда 7?+ = {(ж, у): х<у}. 2. Пусть о —• отношение на Q такое, что ов = {(х, у): х < у). Тогда о+ «= о. 3. Пусть р — отношение на Q такое, что р “ = {(ж, у): ж * у — 1). Тогда р*{(ж, ж): жМ=0} Up. 4. Пусть L — множество станций Лондонского метро и а, Ь и с — последовательные станции. Если отношение N на L определено как N = {(ж, у): ж является следую- щей за у станцией), то (а, Ъ) и (Ь, c)e?V и (а, а), (Ь, Ь), (с, с) и (а, с)<=№. Следовательно A;+ = t7I,“ = LXL. Й Из этих примеров легко видеть, что замыкание отно- шения в общем случае не является рефлексивным. Од- нако иногда удобно сделать его таким. Это можно легко сделать. Вначале мы примем удобное допущение, что тождественное отношение на X, 7«{(ж, ж): жеХ} яв- ляется нулевой степенью произвольного отношения на X. Таким образом, Л° = 7 для любого А. Определение. Рефлексивным замыканием А* от- ношения А называют множество А* = U Ап, П=0 Замыкания отношений связаны между собой очевидным соотношением Л*~4+и/. Й 66
Пример 8.3. Используя отношения, определенные в предыдущих примерах, получаем Я* = {(х, у): х < у}, о* = {(xt у): хС у}, р* = р+U {(0, 0)}, Практические методы получения замыканий отноше- ний будут обсуждаться в гл. 6, 7. Упражнение 2.7. 1. Используя отношения R п S упражнения 2.6, опи- сать замыкания следующих отношений: а) Я+; б) в) Я*; г) 5*; д) (5oS->)+;e). (Я-1 ° Я)*; ж) (52»Я2)+. 5»
ГЛАВА 3 ФУНКЦИИ Понятие функции может быть уже известным чита- телю, однако в этой главе мы будем рассматривать функции как множество бинарных отношений. Собствен- но, будет дано определение функции и близкого к ней понятия отображения и изучены различные свойства, ко- торыми они обладают. Затем функции будут использова- ны для того, чтобы формализовать процесс вычислений и дать определение мощности множества. В заключение будут рассмотрены конкретные функции, представляю- щие особый интерес, и функции, которые удобно опре- делить с помощью операторов. § 1. Функции и отображения Определение. Бинарное отношение р между множествами А и В является функцией, если из арб и арс следует, что b = с; поэтому для любого х е А суще- ствует одно у^В такое, что хру. Можно дать определе- ние функции следующим образом: р(х)=0 или р(х)={у}. И Следует помнить, что если p(z) существует (т. е. р (х) =5^ 0), то этот элемент единствен. В случае, когда р(х)=т^0, обычно опускают скобки при обозначении множества и записывают У = р(х). Функции обычно обозначают строчными латинскими буквами /, g, h, ... или в специальных случаях особыми сочетаниями, например sin, log, Fn, ... Если f—функция между множествами А и В, то этот факт может быть записан как /: А -* В. В дальнейшем, если х е А и х/у, мы будем обозначать это соотношение следующим об- разом: /: х*~*у. 63
Это обозначение часто используют для того, чтобы опи- сать правило, определяющее функцию (если оно суще- ствует) . Пример 1.1. Функция /: А -* А, где А = {—1, 0, 1), определяется соотношением /: х х3. Ц Даже когда / не является отображением (см. ниже), мы часто будем использовать фразы типа «/ отображает х в х3». Понятия области определения и области значе- ний в данном случае содержательны, поскольку функция является отношением, однако следует заметить, что об- ратная функция может не существовать. Пример 1.2. На множестве { — 1, 0, 1) отношение /: х>~* хг является функцией, но обратной функции не су- ществует, поскольку /-1(1) = I—1, 1Ь № Определение. Функция /: А -* В является ото- бражением, если ее область определения совпадает с А, т. е. SDt *= А. Функции, не являющиеся отображениями, называют частичными. Отображение на множество на- зывают трансформацией (преобразованием). Замечание. Часто терминология отличается от принятой в этой книге, особенно в американских книгах. Термины «функция» и «отображение» иногда использу- ют как синонимы, а отображение в том смысле, как мы его определили, называют полной функцией. Конечно, каждая функция может рассматриваться как отображение на своей области определения; иногда это полезно, когда строятся сложные функции. Как мы увидим в последующих параграфах, исследовать свойст- ва функций легче в тех случаях, если на функцию нало- жить некоторые условия. Функция /; А -* R называется функцией, принимаю- щей действительные значения, а функция, область опре- деления которой совпадает с R, называется вещест- венной. Рассмотрим ограничения, которые помогут нам по- нять, что происходит с отдельными элементами в ре- зультате применения к ним функций. Будем занимать- ся классификацией функций, определенных на множест- вах, и предполагать, что мы имеем мало информации об этих множествах. Далее будут рассмотрены функции на множествах, где определены такие операции, как сло- жение. Определение. Функция /: А -* В называется сюръективной (на), если Stj=*B. Это означает, что для данного Ъ&В имеем Функция /: А -* В яв- 69
ляется инъективной, если из at, d?^A в f(at)=^f(as) следует, что at =а2. И Итак, если /: А -* В в / сюръективна, то для любого ЬеВ имеем /-1 (Ь)е ^(Я)\0. Это может быть проин- терпретировано следующим образом: каждая точка из В является «острым концом» по крайней мере одной /-стре- лы, выходящей из А. Проиллюстрировать эту ситуацию достаточно трудно (исключая тривиальные случаи). С другой стороны, наглядную характеристику инъек- тивности легко дать в виде ограничения или запрета. Рис. 3.1 Функция / не инъективна в случае, изображенном на рис. 3.1, а. Для сравнения на рис. 3.1, Ь изображено зеркальное отражение, которое отличает функцию от бинарного от- ношения. Если /: А -* В инъективна и a&SDj, то а = /-1(/(а)). Далее, если Ъ е 5?/, т. е. Ь s ^-i, и в данном случае /*’ — Функция, то b = (6)). Следовательно, если мы определим функцию Ix: X -+• X как тождественное отображение на X, т. е. 1&‘. % 1~*’ !-♦ х для всех х е X, тогда, если / инъективна, то / и /»/~х I Используя функцию / из примера 1.2, мы видим, что /“’(/(I))’’6' 1- Это означает, что первое из этих тождеств в общем случае неверно, однако, как мы увидим в § 2, вычисления становятся гораздо легче в случаях, когда оба тождества имеют место. Прежде чем продолжить из- ложение, обсудим терминологию, объединяющую введен- ные выше свойства. Функция / биективна, если она сюръективна и инъективна. Биективное отображение на- зывают биекцией. Следовательно, используя биекцию / между А в В, можно брать элементы из А и переходить в В посредством /, осуществляя некоторые вычисления, Переход назад к А осуществляется посредством /"*, 70
Термины инъекции и сюръекции также применяют- ся (для описания инъективного и сюръективного ото- бражений), однако мы редко будем их использовать. Упражнение 3.1. 1. Какие из указанных ниже отношений на множе- стве {—10, —9, ..., 0, 1, ..., 9, 10) являются функция- ми? Дать противоречащие примеры в случаях, когда от- ношение не является функцией. (В 3.1, 1г) отношение порядка является отношением, индуцированным Z. В 3.1, 1а)—к) |ж| определяется следующим образом: |ж| = х, если х > 0, и |ж| = — х, если х < 0.) a) pi = {(х, у): х = у2}', б) p2 = {(z, у): х2 = у}; в) р3 = <(лг, у)-. х = —у); г) p4 = {(z, у): ж С у); д) Р5 =={(£, у): х* у = 6); е) рб = {(ж, у): х3 = и}; ж) р7 = {(ж, у): х = у3}; в) ре = {(х, у): ж=|у|}; и) р9 = {(ж, у): |ж| = |у|); к) рю = {(г, У): у » 1у1 = ж » Ы). 2. Построить функцию /: А -* А, где А = {0, 1), не имеющую обратной. 3. Какие из следующих функций являются отобра- жениями: а) / на R определяется следующим образом: {(ж, ж4): х е R}; б) / на R определяется следующим образом: {(ж3, ж): же R}; в) / на R определяется следующим образом: {(ж, ж2): же R}; г) / на R, /: «-»• sin (ж); д) / на R, /: ж 1/ж; е) / на Q, /: arcsinж; ж) /: А-*-Ф(А) определяется следующим образом: /: х*-*{х}\ в) /: f?(A)-+A определяется следующим образом: / = {(ж, у): у е ж П {а}}, где а — фиксированный эле- мент из Л? 4. Пусть /:. А -* В и g: В -> С-— отношения. Что яв- ляется областью определения g°f: а) когда fug — функции; б) когда / — функция, g — отображение; в) когда / — отображение, a g — функция; г) когда / и g — отображения? 5. Доказать, что если функция / инъектпвна, то су- ществует 6. Если функция / сюръективна, следует ли отсюда, что /-1 — отображение? 71
7. Построить пример, показывающий, что функция на А — {—1, 0, 1}, определенная как /: х<-и2, такова, что Л1»/ */л. 8. Пусть /: А ->• В и g: В -* С — функции. Доказать, что: а) если / и g инъективны, то g ° / инъективна; б) если fug сюръективны, то g ° / также сюръек- тивна. 9. Пусть j: А В и g: В -+ С - функции и g сюръ- ективна. Достаточно ли этого, чтобы обеспечить сюръек- тивность g ° /? § 2. Обратные функции и отображения Используя результаты, полученные в предыдущем параграфе, исследуем сложные функции. Пусть дана функция /: А -* В‘, в этом случае f~l является функцией тогда и только тогда, когда / инъективна, а отображени- ем тогда и только тогда, когда / биективна. В большин- стве рассматриваемых нами случаев / — биекция; тогда 7"1 — также биекция, а функции f~l»/ и /» являют- ся тождественными отображениями. Рассмотрим функции /: А -* В и g: В -> С. Тогда: а) если / и g инъективны, то существует g»/; б) если / и g сюръективны, то также существует g°f (см. упражнение 3.1, 8). Обратным отношением к gа / является /_J • g-1. По- рядок должен быть обратным, как указано на рис, 3.2. Заметим, что если g — отображение, т. е. 3)г = В, то 5?/ s и, следовательно, Аналогично, если то Slgtlf — Sig. Если fug инъективны, то су- ществует g ° /; следовательно, /-1 ° g"1 — функция. Сум- мируя вышесказанное, имеем: из — следует, что 72
g‘f: S)f -* 9ls — отображение; если fug также инъек- тивны, то /_| ° g~l; Stg -* 3)t — биекция. Очевидно, что эти критерии выполняются, если f и g — биекции. Упражнение 3.2. 1. Пусть /: А -* В и g'. С-* В; показать следующее: а) если / сюръективна ng — отображение, то б) если / и g — биекции, то (g-1 ° /)-1 — ° g; в) если s й/, то (/ ° /~1 ° g) С = Sig. § 3. Мощность множеств и счетность Мы почти подошли к тому моменту, когда появляет- ся возможность использовать понятие биекции для фор- мализации понятия мощности и процесса вычислений. Вычисление важно не только само по себе, но также и потому, что функция является вычислимой тогда и толь- ко тогда, когда связанное с ней множество счетно. Вна- чале дадим определение множества N. Чтобы прояснить наши намерения, заметим, что любое число (1, 2 и т. д.) может быть использовано двумя различными способами: как существительное или как прилагательное, дающее номер другого существительного. Мы будем рассматри- вать числа как существительные. В качестве предварительного определения N по- ложим N-{1}U{b+1: neN). Из этого рекурсивного определения следует, что 1 eN, и если к произвольному элементу из 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. Пусть А = {х, у, z} и В = {х, у, z, Л). Тогда А^В и А & В, поэтому В\А = {А} и имеет толь- ко один элемент. И Эта конструкция может быть перенесена на произ- вольное множество. Начиная от множества X, мы можем определить последующее множество (обозначается Xе): X9 = X U {X}. Чтобы использовать этот процесс для по- строения N, требуется некоторое начальное множество. Выберем в качестве такого множества {0}. Оно имеет один элемент. (Многие авторы начинают с 0, Это по- рождает множество {01 U N. Мы не считаем 0 натураль- ным числом, и в этом причина такого выбора начально- го элемента. Не существует универсального условия по отношению к 0 и N. Всегда следует проверять условные обозначения, принятые в других книгах, при обращении к.ним.) Из (0) создадим последовательности {0J:{0}® = = {0, {0}), {0}®® = {0, {0>, {0, {0})} и т. д. Это при- водит к прогрессии, которая является более привлека- тельной, чем 1, 1 + 1, 1 + 1 + 1, ,.по крайней мере ее конструкция является строго определенной. Чтобы на- вести порядок в вышесказанном, выберем временно име- на для этих множеств. Переименуем {0} как 1, 1® как 2, 2* как 3 и т. д. Тогда 1 - {0}, 2 - {0, 1), 3 - {0, 1, 2), ... 74
Поэтому, например, множество 3 имеет три элемента. Чтобы избежать неточности, давайте снова изменим обо- значения и определим множества Nm = т*\{0} «= {1, 2, ..т}, N = N, U (Nm9: meN). Тогда из определения следует, что lNml=m (число т) и что если a, b е N, то а С b тогда и только тогда, когда Ne s N». Поэтому наша вера в упорядоченность N фор- мально обоснована. Итак, множества N и Nm (для каж- дого т е N) определены и могут быть использованы в дальнейшем. Введем некоторые понятия. Определение. Два множества биективны (обо- значается X~Y), если между ними существует биек- ция. Непустое множество конечно, если оно биективно некоторому Nm. (meN). Если X ~ Nm, то мощность множества (обозначается 1X1) равна т. (Числа в дан- ном случае используются как прилагательные. Напри- мер, если Р — множество всех людей и X s Р таково, что X ~ Nm, то X есть множество из т людей.) Напом- ним, что пустое множество 0 биективно только по отно- шению к себе, является конечным и имеет мощность О, т. е. 101 = 0. Говорят, что множество счетно, если оно биективно N. Символ Ко (алеф-нуль) часто используют для обо- значения мощности N. Множество называется счетным, если оно конечно или счетно, и может быть сосчитано с использованием биекции /: N -* X, если X счетно, или биекция /: Nm -* X, если IXI = т, или /: 0 -> X; i-й эле- мент X является образом i отображения /. И Перед тем как установить несколько полезных ре- зультатов, отметим одно существенное свойство мно- жеств и биекций: отношение о, определенное на множе- стве S посредством о = {(Х, У): Х~ У), является отношением эквивалентности, а подмножества S, входящие в классы эквивалентности, состоят из мно- жеств, имеющих одинаковую мощность. Следовательно, чтобы продемонстрировать тот факт, что два множества имеют один и тот же размер, требуется построить биек- тивное отображение между ними. 75
Пример 3.2. Покажем, что INI = |Z|. Отображение 1|з: ni-»- 1 — п —я—, если п нечетно, п/2 в противном случае является биекцией между N и Z. / В предыдущем примере греческая буква ф использо- валась для обозначения биекции. Использование грече- ских букв q>, ф, х» • • • для обозначения произвольных би- екций является общепринятым в текстах по логике и будет здесь использоваться в этом контексте (среди дру- гих). Однако, чтобы не было путаницы с пустым множе- ством 0, мы будем избегать использования этих букв в этом параграфе. Пример 3.3. Покажем, что |N| = IQ|. Это требует несколько более сложных рассуждений. Вначале рас- смотрим счетное количество копий N, каждая из них соответствует своему номеру п s N. Мы можем записать это множество как N X N и упорядочить его элементы, как указано на рис. 3.3, Такое упорядочивание является биекцией N X N -* N, задаваемой отношением (я, у) ь* («Ч- у— 1) (х + у — 2) „ „ •-*2—!----g—-------- + У- Каждый положительный элемент Q может быть связан с дробью (р, q), где р и q взаимно простые, и связан с элементом (р, q) множест- ва N X N естественным образом, Поэтому, записывая Т = {х: х в Q, х > 0}, получаем ITI INXNI-INL (Использование отношения «<» между этими бесконеч- ными числами не обосновано, Соотношение 141 < IJ3L 76
следует читать как «А биективно подмножеству В». До- казательство неочевидного факта, что это отношение яв- ляется отношением порядка; лежит за пределами этой книги.) С другой стороны, каждое р е N может быть представлено как р/1 и, следовательно, связано с парой (р, 1). Поэтому |N| С |Т| =S |N|, откуда следует, что |Т| = INI. Для достижения нашей цели существенно сказать следующее. Возьмем диагонально упорядоченное множество N X N (см. рис. 3.3) и выбросим из него па- ры, имеющие нетривиальный общий множитель. Это да- ет метод нумерации элементов Т, однако трудно дать формулу, которая связывала бы элементы Т с элемента- ми N. Теперь мы должны повторить наше рассуждение применительно ко всем радиационным числам. Это мож- но сделать несколькими способами. Выберем для нагляд- ности следующий. Расширяя уже полученное соответст- вие между Т и N X N до оператора между Q и Z X N, получаем |N| = IZI < IQI < IZXNI = INXNI - INI, что дает требуемый результат. Построение биекции между Z X N и N X N оставляем в качестве упраж- нения. II Предыдущий пример несколько длинен, однако при его рассмотрении возникло несколько важных моментов, которые мы сейчас отметим. 1. Если S конечно и %: S -* S — инъективное отобра- жение, тогда х биективно. Доказательство. Пусть выполнены условия ут- верждения. Если 5 = 0, то требуемый результат триви- ален. Если 5 ¥= 0, тогда существует биекция ip: Nm -* 5 для некоторого m е N и отображение ip-1 ° X ’ ’l’ инъек- тивно: Nm -* Nm и, следовательно, является биекцией. (Доказательство этого факта оставляем в качестве уп- ражнения.) Основная идея заключается в переупорядо- чивании тп объектов и известна под названием «прин- цип раскладывания по гнездам». Даны пг гнезд, каждое в своем ящике. Любая схема переселения, при которой в одном ящике может быть не более одного гнезда, должна использовать все m ящиков, т. е. ip-1’X’ip яв- ляется перестановкой Nm (рис. 3.4). Однако ip — биек- ция; следовательно, х ° Ф и X также биекции. (Обратно, если х: 5 -* 5 не сюръективно, то S должно быть беско- нечным.) 77
2. Множество N бесконечно, так как отображение на N, определенное как га»-* п + 1, инъективно, но не би- ективно (нет элемента, отображающегося в 1). Следова- тельно, обращая предыдущий результат, получаем, что N не может быть конечным. Подмножество А из R ограничено сверху (снизу) ес- ли существует верхняя (нижняя) граница, А ограничен- но, если оно ограничено сверху и снизу. 3. Ограниченное подмножество из N конечно. Доказательство. Каждое подмножество ив N ограничено снизу нулем. Пусть A s N ограничено свер- ху некоторым m s N. Определим отображение х: * N так, что если Л = {а 1, а2, а<, ...} и а, < а2< а3 <.,. ... < т (такой порядок возможен, так как 4eN), то Х(а()= i. Следствием этого является соотношение х(а<)^ач и X, очевидно, инъективно. Оно также должно быть биек- цией, т. е. х: Л -* N« для некоторого п < т. Если это не так, тогда существует а₽ е Л такое, что х(а»)>т я< таким образом, ар > х(ар)> т,. Однако Л ограничено т; поэтому мы пришли к противоречию. Следовательно, X — биекция па N„ и Л конечно. 4. Каждое подмножество конечного множества ко- нечно. Доказательство. Пусть Л = В и В конечно. Ес- ли В = 0, то Л = 0, и утверждение доказано. В против- ном случае В ~ Nm для некоторого т е N. Тогда суще- ствует биекция х: В -> Nm. Применение х к А дает под- множество из Nm и поэтому х(Л) ограничено. Из слу- чая 3 следует конечность х(Л). Поэтому, так как х(Л) биективно с А, то А конечно. 78
5. Прямым следствием случая 4 является тот факт, Что любое множество, имеющее бесконечное подмноже- ство, само бесконечно. Доказывая некоторые неочевидные факты о размер- ностях множеств Z, Q, N, N X N, ..., разумно задаться вопросом: существуют ли множества, мощность которых больше мощности N? Ответ на этот вопрос утвердитель- ный. Действительно, из данного произвольного множест- ва мы можем (используя диагональную процедуру Кан- тора; см. ниже) создать множество, мощность которого строго больше мощности N. Мы не будем рассматривать общий случай, а ограни- чимся рассмотрением удивительного примера, который носит фундаментальный характер и соответствует целям нашего изложения. Пример 3.4. Покажем, что J [0, 1[ I > INI, [0, 1[ = U: х е R, 0 < х < 1). Доказательство (А. Кантор). Каждое число между 0 и 1 может быть записано в виде бесконечной десятичной дроби O.dB1d„2d„3... Предположим, что эти числа могут быть перенумерованы и что п-е число име- ет значение, данное выше. Будем конструировать следу- ющее число: возьмем n-ю цифру десятичной формы, рав- ную л-му числу. Это дает нам число О^ц^г^зз • • • По- строим новое число: О.бцбдабзз. •.» где каждая цифра бн отличается от соответствующей цифры d,f. Тогда это построенное число будет отличаться от каждого числа из первоначального перечня, а именно от л-го числа оно будет отличаться л-й цифрой. Следовательно, мощность [О, 1[ строго больше, чем мощность N, и счетной биекции не существует. Принцип построения числа О.бцбаабзз... в предыду- щем доказательстве является наиболее существенным моментом, хотя проницательный читатель может заме- тить, что существуют задачи, где десятичное представле- ние чисел не единственно. Это встречается тогда, когда представление заканчивается бесконечной последователь- ностью 0 или 9. (Например, 0.3999... и 0.4000...) Чтобы построенное число 0.611622633. • отличалось от уже вы- писанного списка чисел, мы можем оговорить, что б« должны отличаться от 0, dit и 9. Соответствующие про- блемы возникают и в других подобных конструкциях, однако, чтобы не отвлекать внимание от основных идей, в большинстве случаев мы будем их игнорировать. 79
На самом деле можно показать, что [0, ~ R. Оче- видно, что R — важное множество. Поэтому его мощ- ность обозначают специальным символом Ki (алеф- один). Рассмотрим теперь способы, с помощью которых можно объединять множества и отношения между мощ- ностями отдельных множеств и мощностью результиру- ющего множества. Первый из них довольно очевиден. Теорема. Если А ~ В и С ~ D,to (А X С)~ (BXD). Доказательство. Пусть х: А В и х|>: С -* D — биекции. Тогда (а,с)<~* (х(а)»Х(с)) является биекцией между А X С в В X D. И Теорема. Если Z — конечное множество и {X, У} — разбиение Z, тогда IZl = |А| + |У|. Доказательство. Так как Z конечно, то Z~ ~ Nm для некоторого тп, Ряс. 3.5 N и существует биек- ция х: Z — (рис. 3.5). Более того, так как X s Z и YsZ, то xWsNm и X(y)sNm. Пусть ifi явля- ется биекцией из х(^) в N л для некоторого pi <т, где (4’i°X)(^)=N₽l. Аналогично пусть фа — биекция из х(^) в для некоторого рз < тп, где Oh’x)(F)=NP2. Тог- да если a: N -» N опреде- ляется как а: х <-* х + plt то о является биекцией между и Npi+p2\NPi. Следовательно, отобра- жение z >-* | 'Фх®X (г)> если г^Х, 1<Тв4’2вХ(г)> если является инъекцией и биективно (так как Z конечно) между Z в Npi+Pji. Таким образом, Z~Hp+Pt. Следо- вательно, m pi + рз и |Z| = |Х| + |У|. Пример 3.5. Чтобы проиллюстрировать применение предыдущей теоремы, рассмотрим случай, когда Z *= {а, Ъ, с, d, е, fl, X = (5, e)t Y ~ {а, с, d, fl, 80
Тогда биекция между Z и Ne задается следующим об- разом: Х = {(а, 5), (b, 1), (с, 6), (d, 3), (е, 4), (/,2)}, и поэтому Х(Х)={1, 4), х(У)“<2, 3, 5, 6}. Подходящими отображениями if, являются Фд - {(1, 2), (4, 1)}, фа = {(3, 1), (5, 2), (6, 3), (2, 4)}. Поэтому если о определяется как х х + 2, то 2), ^2»Х(У) = {1, 2, 3, 4), o«if2oX(y)= {3, 4, 5, 6). Комбинирование фт °х и дает нужный резуль- тат. / Предыдущий пример не является характерным в том смысле, что он требует очень тщательных манипуляций с биекциями. Обычно в этом нет необходимости, так как почти всегда можно сослаться на хорошо известные ре- зультаты. Закончим обсуждение следующим основным резуль- татом. Если А и В — конечные множества, то А X В ко- нечно и 1А XBI — |Л I • |В|. Этот результат не только интересен сам по себе, но и дает способ для введения доказательства по индукции. Доказательство по индукции использует два основ- ных понятия, содержащихся в определении N: (I) Существует некоторый начальный элемент (в N это 1). (II) Для заданного утверждения, соответствующего некоторому элементу, существует метод, позволяющий перейти к следующему (в случае N это — создание сле- дующего числа за наибольшим до сих пор числом, вклю- ченным в N). Более конкретно, если для некоторого по ® N (обыч- но по=1, но не обязательно) мы можем доказать, что утверждение Р(«о) справедливо и для любого (п^«о) справедливость Р(п) влечет справедливость Р(«+1) (здесь « +1 — следующий за п элемент), то заключаем, что Р («) справедливо для всех m > по. Шаг (I) является основанием индукции, шаг (II)— шагом индукции. 6 Д. Кук, Г. Бейа 81
Весь процесс, по существу, является прямым доказа- тельством Р(п0)=> ... => Р(т) и, следовательно, осуществляет непосредственную про* верку промежуточных результатов. Рассмотрим следующий пример. Пример 3.6. Если А и В конечны, то 14X51 = 141*151. Доказательство. Поскольку А и В конечны, то А ~ Nm с биекцией т: А -♦ Nm и В ~ Nn для некоторых т, п е N. Будем использовать индукцию по п — размер- ности В. Заметим, что от размерности А требуется ко- нечность, так как мы предполагаем знакомство только с умножением конечных величин. Основание индукции. Если 5 — 0, то А'Х.В^01 и поэтому имеем тривиальное равенство |4 Х5| — 0 — |4| *0= |4| * 151. Если В — {&}, то отображение А А X В такое, что а >-» (а, Ь), очевидно, биективно, и поэтому |4 Х5| — |4| — I4L* 1 — |4| * |5|, Шаг индукции. Предположим, что 14X5*1-141 • 15*1, где 5* s В и 15*1 — k е N. Тогда 141 * |5*| — т * к ® N и существует биекция if: 4 X 5* -* Nm+*. Если к < п, то можно взять подмножество 5, которое имеет / — к + 1 элементов. Пусть Bs = 5* (J {j}, где 5* — множество из к элементов, и пусть отображение у,, у: 4 X Bt -* N оп- ределяется следующим образом: у: (а, х) >-► т(а) 4- т*к, у: 4 X {х} -* {т • к + 1, ..., т • к + т}, у: (а, i>) 1-» т|)(а, Ь), если ie5*. Очевидно, что у является биекцией на N„,,д+„. и т * к + т = т • (к + 1) — т • /. Поэтому |4 X5jl — zzi • / — 141 • |5J. Следовательно, тождество справедливо для всех подмножеств 5, содер- жащихся в 5, и поэтому |4 Х5| = 141 • |5|. / 82
Упражнение 3.3. 1. Доказать, что отношение между множествами {(4, В): А ~ В] является отношением эквивалентности. 2. Построить биекцию между множествами Z X N и NXN. 3. Доказать, что если А и В — множества и A U В конечно, то 14 U5I + 14 ПБ1 = 141 + 1В|. 4. Доказать (от противного), что произвольная инъ- екция Nm-*Nm (meN) является биекцией. 5. Доказать (без использования равенства 1^(4) 1 = •=2!А!), что для любого конечного множества 4, такого что |41>2, справедлпво соотношение |^(4)1 > 141. 6. Показать, что результат задачи 5 имеет место и для бесконечных множеств. 7. Пусть множество {0,1}N представляет собой после- довательность й|, аг, аз, ..., ап, ..., где at е {0, 1). Дока- зать, что | {0,1 }N | > | N |. 8. Доказать (построением подходящих биекций и рассуждений по индукции), что если 4ц ..., 4„ — ко- нечные множества, то I4i X ... X 4П| = 1411 »...* |4„|. § 4. Некоторые специальные классы функций В этом параграфе мы несколько отойдем от основ- ной темы обсуждения для того, чтобы кратко рассмот- реть следующие четыре важных класса функций: подстановки, последовательности, функционалы и отобра- жения, сохраняющие эквивалентность. Эти функции ча- сто используются; особо отметим их приложения к тео- рии графов, к трассировке вычислений, к определению языков программирования и переводу, к машинной гра- фике. Определение. Подстановкой множества 4 назы- вается биекция на 4. И Подстановки конечных множеств представляют осо- бый интерес в вычислениях. Когда 4 конечно, мы в со- стоянии вычислить число различных подстановок 4. Пусть 141 =«eN, Обозначим через „Р„ число таких подстановок'. Значение „Р„ легко вычислить. Можно рас- сматривать задачу построения биекции на А как задачу 6* 83
заполнения ящиков, пронумерованных от 1 до п (рис. 3.6), объектами си, ..., ап. Порядок, в котором за- полняются ящики, несуществен (любой другой порядок можно получить перемешиванием ящиков). Поэтому бу- дем заполнять их слева направо. Первый ящик может быть заполнен п способами, так как мы имеем свобод- ный выбор из всего множества А. Убирая выбранный Рпс. 3.6 элемент из А, получим множество из п — 1 элементов. Следовательно, второй ящик может быть заполнен п — 1 способами, третий ящик — п — 2 способами и т. д. Про- должая этот процесс, получим, что (п — 1) й ящик мо- жет быть заполнен двумя способами, а ящик с номером и — единственным оставшимся элементом из А. Следо- вательно, число различных подстановок из А равно п * (п — 1) * (н — 2)» ... • 3 * 2 • 1. Это произведение называется факториалом п (обознача- ется nl). Следовательно, „Р„ = п!. Так как А ~ N„, то можно свести наше рассмотрение к N„. Любая подстановка на Nn должна определять об- раз каждого элемента в Nn (который, конечно, должен быть единственным и отличным от других). Пусть ip — подстановка на N„. Тогда можно определить как мно- жество из п пар следующим образом: ip = {(l, xi), (2, х2), .... (и, х„)}, где {Xi, ..., xn} = N„. Не обязательно, конечно, должно быть Xi = 1 и т. д. Можно также представить ip следующим образом: / 1 2 3 ... п \ хг гз Пример 4.1. Пусть а — подстановка на Ng: _ ( 1 2 3 4 5 6 'i а ~ V 5 6 3 1 4 2 J- Тогда о(1)= 5, о(3)= 3 и т. д. И 84
Достоинством этого обозначения является простота, с которой могут быть вычислены сложные подстановки. Предположим, что ip — подстановка на N„, определенная выше, а % — другая подстановка на том же самом мно- жестве. Тогда подстановка х может быть записана как совокупность пар в порядке, определяемом a?i, хг, хл. Если две последовательности записать одну над другой (первая применяемая подстановка должна быть записа- на первой), то верхняя и нижняя строки дадут резуль- тирующую подстановку. Пример 4.2. Пусть о — подстановка из приме- ра 4.1 и ft 2 3 4 5 6 р 3 2 6 1 4 5/ Можно переписать р в виде _ / 5 6 3 1 4 2 \ р — \ 4 5 6 3 1 2 ) Поэтому р о может быть вычислено следующим об- разом: _ / 1 2 3 4 а~\5 6 3 1 —/5631 Р= —U 5 6 3 /12 3 4 р»ст = -4 5 6 3 5 6) 4 2R 4 2 \ < [одинаковые 1 2/ 5 б\ 1 2) Следователыю, например, р»о(2) (== р(о(2)) = р(б)) = 5 и т. д. И Отсюда следует, что представление обратной (конечной) подстановки получается перестановкой строк, представ- ляющих исходную подстановку. Хотя такое представле- ние полезно в вычислениях, оно требует много лишнего места, особенно в тех случаях, когда многие элементы не меняются в процессе подстановки. Существует более простое обозначение, которое может употребляться не- посредственно для некоторых простых подстановок и косвенно для всех конечных. Определение. Пусть А = {ai, ..., а„1. Подстанов- ку р называют циклом (циклической подстановкой).если Ч a2-“an-i Р Vе» ei/ 85
Предположим, что A s В и В конечно. Расширяя р на все В, можно определить подстановку а так, что р(х), если геЛ, х, если х е В\Л. о: xi-* В атом случае о ведет себя подобно р во всех случаях, когда элементы В не остаются на месте. Применение о к А передвигает элементы по кругу циклическим обра- зом, и, если известна область А, мы можем обозначить подстановку как (ai, аг, ..., ап). Эта подстановка назы- вается циклом длины п. И Пример 4.3. Рассмотрим опять подстановку /’1 2 3 4 5 64 Р \ 3 2 6 1 4 5 / Подстановка является циклом длины 5 и может быть за- писана как (1, 3, 6, 5, 4). В Не все подстановки являются циклами. Например, под- становка о в примере 4.1 не является циклом. Напом- ним, что о имела вид /1 2 3 4 5 e'j \ 5 6 3 1 4 2/' Поэтому о(1)=5, о(5)=4, о(4)=1, откуда следует, что а содержит цикл (1, 5, 4). Начиная с 2, получаем дру- гой цикл —(2, 6). Таким образом, имеем о=(1, 5, 4)» >(2, 6) ио=(2, 6)»(1, 5, 4). В действительности любая конечная подстановка мо- жет быть представлена как произведение циклов, при этом циклы могут располагаться в любом порядке. Из построения следует, что один элемент не может встре- титься более чем в одном цикле, т. е. циклы не пере- секаются. Теорема. Каждая подстановка р на конечном мно- жестве А выражается е виде произведения непересекаю- щихся циклов. Доказательство. Поскольку |Л|=пеМ, то А ~ N„. Поэтому без потери общности мы можем огра- ничиться рассмотрением подстановки р на N». В теореме утверждается, что р = Oi» аг0 •.. • ог, где каждое о< является циклом и циклы не пересекаются. Для доказательства теоремы построим требуемые циклы. Сначала найдем наименьший элемент Xi е N„ такой, что 88
p(ziJ=/!Xi и р(т) = х для всех х, Если такого Xi не существует, то р = I (т. е. р является тривиаль- ным пустым произведением циклов). В противном слу- чае вычислим Xi, p(a?i), p2(zi), p3(xi) и т. д. Все эти элементы находятся в N„. Поэтому элементы в этой по- следовательности должны содержать повторения. Пред- положим, что pfe(j?i)—первый такой элемент (который уже повторялся в последовательности). Покажем, что p*(zi) = ii. Предположим, что это соотношение не вы- полняется. Тогда p'(zi) = pft(a?i) для некоторого I, 0< < I < к. Следовательно, р'~1(г1) = Р"1 •₽'(*!)“ Р-1 •Р*(*1) = Р*‘|(Л:1) и т- Д- Поэтому p'_'(zi) = p*“'(xi), т. е. p*_'(^i)= p°(xi)~ хь что противоречит минимальности к (так как к — К к). Та- ким образом, p*(Ti) = zi, и подстановка <Ji = (*i. p(*i), Р2(^1).Р*'1 (*1)) задает цикл внутри р. Если все элементы х е Nn такие, что p(z)?b х (будем называть такие элементы нестационарными), содержатся в di, то р = 01 — единственный цикл (который, естест- венно, не пересекается). В противном случае найдем следующий наименьший элемент гг е Nn такой, что р (*2)^*2 и хг не встречается в Оь Из хг строим множе- ство различных степеней р: O2“(*2> Р(^а), P2(^2>, .... pm(^))\ Это цикл длины не менее 2, и он не пересекается с Pi, (Доказательство оставляем в качестве упражнения.) Если все нестационарные элементы исчерпаны, то р а а 01»02 = 02 • Оь Очевидно, что множество нестационар- ных элементов, не входящих в эти циклы, можно умень- шить, и в конце концов придем к 0. Следовательно, р = 01 • 02«Оз ’. •. • о, для некоторого г ® N. И Рассмотрим теперь несколько иную ситуацию. Возь- мем множества А: |Л1ап и 5 = Л, |2?1аг<п. Возни- кает вопрос: сколько биективных функций существует из Л в £? Или, что эквивалентно, сколько существует инъективных отображений из В в Л? Число перестано- вок (без повторений) из п элементов по г обозначается пРт и вычисляется так же, как и пРп, за исключением того факта, что процесс прекращается после заполнения г ящиков, Таким образом, Pt — n»(n — 1)*,,.«(ц — г+1), 87
Легко видеть, что, продолжая процесс заполнения ящи- ков, оставшиеся п — г элементов можно разместить по последним п — г ящикам способами. Поэтому и р п^п в! п г “ “ (^7Гг При вычислении пР, мы находим число биективных функций из Л в В. Подсчитаем числа таких функций. Определение. Пусть А — конечное множество и В s А, |Л I = п > г = |В|, Множество В называется со- четанием (без повторений) из п элементов по г. Число таких сочетаний обозначается через Стп. Ц Вычисление Стп производится следующим образом. Положим 1Л|=п. Возьмем произвольное подмножество BsA такое, что |В1 — г. Тогда В является образом под- становки из п элементов по г. Число инъективных функ- ций на А, имеющих В своим образом, есть пРг. Если / является такой функцией ng — другая такая функция, имеющая ту же самую область значений, то g связано с / соотношением g = <р °/, где <р — подстановка на В. Функции g и / определяют одну и ту же комбинацию, и в действительности число функций, определяющих эту комбинацию, равно числу подстановок <р на В. Сле- довательно, пРг = С п*гРт> откуда рТ пР Т п! п - А = Н (п~ г)Г Поскольку относительные дополнения единственны и |Л \В| — п — г, то отсюда следует, что Сп = С%~т. Вернемся теперь к математическим объектам, кото- рые должны быть знакомы читателю, но которые, веро- ятно, не рассматривались как функции. Определение. Последовательностью на множест- ве S называют отображение N S. Если о: N -► S >— заданная последовательность и о(п) = з„, то обычно обозначают последовательность не о, а (з„) или («1, 32, sn, ...). В этом случае з„ называ- ют n-м членом последовательности. И Часто при изучении свойств последовательностей возникает понятие «расстояние» между соседними эле- ментами последовательности (скажем, зп и s„+i) и меж- ду элементами з„ при п > по (где — некоторый фикси- рованный элемент N) и фиксированным элементом из S, 88
Мы вернемся к этим вопросам несколько позже, посколь- ку в настоящий момент у нас в общем случае нет поня- тия расстояния. Особый интерес в задачах, связанных с трансляцией языков программирования, представляют функционалы. Существуют функции, которые определены не на мно- жествах простых объектов (таких, как числа), а, напри- мер, на множестве функций. Определение. Пусть даны множества А, В а С. Обозначим через [5 -► С] множество всех функций из В в С. Функция /: А -* [5 -> С] называется функциона- лом, Следовательно, a^3)f=*-f(a)—функция, и /(а): В -> С. Далее, b =► /(a) (fe)e С. И На первый взгляд такая комбинация, как /(a)(6)', выглядит настолько необычной, что может казаться не- ааконной. Это в основном потому, что рассматриваемые функции использовались как объекты особого рода, в ря- де случаев отличные от элементов, которые были в об- ласти определения и области значения функций. Конеч- но, множества функций могут рассматриваться так же, как и любые другие множества. В развитых языках программирования имена целых переменных не отличаются от имен переменных функ- ций и могут изучаться аналогичными способами. Хотя эти функции являются обычно довольно сложными, язы- ки программирования редко дают примеры важности функционалов. Пример 4.4. Пусть Р — множество программ, т. е. текстов программ (строк символов), которые должны быть обработаны компилятором. Аналогично пусть I и О — множества соответственно входных и выходных значений, которые доступны программе для ввода и вы- вода. Тогда компилятор (с соответствующего языка) яв- ляется функционалом типа Р -+• [Z -+• О]; для данной ре Р он пытается создать машинный код, который при выполнении будет читать i £ I и выдавать о £ О, Из дальнейшего изложения будет видно, что определение функций (или функционалов) сложности компилятора длинное и сложное. Тем не менее эти понятия можно изучать в более простых ситуациях. Пример 4.5. Пусть все данные принадлежат R. Тогда, если /: а н* [т >-* а + г], то /(2): z-2 + z и /(2)(3) = 5, то время как /(3): x>-»3 + z и /(3) (3) = 6 и т. д. II 89
Обращение с функционалами не вызывает трудно- стей при условии, что ссылка делается на основной функционал (т. е. А -* В или А -* [5-*• С]). Следователь- но, в дальнейшем мы будем рассматривать их просто как функции, имеющие нетривиальные области значе- ний, и будем обращаться с ними соответствующим образом. В заключение параграфа определим функции, кото- рые сохраняют некоторые структуры. Из дальнейшего будет видно, что в некоторых ситуациях желательно со- хранить многие из алгебраических свойств, которыми множества могут обладать. Ограничимся вначале рас- смотрением простейшего случая. Определение. Пусть X — множество, на котором задано отношение эквивалентности р. Тогда X разбива- ется отношением р на p-эквивалентные классы; множе- ство классов обозначается как Х/р. Определение. Пусть X и Y — множества, a pi и рг — отношения эквивалентности на них, и пусть /: X -* -*• У — отображение. Обозначим через / отношение Т- Х/р. -> Y/pr такое, что Л={([4 [/(*)]): zeX), где [z] — класс эквивалентности х. Если / — функция, то ZlpiXj =* ft [zt]) = /([z2]), и / является отображением, сохраняющим эквивалент- ность. В этом случае говорят, что /: X -*• У индуцирует отображение 7 Х/р, -> У/Рг. В Наглядный способ представления такого отображения дан на рис. 3.7. Если рассмотреть отображение /, согласованное с отношением эквивалентности, то можно переходить от «1 к pi или через хч, используя соотношения У2==/(г2) и Хгрхагь или через у\, используя соотношения Pi = /(zi) И УчРтУ\‘ Пример 4.6. Пусть X = {1, 2, 3), У = {1, 4, 9), и пусть pz и р? таковы, что X/pz - «1), {2, 3)}( У/рг - {Ш, {4, 9», во
л f‘. X->- Y такое, что х >-* х*. Тогда /"(Ш)-[/(!)] = Л[2]) = [4] = {4, 9), /([3]) = [9] = {4, 9). В этом случае {2, 3} s Х/рл => 2рл3 =► [2] = [3] и /([2])=» и/([3]). Поэтому / является функцией и / сохраняет отношения эквивалентности. И Пример 4.7. Пусть X, У и / те же, что и раньше, и отношение эквивалентности Ох и о? индуцируют раз- биения {{!), {2, 31} и {{1, 4), (9)} соответственно. В этом случае индуцированные отношения дают f([2]) = [/(2)] = [4] = {l, 4}, f([3])-[/(3)] = [9]-{9}. Так как 2охЗ, то [2] = [3] в X/ах, но (4, 9) Оу, по- скольку [4] [9] в Yla-r- По сравнению с рис. 3.7 этот пример дает отношения, показанные на рис. 3.8. Так как ♦ 4 Рис. 3.7 Рис. 3.3 нельзя соединить стороны прямоугольника во всех слу- чаях, то отношения эквивалентности не сохраняются. / В гл. 5 и далее будет показано, как эти диаграммы могут быть использованы для определения операций та- ким образом, чтобы соединить углы прямоугольника. После этого можно будет объединять диаграммы подоб- но строительным блокам. § 5. Аналитические свойства вещественных функций Этот параграф содержит материал, использующий теорию множеств из гл. 1. Цель, которая при этом пре- следуется, состоит не в развитии техники вычислений, а в создании строгих утверждений типа: «Предел /(г) при х, стремящемся к 0, есть у», _ 91
«Наклон графика / в точке а равен Ь», «/ имеет гладкий график» и т. п. (Два последних понятия, очевидно, относятся к графи- ке.) Мы дадим основные определения, которые исполь- зуются при получении некоторых результатов. Этого до- статочно для того, чтобы проиллюстрировать доказатель- ства большинства теорем. 5.1. Последовательности. Вещественной последова- тельностью называется отображение N на R. Последова- тельность записывают в виде (а„). Если при возраста- нии п члены а„ становятся «близкими» к некоторому фиксированному значению а = R, то говорят, что после- довательность (а„) имеет предел а пли что а„ стремится к а при стремлении п к бесконечности. Дадим строгое определение сказанному. Определение. Если (а„) — вещественная последо- вательность и для любого в > О существует N, s N та- кое, что N > Ne =► |aw — al < е, то говорят, что (an) имеет предел а, и записывают это как lim ап — а или 77-*ОО а„ -* а при п -* со. (Здесь |z| обозначает модуль числа х <= R.) Если (а„) имеет предел, то говорят, что последова- тельность сходится. Если последовательность не имеет предела, то говорят, что она расходится. Пример 5.1. 1. Последовательность (а„), где ап *= 1/п, имеет пре- дел 0; для 8 > 0 можно выбрать N, — любое натураль- ное число, большее 1/е. Тогда N > 2V, law — 01 = 1/N < 1/N, < е; следовательно, lim — = О, п-»оо п 2. Последовательность (а„), где ал=(—1)п, расхо- дящаяся. Предложение. Если (sn) и (^—последователь- ности и ?.sR, тогда (sa + t„.), (s„tn) и (Хз„) также яв- ляются последовательностями, и если lim sn = s и lim tn = П->50 n-*5O — t, mo: a) lim (sn + tn) = s + t; 6) lim (sntn) = st; 02
в) lim (Xsn) = Xs; П-*оо г) если t 0, то sjtn -* s/t при n -* °°. Доказательство. Пусть e > 0. Тогда существует N, s N такое, что Is.v — sl < e/2 и |f.v — t| < e/2 при N > N,. Так как при .V > .V, Is.v + tN — (s + t) | = Is.-,- — s + t.f — f| «S «S Is.v — sl + |fv — 11 < e, to lim(s„ + fn) = s + t. Аналогично для случая б) n-*oo Is.yf.v — St| = Is.vG — s.yt + s.U — st| C Is.vf.v — Sft-fl + Is.vf — st I C Is.vl lt.v — fl + Is.v — s| If |. Пусть задано e > 0. Тогда существует Д’, е N такое, что для А’ > Л’, справедливы неравенства <4 iTiTT l’.vl<l»l + b Следовательно, I «Л | |t.X — 11 + | S.v — S | i t К (| S | + 1) | t.v — t | + + Ity - НИ <7 e + 7 yTJZry |N<2’e + '2'e = e’ откуда получаем (snt.) -► st. Доказательство случаев в), г) предложения оставляем в качестве упражнения. II Определение. Пусть (аГ1)—последовательность 71 в R. Последовательность sn= У а, определяет ряд ^ап. i=l При этом sn называют п-й частичной суммой ряда. Если последовательность (s„) сходится, то говорят, что ряд сходящийся, и число lim sn называют суммой ряда. Оно 71-+Х» обозначается 00 £ ап. И г.= 1 5.2. Непрерывность. Понятие непрерывности почти полностью игнорируется при изучении элементарных вы- числений. В неформальной математике это понятие счи- 93
тается очевидным. Однако при начальном изучении ма- тематики достаточно трудно найти нужный путь. На са- мом деле определение непрерывности базируется на по- нятии предела. В этом параграфе через 1 будем обозна- чать интервал действительной оси R. Если /: I -> R и /(х) становится «неограниченно близким» к некоторому числу Ь при х, «приближающемся» к а^1, то говорят, что предел /(х) при х, стремящемся к а, есть Ь. Дадим строгое определение этого понятия. Определение. Функция /: I — R имеет предел Ь в точке а, если для любого е > 0 существует 6, > 0 та- кое, что О < I х — а I < 6, =»- I / (х) — b I < е. В этом случае будем писать lim/(г) = Ь к->а или /(г)-* Ъ при х а. II Заметим, что в определение не входит значение /(г) в точке а. Пример 5.2. 1. lim х = ст, достаточно выбрать 6в = е, 2. lim х2 =4, поскольку |х — 21 < б, *=> —б, < х — 2 < < б, 4 - б. < х + 2 < 4 + б.. Следовательно, 1л2- 41 - lx + 21 1х — 21 <б, 1г+ 21 <6,(4+ 6.). Если выбрать б, = min(l, е/5), то 1г2 - 41 < 56. е. // Легко показать эквивалентность следующих утвер- ждений: lim/(x) = t, lim(/(i) — b) = О, х-»а х-»а Umf(a + h) = b, lim (/(а + h) — b) = О, h->0 h-»o Теперь мы готовы к изучению понятия непрерывно- сти для вещественных функций. Грубо говоря, функция /:/“*• R непрерывна в точке а е I, если точки, «близ- кие» к а, отображаются в точки, «близкие» к /(я). Бо- 04
лее строго это понятие может быть определено следую- щим образом. Определение. Функция /: Z->R непрерывна в ае/, если Hm/(z) = /(а). Говорят, что f(x) непрерывна, если она непрерывна в каждой точке своей области определения. И Из определения видно, что в данном случае требует- ся, чтобы /(х) была определена при х — а. Такое опре- деление непрерывности соответствует интуитивному представлению. Поясним его на рисунках. На рис. 3.9, а дан график непрерывной функции [—2, 2] -► R, /|(х)=|х|. На рис. 3.9, б представлен гра- фик функции /г: [О, 4] -* R, где (х при 0< х 2, /а (,т) ~ 1 ПрИ 2 < х 4. Функция /з непрерывна в каждой точке [0, 4], за исклю- чением точки х = 2, так как не существует интервала вида 2 —б<х<2 + 6, для которого |/з(я)—/г(2)1 < 1. Рис. 3.9 В заключение этого раздела сформулируем без дока- зательства несколько утверждений. Их доказательство можно найти в большинстве книг по математическому анализу. Если /(x)-* I и ^(х)-+ т при х -* а, то (/ + g) (*) = /(*) + g(x) + (1g) (x)~ Kx)g(x)^ Im, (f/g) (x) — /(x)/g (x) “* ПРП условии m^O, (Kj) (*) “ M(x)-*- KI для всех К е R. 95
Отсюда следует, что если fug непрерывны в точке а, то непрерывными являются и функции X/, / + g, fg, fig при условии, что а находится в области определения каждой из «новых» функций. 5.3. Дифференцируемость. Графическое представле- ние функции /: / -* R, обсуждаемое в п. 5.2, предполага- ло, что эта функция определяет некоторую другую функ- цию /-* R, где /' (а) есть «наклон» графика / в точ- ке а. В общем случае S)f S 3)/, так как на самом деле его может не быть для всех точек В этом случае /' не существует. Определим строго функцию Определение. Функция /: / -> R дифференцируе- ма в точке «е I, если ип?(а+А2-^. Л-»О Л существует. Множество точек, где этот предел существу- ет, устанавливает область определения 3))> производной f: I -* R функции /, и Г(х) = Ит/(д + ^~/(Л Л-»0 " Иногда производную /' записывают как djfdx. Отноше- ние -------—— часто записывают в виде б//ох, где о читают как «малое приращение». В этих обозначениях lim -г =-г. / 6x^0 6х dx Если / дифференцируема в точке а, то она и непре- рывна в а, так как / (а + Л) - / (а) = (/(а±^~/(а)) Л; следовательно, lim (/(а + А) — /(а)) = Л-»0 = lim + М ~ цт д _ »= 0. Л-»0 ” л-»о Другими словами, lim f (а + h) — f (а), и, таким образом, h—Ч f непрерывна в а по определению. Поэтому непрерыв- ность функции является необходимым условием ее диф- ференцируемости, но не достаточным, как показывает следующий пример. 96
Пример 5.3. Функция /(z)=lz| не дифферепцпрус- ма в точке х = 0, так как / (Q + ft) f (Л) = |^| h h ' где [ । (+ 1, если 7?>0, h [— 1, если h <Z 0. Следовательно, в любом интервале ]—h, /?[, где h произ- вольное, функция \h\/h принимает оба значения ±1, и поэтому предел при h -+ 0 по существует. / Пример 5.4. 1. Пусть /: R -* R — постоянная функция, т. е. /(г) = = с для всех х s R. Тогда / (х 4- Д) — / (.г) _ с — с _ h ~ h —V и lim 0 = 0. Таким образом, /'(х)=0 для всех х е R. Об- л-»о t ратно, если /'(z)=0 для всех z s R, тогда /—посто- янная. 2. Пусть /(z) = х2 для всех r = R. Тогда / (х -г- h) — f (т) _ (х + Ъ )2 — х2 _х2 J- 2 th 4- Л2 — х2 , h ~ h h, -х + n, lim (2х -|- 7i) = lim 2z 4- lim 7i = 2x. h-Ю h-»o li->o Следовательно, /'(z) = 2x для всех x s R. II Предложение. Если / дифференцируема в x и ?. eR, то дифференцируема в х и (X/)'(z) = X/'(z). Доказательство, (X/)' (z) = limX^-±^^ = X ПпЛг + ;г;-^ =. Л-»0 “ Л-»0 1 -Шх). II Следующие результаты оказываются полезными при дифференцировании функций, которые определены че- рез другие функции. Предложение. Если fug дифференцируемы в х, то а) / + g дифференцируема в х и 7 Д. Кук, Г. Бейз 87
6) fg дифференцируема в х и (fg)'(z) = (fg) (*)+№') (4; в) f/g дифференцируема в х при g(x)^ 0 и №eyw-iww^,)w. g \х) Доказательство оставляем в качестве упражнения. Эти формулы могут использоваться при доказатель- стве некоторых, возможно, знакомых простых резуль- татов. Пример 5.5. 1. Пусть /: 1? -* R, где /(4 = 1/х. Тогда /'(z) = -l/z2 и 0, = 0r = R\{O}. 2. Пусть /: R -> R задано формулой f(x) = xn (neN). Тогда f(x)= пхп~{. II П ре д л о ж е н п е (правило дифференцирования слож- ной функции). Если j дифференцируема в х и g диффе- ренцируема в у = /(х), то g ° / дифференцируема в х и (g4Y(x)=(gU(x))Y~g'(y)f'&). Доказательство. Пусть w = g(y)= g(f(x)) = = g°f(x)- Тогда = limgj = lim(при условии 6у#=0) = lim Гт lim (cm. n. 5.1). Однако / дпфферен- 6у-»0 °" 6х-*0 цируема в точке х, и поэтому аналогично lim = d* бу-^о^У dv Поэтому d (go f) dw dy . > / X ,1, \ ~dT = djrx и = gW (4 // Производную от /' записывают в виде /" плп (Pfldx2 и называют второй производной функции /. Аналогично производная от (^>3) записывается как /(п) или dnjldxn и называется п-й производной функции /. Если /' существует и непрерывна, то говорят, что / при- надлежит классу С1; /‘принадлежит классу Сп, если /(к) существует и непрерывна, и классу С°°, если /(п> суще- ствует для всех n = N. 98
5.4. Интегрирование. Пусть /: [а, 6] -* R, п е N, 'Л = = (Ь — a)In и х* = а + АЛ при 0 к < п. Тогда можно определить последовательность ($„(/)): («п (/)) = "£ 1{Xk)h. л=о Если ($„(/)) имеет предел, то будем говорить, что / ин- тегрируема па [а, 6], и обозначать ь Нт зп (/) = J п-»оо а Ъ Величину J j (х) dx называют интегралом Римана функ- а цпи f(x) на [а, 6]. Заштрихованная площадь на рис. 3.10 является гра- фическим представлением ss(/) для непрерывной функ- ции / на [а, 6]. Для пеограпичепно больших значений п интуитивно можно ожидать, что заштрихованная пло- щадь будет хорошо аппро- ксимировать площадь под графиком между х = а п х = b и ограниченным зна- чением (если оно существу- ет) этой площади. Если обозначает мно- жество всех вещественных Рпс. 3.10 функций на [а, Ь], то интег- рирование может рассматриваться как функция ST -> R, область определения которой есть ь существует . l а Некоторые важные свойства интеграла приводятся ниже. Предложение. а) Если f непрерывна на [а, 6], го она интегрируема на этом отрезке; б) если / интегрируема на [a, i] и х е [а, &], тогда / интегрируема на [а, х] и [х, Ь] и ь « ъ У f(x) dx = У j(x)dx + У/(х) dx; а а и 7 09
в) если f интегрируема на [а, Ь] и X ® R, тогда kf ин- тегрируема на [a, fc] и ь ь J (X/) (х) dx = X J / (х) dx-, а а г) если fug интегрируемы на [а, Ь], то f + g интег- рируема на [а, &] и ь ъ ъ J (/ + g) (x) dx — J f(x)dx + J g (x) dx. a a a Доказательство. В случае а) формальное дока- зательство давать по будем. Заметим, однако, что для непрерывной функции / интуитивно ясно, что площадь под графиком / является хорошо определенным поняти- ем, и, следовательпо, можно ожидать, что интеграл от / существует. Доказательства б)—г) следуют из соответ- ствующих свойств последовательностей. Рассмотрим, на- пример, случай г). Если / и g интегрируемы па [а, Ь], то последовательности п-1 п-1 «п (/) = 5 / fa)h и (g) = 2 g fa) h h=0 h«0 имеют пределы. Рассмотрим последовательность «„(/) + + s„(g). Тогда lim (sn (/) + sn (g)) = lim sn (/) + lim sn (g). Ц П-»оо П->оо n-*oo Чтобы вычислить интеграл, редко используют опреде- ление п вычисляют предел. Следующая теорема является основной. (Она устанавливает тот факт, что интегрирова- ние и дифференцирование — взаимно обратные процессы.) Теорема. Пусть f: [а, Ь] -* R непрерывна. Опреде- лим функцию F: [а, Ь] -* R формулой t F(/) = §f(x)dx, а Тогда F дифференцируема на [а, Ь] и F' *= /. Доказательство. Будем лишь фиксировать ос- новные моменты доказательства. Используя результаты 100
предыдущего предложения, имеем t+л t f f (х) dx — (" f(x) dx F(t + h)-F(t) __________g h h ~ t t+h t J / (x) dr + j* / (x) dx — J / (x) dx «+Л ==2---------------i------2-----= 4 J f(x)dx. t Рассмотрим <+л 1 с lim-г- I f(x)dx. h-ю n J Из определения интеграла и его интерпретации как пло- t+л щади ясно, что для малых h интеграл J f(xjdx стре- t мится к f(t}h и <+h Ит -i f f(x)dx = f(t), Л-»0 П Следовательно, F'(i) — /(0 для всех t s [а, b], / Пусть Ф — произвольная функция, для которой Ф' “ = /. Тогда F — Ф является постоянной, так как Г(о = /(^) = Ф'М. Следовательно, (F —Ф)'(£)= 0 для всех ts[a, i], и из и. 5.3 заключаем, что F—Ф = Х, /.eR. Таким образом, * Ф (t) — J / (х) dx + X, a Функцию Ф называют неопределенным интегралом от / и обозначают J / (<) dt. Неопределенный интеграл опре- делен с точностью до постоянного слагаемого. Он опре- деляет класс эквивалентности функций [Ф]: Ф1 ~ Фа тогда и только тогда, когда Ф1 и Фа — неопределенные интегралы от /. 101
Предл ожение. Если Ф — неопределенный интег- рал от /, то ь J / (х) dx = Ф (Ъ) — Ф (а), а Доказательство. Ф (6) - Ф (а) = (F (b) + X) - (F (а) + X) = F (&) - F (а) - b а Ь = У f(x)dx — J j(x)dx = У j(x)dx. II а а а Как и при исследовании дифференцирования, эти результаты могут быть использованы для вычисления интегралов, некоторые примеры которых даны ниже. Пример 5.6. 1. Если F (t) = У х dx, то F'(t) = t, и неопределенные о интегралы от функции /: х<-+ х есть Ф(0 = *2/2 + Х, ZsR. Таким образом, Г(О=Ф(О~Ф(0)=*72. 2. В более общем случае, если /: х*-* ;гпдля п s Z\{—1} < и F (t) = У хп dx, то F' (t) = t”, и неопределенный иптег- а рал есть ф(0 “гл + и» не R- Тогда /’(с=Ф(о-Ф(«)=^п-:—г Очевидно, что это соотношение неверно при n = —1. Этот случай будет рассмотрен в п. 5.5. 5.5. Некоторые специальные функции. Мы предпо- лагаем, что читатель знаком с геометрическими опреде- лениями функций sin х н cos х, из которых следует, что sin: R -* [-1, 1], cos: R -* [—1, 1], где S>.ln e SJco. = R, S?»in = $?co. = [—1, 1]. 102
Мы также предполагаем знакомство с периодическими свойствами этих функций. Некоторые другие элементар- ные свойства приведены в следующем предложении. Предложение. Для всех х, у s R имеем-. a) sin(x + у) = sin (х) cos (у) + cos (х) sin (у); б) sin (я — у)= sin (х) cos (у) — cos(я)sin(у); в) cos(z + у) = cos (х) cos (у)— sin (х) sin (у); г) cos (я — у) = cos(x)cos(y) + sin (х)sin (у); д) sin2 х + cos2 х = 1; е) ^(sin(x)) = cos(x),^(cos(x)) = -sin(x). // Эти результаты непосредственно следуют из опреде- лений. Их доказательство оставляем читателю в качест- ве упражнения. Мы не будем касаться обоснования этих понятий (можно принять их в качестве допущений). В п. 5.4 был определен j хп dx при п —1. В дейст- t вительности интеграл J у dx существует для всех t > О 1 и равен In t. Функция In является отображением ]0, оо[ -* R и обладает свойством 1п(од) = In х + In у для всех х, у е ]0, °°[, так как In (ху) = — = — = In х. dx ' ' ху х dx Из результатов п. 5.4 имеем 1п(хг/) — 1п;г = Х, где х& е ]0, ®[ u /.e R. В частности, при х = 1 имеем In у — — In 1 = X и in 1 = 0; поэтому In у = X. Следовательно, In (од) = In X + In у. Можно показать, что In биективна и, следовательно, су- ществует функция exp: R -> ]0, «>[ такая, что In {exp о) = р для всех р е R и exp {in q} = q для всех q е ]0, oo[. Из свойств функции In следует, что ерх{щ + у} = ехрхехру для всех i,!/gR, exp 0 = 1, d — exp х = exp x. Удобно обозначить In х через log, х, а ехр х через е*. 103
Функцию log, х называют натуральным логарифмом числа х, а функцию xt-* ех — экспоненциальной функ- цией. Если при а > 0 функция /: ]—а, а[ -* R принадлежит С°" и х е ]—а, а[, то ряд называют рядом Макларена для / в точке х. Для неко- торых функций можно показать, что ряд Маклорена схо- дится к значению функции / в точке х. Другими слова- ми, для / имеем /(*) = lim J /w(0)^. В частности, это справедливо для функций sin®, cos®, 6х, для которых . , » V4 , ..ft хг>1+1 х3 , г8 х7 , Sin (®) = 2 (— 1) (2k + 1)1 — х~ 3!+5Г — Я + • • • ’ Л—О ' А=0 00 2Tfe л.8 М = 1 +Ж + - + -+ ... h=0 для всех ® е R. Упражнение 3.5. 1. Показать, что последовательности, определенные ниже, сходятся, и найти их пределы: а) 5„ = 1/л2; б) s„ = 3/г/(га + 3); в) sn = 1 + 1/2". 2. Пусть (s„) и (tn)—последовательности, lim sn = s II II n-»oo и п Ifni < Uni для всех neN. Показать, что limfn = O, П-40О 3. Доказать, что если (s„) и (/„) имеют пределы s и t соответственно, то последовательность (р„), где рп = «= Xsn, имеет предел Xs. Если t ¥= 0, то lim (sn/fn) = s/t. П«*оо 4. Найти производные следующих функций (опреде- лить области, в которых существует производная); 104
a J /: R-*R, где/(zj= x,/2; 6) /: R\{0) -> R, где /(x)= 1/x; в) f: R -* R, где f(x) = Id2. 5. Показать, что если / и g дифференцируемы в точ- ке х, то: а) / + g дифференцируема в точке х и (/ + g)'(*) = /'(*)+g'(4; б) fg дифференцируема в точке х п (/g)'U) = (/'?) (x) + (/g')W; в) fig дифференцируема в точке х при g(x)¥=Q и g (*) 6. Показать, что если ак е R при и р: R -> -* R определено соотношением N N р(х)= У akxh, то р' (х) — У akkxk~l. h—0 А=1 7. Определить производные следующих функций: а) /: R -> R, где / (х) = х sin х/ (1 + cos х), б) g: R -> R, где g (х) = sin х2 + х cos2 х. 8. Вычислить интегралы: 2 1 л/2 a) J з? dx; б) J х1/з dx; в) J cos х dx, 1—1 о 9. Найти неопределенные интегралы: . С х« (7z8 + 2хея +1\ , . f . , а) I хе dx; б) II—11—I dx; в) I sin х cos х dx. § 6, Операции Часто некоторые функции (такие, например, как сло- жение целых чисел) используются при введении более простых обозначений. Это можно использовать для опи- сания основных идей, изложенных в предыдущих пара- графах, что, в свою очередь, позволит нам сделать дока- зательства более короткими и в то же время точно вы- делить свойства, на основе которых делаются выводы. Более детальное исследование будет проведено в гл. 5—8. 105
Определение. Операцией над множеством S на- зывается функция /: Sn S, п е N. В этом определении есть два важных момента, которые заслуживают особо- го упоминания. Во-первых, раз операция является функцией, то результат применения операции однознач- но определен. Поэтому данный упорядоченный набор из п элементов S функция / переводит только в один эле- мент S. Во-вторых, поскольку область значений опера- ции лежит в S, па которое операция действует, будем говорить, что операция замкнута па S. Говорят, что операция 5П -* 5 имеет порядок п. Ог- раничимся рассмотрением ситуаций, когда порядок ра- вен 1 или 2. В этом случае операции называют монади- ческими (или унарными) и диадическими (или бинар- ными) соответственно. Элементы набора из п элементов в области определения называют операндами. Операции обычно обозначают символами, называемыми оператора- ми. В случае унарных операций обычно символ операто- ра ставят перед операндом. И Наиболее простым примером является операция из- менения знака иа R. В предположении, что операция сложения уже определена, —х определяет операцию х*-*у\ а: + у = О (х отображается в у: х + у = 0). Определение. Бинарные операции обозначают одним из трех способов. В первом случае оператор ста- вится между операндами (infix), во втором — перед опе- рандами (prefix) и в третьем — после операндов (post- fix). И Пример 6.1. а + b infix, 4-аб prefix, ab+ postfix. II Переход от одной формы к другой нетруден и лучше всего описывается в терминах ориентированных графов, которые будут обсуждаться в § 6 гл. 7. В соответствии с большинством математических тек- стов, исключая некоторые работы по алгебре и формаль- ной логике, мы будем использовать обозначение infix. Другие обозначения имеют то преимущество, что не тре- буют скобок при определении порядка вычислений слож- ных выражений, и это делает их особенно удобными для автоматической обработки. Читатель может проверить соответствие между следующими парами выражений, за- писанными в формах infix и postfix соответственно: 106
a) a + b * с + ((/ + e *(/ + g)), abc * + dejg + * ++; 6) (a + b) * c + d + e * / + g, ab + c* d + ef * + g +; в) a + (b * (c + d) + e) * / + g, abed + *e + /*+g+. Пример 6.2. Рассмотрим алгебраическое выражение a + &*c + (d + e*(/ + g)) и его представление па рис. 3.11, которое называют де- ревом. Из свойств арифметических операций мы знаем, что значение этого выражения можно вычислить многи- ми способами. Однако если двигаться слева направо и снизу вверх, то получаем а<-Ь*с, Р — а + а, у *- / + g, л*-й + б, р — р + л. Здесь греческими буквами обозначаются промежуточные результаты, за исключением р — искомого результата. Вычисление значения этого выражения с помощью дерева производится очень просто, однако если работать непосредственно с исходным выражением, то это можно Рис. 3.11 сделать по-другому. Действительно, обычно (infix) вы- ражение, как это показано в примере, нерегулярно по- тому, что некоторые подвыражения заключены в скоб- ки, а некоторые нет. Особенно такая ситуация будет на- блюдаться в том случае, если проинтегрировать инфор- мацию о различных символах па дереве (поскольку на самом деле его пет). Очевидно, что формы записи prefix и postfix этого выражения несут больше информации. 107
Вычисление значения выражения в форме postfix осу- ществляется следующим образом: abc* + defg+* + + a a +afef^ + * + + р de^g + * + + р d. е у * + + f f ' 8 t * f Аналогично в форме prefix вычисления осуществляются следующим образом: + + a*bc + d*e + fy + + а а. + d * е +? д + уЗ + d * е + £ д ।_____। + р + d * е у <• р < d S ।________। + р it ’ ~Р ' «Переходы» по дереву показаны на рис. 3.12, a (форма prefix) на рис. 3.12, b (форма postfix) а на рис. 3.12, с (форма infix) со скобками: ((a + (ft.c)) + (d + (e.(/ + g))I)\ К этим вопросам мы вернемся позднее. Конечно, мы уже знакомы со многими бинарными операциями, например с арифметическими операциями +, •» —» / и операциями над множествами — объедине- нием (U) и пересечением (Л). Операции, определенные па конечных множествах, часто удобнее задавать при помощи таблиц. Пример 6.3. Пусть операция ® определена на мно- жестве {а, Ь, с) при помощи таблицы ® а Ъ с а а а b b Ь а с с а b Ь 108
Следовательно, а ® Ъ = а, b®b = a, с®Ь =*Ь, ... Ц Такие символы, как ® и ®, будут использоваться для обозначения различных операции, которые будут вво- Рис, 3,12 109
диться в процессе изложения. Очевидно, что использова- ние таблиц имеет важное значение, так как некоторые операции, с которыми приходится иметь дело в компью- терной математике, непригодны для словесного задания. Обратим теперь внимание на свойства операций. Опе- рации вместе со своими следствиями обеспечивают ос- нову всех алгебраических вопросов математики, так как опи определяют порядок работы с объектами. Определение. Говорят, что бинарная операция ® на множестве А коммутативна, если а ® Ь = Ъ ® а для всех а, b е А. Ц Следовательно, обычная операция сложения на Z комму- тативна, а вычитания — нет. Определение. Говорят, что операция ® на мно- жестве А ассоциативна, если (а ® Ь) ® с = а ® (Ь ® с) для всех а,Ъ, сеЛ / Заметим, что в определенип ассоциативности поря- док операндов а, b и с сохранен (операция может быть некоммутативной!) и использованы круглые скобки, что- бы определить порядок вычислений. Таким образом, выражение (а ® Ь) ®с требует, чтобы сначала вычислялось а ® b и результат этого (скажем, х) участвовал в операции с с, т. е. давал х®с. Если операция ассоциативна, то порядок вычислений несу- ществен и, следовательно, скобки не требуются. Пример 6.4. Над Z имеем (1 + 2) + 3 = 1+ 2 + 3=1+(2 + 3), но (1 —2)—3 = —4 и 1—(2 —3)=2. Таким образом, операция вычитания не ассоциативна. И Коммутативность и ассоциативность являются двумя важными свойствами, которые могут быть определены для простых операций. Перед тем как описывать свойст- ва, связывающие две операции, определим некоторые термины, относящиеся к специальным элементам мно- жеств, к которым эти операции применяются. Определение. Пусть ® — бинарная операция на множестве А и I е А такая, что I ® а = а для всех а е А. Тогда I называется левой единицей по отношению к ® 110
на А. Аналогично, если существует ге А такое, что а ® г = а для всех a s А, то г является правой единицей по отношению к ® Да- лее, если существует элемент е, который является и ле- вой, и правой единицей, т. е. е®а=а®е=а для всех а е А, то е называется (двусторонней) единицей по отноше- нию к ®. Ц Пример 6.5. Над R 0 является правой единицей по отношению к вычитанию и единицей по отношению к сложению, так как а — 0 = а, но О — а =/= а, если а 0; а + 0 = а и 0 + а = а для всех а. И Определение. Пусть ®— операция на А с еди- ницей е и я ® у = е. Тогда говорят, что х — левый об- ратный элемент к у, а у — правый обратный элемент к х. Далее, если х к у такие, что х®у = е = у®х, то у называется обратным элементом к х по отношению к ®, и наоборот. II Замечанпе. В некоторых работах левые (правые) обратные элементы относят к левой (правой) единице, однако, как мы скоро увидим, в большинстве случаев единицы являются двусторонними и, следовательно, не требуется делать никаких различий. Для решения урав- нений необходимо существование и единственность еди- ниц и обратных элементов. Менее общим свойством опе- раций является идемпотентность, хотя оно используется в алгебре логики. Определение. Пусть операция ® па множестве А и произвольный элемент х s А таковы, что х ® х =• х. Тогда говорят, что х идемпотентен по отношению к ®. И Очевидно, что любое подмножество идемпотентно по отношению к операциям пересечения и объединения. Определение. Пусть дано множество А, па кото- ром определены две операции ® и ф. Тогда, если а ® (Ъ ф с) = (а ® Ъ) ф (а ® с) для всех а, Ъ, с «= А, то говорят, что ® дистрибутивна по отношению к Ф- 111
Если сказанное выше не совсем понятно, следует провести соответствие между этим тождеством и обыч- ной арифметикой на R, например, 3*(1 + 2) = (3* 1) + (3*2). Может вызвать удивление, что в § 5 рассматривались только несколько специальных свойств, и можно прийти к выводу, что практически ничего нельзя вывести из того факта, что множество и связанные с ним операции обладают некоторыми из этих свойств. На самом деле (как будет видпо из последующих глав) наиболее обще- известная алгебра может быть построена из относи- тельно небольшого набора основных правил. Сейчас мы продемонстрируем, как из элементарных предположений можно извлечь некоторые простые следствия; большин- ство примеров дано в виде упражнений. Пример 6.6. Пусть ® — операция на множестве А и существует единица по отношению к ®, Тогда еди- ничный элемент единствен. Доказательство. Предположим, что х и у — еди^ иицы по отношению к ®, т. е. х®а = а®х = а, у ® а — а® у = а для всех а Е А. Тогда х — х ® у, так как у — единица, и х ® у = у, по- скольку х — единица. Следовательно, х = у. И Пример 6.7. Пусть ® — ассоциативная операция на множестве А и е — единица по отношению к ®. Тог- да если х s А и х имеет обратный, то обратный эле- мент единствен по отношению к ®. Доказательство. Допустим, что х' и х" — об- ратные элементы к х, так что х®х'=-х'®х=>е и х®х" = х”®х — е. Тогда х' = х' ® е •= х' ® (х ® х”) = (х’ ® х)® х" «= ~*е®х" = х”. И Упражнение 3.6. 1. Рассмотреть указанные ниже «определения» ®. Решить, правильно или нет каждое из них определяет бинарную операцию, и если так, то является ли опера- ция коммутативной. Найти, если это возможно, единицу и обратный элемент к х. Предполагаются выполненны- ми обычные свойства арифметики: 112
а) x ® у = x — у на N; б) х ® у = (х*у) — 1 на Z; в) ® ® У = max {я, у) на N; г) х ® у = ]/х2 + у2 на {х: х, х е R); д) х® у = х/у на {х: 0<х, igR}. 2. Определим операцию <р на множестве {а, Ь, сУ, как указано ниже. Проверить, что <р ассоциативна и комму- тативна и найти единичный элемент. ср I а Ь с а Ь с а с а Ъ с b cab 3. Предполагая обычные свойства операций +, —, * и / на R, доказать, что операция i|>, определенная на [1, «>[ следующим образом: (а*Ь) + 1 а 4- Ь ’ ассоциативна. Обосновать ответ. Указание: не следует особо обращать внимание на область определения. 4. Пусть ® — ассоциативная операция на множестве А с единицей е такая, что каждый элемент а е А обра- тим и обратный обозначается через а'. Показать, что (а ® Ь)’ = V ® а’. 5. Показать, что если ®— ассоциативная операция на множества А с единицей е такая, что а ® а = е для каждого а е А, то ® коммутативна. 6. Пусть ® — ассоциативная операция на множестве А такая, что для любых а, Ь А, если а ® b = b ® а, то а = 6. Показать, что каждый элемент А идемпотентен по отношению к ®. Что можно сказать про ®, если опера- ция имеет единицу? 8 д. Кук, г, Бейз
ГЛАВА 4 ОСНОВНЫЕ ПОНЯТИЯ АРИФМЕТИКИ Итак, мы определили операции и описали некоторые их свойства. Теперь посмотрим, что можно сделать с со- вокупностью операций, заданных на множестве. Множество с заданными иа нем операциями называ- ют алгебраической структурой. Некоторые из наиболее часто встречающихся алгебраических структур будут рассмотрены позднее. Прежде чем приступить к их рас- смотрению, посмотрим на арифметику с неформальной точки зрения. В большинстве случаев мы будем опу- скать формальные определения, делая ударения на «следствия из правил», даже в тех случаях, когда это приводит к необычным способам использования извест- ных символов, которые обычно используются для пред- ставления десятичных чисел. § 1. «Малая» конечная арифметика Арифметику можно рассматривать как множество с двумя операциями, действующими подобно сложению и умножению. Ее можно изучать многими способами. Что- бы уяснить требования арифметической системы, при- мем конструктивное приближение и рассмотрим целые числа (0, 1, 2, ...) просто как символы. В дальнейшем будем рассматривать только конечную арифметику, в ко- торой используется лишь конечное множество чисел; вначале это множество будет небольшим. Подразумевает- ся, что если А ~ Nm, то требуется т различных симво- лов, при этом никакие комбинации символов не разреша- ются. Если используются только десятичные числа, то т 10. Поскольку все множества данного размера би- ективны, то можно рассматривать только множества Nm. Для большей наглядности рассмотрим множество Ns. Для этого необходимо построить таблицы умножения и сложения. Множество Ne достаточно велико для того, чтобы изучать свойства основной структуры, Можно по- 114
думать, что для этой цели более уместным является множество Nj, однако это не так. Начнем со сложения. Операция сложения имеет единицу, которая обычно обозначается символом 0, однако 0 & Ng. Поэтому будем использовать множество Zg = {0, 1, 2, 3, 4, 5>, которое более удобно. Очевидно, что Zg ~ Ng. Поэтому можно работать с Zg, не теряя никаких свойств. Таким образом, к настоящему моменту мы имеем соответствующую табл. 4.1. Таблица 4.1 + 0 1 2 3 4 5 0 0 1 2 3 4 5 1 1 2 2 3 3 4 4 5 5 Так как операция коммутативна, то таблица должна быть симметричной. Труднее обстоит дело с ассоциа- тивностью. Если мы хотим, чтобы операция была ассо- циативной, и требуем, как обычно, существования обрат- ных элементов по сложению, то любой элемент должен входить ровно один раз в каждую строку и каждый стол- бец. Поясним это высказывание. Если а + b = а + с, то —а + (а + Ь) = —а + (а + с), (—а + а) + Ъ = (—а + а) + с, О + b = 0 + с, b = с. Рассмотрим теперь операцию, определенную в габл. 4.2. Из трех возможностей для операции сложения на Zg только С удовлетворяет всем условиям, что выгля- дит несколько необычно. Операция А не коммутативна, а в В нарушен критерий «единственности результата». Как же построить соответствующую операцию, удовлет- воряющую всем обсуждаемым выше свойствам? Из дальнейшего изложения будет видно, что наиболее труд- но обеспечить выполнение свойства ассоциативности. В предложенной ниже процедуре мы используем ассо- 8* 115
циативность как основной шаг построения, и, следова- тельно, это свойство будет выполняться автоматически. Шаг 1. Число 0 является единицей для операции сложения. Поэтому получаем табл. 4.3. Таблица 4.2 А 012345В 012345 С 012345 0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 0 4 5 3 1 2 0 1 5 3 4 2 3 5 4 0 2 1 3 4 3 5 1 0 2 4 5 4 3 2 1 0 5 0 1 2 3 4 5 0 1 1 2 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 1 2 3 4 5 1 5 3 4 2 0 2 3 1 5 0 4 3 4 5 0 1 2 4 2 0 1 5 3 5 0 4 2 3 1 Таблица 4.3 + 0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5 1 2 3 4 5 Шаг 2. Определим следующую строку таблицы, удов- летворяющую условию «единственности результата». Чтобы подчеркнуть используемую технику, специально выберем результат, который отличается от привычного. Возьмем + | 0 1 2 3 4 5 111 3 0 5 2 4 Так как операция должна быть коммутативной, запол- ним соответствующий столбец табл. 4.4. Шаг 3. Заполним другие клетки таблицы, используя ассоциативность. Проследим подробно за каждой де- талью: 2 + 2 = 2 + (1 + 4) = (2 + 1)+ 4 = 0 + 4 = 4, 2+ 3 = 2+ (1+1) = (2+1)+1 = 0+1 = 1, 2 + 4 = (2+ 1)+ 5 = 0 + 5 = 5, 2 + 5= (2 + 1) +3 = 0 +3 = 3. 116
Здесь мы использовали соотношения 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 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5 1 3 0 5 2 4 2 0 3 5 4 2 5 4 0 1 2 3 4 5 О 1 2 3 4 5 1 3 0 5 2 4 2 0 4 1 5 3 3 5 1 4 0 2 4 2 5 0 3 1 5 4 3 2 1 0 При выполнении процесса надо учитывать дополнитель- ные ограничения на шаге 2. Значения в нулевой строке должны выбираться так, чтобы они «продолжали» все Ze. Например, начиная с 1 (как мы делали), получаем 1 + 1 = 3, 3 + 1 = 5, 5+1 = 4, 4+1 = 2, 2 + 1 = 0, 0+1 = 1. Следовательно, прибавляя только 1, можно получить все Ze. Перейдем теперь к умножению. Сначала заметим, что единица для операции умножения должна отличать- ся от нуля. В противном случае для любых х и у мы имели бы x = 0*x = x*0, у = О + у — у + 0, поэтому х * у = х * (0 + у) = (х * 0) + (х • у) = х + (х * у), а значит, х = 0. Поэтому 0 не является единицей для умножения. На самом деле нам требуется число, которое будет порождать Ze. Следовательно, мы могли бы определить аналогичным образом операцию умножения на основе частичной табл. 4.6. Одиако в этом случае мы не долж- ны настаивать па выполнении критерия «единственности результата». (В обычной арифметике не существует це- лого числа, которое при умножении на 2 давало бы II Поэтому в конечном множестве могут быть повторения.) 117
Вместо того чтобы повторять процедуру построения таб- лицы для умножения, вернемся к проблеме связи двух операций — дистрибутивности умножения относительно сложения. Эта проблема связана с ассоциативностью. Рассмотрим (уже построенную) операцию сложения. Таблица 4.6 Таблица 4.7 * 0 1 2 3 4 5 * 0 1 2 3 4 5 0 0 0 0 0 0 0 0 0 1 0 1 2 3 4 5 1 0 1 2 3 4 5 2 2 2 0 2 1 4 3 5 3 3 3 0 3 4 4 3 0 4 4 4 0 4 3 3 4 0 5 5 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 1 | 1 2 3 4 5 ? Недостающим элементом должен быть 0, поскольку б 9= 9^ Zg, и 0 является единственным элементом Ze, которо- 118
го нет в строке. В результате такого выбора получаем соответствующую табл. 4.8. Она определяет так называе- мую арифметику по модулю 6. (Эта арифметика работа- ет точно так же, как и обычная целочисленная арифме- тика, за исключением того, что все целые числа заменя- ются на остатки от деления их на 6.) Таблица 4.8 + 0 1 2 3 4 5 ♦ 0 1 2 3 4 5 0 0 1 2 3 4 5 0 0 0 0 0 0 0 1 1 2 3 4 5 0 1 0 1 2 3 4 5 2 2 3 4 5 0 1 2 0 2 4 0 2 4 3 3 4 5 0 1 3 0 3 0 3 0 3 4 4 5 0 1 2 3 4 0 4 2 0 4 2 5 5 0 1 2 3 4 5 0 5 4 3 2 1 Упражнение 4.1. 1. По аналогии с «естественной» арифметикой, полу- ченной для Ze, построить аналогичную арифметику для Zie, используя символы {0, 1, ..., 9, А, В, ..., F}. 2. Построить арифметику для Ze, которая согласует- ся со строкой + | 0 1 2 3 4 5 2 | 2 3 4 0 5 1 3. Рассматривая 1 + 3, показать, что следующая таб- лица приводит к противоречию: + | 0 1 2 3 4 5 О I 0 1 2 3 4 5 1 | 1 0 3 4 5 2 § 2. «Большая» конечная арифметика Мы уже построили арифметику для Ze. Возникает во- прос: как можно расширить эту систему, чтобы иметь возможность считать после 5? Для этого достаточно иметь множество n-значных чисел (наборов из п эле- ментов из Ze) с арифметикой над Ze. Чтобы проиллю- стрировать это, рассмотрим упорядоченную тройку из Ze, т. е. элементы множества Ze X Ze X Ze. Если Ze упоря- дочено обычным способом, т. е. 0<1<2<3<4< 5, тогда определим порядок на Ze X Ze X Ze по правилу (а, Ь, с)<(х, у, 119
если а < х или а = х и b < у или а —= х, 6 — у и е<г. В этом случае элементы Zg = Ze х Ze х Ze будут упо- рядочены следующим образом: (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). Таким образом, существует 63 = 216 различных троек. Поэтому нужно уметь производить арифметические вы- числения над Z3 в пределах от 0 до 215. В приведенном выше упорядочивании элементов из Zg (О, 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®. И хо- тя это соотношение выглядит естественным, мы должны заботиться о том, чтобы не использовать ни одного не определенного понятия. Для облегчения описания пред- ставим Zg как Л2ХЛ1ХЛ0 и рассмотрим сумму (а2, а1( ао) и (bi, bi, bo). Покомпонентное сложение дает (аг + + b2, ai + bi, ao+bo), где сложение осуществляется в Za, и пока, как кажется, этого достаточно. Пример 2.1. Рассмотрим соотношение (0, 1, 3) + (4, 2, 1) = (4, 3, 4), которое будет более наглядным, если записать его в виде 0, 1, 3 + 4, 2, 1 = 4, 3, 4 120
Однако , 1, 2, 5 и । 0, 0, 5 '2, 3, 1 ' 0, 0, 1 (=1?) = 3, 5, О >=0,0,0 (=0?). // В результате операции сложения множество Ао пере- ходит в себя. Однако для того чтобы сумма достаточно больших чисел (таких, как 5+1) могла бы выйти за пределы 4о, нам необходимо производить некоторые дей- ствия в А] и также, возможно, в Аг. (Это иллюстрирует- ся табл. 4.9). Таблица 4.9 + 4 0 1 2 3 4 5 + е 0 1 2 3 4 5 0 0 1 2 3 4 5 0 0 0 0 0 0 0 1 1 2 3 4 5 0 1 0 0 0 0 0 1 2 2 3 4 5 0 1 2 0 0 0 0 1 1 3 3 4 5 0 1 2 3 0 0 0 1 1 1 4 4 5 0 1 2 3 4 0 0 1 1 1 1 5 5 0 1 2 3 4 5 0 1 1 1 1 1 Возьмем любые два числа а и Ъ из Ze. Тогда их сум- ма (в Z) составляет 6 » (а + СЬ) + {а + ,Ь). Пример 2.2. 4 плюс 4 дает 6*(1) + (2) = 8 в Z. Таблица +, дает «обычную» сумму двух элементов из Ze, в то время как таблица +е показывает, когда необ- ходим «переход» в следующее множество Ze, и содержит только нули и единицы. Значения в +е ограничены, по- тому что если 0^х<п и 0^у<п, то 0^х^х + у<х + п<п + п = 2п (и п = б в Ze). № В действительности можно получить лучшую оценку, поскольку О я < п — 1 и 0 у п — 1, и, следовательно, 0=Сх + у<2п — 2<2п — 1. Возвращаясь к суммированию (аг, ai, ао) и (Ьг, bi, bo) 121
и обозначая ответ через (Л, di, do), получим do = ао + ,Ьо, Z0 do с&0, d\ “* d\ I gb 1 ”1” gXo, xi = если ai + cbi = 1 тогда 1, иначе(щ + ,bi) + txo, d2 = d2 + ,b2 + .X\, x2 = если a2 + cb2 = 1 тогда 1, иначе (d2 + ,b2) + cxi. Поскольку 0 < dt + bt < 2n — 1 и x( = 0 или xt = 1, to переносимый результат из a( + bt + Xt-t никогда не может быть больше 1. Заметим, что в наших определениях числа (0, 0, 0) и (0, 0, 1) в Zg действуют, как 0 и 1 в новой арифме- тике. Кроме этого, если х2 = 5, то результат сложения может оказаться слишком большим для Z®. В этом слу- чае говорят, что произошло «переполнение». Этот случай мы обсудим более подробно в § 3 гл. 4, а до конца пара- графа возможность перевыполнения будем игнорировать. Аналогично можно использовать операции *р и »„ (таблицы произведения и переноса), заданные в табл. 4.10 для того, чтобы производить умножение над 6, однако мы не будем этим заниматься. Таблица 4.10 * р 0 1 2 3 4 5 ♦ с 0 1 2 3 4 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 2 3 4 5 1 0 0 0 0 0 0 2 0 2 4 0 2 4 2 0 0 0 1 1 1 3 0 3 0 3 0 3 3 0 0 1 1 2 2 4 0 4 2 0 4 2 4 0 0 1 2 2 3 5 0 5 4 3 2 1 5 0 0 1 2 3 4 До сих пор мы рассматривали только символы, имею- щие вид положительных чисел. Конечно, с символами 0, 1, 2, ... можно обращаться «естественным» образом, и, следовательно, их можно интерпретировать как неот- рицательные числа. Арифметика над Z„ оперирует с чис- лами от 0=(0, 0, 0) до 215 = (5, 5, 5), которые были получены из последовательности (от 0 до 5) в Ze. Если 122
взять множество {—3, —2, —1, 0, 1, 2} вместо Ze, то по- лучим систему, которая содержит отрицательные числа, но ведет себя странным образом. Если мы возьмем два множества Ze и множество {—3, —2, —1, 0, 1, 2), которое назовем Z7>n образуем множе- ство Z7xZexZe, то можно постропть арифметику с числами от —108 до 107. Па самом деле арифметика является той же самой, за исключением того, что значе- ния 3, 4 и 5 в Ач сейчас интерпретируются как —3, —2, —1 соответственно. Поэтому, например, (—2, 4, 2) вычис- ляется в Z как (—2 * 36) + (4 * 6)+ 2 = —46. Биекция между двумя системами, определенная следу- ющими образом: 3 ~ - 3, 4-> —2, 5~-1, х+— х в остальных случаях, может быть применена в любой момент при условии, что результат вычислении не имеет цифр 3, 4 или 5 в Ач. Мы выбираем обозначения из соображения удобства, не вводя ограничений па случаи, когда можно применять биекцию или обратное отображение. Па этом этапе мы настойчиво советуем игнорировать любые очевидные про- тиворечия, относящиеся к переполнению Ач. Этот случай будет подробно рассмотрен в последующих параграфах на более простом примере. Отметим, что новая система «переходит» от положительных чисел к отрицательным. Например, ((3,0,0) в старой системе, (2,2,5)+ (1,0,1)= „ ' ((— 3, 0, 0) в новой системе. (В Z это дает 107 + 1 = —1081) Вычисления, включающие в себя сложение и вычи- тание, в новой арифметике довольно просты и зависят от двух тождеств. Первое имеет вид (5 , 5, 5) + (0, 0, 1) = (0, 0, 0) ((5, 5, 5) эквивалентно (—1, 5, 5)), а второе — вид (а2, ai, а0) + (Ьч, bi, Ьо) = (5, 5, 5). 123
Они имеют место тогда и только тогда, когда 02 + &2 = 5, а] + bi = 5, йо+Ьо = 5. Таким образом, чтобы вычислить обратное по сложению число к (аг, «1, оо), мы должны сначала найти число (d2, bi, bo), которое называют дополнением по 5, и затем прибавить 1 — (0, 0, 1). Это даст дополнение до 8. Про- иллюстрируем этот процесс на следующем примере. Пример 2.3. Найдем обратные элементы к (—3, 4, 1) и (3, 4, 1). Из 3, 4, 1 получаем 2, 1, 4 (дополнение до 5) + 1 2, 1, 5 (дополнение до 6) Проверим резу тьтат 3, 4, 1 4- 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 и т со- ответственно. Надо подчеркнуть, что в вычислениях на ЭВМ мы обычно имеем дело с 1'т для некоторых фиксированных т и п и очень редко — с множеством Z. Таким образом, совокупность имеющихся в нашем распоряжении чисел всегда ограничена, и, хотя границы могут быть очень большими, мы не должны забывать о том, что они су- ществуют. Риск тем более велик по той причине, что в записи обычно опускают запятые и все нули, стоящие слева от первой ненулевой цифры за исключением числа 124
(О, О, 0). Следовательно, (1, 3, 4) (О, 0, 6) как 6 и (0, 0, 0) как 0. Упражнение 4.2. Обозначим где у- Г 0 т Л =* 1 2 ’ • ' • > v> ••>"2" — 1J ’ □ Z— ( т — 1 л т— т — ]--п—1 ...» v, • . .» 5 f, запишется как 134, Z,n х ZM через Zm , если т четное, если т нечетное. Вычислить: а) 10 — 7; б) 17 — 23; в) (—8)+ (—21) в каждой из «естественных» арифметик Z?~, Zf(7, Z^-, (Замечание: числа в примерах заданы над Z; по- этому вначале требуется перевести их в соответствую- щую систему, а потом проводить вычисления.) § 3. Двоичная арифметика Из уже построенных арифметик над Z„ и Z^~ легко выделить основы двоичной арифметики. Существуют две так называемые двоичные арифметики. Первая — это знаковая и модульная форма, определенная па {—, +} X Z^, т. е. Za (определенное в предыдущем парагра- фе) с добавленным знаком, расширяющим элементы Z^ Знак обычно кодируют в бинарной форме: 0 для «+» и 1 для « —». Вторая арифметика (двоичная арифметика дополнении) — это Z’]- с элементами {0, 1} во всех п по- зициях. Этот вид двоичной арифметики используется в большинстве компьютеров. Поэтому ограничим наши рас- смотрения Zg~, Чтобы сделать обсуждение более конк- ретным, рассмотрим Z'a-, элементы которого лежат в пре- делах от 10000 (=—16) до 01 111 (=+15) (т. е. содер- жит 32 = 25 различных чисел). Число —1 представляется в Z'l- как 11 111. Поэтому легко пайти двоичное допол- нение. Для этого надо слегка изменить все двоичные цифры, называемые битами, чтобы получить дополнение до 1, а затем прибавить 1, чтобы получить дополнение до 2. Пример 3.1, -(01011) 10 100 + 1 10 101 125
(= —24 + 22 + 2° = —11J; -(10110) + 01001 1 01 010 (=23 + 21 = 10). // Очевидно, что могут возникнуть проблемы, вызванные ограниченностью чисел. Мы не можем их избежать, од- нако следует знать, когда возможна «ошибка». Форма дополнения делает проверку условия переполнения от- носительно легкой, использующей только значения стар- шего значащего бита. (В Z^- это бит с номером 24.) Этот бит обозначает знак представляемого числа и назы- вается знаковым битом или знаковым разрядом. Перед тем как проверить, какое значение имеет знаковый бит, напомним, что прибавление 1 к максимальному положи- тельному числу в Z„~ дает максимальное отрицатель- ное число (наибольшее отрицательное число — это отри- цательное число, отстоящее дальше всего от нуля). Дру- гими словами, числа повторяются циклическим образом. В Zj- мы имеем ситуацию, изображенную на рис. 4.1, В Z5z' 15 -16 0 15 -16 0 15 -16 0 15 -16 1 I-----1---1-----1—I—I------1---1—I-----Г" -1---1----1----1----1--1__1___I____I___। I -45 -43 -32 -17 -16 0 15 16 32 47 48 6Z Рис. 4.1 Что же произойдет, если мы сложим два числа х и у, где — a^i<e и -а^.у<.а (в Z|_, а = 10)? Сумма х + у будет ограничена: 2а х + у < 2а — 2 < 2а — 1. Само по себе это неравенство ничего не дает. Поэтому мы рассмотрим три случая: (I) если — а С х < 0 и — а < р < 0 тогда —2а «S х + у < 0; (II) если 0 С х < а и 0 «3 р < а тогда 0 х + у С 2а - 2 < 2а - 1; 126
(Ill) если — a < x < 0 и О < у < a тогда — а < х + у < а. Вначале заметим, что результат в случае (III) нахо- дится в требуемых пределах и, следовательно, всегда пра- вильный. Чтобы понять, как могут возникать ошибки в случаях (I) и (II), необходимо вспомнить, что если ze eZ и —2a =£z < —а, то число z представимо в конечной арифметике числом z', где z' = z + 2a и 0 < z' < а. Ана- логично, если a^z<2a—1, то z представимо z", где z"=z —2a и — a<z"<0. Следовательно, ответ будет неправильный, если он в случае (I) полояштельный или в случае (II) отрицательный. Чтобы объяснить эти заключения в терминах свойств знакового разряда, рассмотрим различные возможности сложения двух чисел: а) оба числа отрицательны; б) оба числа положительны; в) числа имеют различные знаки. Анализируя эти случаи, видим, что переполнение (ошибка переполнения) встречается тогда и только тог- да, когда существует перенос в знаковый разряд или пе- ренос из знакового разряда, но не оба вместе. Для иллю- страции этого рассмотрим несколько примеров в Zj-.По- пытаемся сопоставить эти примеры со случаями (I) — (III) и а) — в), рассмотренными выше. Пример 3.2. Напомним, что вычисления проводятся в Z^: ,10 10 1 *11010 ,11100 "+"10111 1 0 1111 110011 1 1 1 It 1 ,11 10 1 ,00101 "+00110 +"0 0 1 1 1 1 00011 0 110 0 ,01100 + О 1 О 1 о . 1 о 1 1 О’ 11 Вернемся теперь к умножению и делению. Сначала рассмотрим умножение. Напомним, что в Z (или, более точно, в Zj0 для достаточно большого п) умножение на 10 можно получить «сдвигом» всех цифр на одну пози- цию влево и записью в 0-й позиции цифры 0. (В Z„ ум- ножение на пг также всегда можно осуществить сдвигом влево.) 127
Следовательно, мы имеем простой способ умножения на неотрицательные степени числа 2 в Z£ — сдвиг каж- дой цифры влево на соответствующее число позиций. Пример 3.3. (Вычисления проводятся в Zj~.) 0 0 0 1 1 (3) 1 1 1 1 0 (- 2) 0 0 1 1 0 (•2) 1 1 1 0 0 (• 2) 0 1 1 0 0 (.2=12) 1 1 0 0 0 (•2 = -8) 0 0 10 1 (5) 0 10 10 (•2) 10 10 0 (•2) 0 10 0 0 (•2 = 8)-# Из этих примеров видно, что метод также хорошо ра- ботает для отрицательных чисел, но результат будет с ошибкой (переполнения), если на каждом этапе менялся знак и если потом он опять изменился. Для умножения произвольного целого числа (элемента N) используем свойство дистрибутивности умножения по отношению к сложению и представим множитель как сумму степеней числа 2. Пр и мер 3.4. (Вычисления проводятся в Z, .) 3 • 5 •= 3 * 22 +3 • 2°(2° = 1) (-5)» 3 -=(-5) *2' + (-5)» 2°. Поэтому 0 0 0 1 1 1 1 0 1 1 +0 1 1 0 0 +10110 01111 11000 1.# Точно так же, как умножение производилось сдвига- ми влево, деление на положительные степени числа 2 осуществляется сдвигом вправо. (Деление на другие це- лые числа должно получаться путем сведения к вычи- танию степеней числа 2. Этот процессе мы обсуждать не будем.) Однако специального рассмотрения требуют от- рицательные числа. Отметим также, что в общем случае ожидаемый результат (т. е. арифметически ожидаемый результат в R) будет не целым, а дробным. Пример 3.5. Попытаемся в Z'j~ вычислить 12/4, (—6)/2 и 7/4 сдвигом на 2, 1 и 2 позиции соответствен- но. Имеем 0 110 0 00011100 0 0 1111 00001111 (12) (3 = 12/4) (7) (1» 7/4). / 110 10 (-6) 0 110 110 (13 -6/2) 128
Сдвиг на одну позицию вправо автоматически сводит любое отрицательное число к положительному. В Z%~ сдвиг переводит —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. Пусть в Z|~ производятся следующие вычисления. Складывают два числа х и у (обозначим их сумму че- рез z). Если от z отнять у, то получим некоторый ре- зультат с, а если от z отнять с, то получим некоторое число d. Что можно сказать о с и d? Как отличаются результаты, если вычисления производятся в Zj“? § 4. Логическая арифметика Строго говоря, булева арифметика оперирует на мно- жествах Z2 и Zj и, следовательно, включает только чис- ла 0 и 1. Для того чтобы подчеркнуть такую структуру, начнем с рассмотрения логической арифметики на «отно- сительно большом» множестве Z5. Она дает основу много- значной логики. Отсюда легко получить более простой 9 д. кун, г. Бейз 129
случай Z2. Возьмем множество Z5 = {0, 1, 2, 3, 4} п опе- рации V и Д, определенные в табл. 4.11. Таблица 4.11 V 0 12 3 4 0 1 2 3 4 0 12 3 4 1 12 3 4 2 2 2 3 4 3 3 3 3 4 4 4 4 4 4 Л 0 12 3 4 0 1 2 4 4 0 0 0 0 0 0 1111 0 12 2 2 0 12 3 3 0 12 3 4 Упорядочивая Zs обычным образом (порядок индуциру- ется Z и R), видим, что а V Ь •= max {а, Ь), аДЬ = min {а, Ь}. Обе операции коммутативны и ассоциативны, 0 является единицей для V, а 4 является единицей для Д; Д ди- стрибутивна по отношению к V, но не наоборот. Пример 4.1. Возьмем множество Zm с естественным порядком элементов. Введем операции Д и V. Рассмот- рим шесть возможных случаев упорядочивания трех про- извольных элементов а, Ь, с из Zm: (I) (II) аСс<&; (III) ЬСаСс; (IV) Кс^«; (V) с С a b\ (VI) Использование символа < является интуитивным, однако может быть обосновано с помощью следующего опреде- ления: а С Ь тогда и только тогда, когда а V Ь = Ь. Для проверки условия дистрибутивности нужно показать, что аД(Ь7‘)“(*М)7(аДс). Это можно сделать проверкой того, что обе части выра- жения совпадают для каждого из наборов а, Ь и с. Бу- 130
дем одновременно вычислять и сопоставлять соответству- ющие выражения: (!) а/\(Ь\/с) = а/\с = а, (а (аДе) = а Vа = с; (II) a/\(b\J с) = а/\Ь = а, («Ab)V(«Ac) = «Va ==а; (III) a/\(b\/c) = аДе = а, (а ДЬ) V (а Де) = b\Ja = а; (IV) а Д (Ь у с) = а Д с = с, (а/\Ь)\/(а/\с) = Ь\/с == с; (V) a с) = а/\Ь = а, (я f\b)V (а Лс) == aV с = а; (VI) a/\(b\Jc) = a/\b = b, {а [\Ъ}\](а/\с) = b\] с = Ъ. Следовательно, Д дистрибутивна по отношению к V. II Можно также показать (это как раз тот случай, ког- да мы не получаем ожидаемого результата), что V ди- стрибутивна по отношению к Д, т. е. что aV(W) = (aVb)A(«W Проверку этого свойства оставляем в качестве упраж- нения. Перед тем как закончить обсуждение общего случая, давайте вернемся к табл. 4.11, определяющим V и Д. Элементы, имеющие одинаковые значения в таблицах, расположены относительно единичных элементов так, как показано на рис. 4.2. На самом деле каждая из этих операций является «отражением» другой и связь, кото- рая позволяет одну операцию менять на другую, опре- деляется (в Z5) парами (0, 4), (1, 3), (2, 2), (3, 1), (4, 0). В сущности, это принцип двойственности, который 9* 131
будет обсуждаться в гл. 5. Возвращаясь к Z2, имеем Л о 1 V 0 1 О 0 0 1 0 1 О 1 В Z2 операцию V обычно интерпретируют как или (ре- зультат равен 1, если один из операндов равен 1, вклю- чая случай, когда они оба равны 1). Аналогично Д чи- тается как и. Число 0 является единичным элементом по отношению к или, число 1 является единичным элемен- том по отношению к и. Можно распространить эти ре- зультаты на более высокие размерностп (переходя от Z2 к Zg)> расширяя компоненты и учитывая, что не сущест- вует переноса из одной копии Z2 к другой. Пример 4.2. 0 1110 10 10 0 1 Д00111100101 0011010000 1./ Упражнение 4.4. Определяя операции Д и V как минимум и максимум, показать для произвольного Z„, что аУ(ЬДс) = (ауЬ)Д(ауС).
ГЛАВА 5 АЛГЕБРАИЧЕСКИЕ СТРУКТУРЫ В предыдущей главе мы у;ке познакомились с неко- торыми способами определения операций над множества- ми и научились с ними работать с целью производить имеющие смысл вычисления. Конечно, существует мно- го различных операций, которые могут быть определены па множестве, и, следовательно, в некотором смысле ал- гебраических структур больше, чем множеств. Однако получается так, что большинство полезных структур (под этим мы подразумеваем структуры, которые описы- вают естественно возникающие явления и пригодны для вычислений) может быть разбито на небольшое число типов. В этой главе мы вначале введем терминологию, которая имеет отношение ко всем алгебраическим струк- турам, а потом займемся некоторыми специальными структурами, которые, на наш взгляд, ближе всего от- носятся к вычислениям. Это нам позволит связать ранее «оборванные» нити рассуждений, с тем чтобы приступить к изучению структур, а также чтобы подвести серьез- ный математический фундамент под оставшуюся часть кнпгп. Центральное место в наших рассмотрениях занимают поля, линейная алгебра и булева алгебра. Поля формиру- ют основу простой арифметики, линейная алгебра обес- печивает основу для геометрии и операций с числами, а булева алгебра содержит в себе основные положения элементарной логики. Разумнее начать изучение с та- ких структур, которые могут рассматриваться как части поля. Затем поля будут расширены до векторных про- странств. Аналогично мы расширим изучение булевой алгебры, включив решетки и свободные полукольца. Некоторые другие структуры будут кратко упомянуты в упражне- ниях к этой главе, 133
§ 1. Алгебраические структуры и подструктуры Определение. Алгебраической структурой назы- вается множество вместе с операциями (замкнутыми), определенными на этом множестве. И Обычно операции имеют некоторые характерные свой- ства, которые могут быть обоснованы в виде теорем и которые используются в вычислениях. (Структуру вме- сте со всеми теоремами, правилами вычислений и вывода иногда называют алгебраической системой.) К канадоп структуре применимо понятие подструкту- ры. Чтобы это продемонстрировать, рассмотрим гипотети- ческую структуру, называемую указателем. Пусть А — указатель. Предположим, что имеется только одна опе- рация ®, определенная на А. Следовательно, более точ- но это может быть записано как (А, ®), т. е. указатель состоит из множества А с операцией ®. Теперь, если В s А и (В, ®) также является указателем, в частно- сти ® может быть замкнута на В, то (В, 0) называ- ется подуказателем. Возьмем другую структуру, состоящую из множества С и операции ®. (® и ® должны иметь один и тот же порядок. Например, если одна из них является бинар- ной, то и другая должна быть такой же. Можно ввести и другие операции на С, однако в настоящее время мы их не рассматриваем). Если существует отображение <р: А— С такое, что <р (х ® у) = <р (х) ф <р (у) для любых х и у из А, то <р называют гомоморфизмом. Если существует гомоморфизм между А и С, то в не- котором смысле образ (<р(А), ®) гомоморфизма из (А, ®) ведет себя подобно прообразу, так как мы можем выполнить операцию ® на А, а затем отобразить в С (посредством <р) или сначала отобразить в С, а затем выполнить операцию ©. В обоих случаях результат бу- дет один и тот же. Поэтому мы можем делать так, как нам удобнее. Эту ситуацию можно пояснить с помощью коммутативных диаграмм, изображенных на рис. 5.1. Диаграмма на рис. 5.1, а указывает включаемые множе- ства или структуры, а диаграмма на рис. 5.1, b связывает отдельные элементы. На рис. 5.1, Ь справа изображены две различные формы одного и того же результата. Ком- мутативность диаграммы вытекает из определения опе- раций. 134
На самом деле мы получаем <р » ® = ф »<р, что не яв- ляется в строгом смысле коммутативностью, так как ® и ® существенно различны. Однако обе части равенства д*д—®—► д <Р '+ С‘С~-® -*-С (х.у) —® *-х®у Ч ----ф- Рис. 5.1 означают комбинации операций одного и того же поряд- ка и, следовательно, подходят под общее определение отображение •операция — операция • отображение. Рассмотрим пример. Пример 1.1. Пусть отображение 0, 0: Z -* Zio — ос- таток от деления на 10. Тогда 0(20) = 0, 0(17) -7, ... Если мы рассмотрим простейшие системы (Z, +) и (Zio, + ) с операцией +, определенной естественным образом на Z и на «единичном столбце» для Zjo, то легко видеть, что 0 является гомоморфизмом. Например, 0(24+ 38)-0(62) = 2, 0(24) +0(38)= 4 + 8 = 2 (в Zio). В этом случае диаграмма будет выглядеть так, как это изображено на рис. 5.2. И (z,+)2------------(z,+) е в (ZM,+)2------;------* (Z10+) Рис. 5.2 Таким образом, гомоморфизм одной структуры в дру- гую является отображением, которое сохраняет структуру. Можно вводить ограничения на ранг отображения, чтобы получить, например, сюръективность пли инъек- тивность, Поэтому, если отображение является гомомор- 135
физмом, можно надеяться, что это обеспечит механизм перехода от структуры к структуре (и обратно!) без ка- кой-либо потери информации. Определение. Гомоморфизм, который является инъекцией, называют мономорфизмом, гомоморфизм, ко- торый является сюръокцпей, называют эпиморфизмом, а гомоморфизм, который является биекцией, называют изоморфизмом. Если существует изоморфизм между дву- мя структурами, то говорят, что они изоморфны. II Слово «изоморфно» означает «той же самой формы», и поэтому, кажется, разумно ожидать, что изоморфизм должен быть в состоянии разделить множество всех ал- гебраических структур на классы эквивалентности (см. упражнение 5.1, 2). Пример 1.2. Структуры ({0, $}, П, U) и ({0, 1} Д, V)(cm. определение в § 4 гл. 4) изоморфны. Доказательство. Пусть <р(0)=О и $(#)= 1. Ясно, что ф — биекция. Тогда ф(0 Л 0) = Ф(0) = О =0Д0 = ф(0)Дф(0), Ф(0Л<Г) = Ф(0) = О = ОД1 = ф(0)Дф(#), Ф(#П0) = Ф(0) = О= 1ДО = ф(#)Дф(0), Ф(#Л#) = ф(#) = 1 = 1Д 1 = ф(#)Дф(#). Ф(0 U 0) = Ф(0) = 0 = 0V 0 = ф(0)\/ф(0), Ф(0и^) = ф(^)= 1 = ОУ1 = Ф(0)УФ(^). Ф(#и0) = ф(#) = 1 = 17О==Ф(#)\/ф(0). ф(#1И) = ф(#) = 1 = 1VI = ф(#)Уф(#)- Таким образом, ф является гомоморфизмом и, следова- тельно, изоморфизмом. И В заключение отметим, что структура может быть изо- морфна самой себе (имеется в виду изоморфизм, отлич- ный от тривиального) и может также быть изоморфна одной из своих подструктур (это возможно лишь для бесконечных множеств). Определение. Если область определения и об- ласть значений отображения совпадают, гомоморфизм на- зывают эндоморфизмом, а пзоморфизм называют авто- морфизмом. И Пример 1.3. Для заданного множества А структура (^(А), Л, U) изоморфна (^(А), U, Л) с отображением ф: X -* X', 136
Доказательство. Очевидно, что <р инъективно п сюръективно. Если В, С^&(А), то Ф (В Л С) = (В П С)' = В' U С = ф (Z?) U ф (С), Ф(5 U С) = (В U С)'= В'ПС' = ф(5)П ф(С). Позднее мы увидим, что эти соотношения явно показыва- ют самодвойственность булевой алгебры множеств и ф является автоморфизмом. И Упражнение 5.1. 1. Показать, что две структуры (Ze, *), полученные при решенпп задачи из упражнения 4.1, 2 изоморфны. 2. Пусть (Л, ®), (В, ®) и (С, ®)— указатели, а ф: А -> В и 0: В -> С — изоморфизмы. Показать, что 0»ф: А-+С, <р-1: ВА также являются изоморфизмами. § 2. Простейшие операционные структуры Начнем детальное изучение алгебраических структур с рассмотрения тех из них, которые имеют только одну бинарную операцию. Где это возможно, будем в этом и последующих параграфах представлять структуры в (при- близительно) возрастающем порядке «силы». (Говорят, что структура А слабее структуры В, если А можно рас- сматривать как В «с отброшенной структурой». Как мы увидим позже, некоторые структуры получают путем «слияния» двух более слабых структур, и, следователь- но, строгий порядок здесь невозможен.) Обычно каждую структуру можно определить в тер- минах основных свойств, а не только в терминах про- стейших структур. Определение. Полугруппой называется множест- во S с бинарной операцией ®, которая удовлетворяет только требованию ассоциативности х ® (у ® z) = (х ® у) ® z, х, у, z е S. Й Определение. Моноидом называют множество М вместе с бинарной операцией ® такой, что (I) ® ассоциативна; (II) существует и<=М такое, что и® х = х = х®и для всех х е М; и называют единицей по отношению к ®, Й 137
Полугруппы и моноиды имеют особое значение при обработке строк символов и теории языков. Пример 2.1. Пусть Л = у, z). Рассматривая х, у и z просто как символы, а не как имена объектов или «переменных», получаем, что А является алфавитом. Оп- ределим А* как множество всех строк символов, принад- лежащих А. Тогда А* включает х, у, z, хх, ху, ух, xxyz, zyx и т. д.; А* бесконечно. На А* можно определить операцию конкатенации ® следующим образом: если а, р е А*, то а ® £ = оф, т. е. результатом является строка а и сразу же за ней за- писанная строка р. Таким образом, имеем xyz ® z s xyzz, xz® ух — xzyx и т. д. Каждая строка а имеет конечную длину, которая обо- вначается через loci и равна числу символов в а (при втом разрешаются повторения). Таким образом, |я| — 1, Ixpl = 2, Ixxxzyl = 5. Это несколько похоже на обозначение мощности множе- ства, Заметим, в частности, что 1x1 *= 1, 1ЫI = 1, |ху| = 2, |{х, у'| =2, lj/x| = 2, |{р, х}I = 2, но Ixyxl = 3, I{х, у, х}| — \{х, у}| — 2. Поэтому нет полной аналогии, хотя существует аналогия с пустым множеством. Для обозначения строки, анало- гичной пустому множеству, будем использовать специ- альный символ Л, Л® Л*. Таким образом, |Л|==0 и Л® а = а® Л = а для всех строк а. Следовательно, для любого алфавита А структура (А*, О) является моноидом, а Л — единица ио отноше- нию к ®. / (Может показаться, что символ • неверно употреб- ляется в обозначении А*, однако это не так: А* где R — {(а, р): р = а ® а, а е А}.) Приведенный выше пример чрезвычайно важен. Для заданного, достаточно большого алфавита А, содержаще- го, например, все символы, доступные периферийным уст- 138
ройствам какого-либо компьютера, все языки, используе- мые в компьютерных системах, являются подмножеством А*. Это понятие является основным при формальном изучении языков (см. гл. 8). Третьей (и последней) операционной структурой яв- ляется непосредственное и естественное расширение мо- ноида. Определение. Группой G называют множество с бинарной операцией ® такой, что а) ® ассоциативна; б) существует элемент u<=G (единица по отношению к ®) такой, что и® х = х *= х®и для всех геС; в) каждому элементу х е G соответствует элемент у е е G такой, что х®у = и = у®х\ у называется обратным элементом к х по отношению к ®.// В случаях, когда групповая операция обозначается символом ®, единичный элемент обозначается 1, а об- ратный к элементу х элемент записывается в виде я-1. Когда групповая операция обозначается символом ®, еди- ничный элемент обозначается 0, а обратный к элементу х элемент записывается в виде —х. По сравнению с первыми двумя структурами группы обладают следующими важными свойствами. Внутри группы (G, ®) можно решить уравнение а ® х = Ь. Более того, решение легко найти (однако заметим, что для этого требуются все аксиомы группы). Если а ® х = b то а-1 ®) (а ®) а) = a~l ® Ъ (е G (?=> а-1 е G), (а-1 ® а) ® х = а-1 ® Ъ (® ассоциативна), и ® х = а"1 ® Ь (свойство обратных элементов), поэтому х = а*1 ® Ъ (свойство единицы). Часто к словам «группа» и «моноид» приписывают тер- мин «коммутативный». Это просто означает, что опера- 139
ция в рассматриваемой структуре удовлетворяет свойству коммутативности, т. е. у @ х = х ® у для всех х, у е М или G. Можно сделать много полезных выводов из аксиом груп- пы. Рассмотрим простой пример. Пример 2.2. В группе (G, *) (а * Ь)-1 = Ъ"1 ® а-1. Доказательство. (а * Ь) • (Ь~1 * а-1) = а * (& * i>-1) * а-1 = = а « 1 * а-1 = а * а-1 = 1. Следовательно, Ь-1 * а-1 является правым обратным эле- ментом к а * Ь. Аналогично можно показать, что он яв- ляется левым обратным элементом, откуда и следует требуемый результат. И Группы дают нам первый пример широко используе- мых изоморфизмов. Эти изоморфизмы (между группами (R, +) и (]0, «>[, *)) называют логарифмами. Они по- зволяют выполнять умножение при помощи сложения на основе следующего тождества: а • b = ф-1(ф(а) + ф(&)), где ф: х logj, (г) для некоторого ре] — 1, оо[, Упражнение 5.2. 1. Доказать единственность единичного элемента и обратных элементов в группе (G, ®). 2. В группе (G, ®) показать, что если а ® b =а ® с, то & = с, а если х ® а = у ® а, то х = у. 3. Проверить, что множество перестановок конечного множества образует группу по отношению к операции умножения перестановок, § 3. Кольца и поля По-видимому, простые операционные структуры § 2 не были знакомы читателю. Сейчас мы готовы исполь- зовать свойства групп для описания арифметических структур, обсуждавшихся ‘в гл. 4. Наибольший интерес для нас представляют поля (на текущий момент это наи- более идеальные арифметические структуры) и их клас- сификация в терм инах размерности, Однако сначала мы 140
кратко рассмотрим структуры, которые несколько отли- чаются от полей и называются кольцами. 3.1. Кольца. Многие математические конструкции, ко- торые естественно возникают в линейной алгебре (осо- бенно в теории матриц), являются кольцами или вклю- чают кольца как подструктуры. Следовательно, примеры колец часто будут появляться в этой главе и в гл. 6. Мы уже изучили одну совокупность колец. Вернемся к пей после введения аксиоматических понятий. Определение. Кольцом называется множество R с двумя определенными на нем бинарными операциями ® и © такими, что: а) ® ассоциативна; б) ® ассоциативна; в) ® коммутативна; г) ® имеет единицу, которая называется нулем и обо- значается 0; д) существуют обратные элементы относительно ®; е) ® дистрибутивна по отношению к ®, т. е. х ® (у ® z) = (гс ® у) ® (х ® г), (х ® у)® z = (re® z) ® (у ® z) для всех х, у, z<= R. И Следовательно, система (Zn, •, +) при любом п е N является кольцом. Будем говорить, что кольцо коммутативно, если ум- ножение ® коммутативно, и является кольцом с едини- цей, если существует единица относительно умножения. Как обычно, ее обозначают символом 1. Легко показать, что в кольце (R, ®, ®) для любых a, b & R выполня- ются соотношения 0®а = а®0 = 0, а ® (— Ь) = (— а) ® b = — {а ® 6), (— а) ® (— &) = а ® Ъ. Здесь —а это элемент, обратный к а относительно ®; а®(—Ь) записывают обычно как а — Ь, и если lefl, то 1 единственна. Пример 3.1. (Zn, *, +) является коммутативным кольцом с единицей при любом п е N. II В системе (Zn, *, +) не всегда возможно «деление». В этом состоит основное отличие между полем и комму- тативным кольцом с единицей. Рассмотрим кольцо (Zs, *, +). Покажем, что оно не является полем. 141
В Ze существует 15 случаев, когда произведение двух элементов может давать нуль, а именно: (О, 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 или b = 0. В кольце (R, ®> ф) нулевые элементы хну назы- вают делителями нуля, если их произведение равно ну- лю. В случае, когда R не является коммутативным коль- цом, х называют левым делителем нуля, а у — правым делителем нуля. Нетрудно показать (см. упражнение 5.3), что Ze имеет делители нуля (так как 6 — составное число) и что Zp не имеет делителей нуля тогда и только тогда, когда р является простым числом. Если в группе {G, ®) а ® Ъ = а ® с, то Ъ == с. Однако в случае произвольного кольца это не- верно. Теорема. Приведенное выше условие имеет место в кольце R тогда и только тогда, когда R не содержит делителей нуля. Доказательство. Достаточность. Предпо- ложим, что R не имеет делителей нуля. Тогда, если x®y = x®znx=£0, то ® у) — (х ® z) = (х ® у) — (х ® у) = 0, (х ® у) — (х ® z) = (х ® у) ф (х ® (— z)) = - (х ® (у ф (— Z)) = X ® (у — z). Поэтому х ® (у — z) = 0; но так как не существует де- лителей нуля и х¥=0, то отсюда следует, что у — z = 0 и, следовательно, y = z. Аналогично, если у ® х = z® х, то у = z. Достаточность доказана. Необходимость. Предположим, что из а ® Ъ « = а®с следует равенство Ь = с, и пусть х®у=0. Тогда х ® у = х ® 0 'см. упражнение 5.3), и если х 0, то у — 0. Аналогпч- 142
по, если у =/= 0, то £®У=О=О®у и по предположению х = 0. Таким образом, из х ® у = 0 следует, что пли х = 0, или у = 0. II Рассмотрим теперь еще одну структуру, перед тем как перейти к изучению полей Определение. Областью целостности называется коммутативное кольцо с единицей, не имеющее делите- лей нуля, т. е. множество D с двумя бинарными опера- циями ® и © такими, что: а) сложение © ассоциативно; б) сложение коммутативно; в) существует единица по сложению, обозначаемая 0; г) существуют обратные элементы по сложению (обо- значаются (~х)); д) умножение ® ассоциативно; е) умножение коммутативно; ж) существует единица по умножению (обознача- ется 1); з) умножение дистрибутивно по отношению к сло- жению: (х ® (у ф z)) == (х ® у) ф (х ® z) для всех х, у, z е Z); и) если z^0nz®y = z®z, то у = z. И Каждая конечная область целостности является по- лем, однако существуют примеры бесконечных областей целостности, не являющихся полями. 3.2. Поля. Уже работая с понятиями арифметики, мы сталкивались с аксиоматическим определением поля. Определение. Полем называется множество F с двумя определенными на нем бинарными операциями — сложением © и умножением ® (обозначается (F, ®, ф) или же просто F), которые удовлетворяют следующим девяти свойствам. 1. Сложение коммутативно: х ® у = у © х для всех х, y<=F. 2. Сложение ассоциативно: х ® (у © z) = (х ® у) ® z для всех х, у, z е F. 3. Существует элемент в F, который обычно обозна- чается символом 0, такой, что х © 0 = х для всех F; О называется аддитивной единицей или просто нулем. 143
4. Каждому элементу х s F соответствует элемент у е F такой, что х © у = 0; у называется аддитивным обратным элементом к х и обозначается через — х. 5. Умножение коммутативно: х ® у = у ® х для всех х, у е F. 6. Умножение ассоциативно: х ® (У ® 2) = (х ® у) ® z для всех х, y,z^F. 7. Существует элемент в F, который обычно обозна- чается символом 1, такой, что 1¥=0 и х ® 1 = х для всех х е F; 1 называют мультипликативной единицей или просто единицей. 8. Каждому элементу х е F\{0} соответствует элемент у е F такой, что X® у = 1; у называется мультипликативным обратным элементом к х и обозначается через х~х. 9. Умножение дистрибутивно относительно сложения: х ® {у ф z) = (х ® у) ф (х ®>z) для всех х, у, z <= F, И Пример 3.2. (В, *, +) является полем, и, следова- тельно, (В, +) и (В\{0), •)—коммутативные группы. (N, •, +) не является полем, поскольку не существует ни аддитивной единицы, ни аддитивных обратных эле- ментов. (^(А), A, U) для заданного множества А не яв- ляется полем, поскольку не существует обратных эле- ментов. И В предыдущем определении использовались символы ® и ® для того, чтобы подчеркнуть, что операции в по- ле могут отличаться от умножения и сложения. Однако в дальнейшем часто будут рассматриваться поля (R, », +) и (Q, *» +). Поэтому мы будем использовать сим- волы * и +. Перед тем как перейти к доказательству основных утверждений, напомним (вместе с доказательствами) не- которые важные зледстрия, которые непосредственно из- влекаются из определения поля. Предложение. Единичный элемент в поле един- ствен, 144
Доказательство. Предположим, что х»е — хих^е'^х для всех х е F. Тогда е = е » е' = е' » е = е' Поэтому е = е' — 1. Для операции сложения доказательство аналогично. И Предложение. Обратные элементы в поле един- ственны. Доказательство. Опять рассмотрим случай опе- рации умножения. Возьмем х е F\{0} и допустим, что имеется два элемента у и z таких, что х * у = 1, х * z = 1. Из коммутативности следует, что y*x=l = z*x', поэтому у = у* l = y*(x»z) = (p*z)»z = l»z = l. Следовательно, у — z = х~г. Единственность обратных элементов по сложению до- казывается аналогично. И Перейдем к основным результатам. Теорема. В поле (F, *, +) для любых a, b^F справедливы следующие утверждения’. а) а * 0 = 0; б) (-a) = fl.(-l), -а(+Ь) = (-а) + (-Ь); в) -(-а) = а, (-!)<(-!)= 1; г) если а^ 0, то (а-1)-1 = а; д) а»6==0=*а = 0 или 6 = 0; е) (—а) * (—6)= а * Ь. Доказательство. а) а * 1 — а и а + 0 = а; поэтому а +(а • 0) = (а • 1) + (а»0)=а»(1 + 0)=а» 1=а. Следовательно, а * 0 является единицей по сложению. Она единственна; поэтому а * 0 = 0. б) Аналогично а + (а *(—!)) = (а * 1) +(а *(—!)) = = а *(1 +(-!))-а • 0 = 0. 10 Д. Кук, Г. Бейз 145
Таким образом, —я = я*(—1). Используя это равенство, получаем — (а + Ь) — (а + Ь)»(—1)=> = (я.(-!)) + (& *(-1)) = (-я) + (-&). в) По определению (—я)+я = 0 и (—я) + (—(—я)) = 0. Но обратные элементы единственны; поэтому я = — (—я). Таким образом, 1 = —(—1). Пусть х равно —1. Тогда 1 = -(х) = х • (-!) = (—!)»(—!). г) Заметим вначале, что я-1 ¥= 0, так как в противном случае 1 = а * я-1 — а • 0 = 0, что противоречит свойствам поля. Следовательно, я-1 =/= 0 и доказательство аналогично доказательству случая в). д) Возьмем а ч* 0. Тогда я-1 определено и b = 1 • Ъ = (я-1 * а) • Ъ = я-1 * (я • Ь) — а~1 * 0 = 0. е) Из случая б) следует (—я)=я»(—1) и (-&)=&»(-!), Поэтому (—a}*(—b} = (a*(—i)}»(b»(—i))== = а • ((—1) • (—1)) * b — a*l*b — a»b. II Для упрощения записи выражений в полях примем обычное соглашение о том, что если нет скобок, то ум- ножение выполняется раньше сложения. Например, вы- ражение а + b » с означает а + (Ь * с). Из аксиом поля следует разрешимость линейных уравнений. Это — очень важное свойство, и можно при- вести аргументы в пользу того, что оно — основное свой- ство полей. Линейным уравнением относительно х над полем F называется выражение вида а • х + b = 0, где 0, я, b &F. Теорема. Если а¥=0, то линейное уравнение а* • х + b = 0 имеет единственное решение в F (т. е. су- ществует только один элемент поля, при подстановке ко- торого в уравнение получается верное равенство}, 146
Доказательство. а * х + Ь = О, а » х + b + (—Ь) = 0 + (—Ь), а • ж + (Ь +(—Ь) ) = (—&) (ассоциативность и свойство 0), а * х + 0 = (—Ь) а • х = (—&) а-1 * (а « х) = а~1 * (—6) (а-1 * а) * х = (—&) * а-1 (по определению 0), (свойство 0), (а*0), (ассоциативность и коммутативность), 1 * х =(—&)• а-1 х = (—&)* а-1 (по определению 1), (свойство 1), Поле F замкнуто относительно заданных операций. По- этому элемент (—Ь) * а~1 содержится в F. Этот элемент и дает решение уравнения. Более того, так как обрат- ные элементы в F единственны, то — b и а~1 определя- ются из данного уравнения единственным образом, и, следовательно, решение единственно. И Уравнения, которые получаются из полиномов более высоких степеней, например квадратные уравнения a*x»x+b»x+c—Q с коэффициентами а, Ъ, с из R, в общем случае нераз- решимы в R. Для того чтобы эти уравнения были разре- шимы, нужно перейти к расширению поля R — полю комплексных чисел. Однако полиномиальные уравнения с комплексными коэффициентами всегда разрешимы в поле комплексных чисел: никакого более широкого поля не требуется. Исследование этого интересного факта мог- ло бы увести нас в сторону от более уместных тем. 3.3. Конечные поля. До сих пор все упоминаемые по- ля были бесконечны (содержали множества, имеющие мощность К о или К i). Обсудим теперь возможность суще- ствования конечных полей — полей, содержащих конеч- ное число элементов. Сформулируем основные свойства конечных полей и докажем некоторые из них (доказа- тельства других лежат за пределами этой книги). Внача- ле приведем некоторую дополнительную информацию. Пусть а е F. Тогда элементы а, а + а, а + а + а, .,, являются элементами поля. Обозначим их через а, 2а, За, ,,па, .,, (не требуется, чтобы п <= F) соответствен- 10* 147
но. Аналогично а, а * а, а * а * а, ,.. также являются элементами поля. Обозначим их через а, а2, а3, ..., ап, ... соответственно. Предположим, что а ¥= 0. Определение. Если существует целое п е N та- кое, что па = 0 (и не существует меньшего целого re N такого, что га — 0), то п называют аддитивным порядком а. Если существует m е N такое, что am = 1 (и не су- ществует меньшего rsN такого, что ат = 1), то т назы- вают мультипликативным порядком а. Й Теорема. Ненулевые элементы поля F имеют один и тот же аддитивный порядок. Доказательство. Возьмем а, Ъ sF\{0} и пред- положим, что аддитивные порядки а и Ъ равны п и m соответственно. Тогда пЪ = п (а * а-1) * Ъ = (па) • (а-1 • Ь) — 0 » а-1 * Ъ = 0. Поэтому m =£ п. Аналогично ma = т (b * b~l) * а = (mb) »(&-1 * а) = 0 * б-1 * а = 0. Следовательно, п =£ т, и поэтому т = п. Й Определение. Если в поле F все ненулевые эле- менты имеют аддитивный порядок п, то говорят, что F имеет характеристику п. Если такого аддитивного поряд- ка не существует, то говорят, что поле имеет характери- стику, равную 0. // Если |F| = m е 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 е Е\{0}, по- рядок qa также равен п и поэтому п < р. Таким обра- зом, в обоих случаях получаем противоречие. Следова- тельно, таких р и q не существует и п простое. Й Таким образом, мй получили следующий основной результат. Теорема. Конечное поле имеет характеристику р (простое число) и |Е| = рп для некоторого п е N. 148
Доказательство. Мы уже знаем, что F имеет характеристику р, причем р простое. Пусть |F| = q. Если р = q, то утверждение теоремы очевидно. В противном случае возьмем элемент ai е ^\{0} и положим ST\ = {у: у = паг, п е N, 1 =5 п < р}, I = р. Рассмотрим теперь элемент аг е F\3~\, и пусть ST г = {у: у = nai + таг’, т, «е N, 1 < га < р, 1 «£ гаг =5 р). Если 3г = F, то процесс заканчивается; в противном слу- чае рассмотрим а.з е F\3 г и т. д. В конце концов (посколь- ку F конечно) процесс остановится и мы получим совокуп- ность множеств 3\, 3 г, ..&~п для некоторого га s N. Каждый элемент / из F единственным образом пред- ставим в виде / = raiifli + тгаг +... + тпап, причем 15? гаг< «5 р для всех fe 1, ..га. (Доказать это в качестве упражнения.) Следовательно, существует рп таких выражений, и, таким образом, IFI = р”. И Итак, любое конечное поле должно иметь р" элемен- тов при некоторых р, га е N (р простое). На самом деле для любых таких рига существует поле порядка рп, однако доказать это не совсем просто. Рассмотрим в качестве примера поле (Z3, *, +), где • и + определены в табл. э.1. Нетрудно показать, что выполнены условия 1—8 из определения поля. Таблица 5.1 ♦ 0 1 2 + 0 1 2 0 0 0 0 0 0 1 2 1 0 1 2 1 1 2 0 2 0 2 1 2 2 0 1 Для контраста рассмотрим соответствующую табл. ДЛЯ Z4 Таб лица 5.2 • 0 1 2 3 + 0 1 2 3 0 0 0 0 0 0 0 1 2 3 1 0 1 2 3 1 1 2 3 0 2 0 2 0 2 2 2 3 0 1 3 0 3 2 1 3 3 0 1 2 149
Очевидно, что не существует мультипликативного об- ратного элемента к 2. Поэтому Z4 с естественной опера- цией умножения не является полем. Поле порядка 4 ₽• = 22 хотя и существует, но не совпадает с Z4 (см. уп- ражнение 5.3). Конечные поля заданного порядка стро- ятся достаточно сложным образом — на основе теории многочленов над другими структурами (не полями). Они имеют важное значение в теории кодирования. Мы не будем этим заниматься, поскольку такое приложение яв- ляется довольно специальным. 3.4. Упорядоченные поля. Мы уже видели, что мно- жество R вместе с обычными операциями сложения и умножения определяет поле. Однако структура поля са- ма по себе не дает какого-либо упорядочения элементов, которое мы обычно связываем с R. Не все поля могут быть упорядочены. Поэтому мы должны проверить, ка- кие дополнительные условия должны быть выполнены, прежде чем рассматривать это понятие. Обычные свой- ства порядка можно получить, как и ожидается, многими способами. Начнем с определения свойства положитель- ности. Оно непосредственно приводит к отношению по- рядка в поле, а затем к понятию длины. Основные ре- зультаты этого параграфа будут сформулированы в двух теоремах, а вспомогательные результаты даны в виде упражнений. Определение. Говорят, что поле F упорядочено, если оно содержит непустое подмножество Р, которое замкнуто относительно операций сложения и умножения, и такое, что для каждого элемента х из F имеет место ровно одно из соотношений х е Р\{0), х == 0, -х е Р\{0), Р есть множество всех положительных элементов F. (На этом этапе отметим, что 0 может как включаться в Р, так и не включаться. Для определенности выберем слу- чай, когда 0 включается в Р, что согласуется с изложе- нием предыдущей части книги.) Если х^Р, то будем говорить, что элемент х поло- жителен, и обозначать этот факт как х > 0. Если —х е е Р\{0), то будем говорить, что элемент х отрицателен, и обозначать это как х < 0. Аналогично, если хну — элементы F, то будем говорить, что х меньше или равно у (обозначается х^у), тогда и только тогда, когда у — х s Р, и что х меньше у (х<у), тогда и только тогда когда у — х <= Р \{0). Символы <, можно так- 150
же использовать для записи в противоположную сторону. В Из этих определений можно получить, что «<» явля- ется отношением порядка и выполняются все ожидае- мые свойства. Теорема, Пусть F — упорядоченное поле и а, Ъ, с, de F. Тогда: а) если a < b и b с, n a< с; 6) a =5 a; в) если a =5 b и b «5 a, to a = d; г) если a ¥= 0, to a? > 0; Д) 1 > 0; e) если a^b, to a + c < b + c; ж) если a b и c ^d, то a + с < b + d; з) если a<b, 0 < с и d < О, то a * c b « c, b » d a * d; и) если 0 < а, то 0 < а-1, и если Ъ < 0, то Ь-1 < О, Доказательство. а) а < b и Ъ =5 с => (b — a)s Р, и по определению (c-i)eP. Тогда с —а = с —b + b —а&Р, поскольку Р замкнуто относительно сложения. Следовательно, а < с. б) Очевидно, что а — а = 0 е Р. в) а^Ь и Ь^а; поэтому если Ь — а=х, то х^Р и —х s Р, что противоречит определению Р. Поэтому х = О и а = Ь. г) Если а ч* 0, то или а е Р, или —а е Р. Поскольку Р замкнуто относительно умножения, то a s Р *• а2 е Р и, как показано в п. 3.2, (—а) • (—а) == а2, откуда — а е Р =* а2 е Р. д) I2 ™ 1, поэтому из случая г) следует, что 1 > О, е) Утверждение непосредственно следует из соотно- шения Ь — а — (6 + с) — (а + с), ж) Требуемый результат получаем из соотношения (b — а) + (d — с) — (Ь + d) — (а + с), используя замкнутость Р. 151
з) Утверждение доказывается аналогично, используя следующие соотношения: (Ь — а)*с = Ь*с — а * с и (b — а) * (—d) = а * d — b » d. и) О < а => a s Р\{0). Если а"1 — 0, то 1 = а » а-1 — == а » о = 0, а если а-1 Р, то из случая з) имеем 1 = «=а-1*а<0»а = 0. В обоих случаях получили противо- речие. Поэтому а-1 е Р\{0) и, следовательно, 0 < а-1. Оставшаяся часть доказательства проводится анало- гично. И Получим похожие соотношения для понятия величи- ны в упорядоченных полях. Определение. Если F — упорядоченное поле, то абсолютным значением (величиной, длиной или модулем) называется функция | х, если х^О Х<-» { (—х, если х<0. Традиционно эту функцию обозначают как |х| (х — ар- гумент) и читают это как «модуль х». И Сформулируем без доказательств основные результа- ты, относящиеся к функции 1x1. (Доказательства остав- ляем в качестве упражнения.) Теорема. Если F — упорядоченное поле и а, Ь е е F, то: а) |а| =0 тогда и только тогда, когда а = 0; б) I-а\ = |а|; в) |а • Ы = |а| • |6|; г) если 0 s? Ь, то |а| «S b тогда и только тогда, когда ~Ь «5 а Ъ\ д) — |а| =5 а «3 1а1; е) Hal — 1611 1л±&1 < lei + |Ь| (неравенство тре- угольника). И Упражнение 5.3. 1. Доказать, что в кольце (R, *, +) выполняются со- отношения: а) 0*а = а»0 = 0; б) а*(—6) = (—а)* b — — (а * Ь); в) (—а) * (—Ь)= а* Ь. 152
2. Показать, что если в кольце (R, *, +) для каждо- го а е R выполняется соотношение а • а = а, то R ком- мутативно. 3. Показать, что в кольце Z„ делителями нуля явля- ются только те элементы, которые имеют общие нетри- виальные множители с п. Следовательно, Zp, где р про- стое, не имеет делителей нуля. 4. Показать, что каждая конечная область целостно- сти является полем. 5. Показать, что (Z, *, +) — область целостности, но не поле. 6. Пусть р < q и (Zp, *р, +р) и (Z„ •„ +,) — обыч- ные системы по модулю р и q. Доказать, что, хотя они и являются коммутативными кольцами и Zp <= Z, кольцо (Zp, »р, +р) не является подкольцом (Z7, •„ +,). Пока- зать, что операции *, и +, не замкнуты на Zp. 7. Без использования теорем доказать, что (Ze, •, +)’ не является полем (• и + суть операции по модулю 6). 8. Доказать, что конечное поле имеет ненулевую ха- рактеристику и что поле с характеристикой 0 бесконечно. 9. Пусть Я], аг, ..., ап определены так же, как и при доказательстве последней теоремы п. 3.3. Доказать, что любое выражение вида т\й\ + midi + ... + т„ап определяет некоторый элемент поля, причем такое пред- ставление единственно. 10. В поле (F, «, +) с операциями, определенными ниже, решить систему лпнейных уравнений х + d « у = с, х * d + у = Ь, * a b с d abed а. а а а. а Ь а Ь с d с а с d Ь d a d Ь с а а Ь с d b b a d с с с d а Ь d d с Ь а 11. Доказать, что если а * b > 0, a, b&F, то пли а, Ь > 0, или а, b < 0. 12. Доказать, что в упорядоченном поле а2 + Ь2 = О тогда и только тогда, когда а = b = 0. 13. Пусть F — упорядоченное поле и а, & е F такие, что 0 < а < Ъ, Доказать, что а2 &2. 153
14. Доказать, что каждое поле является областью це- лостности. 15. В упорядоченном поле, складывая неравенства — |а| < а =5 |а| и — |а| =5 — а =5 |а|, доказать, что: а) \а± Ы < |а| + 1Ы; б) I|а| — |&|| «£ |а± Ы. § 4. Линейная алгебра В большинстве элементарных учебников векторы оп- ределяют как объекты, обладающие «величиной» и «на- правлением». Такой подход берет начало из приложений в геометрии и физике. Эти вопросы формально будут об- суждаться в п. 4.2. Дадим более общее определение век- тора, для которого понятия величины и направления не- существенны. 4.1. Векторные пространства и линейные преобразо- вания. Определение. Пусть F — поле, а V — множество с бинарной операцией +. Предположим, что для каждого а е F и х е V определен элемент ах е V, Тогда, если вы- полнены аксиомы: а) (F,+)—коммутативная группа; б) для всех х, ye V и a, b&F (а + Ь)х = ах + Ьх, а(х + у) = ах + ау, (ab)x — а(Ъх), lfX — X, где If — мультипликативная единица в F, то говорят, что V является векторным пространством над F. Элементы V называются векторами, операция + называется сложени- ем векторов, а отображение Л: F X V -> V, определяемое соотношением Л (а, х) — ах, называют ум- ножением вектора на скаляр. И Векторное пространство над F может рассматриваться как тройка (V, +, Л), удовлетворяющая приведенным выше аксиомам. Нуль векторного пространства по сложе-< 154
нию обозначают символом 0. Из аксиом следует, что 0Fx = 0 для всех х е V, где Ор — аддитивная единица в F, и яО = О для всех а<= F. В следующих примерах будет показано, что различные классы множеств обладают структурой векторного про- странства. Пример 4.1. 1. F" (n е N) является векторным пространством над F с операциями (аь ..., an) + (bi, ..., bn) = (ai + Z>i, .... an+6n), a(ai.............an) = (aai, ..., aa„). Нулем Fn является вектор (0F, ..., 0F). Элементы ai, ... ..., a„ называются компонентами вектора a = (ai, ... ..., an). 2. Пусть ST — множество всех отображений /: [а, Ь] -* -► R. Тогда ЯГ является векторным пространством над R с операциями U + g) (х) = f(x) +g(x) для всех /, (af) (х) = af(x) для всех aeR. 3. Пусть ®’, Ч? <= ST — множество всех непрерывных отображений из ST. Тогда <8 является векторным про- странством с операциями, определенными в ST. И Множество £7, U s V, называется векторным подпро- странством пространства V, если оно является вектор- ным пространством с операциями из V. Множество {(ai, ..., 0F): a(sf} является век- торным подпространством пространства Fn; является векторным подпространством пространства ST. Если £7, £7 s V,— векторное подпространство пространства V, то 0е£7. Векторные пространства R” (1^п^4) возникнут естественным образом в гл. 10. Операции в R” имеют гео- метрическую интерпретацию. Для пространства R2 это показано на рис. 5.3. Если r = (x, p)<=R2, то компонен- ты х и у измеряются вдоль ортогональных линий, начи- ная с точки пересечения О (рис. 5.3, я). Компоненты х и у откладываются вдоль линий ОХ (ось х) и OY (ось у) соответственно. Эти линии проведены под углом 90° 155
друг к другу, и угол между ними измеряется против часовой стрелки от оси ОХ. Такую систему осей назы- вают правосторонней системой координат в R2. Вектор- ное сложение в R2 геометрически соответствует правилу параллелограмма, как это показано на рис. 5.3, с. Геометрия векторных пространств Rn будет рассмат- риваться ниже, а сейчас мы введем понятия базиса и размерности. Если V — векторное пространство над F и S s V, то сумму вида п S F, X| S S, (=1 называют линейной комбинацией векторов из S. Говорят, что конечное множество векторов {х(: 1 i < к} является линейно независимым, если А 14{Х| —— 0 “v* —— 0g — ... —- Oft — Ojr’J i=l в противном случае множество является линейно зави- симым. Подмножество S s V такое, что любой элемент V представим в виде линейной комбинации элементов из S, называется порождающим множеством пространства V (или же еще говорят, что S порождает 7), Упорядо- 156
ченное линейно независимое порождающее множество пространства V называется базисом этого пространства. Пример 4.2. В R3 вектор (5, 5, V2) является ли- нейной комбинацией векторов (1, 1, 0) и (0, 0, 3), так как (5,5, /2) = 5 (1,1,0) + 1^(0,0,3). Множество L = {(1, 1, 0), (0, 0, 3)} является линейно независимым подмножеством в R3, так как а(1, 1, 0) + + 6(0, 0, 3) = (а, а, 36) — 0 тогда и только тогда, когда а = 0 и Ъ = 0. Однако подмножество L не является бази- сом, поскольку оно только определяет векторное подпро- странство {(х, х, у): х, у еR) <= R3. Базис B = L U {(1, 0, 0)} «расширяет» L до базиса в R3. // Легко показать, что каждый элемент векторного про- странства имеет единственное представление в фиксиро- ванном базисе, так как если V имеет базис В = {ei, ,., ..., еп) и п п X = 2 aiei = 2 , TO n 0 = X — X = 2 (fii — ei) ®i‘ i=l Однако В — линейно независимое множество. Поэтому Ь( = а{ для всех г, 1 < i п. Докажем следующий важный результат. Предложение. Пусть S = {хц ..., хт} — порож- дающее множество пространства V, a L = {у i, ..., yj — линейно независимое множество векторов из V, Тогда m> I. Доказательство. Предположим, что т<1. Так как S порождает V, то существуют элементы ai, .,., ат s е F такие, что yi *= aiXi + ... + amxm. Однако yi =5^ 0, так как L — линейно независимое множе- ство (см. упражнение 5.4), и, следовательно, не все ai, ..., ат равны нулю. Для определенности положим 157
ai Or. Тогда xx = аГ*У1 — af1a2x2 — ... — d^amxm, т. е. xi является линейной комбинацией {yi, хг, ..., хт). Так как S порождает V, то по доказанному выше множе- ство векторов {yi, Х2, ..., хт} также порождает V. Анало- гично получаем, что {yi, уг, х3, ..., х™} порождает V, Повторяя этот процесс т раз, получаем, что множество {yi, ..у™} порождает V. Следовательно, Ут+1 = Р1У1 + Р2У2 + . . . + РтУт, где pi, ..., рт s F не все равны нулю (так как ym+i не может быть равно нулю). Отсюда Ут+1 - Р1У1 - Р2У2 - ... - РтУт = О, однако последнее невозможно, потому что {yi, ..., Уг) — линейно независимое множество векторов. Следователь- но, т > I. II Предложение. Пусть В и В' — базисы векторно- го пространства V над F. Тогда |5| = |В'|, Доказательство. Пусть В = {е\, ,.е„} и В' = = {er, ..., em}. Тогда из предыдущего предложения сле- дует, что п > m и m > п, т. е. m — п. II Мощность базиса векторного пространства V называ- ется размерностью V и обозначается через dim (7). Предложение. dim(P’n)=n. Доказательство. Определим В = {ei, ..., ел}, где е} = (0, .. .,0, lF,0, .. .,0), i-й разряд и покажем, что В является базисом в Fn. Очевидно, что п (®1, • . • > й-п) = 2 ^1®1» 1=1 поэтому В порождает F" и п == 0 =Ф (&х, • • •, ^n) === := Of1, &2 = Of, • . , &71= Of « 1=1 Следовательно, В является базисом в Fn и dim(7)=i = IBI - п. // Из данного выше определения следует, что базис всегда состоит из конечного числа векторов, и не во вся- ких векторных пространствах можно выделить базис (на- пример, вО нет базиса). Понятия базиса и размер- 153
вости можно расширить на все векторные пространства, однако такое обобщение нам не потребуется. Если про- странство V имеет базис, соответствующий данному вы- ше определению, то говорят, что пространство имеет ко- нечную размерность, а само пространство называется конечномерным векторным пространством. Рассмотрим теперь гомоморфные отображения между векторными пространствами. Определение. Пусть Vi и V2 — векторные про- странства над полем F. Говорят, что отображение Г: Vi V2 линейно, если Г (х + у) = Тх + Гу, Г(ах) = д(Гх), Если V2 = Vi, то Т называют линейным преобразовани- ем пространства Vj. / Далее нас будут интересовать конечномерные вектор- ные пространства над R и линейные преобразования над ними. В оставшейся части главы через V будем обозна- чать векторное пространство, а через End (V) — множе- ство всех линейных преобразований V (эндоморфизмов V). Заметим, что большинство приводимых утверждений можно представить в более общем виде. Перейдем от алгебры V к алгебре End(V) и покажем, что End(V) замкнуто по отношению к естественным операциям сложения, умножения и умножения на ска- ляр. Вначале заметим, что единичное отображение Iv и нулевое отображение Оу являются линейными на V, так как по определению Ivx == х для всех х s V, 0vx = 0 для всех х е V. Следовательно, для всех х, у е F и X s R имеем Iv (х + у)' = X + у = ZvX + Ivy, Iv (Хх)= Хх ” X (Л-х), Оу (х + у) — 0 = 0 + 0 — ОуХ + Оуу, Оу (Хх) = 0 ~ ХО = ХОуХ. Если S, T’eEnd(V), то сумма S + T и произведение S’T (композиция) определяются формулами (5+ Г)х — Sx + Гх для всех xeV (S ® Г)х = S(Tx) для всех xeF. Отметим следующие свойства End(V) относительно при- веденных выше операций. 159
Предложение. Множество (End (У), °, + > явля- ется кольцом с единицей. Доказательство. Укажем основные этапы дока- зательства. Надо показать, что: (I) S, ГеЕп(1(У)=> S + Те End (У) и S » Т е eEnd(V); (II) (End(V), + )—коммутативная группа. Если S, Т, U е End (У), то: (III) Se(T° U) = (S°T)> U; (IV) S°(T+U) = S°T + S°U-, (V) Iv « T = T»Iv = т. Имеем (I) (S +Т) (х + у)—S(x + у)+Г(х + у) = Sx + Sy + + Tx + Ty = (Sx + Tx) +(Sy + Ту) = (S + T)x + (S + T)y. Аналогично (S + Т) (Хх) = SXx + Пх = XSx + ХТх = =X(Sx + Tx)=X(S + T)x. Доказательство того, что S» Те End (У), оставляем в качестве упражнения. (II) (S + (Т + U))х = Sx + (Т + U)к = Sx + (Tx+t/x) - = (Sx + Тх) + Ux = (S + Т)х + Их = ((S + Т) + U} х. Следовательно, операция + ассоциативна. Элемент 0v s е End (У) удовлетворяет условию T + 0v = 0v + T = T для всех Т е End (У)' и является аддитивной единицей End (У). Для Те еЕпй(У) определим отображение — Т: У-> У соотно- шением (—Г)х — — (Гх) для всех х^У. Легко показать, что —Те End (У) и (-Т + Т)=Т + (-Т)=Ог. Поэтому отображение — Т является аддитивным, обрат- ным к Т. Коммутативность (End(У), +) следует из ком- мутативности (У, +). (III) Утверждение следует из результатов гл, 3, 160
(IV) Для х е V имеем (S •(Г + U))х = S((Т + U)х) = S(Tx + CZx) = »5(Гх) + 5(С7х) = (5»Г)х + (5» I7)x = = (S»r + S»t7)x. (V) Утверждение очевидно. // Пусть TsEnd(V) и XeR. Определим отображение КТ; V -* V следующим образом: (ХГ)х — Х(Гх) для всех xsV. Легко показать, что КТ & End (V). Отображение Л: RXEnd(V)-* End (У), определяемое соотношением Л(Х, Т) = КТ, называют ум- ножением на скаляр. Предл ожение. (End(V), +, Л) — векторное про- странство над R. Доказательство. Из предыдущего утверждения следует, что (End(V), +)—коммутативная группа; сле- довательно, нам надо показать, что умножение на ска- ляр удовлетворяет условиям (К + р) Т = КТ + рГ, Х(5 + Т) = KS + КТ, (Хр) Т = К (рГ), 1ИГ = Т, где К, peR и 5, TeEnd(V). Имеем цепочку соотно- шений ((Х + р)Г)х-(Х + р) (Гх) = Х(Гх)+р(Гх)- = (ХГ)х + (рГ)х. Остальные соотношения доказываются аналогично. И Предл ожение. Операции умножения в кольце и умножения на скаляр Л в End(Vj удовлетворяют соот- ношению K(S°T) = (KS)°T = S°(KT), где X s R и S, Т е End (V). Доказательство. [(X(S • Т))х « К( (S • Т)х) = К(S(Тх)) = ~(KS)(Tx)~((KS)'T)x, (X (S ‘ Т))х = К ((S • Т) х) - К (S (Гх)) - «5(Х(Гх)) = (5»(ХГ))х. И И Д Кук, Г, Бей» 161
Алгебраические структуры, удовлетворяющие таким же свойствам, как и End (У), называют линейными алгеб- рами. Дадим строгое определение. Определение. Четверка (X, +, °, Л) называется линейной алгеброй над R, если Л: R X X X и (I) (X, +, Л)—векторное пространство над R; (II) (X, °,+) —кольцо; (III) Л и ° удовлетворяют условиям X (xi»х2) == (Xxi) ° Х2 = X] ° (Хх2) для всех ?.eR и xi, xj^X. И Результаты, полученные для End(V), можно сфор- мулировать следующим образом. Предложение. End(V) с введенными выше опе- рациями является линейной алгеброй с мультипликатив- ной единицей. II Если Ze End(V) и существует преобразование S: V -* V такое, что то (см. упражнение 5.4) SeEnd(V). Тогда Т называют обратимым, & S — Т~* — обратным к Т преобразованием. Обозначим через Aut(V) множество всех обратимых пре- образований из End(V), т. е. множество автоморфиз- мов V. Предложение. (Aut(V), ») является группой. Доказательство. Так как ZreAut(y) и lv« ° Iv == Iv, следовательно, существует Zy1, равное Iv. Пусть S е Aut(E); тогда ° S — S ° S~'= lv. Поэтому (S-1)"1 существует и совпадает с S. Следова- тельно, S~1eAut(T/). Если теперь S, ТеАиЦУ), то (S« Т)«(Т-1«S-1) = S ° (Т о Т-i) о S’1 = S ° 8“‘ = Zr. Аналогично (T-ieS-1)o(5«T)=Zr. Поэтому (S о существует, и из S, TeAut(V) сле- дует, что S ° Т е Aut (У). Ассоциативность операции « уже доказана. И 4.2. Структурные изображения в R”. Рассмотрим гео- метрическую интерпретацию пространства Rn, при кото- рой понятия «направление» и «величина» для векторов 162
имеют геометрический смысл. Вернемся к геометриче- скому изображению R2. Мы видим, что если г = (х, у)е е R2, то расстояние от точки (х, у) до (0, 0) есть (х2 + у2)1/2. Обозначим это расстояние через llrll, которое можно рассматривать как отображение II-II; R2-* R. Оно называется длиной, модулем или нормой. Рассмотрим точки ri=(xlt у{) и гг=(^2, г/г) (рис. 5.4). Пусть 01 и 0г — углы в интервале [0, л] меж- ду положительной полуосью ОХ и векторами ri и гг со- ответственно. Тогда расстояние менаду rt и гг равно Иг2 — nil, а угол между пими равен 0 — 02 — 0ь Имеем cos 0 = cos (0а — 02) = cos 0* cos 02 + sin 0г sin 02 = Выражение + У\Уг можно использовать для вычис- ления расстояний и углов в R2. Определим отображение Ф: R2 X R2-> R следующим образом: Ф(Г1, r2)= Х1Х2 + г,'1У2. Тогда || г || = (Ф (г, r))1/2, cos 0 =--~(r-i’.5.P-_ (Ф(Г1> Г1)Ф(Г2-Г2))1/а Угол 0 между двумя векторами в R2 определяется одно- значно при условии, чго 0 < 0 л. Когда 0 = 0 или 0 = = л, то говорят, что л и гз параллельны (коллинеарны). В прикладной математике удобно обозначать Ф(гь п) через Г1 Г2 и называть скалярным произведением п и т%. Если л 0 и Г2 0, то Г| • гг = 0 тогда и только тогда, когда 0 = л/2; в этом случае говорят, что Г| и гг взаимно ортогональны, перпендикулярны или нормальны. Ниже приведены некоторые свойства скалярного произведения. 11* 163
Предложение. a) r-r>0 и r-r==O тогда и только тогда, когда г» (О, 0); б) Г1 • Г2 = rz • ri для всех ri, Гг s R2; в) п • (f2 + гз) == п Т2 + п т3 для всех п, тг, r3eR’; г) Х(Г1 •Г2) = (ЛГ|)-Г2 = Г1-(Хгз), Г1, r2eR’, leR, Доказательство. а) Если г = (х, у)е R2, то г • г = (х2 + уг)>0 для всех х, у е R и г т = 0 тогда и только тогда, когда х = 0 и г/°о. б) Г1 • Г2 = Х1Х2 + У\У2 = Я2Я1 + Р2У1 — Г2 ‘ П. Соотношения в) и г) доказываются аналогично и ос- тавляются в качестве упражнения. Й В более общем случае, если V — векторное простран- ство над R и Ф: V X У -* R — отображение, удовлетво- ряющее свойствам а) —г), то (V, Ф) становится про- странством, для которого могут изучаться понятия дли- ны и угла. Отображение Ф называют внутренним про- изведением для V, а (V, Ф) — векторным пространством с внутренним произведением. В частности, если опреде- лить Ф: Rn X R”-* R(n е N) соотношением п Ф(а,Ь)== а-Ь = 2 a‘tbi, i=l где а=(й|, ..., а„), Ь =(&i, Ь„), то отображение • бу- дет соблюдать требуемыми свойствами. Определим длину вектора а е R" как II а Л == (я • а)1/2, а косинус угла между двумя векторами а и Ь как а-Ь ЦаЦЦЬЦ’ угол лежит на отрезке [0, л]. На R" могут быть определены другие внутренние про- изведения. Внутреннее произведение, введенное выше, называется обычным или евклидовым внутренним произ- ведением. Оно дает те значения длины и угла, которые ожидались интуитивно. Когда п = 1, ясно, что • является лишь умножением в R, и угол между двумя векторами определяют как ху arccos:—п—г; 1*ПИ 164
угол равен или 0, пли л в зависимости от знака ху. Норма 11-11 обобщает понятие модуля |-| в R и обладает аналогичными свойствами. Например, можно показать, что Hall > 0 для всех a s R", Hall = 0 тогда и только тогда, когда а = О, HXall = iTjIlaH для всех aeR’nZeR, Па + Ы1 < Hall + llb'l для всех a, be R". Вектор aeR’ такой, что Hall = 1 (что эквивалентно а-а = 1), называется единичным вектором. Если ае е R"\{0), то a/llall — единичный вектор, параллельный а. Единичный вектор обычно обозначается а. Если В = {ei, ..., е„) — базис в R" и (О, если i f, 3 (1, если i — j, то базис В называется ортонормированным. Ортонорми- рованнып базис в R", определенный следующим образом: щ =(0, ...,0,1,0, ...,0), t i-й разряд называется стандартным базисом в R”. В R2 и R3 стан- дартные базисы удобно записывать в виде (i, j) и (i, j, к) соответственно. Рассмотрим следующую геометриче- скую интерпретацию этих базисов. Векторы i и j опреде- ляют правостороннюю систему осей в R2, а третья ось OZ~ перпендикулярна плоскости, содержащей векторы i - j, и^направлена таким образом, чтобы концы векторов I, j и к (в указанном порядке) определяли правосторон- нее движение (рис. 5.5). Это свойство известно как пра- вило правой руки. В системах такого типа в R3 оси на- зываются правосторонними. Определение. Если a=(ai, a2, as)sR3 и b = = (bi, Ьг, Ьз)е R3, то векторным произведением а и Ь (обозначается а X Ь) по определению называют вектор а X Ь = (й2&з — «3^2, язЬ1 — щЬз, a\bz~ а^Ьх). Й Операция X может рассматриваться как отображение R3 X R3 -* R3. 165
Предложение. Если a, b е R3, то а) На X Ы = Hallllbll sin 0, где В —угол между а и Ь; б) вектор а X b ортогонален векторам а и Ь. Доказательство. a) flaxb||2 =(a2i>3—а362)2+(аз61—«1Ьз)2+(а1Ь2—a26i)2 = = а^з + аз^2 — 2а2Ь3а3й2 + а2Ь^ + а263 — — + a{bl + а^2 — 2а1Ь2а2Ь1 = = (й2 + «з + а3) (б2 + &2 + — (а1&1 + о,2Ъ2 4- а3Ь3)2 = - || а ||21| b ||2 — (a • Ь)2 = || a ||21| b ||2 (1 - ) = == ||a jj21| b ||2 (1 - cos2 0) = || a||21| b ||2 sin2 0. б) Легко показать, что a-(aXb)=0 и b-(aXb)=0, откуда и следует требуемый результат. И Чтобы получить геометрическую интерпретацию а X Ь, заметим, что если a = (ai, 0, 0), b = (&i, &2, 0), то аХЬ = (0, 0, а\Ъг); поэтому если ai > 0, то ь_| | Я1Ь2 | £ ДЛЯ &2>0, | а2Ь21 к для Ь2 < О, и направление а X Ь определено таким образом, чтобы выполнялось правило правой руки относительно векторов а, b и а X Ь. Это правило носит общий характер, посколь- 166
ку для произвольной пары векторов в правосторонней системе координат всегда можно выбрать способ пред- ставления векторов, который определяется векторами а и Ь. В результате векторное произведение будет иметь вид а X b = Hall ПЫ1 sin On, где n — единичный вектор, ортогональный а и Ь, с на- правлением, выбираемым по правилу правой руки. Если аХЬ = 0, то векторы а и Ь линейно зависимы, а если Hall > 0 и НЬИ > 0, то из равенства а X Ь = О сле- дует, что а и Ь параллель- ны. Пусть а и Ь — векто- ры, изображенные на рис. 5.6. Тогда На X Ы1 — площадь параллелограмма ОАСВ и аХЬ может рассматриваться как вектор пло- щади. Некоторые свойства векторного произведения приве- дем ниже; доказательства оставляем в качестве упраж- нений. Предложение. а) а X Ь = -b X а; б) а Х(Ь + с) — а X b + а X с; в) (Ха)Х b = а Х(ХЬ) = Х(а ХЬ); г) ТX j = k, j хк = i, kxi = f; д) а X (b X с) = (а • c)b —(a b)c; е) аХ(ЬХс)= b (сХа)= с(аХЬ)= —а(сХЬ) = = -Ь (а Хс)= — с (b X а). И Выражение аХ(ЬХс) часто называют тройным век- торным произведением а, Ь и с, а а (ЬХс)— смешанным произведением. Геометрически а-(ЬХс) означает объем параллелепипеда с ребрами а, b и с. Предложение. Множество {а, b, с} с: R3 линейно зависимо тогда и только тогда, когда а(ЬХс)=0. Доказательство. Предположим, что а, Ь и с ли- нейно зависимы. Тогда существуют X, р, о е R, не все равные нулю, такие, что Ха + pb + ос = 0. 167
Не ограничивая общности, предположим, что X 0. Тогда а = — Л,~’(цЬ + ос), а-(ЬХс)= —%-1(|хЬ + ос) (ЬХс) = = —V1 [цЬ (bXс) + ос (bX с)] = 0. Обратно, если а•(b X с), то или а) один из векторов а, Ь, с равен нулю (в этом случае результат очевиден), или б) вектор а ортогонален b X с. Однако b и с ортогональны к Ь X с; поэтому а = «= Х'Ь + р'с при некоторых к', ц' е R и а, Ь, с линейно зависимы. И Закончим главу кратким рассмотрением вопросов диф- ференцируемости «векторпозначных» функций. Пусть на R" задана обычная норма. Определим производную функ- ции вида /: R -* Rn. Обобщая одномерный случай, скажем, что / дифферен- цируема в точке /, если существует вектор F(i) = *=(Л(0> • • •> F„(Z))eRn такой, что при h -* 0, или, что эквивалентно, если f имеет компо- ненты /1, /„ такие, что ....^±™_ ад) при h -> 0. Очевидно, что каждая компонента должна стремиться к нулю при h -* 0, поэтому di/dt существует тогда и только тогда, когда dfaldt, ,.dfnldt суще- ствуют и dl /^1 \~di* Другими словами, чтобы продифференцировать векторно- значную функцию, мы должны продифференцировать ее покомпонентно. Например, если f: R -> R3 определена со- отношением f(f) = (2i2, In t, sin2 J), то dl (1 n • * Л л = 4?, —, 2 sin t cos t , Of \ t / 168
Пусть f: R R3 и g: R -> R3. Определим функции f • g: R -> R и f X g: R -* R3. Положим (f • g) (0= f (f) • g(f), (f X g) (f) = f (0X g(0. Дифференцирование этих функций производится следу- ющим образом: ^(f-g) = f-^ + g’g. y/(fXg)=fxf + gxg. Проверку этих формул оставляем в качестве упражнения. Упражнение 5.4. 1. Показать, что если V — векторное пространство над полем F, то Огх = 0 для всех х е V, аО = О для всех а е F. 2. Представить вектор (а, 1, 3)е R3, где R, в виде линейной комбинации векторов множества S = {(1, 1, 0), (0, 2, 0), (0, 0, 4)} и показать, что S — линейно независимое множество век- торов. Является ли S базисом в R3? 3. Показать, что если {xi, ..хт} — линейно незави- симое подмножество векторного пространства V, то х< ¥= О при любом i, 1 С i С /и. 4. а) Какие из следующих преобразований являются линейными: T’lGr, г/) = (а, У), а е Tz(x, y) = (kx + у, су), X, oeR\{0), Т3(х, у) = (х2, 0), Т<(х, у) = (х, 0)? б) Определить произведения Гг’Ли 7\°Т2. в) Доказать, что если Ze End (У), то 7’0 = 0. 5. а) Если V — векторное пространство, то проекцией (проектором) V называют преобразование Р: V V, об- ладающее свойством (Р ° Р) х = Рх для всех х е V. Доказать, что преобразование Р: R2 R2, определя- емое соотношением Р(х,у) = [^zrb(ax-y + с),^-ь(ах-у + с) + с) при а, Ъ, с е R и а Ь, является проектором в R2. При каких условиях PeEnd(R2)? 169
б) Какие из определенных в п. 4. а) преобразований являются проекторами? 6. Пусть Ге End (У). Пулевым подпространством (ядром) Г называют множество Л°(Г), определяемое со- отношением Л’(Г)=(хеИ Гх = 0). Доказать, что Л°(Г) является векторным подпростран- ством V. Доказать также, что образ Т является вектор- ным подпространством V. 7. Пусть V — векторное пространство над R в Т е eEnd(F). Говорят, что Т имеет действительное собствен- ное значение А е R, если существует ненулевой вектор х е V такой, что Гх = Ах; при этом х называют собственным вектором Т, соответ- ствующим собственному значению А. а) Доказать, что если Т е End (У) такое, что у) = (х + ау, у), то любой вектор вида (р, 0) при р 0 является собст- венным вектором Т. Какие у Т собственные значения? б) Пусть Т eEnd(V’)- Обозначим через Ух множество собственных векторов Т, соответствующих собственному значению А. Показать, что У» U {0} является векторным подпространством V. Доказать аналогичное утверждение для Л’(Г). 8. Папти собственные значения и собственные векто- ры преобразований Т\, 72 s End (IV): T’iU. = х), Тг(х, y) = (z, -у). Какой геометрический смысл имеют Т\ п Tzi 9. Доказать, что а) если S, fe End (У), то S° End (У); б) если при Ге End (У) существует преобразование 5: У -* У такое, что S°T = T°S = Iv, то SeEnd(y); в) если TeAut(V), то Jf(T) = {01. 10. Доказать, что если п, г2, гз^П2 и AeR, то а) г1 • (г2 + Гз) — ft • г2 + Г1 • г3; 170
б) X (ri • 1’2) = (Xfi) • г2 = Г1 (Хг2); в) |г1 г2| < llrjl Нг2Н; г) Jiri — г2И2 = Иг 1II2 + Иг2112 — 2HrJI llr2ll соз 0, где 0 — угол между п и г2; д) |Пг1 II — Нг2Н| < hi + г2„ < Пг|11 + 11г2П (последнее неравенство известно как неравенство тре- угольника). Дать геометрические иллюстрации этим ре- зультатам. В действительности вышесказанное имеет место для любого пространства со скалярным произведением; в ча- стности, результаты справедливы для R’(aeN) с обыч- ным внутренним (скалярным) произведением. 11. Вычислить единичные векторы, параллельные а) а = (1, 1, 1); б) Ь = (1, р, 0), peR. Определить единичный вектор, ортогональный а и b од- новременно. 12. Пусть а, Ь, с е R3 и ?.eR. Доказать, что а) а X b = —b X а; б) а Х(Ь + с) = а X b + а X с; в) (Аа)Х Ь = a X(Xb) = ?.(аXЬ); г) fxj == k, j х£ = i , kXi = f; д) а Х(ЬХ с)“(а c)b —(а • b)c; е) а(ЬХс)= Ь(сХа)= c(aXb)= —а (с X b) = = — b • (a X c) = —c (b X a). 13. Используя результаты 5.4, 12, доказать, что опе- рация X: R3 X R3 -> R3 не ассоциативна, т. е. в общем случае а X (b X с) ¥= (а X b) X с. 14. Пусть f, g: R -»• R3. Доказать, что 6) s<fxg)-tx®+gxg--|ixr-gx^ в) если 11Г(£)Н = а для всех t, где а е R — постоянная, то di/dt ортогонален к f при всех t. Провести вычисле- ния при f (') — (a cos t, asini, 0), g(t)==(O, 1, t), 171
§ 5. Решетки и булевы алгебры Булева алгебра является одним из математических объектов, с которыми мы уже сталкивались во введении. Мы покажем, что существует не одна булева алгебра, а много. Следовательно, любое преждевременное исполь- зование этого объекта может привести к недоразумению. Тем не менее мы начнем изучение с введения более общей структуры, называемой решеткой. Некоторые из решеток имеют важное значение в аб- страктной теории вычислений, возникшей из понятия ап- проксимации. Одна программа аппроксимирует другую, если опа осуществляет те же самые вычисления на под- множестве данных, доступных той программе. Если же рассматривать результат работы программы как множе- ство, то одна программа аппроксимирует другую, когда для некоторых входных данных она выдает' в качестве результата подмножество В s А, где А — множество вы- ходных данных второй программы. Это достаточно про- стые и, вероятно, очевидные способы аппроксимации про- грамм. При этом возникает множество элементов, свя- занных некоторым отношением порядка. Вычисление является результатом выполнения про- граммы (на некоторых данных), которая написана на ка- ком-либо языке (см. гл. 8). Для общности рассмотрений свойства вычислений надо выводить не в терминах рас- сматриваемой программы, а в терминах языка, используе- мого для записи программы. В то же время мы должны быть в состоянии определить результат выполнения про- граммы «язык X» с помощью формального определения. К сожалению, количество деталей, требующихся для описания даже простых примеров, достаточно велико и, следовательно, ничего не определяет. Одпако в п. 5.1 мы дадим теоретические обоснования некоторых ключевых результатов. Это будет следовать (п. 5.2) из формаль- ного использования булевой алгебры, а затем (п. 5.3) из краткого рассмотрения некоторых общих приложений. 5.1. Решетки. Напомним, что бинарное отношение р па множестве S является частично упорядоченным от- ношением, если оно рефлексивно, транзитивно и анти- симметрично. Следовательно, (S, р) — частично упорядо- ченное множество, и, если не возникает двусмысленно- сти, р можно записать как «S, а (5, <) обозначить про- сто через 5. Частично упорядоченное множество называ- ется линейно упорядоченным (пли цепью} t еслц для 172
любых х, у е S или х < у, или у С х, или же выполнены оба эти отношения. На самом деле любой частичный порядок можно представить в виде объединения линей- ных порядков. Поэтому возникает естественный и по- лезный способ изображения отношений порядка. Заметим, что любое конечное, линейно упорядоченное множество (А, С) можно представить следующим об- разом: aiCa2C...<fln; здесь рефлексивность и транзитивность не требуют дока- зательств. Легко видеть, что рис. 5.7 является «очевид- ным» представлением (Л, <). Другими словами, мы за- писываем А как (ai, 02, .... ал). Предложение. Частичное упорядочение на ко- нечном множестве может быть представлено как объеди- нение линейных порядков на некоторых подмножествах. Доказательство этого факта оставляем в качестве уп- ражнения. И Используя этот результат, можно представить любой частичный порядок (конечный или бесконечный, однако бесконечные отношения сложно изобразить на конечных листах бумаги за конечное время!) изображением мно- жества соответствующей цепей. Полученная диаграмма называется диаграммой Хасса. Пример 5.1. Отношение р = {(т, у): х — множи- тель у}, определенное на множестве {1, 2, 3, 4, 6, 10, 12, 20}, дает диаграмму Хасса (изображенную на рис. 5.8) и может быть разбито па линейно упорядоченные под- множества {(1, 2, 4, 12), (1, 3, 6, 12), (2, 6), (4, 20), (2, 10, 20)}. Этому разбиению эквивалентно следующее 173
множество линейных порядков: {(2, 6, 12), (1, 3, 6), (1, 2, 10, 20), (2, 4, 20), (4, 12)}. Заметим, что по срав- нению с отношениями, изображенными на диаграммах в § 2 гл. 2, хотя 1рх для всех х е {1, 2, 3, 4,6,10,12, 20}. па этом рисунке отсутствуют восемь стрел, выходящих из 1. Это достигается неявным представлением свойств рефлексивности и транзитивности. II Пусть дано (Л, С) п В s А. Разумно задать вопрос: будет ли В ограничено сверху (снизу) элементами мно- жества А? Далее мы можем искать наименьшую верх- нюю грань (наибольшую нижнюю грань), которая обо- значается sup (inf) (читается супремум (инфимум)). Эти понятия были полностью определены в § 5 гл. 2. Будем их использовать для характеристики решетки. Определение. Решеткой называется частично упорядоченное множество (Л, С), в котором каждая па- ра элементов имеет супремум и ипфимум. Для заданных х, у е А эти грани будем записывать следующим об- разом: * Л у =inf ({*> г/})> х V у = sup ({х, у}), и Пе всякое частично упорядоченное множество явля- ется решеткой. Например, частично упорядоченное мно- жество пз примера 5.1 не является решеткой, поскольку 12 V 20 не определено. Определив операции Д п V между парами элементов в частично упорядоченном множестве, расширим это по- нятие естественным образом. Положим Л X = f\xexx — infX, V X == Vxsx* = sup X, Это обозначает sup X и inf X конечного непустого мно- жества X. Легко показать, что существует много специальных видов решеток, в которых можно производить различные операции. Ограничимся рассмотрением трех таких типов. Определепие. Решетка L, обозначаемая (А, Д, V), дистрибутивна, если она подчиняется дистрибутив- ным законам ®Д(г/Vz) == (^Ду) Х/(^Дг), для всех х, у, L. II Не все решетки являются дистрибутивными, 175
Пример 5.2. Решетка, изображенная на рис. 5.9, не является дистрибутивной, поскольку b/\(d\Jc) = b/\e = Ь, тогда как (&Ad)V(&Ac) = аVa — а‘ и Предложение. Пусть в дистрибутивной решетке (L, /\, V) выполнены соотношения х\1у — х\1ъ^ x[\y = x[\z. Тогда у — z. / / Доказательство. Сначала A заметим, что из определения inf х. \ / и sup х. \ / a) a[\b = Ь/\а, a\/b = b\/a’, б) а/\Ь^а^.а\/Ъ; рИс. 5.9 B)(«AWa = a> a/\(a\/b)^a. Поэтому У = I/V(j/A^ “ y\Z(z/\x) - (pV^A^V*) = -= «VCM*) = z\I^Nx} = z- // Определение. Предположим, что (L, A>V) — решетка и 0, 1 е L такие, что 0 < х < 1 для всех х е L (об элементах 0 и 1 скажем немного позже). Тогда i\/l=*l, х[\1 — х, x/\Q = Q, х\]^ — х для любого х е L. Такая решетка называется решеткой е дополнениями, если для любого х s L существует х s в L такой, что х/\х = 0, х\] х = 1 (х называют дополнением х). / Предложение. Если (L, A>V)— дистрибутивная решетка с дополнениями, то дополнения единственны. Доказательство. Предположим, что х, у, z е L и X\jy = zV2(== !)» xl\y =-x/\z(=Q). Тогда из предыдущего предложения следует, что y = z.H Третий, и последний специальный тип решеток, кото- рый мы определим, необычен в том смысле, что он не дает нам ничего нового для конечных решеток. Чтобы подчерк- нуть ключевой момент исследования, дадим другое опре- деление решетки в форме предложения. 175
Предложение. L является решеткой тогда и толь- ко тогда, когда VX и /\Х существуют для любого непу- стого конечного подмножества X из L. (Этот факт можно доказать индукцией по числу эле- ментов множества X’, оставляем его в качестве упраж- нения.) // Если L — решетка и в ней определен элемент Д£, то он обозначается символом 0 и называется наименьшим элементом L, Аналогично, если в L существует элемент VZ, то он обозначается символом 1 и называется наи- большим элементом А; по определению V0-=O. Определение. Решетка L называется полной, если VX и /\Х существуют для всех подмножеств X из L. В Все конечные решетки являются полными. Рассмот- рим, однако, множество Q с обычным отношением по- рядка С и бесконечное множество аппроксимаций числа я, каждое из которых имеет на один десятичный знак больше. Верхняя грань этой последовательности, очевид- но, есть я, однако neR\Q, и, следовательно, (Q, <) не является полной решеткой. Решетка (R, <) является полной, и Q s R. Можно показать, что любая решетка может быть рас- ширена до полной решетки, однако мы не будем зани- маться этим вопросом. 5.2. Булевы алгебры. Мы уже интенсивно занимались алгеброй множеств и упоминали об относительно «логич- ной» арифметике. Сейчас дадим формальное определение общей булевой алгебры, названной так в честь матема- тика XIX в. Дж. Буля. Алгебра множеств — это част- ный случай булевой алгебры, и, хотя различные булевы алгебры структурно подобны, следует заметить, что не все они включают в себя множества обычным образом. Определение. Булевой алгеброй называют мно- жество S& вместе с тремя операциями V, Д и “ (V на- зывают операцией или, /\ — операцией и, а * — опера- цией дополнения или же операцией не; кроме того, пер- вые две операции часто называют дизъюнкцией и конъ- юнкцией соответственно). Бинарные операторы V и Д и унарный оператор " (обычно записывается над операн- дом, папример а) вместе с двумя различными элемента- ми которые обозначаются символами 0 и 1, удовлет- воряют следующим аксиомам. Для произвольных элементов а, Ь и с в Я'. а) а V J = Ь Vа; б) a V(b V с) *=(а V b) V с; 178
в) sVO = «; г) о Va = 1; д)аДЬ = ЬДа; е) аД(дДс) = (аДЬ)Дс; ж) аД1 = а; в) аДа = 0; и) аД(Ь\/с) = (аЛЬ)\/(йЛс); к) aV(bAc) = («V^)A(«Vc). Таким образом, и и или коммутативны, ассоциативны и дистрибутивны одна по отношению к другой. Каждая из этих операций имеет единичный элемент, и, когда элемент комбинируется вместе со своим дополнением посредством и]или, в результате получается единица по отношению к или/и соответственно. Названия операторов, использованные выше, являют- ся именами, которые непосредственно связаны с компь- ютерной логикой, используемой при построении схем. В других булевых алгебрах может быть более подходя- щим читать V как объединение, наименьшая верхняя грань или supremum, а Д как пересечение, наибольшая нижняя грань или infimum. (Иногда операцию Д обо- значают также &.) Операция а может записываться как а' или *"] а, В Булеву алгебру можно определить как дистрибутив- ную решетку с дополнением. Поэтому по аналогии с бу- левой алгеброй (^(Х), U, П, ') для данного непустого множества X из результатов предыдущего параграфа можно вывести ряд следствий. Доказательства некоторых из них оставлены в качестве упражнений. Наиболее важ- ными из этих следствий являются следующие. Инволютивный закон (или закон двойно- го отрицания). Дополнение дополнения х, x&SB (т. е. в рассматриваемой булевой алгебре), есть х. Закон поглощения. Для любых a, b sS3 спра- ведливы соотношения аД(а\/Ь) == а, а\/(а/\Ь) =* а. Закон идемпотентности. Любой элемент S3 идемпотентен по отношению к операциям Д и V. Законы де Моргана. Для любых а, b еS3 спра- ведливы соотношения al\b*=a\Jb, а\/b a/\fi. Из инволютивного закона и законов Моргана следу- ет, что если мы берем булеву алгебру S3 (более точно, 12 д. Кук, г. Вей» 177
(^. V- л,")) и образуем новую систему или путем отображения каждого х е & в 5, или использованием операций Д и V» т0 Л, V > ~) также булева алгебра. Этот факт известен как принцип двойственности. Дей- ствительно, каждый из законов Моргана может быть получен из других путем отображения каждого элемента в его дополнение. Сейчас мы выведем теорему, которая показывает, в какой стандартной форме могут записываться булевы выражения; непосредственным следствием этого является утверждение, что достаточно двух операторов, чтобы описать все бинарные функции. Как всегда, введем вна- чале необходимую терминологию. Определим две общеупотребительные логические связ- ки следующим образом. Говорят, что булевы формулы А и В эквивалентны (записывается в виде В или Л**В), если они выражают одну и ту же функцию. В простейшем случае это — отношение эквивалентности. Таблица 5.3 АВ А-+В О О О 1 1 О 1 1 1 1 О 1 Аналогично говорят, что формула А имплицирует фор- мулу В (записывается*) А -* В), если имеют место ус- ловия, изображенные в табл. 5.3. (Таблицы такого типа часто называют таблицами истинности.) Заметим, что стрелки используются во многих различ- ных контекстах. Поэтому надо обращать особое внима- ние на расшифровку их значения. Таким образом, А -* В это то же самое, что и (<“|Л)\/2?, э. А В это то же самое, что и (А-> 5)Д(5-> А). Логически А -* В означает «если А, то 5» (т. е. если А справедливо, то В также справедливо и обычно так и читается. Дру- гие названия для символов -► и -»-► это условный и без- условный операторы соответственно. Обычно вводят операции, которые обозначают отри- *) Это выражение называют также импликацией,— Примеч. 178
цания бинарных связок, такие, как 4^5=П(ЛЭВ), Л|5=П(ЛД5), Ла 5=П(4->В), 4|5 = "](4V5). Сейчас можно описать все бинарные операции {О, I}2 -> -> {О, 1} (здесь стрелка находится между двумя множе- ствами и, следовательно, обозначает множества, которые являются областью определения и множеством значений; не следует путать с логическим оператором ->) в крат- табл. 5.4. Более того, мы Таблица 5.4 А В 0 0 1 0 0 1 1 1 Функция /8 1 0 0 0 А 1 В 1» 1 0 0 1 А =В fid 1 0 1 0 ПЛ /11 1 0 1 1 А-» В 1 1 0 0 ~]В 1 1 0 1 В -> л hi 1 1 1 0 Л t в fit 1 1 1 1 1 кой форме, как показано в А 0 1 0 1 Ьункцпя В 0 0 1 1 /о 0 0 0 0 0 h 0 0 0 1 А Л В /а 0 0 1 0 В А /з 0 0 1 1 В А 0 1 0 0 А Л В /б 0 1 0 1 А /б 0 1 1 0 А^В h 0 1 1 1 А V В можем описать все отображения из {О, 1)п в {0, 1}, ис- пользуя только t или только I (первая из них называ- ется штрихом Шеффера и обозначается «I»; в вычисли- тельном контексте t называют «не и», а I называют *) «не или»). Заметим, что операции t и I являются удоб- ными сокращениями, но они, например, неассоциативны. Следовательно, по определению A t В t С есть (А Д В Д /\С)', а, например, не ((АД5)'ДС)'. Говорят, что множества операторов {!} и {4} адекватны. Сейчас мы сформулируем теорему и дадим ее конструктивное дока- зательство, т. е. не только докажем справедливость ут- верждения теоремы, но и дадим метод получения резуль- тата. Теорема. Любое отображение {0, 1)" -* {0, 1} мо- жет быть представлено в виде формулы, содержащей только оператор t или только оператор I. Доказательство. Рассмотрим произвольное ото- бражение /: {0, 1}” -+ (0, 1} от переменных р\, .. ., рп (neN). Функция может быть полностью определена •) Функция А | В называется также стрелкой Пирса.— При- .еч. ред. 12* 479
таблицей истинности, имеющей 2П строк*). Утвержде- ние очевидно, если в каждой строке таблицы результат равен 1 (тогда / = 1) или в каждой строке результат равен 0 (тогда / = 0). В противном случае существует т строк таблицы, в которых результат равен 1. Рассмотрим выражения **) Bi, .,., Вт', каждое В, соответствует упорядоченному набору (Ял, . •В1п), где Во равно или Р), или И Л в зависимости от того, равно Pi единице или нулю для данной строки таблицы. Тогда f = в.у в2у.. .у Вт = (В^ в2у.. .у вту = = (^л . - л5-)' = (я; t я; t... t я;), я j = (Яц д в i2 ... а в in) = Яц | Bi21... f Bin, Более того, если какое-либо Btj соответствует нулю в таб- лице, то надо брать выражение г-| pj, которое можно по- лучить при помощи тождества (^й)==(а| а). Итак, утверждение доказано. В компактном виде этот результат можно записать следующим образом: т / л \ а) /“V ЛМ (•) i==l ^-=1 ] т / п \ /“ t t Вц . i=l \j=l } б) Аналогично, применяя законы де Моргала к (»)’ или же рассматривая строки, содержащие нуль, получим 2п—т / п \ 1=“ I II (**) i-=l \J=1 / Следствием этого результата является тот факт, что каж- дое выражение выводимо, а отсюда в свою очередь сле- дует, что число элементов в булевой алгебре, порожден- ной pi, ,.., рп, равно 2”, И *) Каждая строка соответствует некоторому двоичному на- бору длины п и содержит значения функции на этом наборе.— Примеч. ред. *♦) Пусть (аи, ..., ai„), ..., (ami, ..., amn) — все наборы, па которых функция / равна 1,1 т < 2". Для каждого такого набо- ра образуем конъюнкцию = Bi{ Д ... Д где Вц = рь, если аи, = 1, и Bi; = 1 рк, если а,ь = 0 (к — 1, ,, п). Легко видеть, что / — В\ У ,,, V Вт.— Примеч. ред. 180
Пример 5.3. Получим представлепие для функции у, используя только операцию t; таблица истинности функции / дана в виде табл. 5.5. Таблица 5.5 X ь Z i X V г 7 0 0 0 0 1 0 0 1 0 0 1 1 1 0 1 1 0 1 0 1 1 1 0 0 0 1 1 0 1 1 1 1 Используя описанный метод, получаем 1 Ку' /\У Ку' У^Ку'МУ^КуМ- Таким образом, /' = (*'A/A2)'A(^AMz')'A A(*A/Az')'A(*A/Az)'A(MM*)'> и поэтому / = (х't у't z) t (У t у t z') t (x f y't z') t \{x t y't z)f (x t у t z), где x = x t x, у' = у t y, z •= z t z. / Выражение (*) называют дизъюнктивной нормаль- ной формой (ДНФ)—она имеет вид дизъюнкции конъ- юнкций (или от и); выражение, полученное в (•*)*), называется конъюнктивной нормальной формой (КПФ). В заключение отметим, что утверждение в булевой алгебре (логическая формула), которое всегда принима- ет значепие 1, называется тавтологией, а выражение, ко- торое всегда принимает значение 0, называется проти- воречием. 5.3. Некоторые приложения булевой алгебры. Суще- ствует ряд проблем, например в комбинаторике, которые можно решить наилучшим образом в подходящей буле- вой алгебре. Другой путь применения булевой алгебры заключается в моделировании реальной ситуации, или, *) Па самом деле конъюнктивной нормальной формой вазы- 2п— Щ /71 \ вают выражение вида / = ,\ I V ~1 (см. к») из доказа- i=l 1 тельства теоремы.— Примеч. ред. 181
другими словами, в интерпретации булевой алгебры в терминах, относящихся к рассматриваемой задаче. Этот метод может быть применен в областях, которые так широко распространены, что у них отсутствует клас- сификация. Мы рассмотрим только одно приложение, а именно комбинационные и переключательные схемы*). Другие области приложений будут представлены в виде отдельно выбранных примеров и упражнений. I Источник питания I___________ Рис. 5.10 С этой точки зрения необходимо подчеркнуть, что мы занимаемся только некоторыми вопросами построения и преобразования схем; формальное исследование лежит за пределами этой книги. Сначала давайте посмотрим, как выражения булевой алгебры могут быть использованы для описания и определения схемы, состоящей из про- водников и переключателей. Схема, изображенная на рис. 5.10, состоит из пяти переключателей, источника питания, лампы и соединяющих проводников. Из диа- граммы нетрудно видеть, что ток течет по замкнутой цени тогда и только тогда, когда переключатель А зам- кнут и (или) переключатели В и С оба замкнуты или переключатели D и Е оба замкнуты. Алгебраически это можно записать в виде M((W)VUM£)). Перед тем как продолжить изложение, сделаем не- сколько замечаний о представлении элементов электри- ческих схем с переключателями в виде диаграмм. Един- ственный сегмент схемы, в котором будет отличие между рассматриваемыми примерами,— это верхняя часть схе- мы, содержащая переключатели; следовательно, можно *) Эти схемы называются также схемами из функциональных элементов и контактными схемами, соответственно,— Лримеч. ред. 182
не изображать остальной части схемы. Внутри схемы не- которые переключатели могут быть взаимосвязаны (рпс. 5.11, а) и, возможно, могут работать так, что когда один переключатель включен, то другой должен быть выключен и наоборот (рис. 5.11, в). Основные методы расположения переключателей — это последовательный (рис. 5.11, с), что соответствует связке и (т. е. А/\В), и параллельный (рис. 5.11, d), что соответствует связке или (т. е. /IVВ), Отметим, наконец, что на диаграмме есть совершенно лишние переключатели, и их для удоб- ства можно обозначать теми ate «именами» (рпс. 5.11, е). Таким образом, любую операцию в булевой алгебре можно представить при помощи схемы и наоборот. Сле- довательно, для получения эквивалентных схем надо перейти от первоначальной схемы к соответствующему ей выражению в булевой алгебре, затем к «более про- стому» (или более желаемому) выражению и, наконец, к схеме, соответствующей этому выражению. 183
Пример 5.4. Упростить схему, изображенную на рис. 5.12. Этой схеме соответствует следующее выражение: X^X'/\Y)\/(Yf/\Z))/\W')\/(Z/\X/\W))^ ~XA((X'AYA^V(^AM^V(MXAW9) = = (XAX'AyA^')V(XA^A2A^')V(^A^A^A^) = =(XA^A2A^')V(^A2A^)=(^A2)A((^A^')V^). Последнее выражение соответствует схеме, изображенной на рис. 5,13, Рис. 512 ---W'--- W------- Рис. 5.13 X Мы уже уделили достаточно внимания схемам с пе- реключателями. Перейдем теперь к комбинационным схемам. Основные компоненты таких схем — элементы. В наиболее общей форме элемент является устройством, имеющим п входов и m выходов (zn, п е N). На каждый вход может подаваться один из двух бинарных сигналов; представим их как 0 и 1, одпако любая другая система из двух различных значений также нам подходит. В ре- альной ситуации обычно мы имеем сигналы в окрестно- сти 0 вольт (например, от 0 до 0,8 вольта), которые представляются нулем, и в другой окрестности — в рай- оне 4 вольт (скажем, между 3 и 5 вольтами), которые представляются единицей. Отсюда определяются выход- ные значения (0 и 1). Можно ожидать, что нам понадо- бится достаточно много различных элементов, чтобы представить все возможные функции {0, 1}п -* {0, 1), однако, как мы увидим далее, это не так. Схемам, не име- ющим временных задержек (в дальнейшем только такие схемы мы и будем рассматривать), соответствует един- 184
ственный тип элементов. Однако это не очевидно. Струк- тура схем станет более ясной, если вначале мы рассмотрим три типа элементов, изображенных на рис. 5.14. Самым Рис. 5.14 не простым является элемент не; его действие определяется тождеством с = *"] а (с = не а), определяемым табл. 5.6. Таблица 5.6 INPUT(a) OUTPUT(c) О 1 1________о Аналогично элементы и и или определяются табл. 5.7, Таблица 5.7 INPUTS OUTPUTS (е) а ь И или 0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 1 Элементы и и или могут также иметь несколько вхо- дов; в этом случае они определяются аналогично, т. е. выходной сигнал элемента и равен 1 тогда и только тогда, когда на всех входах сигнал равен 1, и выходной сигнал элемента или равен 1 тогда и только тогда, когда какой-либо из входных сигналов равен 1. Алгебраически выходной сигнал элемента не имеет вид: *“| (входной сигнал), выходной сигнал элемента и имеет вид: (сиг- нал первого входа) Д (сигнал второго входа) Д... и, наконец, выходной сигнал элемента или имеет вид: (сиг* нал первого входа) V (сигнал второго входа) V,,, Что- 185
бы представить более сложные функции, элементы мож- но «соединять» различными способами. Пример 5.5. Рассмотрим схему (более точно, часть схемы, которая нас интересует), изображенную на рис. 5.15. Возвращаясь «назад» от выходов схемы, по- лучаем a: = ((aV(aA^))A(Z/))'» У = (&АС)'- Поэтому М(Ф)Лт)ЛЖ)' = = ((«Л(« W)A(W)')' - (M(bAc)')' (по закону поглощения). Таким образом, одно из возможных упрощений схемы изображено на рис. 5.16. И Следовательно, мы можем использовать булевы вы- ражения для анализа и упрощения сложных схем. Рас- смотренный пример показывает, как можно осуществлять такие операции. Существуют также устройства, которые реализуют другие логические операции. Наиболее важными явля- ются элементы пе и и не или; они изображены на рис. 5.17. Используя множество таких элементов, при помощи булевых выражений можно получить требуемую схему непосредственно по таблице истинности. 188
Пр им ер 5.5 (продолжение). Не останавливаясь на формальностях, заметим, что каждое выражение в скоб- ках в окончательной форме / (см. выше) представляет вход для последнего элемента на рис. 5.18 и может быть вычислено с помощью элементов предшествующего ряда не или Рис. 5.17 (Части схемы, обведенные штриховыми линиями, практи- чески не требуются, поскольку для многих электрических элементов дополнение к выходу также доступно из вспомогательного выхода.) Отметим, что полученная схе- ма в общем случае не будет минимальной в смысле чис- ла используемых элементов. И В завершение рассмотрим два примера, которые пока- зывают, как булева алгебра может быть использована в задачах иного рода. Пример 5.6. Предположим, что справедливы следу- ющие утверждения: а) знание структур данных необходимо для совер- шенствования дисциплины ума; б) только опыт программирования может создать дис- циплинированный ум; 187
в) для того чтобы написать компилятор, надо иметь возможность анализировать задачи; г) недисциплинированный ум не может анализиро- вать задачи; д) всякий, кто писал структурные программы, может рассматриваться как опытный программист. Можно ли из этих предположений определить спра- ведливость нижеследующих утверждений: а') опыт написания структурных программ необхо- дим для того, чтобы быть в состоянии написать ком- пилятор; б') знание структур данных является частью опыта программирования; в7) анализ задач невозможен теми, кто игнорирует структуры данных; г') опытный программист, который писал структур- ные программы, в состоянии анализировать задачи и имеет дисциплинированный ум, является программистом, который мог бы написать компилятор? Чтобы ответить на эти вопросы, мы могли бы иссле- довать логические следствия утверждений, однаки для того, чтобы проиллюстрировать используемую технику в более сложных ситуациях, воспользуемся нашим знани- ем булевой алгебры. Сначала необходимо закодировать наши утверждения. Пусть <8 — множество всех программистов, U — те из них, кто знает структуры данных, V — те из них, кто имеет дисциплинированный ум, W — те из них, кто является опытными программи- стами, X — те из них, кто мог бы написать компилятор, У — те из них, кто может анализировать задачи, Z — те из них, кто может писать структурные про- граммы. Тогда имеем а) L7= V; б) WsV; bJ X s У; г) V а У; дУ WsZ; a') ZsX; б') UsW; b'J Y^U; И wnzn УЛ VsX, Теперь видно, что а') непосредственно следует из в), г), б) и д) до транзитивности; аналогично в') следует из г) и а). Также WHZn УЛ 7= IPП УЛ 7= У П V~YsX 188
Таким образом, г*) также справедливо. Утверждение б') не может быть выведено из а)—д), поскольку мы только знаем, что IV s Z, и цепочка на этом заканчивается. / Пример 5.7. Алиса сказала, что Барбара и Клара говорят правду, а Клара сказала, что Элспет и Фиона или обе говорят правду, или обе лгут. С другой стороны, Деби считает, что по крайней мере или Алиса, или Бар- бара говорят правду, тогда как Барбара утверждает, что только одна из двух — Алиса или Фиона — была правди- вой. Элспет считает, что Алиса и Барбара всегда говорят правду, однако Фпона уверена, что Барбара и Клара обе не могли сказать правду. Кому мы должны верить? Рассмотрим множество утверждений вида «Алиса (не) говорит правду», «Барбара (не) говорит правду», и пусть А содержит только те утверждения, в которых Алиса говорит правду. Пусть В, С, D, Е и F определены аналогично. Тогда, если 5 — непустое множество пересе- чений таких, что SsA ЛВ'ПС, то iS включает утверждения, в которых «Алиса говорит правду», «Барбара лжет», «Клара говорит правду». Из первого утверждения следует, что можно вывести следующий факт: если Алиса говорит правду, то то же самое делают Барбара и Клара. Это можно закодировать следующим образом: если хе А, то хе В Л С; следовательпо, АгВПС. (1) Аналогично другие утверждения могут быть записаны в виде Cs(E(\F)\J(E' HF'). (2) DsAUB, (3) Bs(BUF)\(BnF)«=(BnF')U(E'nF), (4) EsAHB, (5) F = (BnC)'« (6) 188
Из (2), (4) п (1) следует, что 5 0(7 = 0, и поэтому А — = 0; тогда из (5) следует, что Е = 0. Эти выводы мы смогли получить непосредственно из условий задачи. До сих пор наши рассуждения были эффективны потому, что мы пользовались тем, что правдивый человек говорит правду. Однако пока мы не использовали ничего о спра- ведливости того, что говорит лжец. Если мы ограничимся фактором, что все, что говорит лжец, неверно, то можем заменить множество включений из (1) — (6) на экви- валентные. Например, если Барбара п Клара правдивы, то, поскольку Алиса говорит, что это так, Алпса тоже правдива. Следовательно, А = ВПС, (la) C = (E0F)U'(Ez AF'), (2а) D = A US, (За) 5 = (ЕЛЕ')и(ГПЕ), (4а) Е = А Л В, (5а) F~(B(\CY. (6а) Как и раньше, Л = 0 и Ё = 0, п поэтому Алиса и Элспет никогда не говорят правду. Из (2а), (4а) и (6а) следует, что F = <F. Таким образом, из (За) и (4а) получаем D = — В = F = <В, откуда с помощью подстановки в (2а) сле- дует С = 0. Отсюда следует, что возможно только одно утвержде- ние такое, что х^А' ПВО С' ПОПЕ' ЛЕ; это означает, что Алиса, Клара и Элспет лгут, а Барба- ра, Деби и Фиона говорят правду. II Упражнение 5.5. 1. Показать, что в булевой алгебре (.^?, *, +, ') для х, у, z^Sft справедливы соотношения: а) (я + у)*(я' + у) = 2/; б) (z + «)* (z' + p) = (z * y) + (z' * x); в) ((x*z) + (y*z'))' = (z' *z) + (/ »z'). 2. Доказать, что если в {SS, *, +, ') выполняются со- отношения x*y = x*zzx + y = x + z, то у — z. 3. Из схем, изображенных на рис. 5.19 и 5.20, полу- чить «простые» схемы, эквивалентные исходным. 190
k. Получить алгебраическое представление схемы, изо- браженной на рис. 5.21, и дать табличное представление выходов х и у в зависимости от значений а и b на входе. Использовать две такие схемы для построения схемы, Рис. 5.19 соответствующей функции, определяемой табл. 5.8. Свя- зать это с арифметикой из § 3 гл. 4. 5. Построить схему, реализующую операцию не и, ко- торая имеет четыре входа и выдает на выходе 1 тогда в только тогда, когда все входы равны 0. 6. Пусть выполнены указанные здесь условия: а) все гонщики импульсивны; б) все хорошие программисты меланхоличны; в) никто не может быть и импульсивным в меланхо- личным; г) читатель меланхоличен. Таблица 5.8 р Входы Q R Выходы р Входы Q R Выходы S т 8 т 0 0 0 0 0 1 0 0 0 1 0 0 1 0 1 1 0 1 1 0 0 1 0 0 1 1 1 0 1 0 0 1 1 1 0 1 1 1 1 1 Является ли читатель хорошим программистом и/или гонщиком? 191
7. Организаторы международной конференции по компьютерам решили, что для того, чтобы на встрече не доминировали коммерческие интересы, будет только один магазин, которым будут пользоваться вместе все произ- водители компьютеров. Сами производители будут ответ- ственны за определение того, кто принимает участие в представительстве. Десять компаний — пять европей- ских и пять американских — дали знать, что они хотят принять участие в конференции. (Обозна- чим эти компании через А, В, С, D, Е и F, G, Н, I, J соответственно.) Однако из-за обязательств по контрактам и торговой политики должны появиться раз- личные ограничения. Европейские предписания требуют, чтобы G и I не могли одновременно принимать участие в конференции; аналогично не могут одновременно принять участие F, G и J. Ограничения американских производи- телей исключают участие А и D, пока G не примет уча- стия; аналогично исключаются С и D. Если Е присутст- вует на конференции, то должно присутствовать и 7, од- нако если они принимают участие вдвоем, то В не может быть там. И наконец, В и С не могут вместе принимать участие в конференции. Может ли быть достигнуто соглашение, по которому по три компании из каждой группы могут собраться вме- сте, не нарушая условий? Если так, то кто именно примет участие? § 6. Замкнутые полукольца В завершение главы мы опишем довольно узкие, но важные структуры, которые позволяют осуществлять опе- рации на подмножествах бесконечных множеств. Пока у нас нет понятий матриц и графов, мы не можем начинать обсуждение приложений, и, следовательно, мы дадим только аксиоматическое определение и покажем принци- пиальную разницу между полукольцами и похожими на них на первый взгляд полями. Определение. Замкнутым полукольцом называет- ся множество S с двумя бинарными операциями ® и ® такими, что а) ® ассоциативна; б) существует единичный элемент по отношению к ®, который будем обозначать символом 0; в) ® ассоциативна; <92
г) существует единичный элемент по отношению к®, который будем обозначать символом 1; д) для всех л: е 5 ®®0 = 0 = 0®«; е) ® коммутативна: ® ® у = У ® х для всех х, y&S; ж) ® идемпотентна: х®х = х для всех x^S; в) ® дистрибутивна относительно ®: х ® {у ф z) = (г ® у) ф (х ® z) для всех х, у, z @ S, (х ф у) * z = (я ® z) ф (у ® z) для всех х, у, z е S; и) сумма счетного числа элементов из S существует и единственна, т. е. не зависит от порядка суммирования; к) ® дистрибутивна относительно бесконечных счет- ных сумм, т. е. (2 «А ® (2 М = 2 («i ® bj), \ < / \ 3 J йз где 2 at = ai Ф а2 Ф • • • > 2 bj = Ьх Ф b2 ф ...» < 3 2 (<Ч ® bj) = (ax ® Ьх) ф (ах ® Ь2) ф ... ... ф (а2 ® Ьх) Ф (а2 ® Ъ2) ф ... ф (а8 ® Ьх) ф ф (а8 ® Ь2) ф ... ф ... Эта достаточно странная структура часто использует- ся в алгоритмах замыкания для графов (гл. 7 и 8). Что- бы проиллюстрировать результаты, которые могут быть получены в замкнутых полукольцах, сравним системы (Z2, *, +) и (Z2, Л, V), где операции определены табл. 5.9, Таблица 5.9 ♦ 0 1 + о 1 Л 0 1 v 0 1 1 0 0 0 0 1 1 0 1 0 1 0 1 0 0 0 0 1 1 0 1 1 1 13 д. Кук, г, Бей» 193
Рассмотрим определение операции замыкания. Резуль- тат а* применения этой операции к элементу а записы- ваем в виде а* = S а1, 1—0 а°=1, а’ = а, а?=*а*а и а* = а<-1 *в (b(Z2, Д, V) сложением является V, а умножением Д). В замкнутом полукольце (Z2, Д, V) такое определение имеет смысл и допуетимо. В частности, l* = iovi' V12V... = 1 VI VI V... = l (в силу аксиом ж) ин)). Однако если мы попытаемся те же самые вычисления произвести в поле (Z2, ♦, +), то получим 1* = 1° +11 +12 +... = 1 +1 +1 +.., Эту сумму можно вычислить следующим способом: 1 + 1 + 1 + 1 + 1 + 1 + ... = 0 + 0 + 0 + ... = 0 или же 1 + 1 + 1 + 1 + 1 + 1 + 1 + ... = 1 + 0 + 0 + 0 + ... = 1, т. е. значение суммы пе определено. Следовательно, по- нятие такого рода замыкания не имеет смысла, если его применять к полю Z2 (которое запрещает аксиомы ж) и и) полукольца). Упражнение 5.6. Проверить, что ({0, &), П, И) является замкнутым полукольцом.
ГЛАВА в МАТРИЦЫ Наше изложение теории конечных матриц (множества матриц) является более общим, чем принятое в большин- стве книг, в которых матрицы обычно определяют как линейные преобразования на векторных пространствах, используя знакомство с координатной геометрией. Хотя иногда мы будем возвращаться (§ 3) к этой интерпрета- ции, в основном будем придерживаться точки зрения, что матрицы являются реализациями абстрактных алгебраи- ческих структур в вычислительных целях. Тогда алгебра абстрактных структур определяет способы, как надо ком- бинировать матрицы. Сначала мы определим (§1) матричное представление бинарных отношений над конечными множествами. Затем последует более общее рассмотрение требуемых свойств абстрактной системы для того, чтобы матричная реализа- ция была разумной. А в завершение, используя резуль- таты предыдущих исследований, будет рассмотрен важ- ный случай векторного пространства над R. § 1. Матрицы и бинарные отношения на конечных множествах Формально матрицей над множеством S называется отображение М-. N, X N, -* S, р, qe= N. Обычно образ (г, у) обозначают через A/tj и изображают всю функцию массивом элементов из S, т. е. м^- л/ = "21 М22 -мп мр2. ' МРЧ- Говорят, что эта матрица имеет р строк и q столбцов и имеет размер pXq. Матрица размера р X q имеет р * q 13* 195
элементов. Когда р — <], матрицу называют квадратной. Множество всех матриц pXq над S обозначают через Л(р, q, S). Множество Л(р, р, S) будем обозначать че- рез Л(р, S). Рассмотрим бинарное отношение р между множества- ми А и В, где А !в® {нц 02, • • В {&1, &2, • • т. е. |А I — р, |В| «= q. Упорядочение элементов в этих множествах выбрано произвольно, однако, однажды выбранное, оно далее оста- ется фиксированным. Пусть это отношение р определено посредством выбора пар (а, Ь), где аеА, Ъ^В. Рассмотрим матрицу М над {0, 1), т. е. М: NpXN,-* -* {0, 1}, и свяжем элементы М с отношением р биекцией <р: ^(АХ5)-> Л(р, q, Z2) (ф отображает произвольное отношение между А и В в матрицу pXq над {О, 1}) ; ср: р->ЛГ, причем .... .. Г1» если (ai( fyep, (ф(р))ч‘ ч |о, если В случае, когда полезно подчеркнуть, что матрица М бы- ла получена из отношения р, мы будем обозначать ее че- рез Л/(р). Пример 1.1. Возьмем случай |А|=4, |В| = 3 и p = {(ai, Ь2), (ai, Ьз), («2, bi), (аз, bi), (а4, Ь2)}. Тогда соответствующая матрица М имеет вид “О 1 1“ 100 / 1 0 0 • и _0 1 0_ Таким образом, мы имеем снособ табулирования или кодирования отношения и можем закодировать отношение посредством ф или декодировать посредством ф-1. Этот процесс является отображением (i, /) в А X В или М со- ответственно. Такое представление более удобно, чем тео- ретико-множественный способ определения отношений, поскольку с ним можно обращаться формальным образом. Оно становится даже более пригодным для вычислений, 106
если наложить некоторую структуру на множество, из которого получается матрица. Возьмем опять {0, 1} и определим па этом множестве логическое сложение (или) и умножение (и). Тогда, если М и N—матрицы рХ</, соответствующие отношениям р и о, то матрица Q, пред- ставляющая отношение т, где т = {(а, 6): (а, b)sp или (а, 6)еа), определяется следующим образом Qtj — или Na) =• ^Мц + Nv (логическое сложение). Следовательно, имеет смысл называть Q суммой матриц М и N и писать Q =» М + N, подразумевая, что Q, М a N имеют один и тот же размер и Q вычисляется по правилу покомпонентного сложения Это — пример использования коммутативной диаграммы, изображенной на рис. 6.1, где производится операция на одном множестве с использо- ванием операции на другом множестве посредством под- ходящего отображения <р. С этой диаграммой обычно связывается тождество ф(р U о) = ф(р) +ф(о). С помощью этого тождества можно дать более точное определение сложения матриц: М + N — ф (р) + ф (о) = ф (р U о) = ф (ф-1 (М) U ф-1 (N)), Пример 1.1 (продолжение). Пусть А и В те же, что и раньше, и пусть c = {(ai, bi), (аь Ь2), (а2, bi), (а3, Ъ2)}. Тогда "1 1 0~ N = loo _о о 0_ Дальше будет видно, что р U а = {(ai, bi), (ai, 62), (ш, 63), (а2, 61), (a3i 61), (аз, Ь2), (а«, 62)} 197 (Р,б ) --------------------- риб <р <f (М,П)----------------------* Af+V Рис. 6.1
и, что эквивалентно, Более того, если мы возьмем множество С = {ci, С2, сз, сз) и рассмотрим отображение л между В а С, опре- деленное следующим образом: Л = {(&!, С;), (Ь1, С5), (&2, Са), (Ьз, C4), (Ьз, Сз)}, то оно может быть представлено в виде матрицы Р, где 1 Р= О О 0 0 0 1' 10 0 0 0 0 11 Очевидно, что отношение л ° р между А и С корректно определено п, следовательно, будет соответствовать мат- рице 4X5. Обозначим эту матрицу через 5. Как ее можно вычислить? Для этого надо вычислить для всех г, /, где 1 i «S 4, 1 «£ / «£ 5. В силу биекции = 1 тогда и только тогда, когда (а(, сД <= л ° р. Однако это так, если только существует некоторое Ь^В такое, что (а(, Ь)<=р и (Ъ, сДе л, т. е. (di, Cj) е Л ° р э (щ, Ь1) <= р И (&1, С|)еЛ или (а(, &г)еР и (Ьг, сДел, или (а<, Ь3)ер и (&3, сДел; или же, что эквивалентно, з Sц = М* Ръ + Mi2 * Р23 + Mi3 * P3i = 2 Mik * Pki> Й=1 Матрица S, вычисленная по такому правилу, называется произведением М и Р и обозначается через М * Р или просто МР. Рассмотрим опять естественное (коммутативное) отно- шение между двумя рассматриваемыми операторами (рис. 6.2). Тогда М * Р = ф (ф“’ (Р)»ф-1 (Л7)), Замечание. Изменение порядка ф зависят от спо- соба определения матрицы отношения; если (вместо этого) мы определим матрицу отношения следующим 198
образом: Му = 1 тогда и только тогда, когда (aj, bi) е р, то изменения порядка не точки зрения было бы бо- лее желательно иметь один и тот же порядок, это нарушило бы сложив- шуюся практику. Соответ- ствующие диаграммы в § 3 не меняют порядок, одна- ко эти соглашения естест- венны для вопросов, изу- чаемых в этом параграфе. Пример 1.1 (продол: соответствующие определе щет. Хотя с математической (р ,тс)-----2-------->- rt о р <р ф (М,Р)--------5--------»М*Р Рис. 6.2 ние). Выполним вычисления, [ым выше отношениям. По- лучаем “О 1 1 1~ о о 0_ ~1 о о _0 О О О Г “О 1 0 0 0 _ 1 looo 1 0 0 11 о 1 о о о о о 1 о 1 1“ О 1 О 1 О О 1 О О . / О 1 Если матрицы М и N имеют одинаковый размер, то их сумма существует и определяется формулой а если матрицы Р и М согласованы (И имеет размерность р X q, а Р — размерность q X г), то умножение матрицы М на Р возможно и определяется следующим образом: (ЛГР)ц = 2 Mik*pk5- k=i Хотя матрицы рассматриваются над (Z2, Д, V), мы используем символы * и + для того, чтобы иметь возмож- ность обобщения введенных выше операций (см. § 2). С этого момента обозначения Д и V будут использовать- ся лишь в тех случаях, когда общие операции им неадек- ватны. В заключительной части этого параграфа ограничимся рассмотрением матриц, представляемых отношениями на конечном множестве А, где |4|=п. Тогда все матрицы согласованы и их сумма и произведение всегда опре- делены. Из покомпонентного определения сложения сразу сле- дует, что сложение матриц коммутативно и существует 199
нулевая (п У. п)-матрица 0: 0о = 0 для всех I, j; Kt, j < п. С другой стороны, умножение матриц, вообще го- воря, некоммутативно, однако существует единица, кото- рая называется единичной (пХп)-матрицей и определя- ется следующим образом: Г. /«=1, если £ = /, и Zij = O, если i =/= /. Так, если X — матрица п X п и Y = XI, то п п У ij = A ip * Zpj = 2 ip * Ip) "1" Xlj * Ijjt р=1 P“=l Так как все 7PJ = 0, за исключением случая р = /, то в сумме все члены, исключая те, где р = ], равны нулю. Кроме того, Ijj= 1. Поэтому т. е. У = Х. Следовательно, X = XI. Аналогично IX •= X; поэтому IX = X = XI. II К сожалению, обратная по умножению матрица может не существовать; однако если она существует, то она единственна. Если матрица имеет обратную, то она на- зывается обратимой. Пример 1.2. Не существует матрицы X такой, что Доказательство. Вычисление произведения дает ’° *12 ' L0 *22 . ‘ Следовательно, какие бы значения компонент матрицы X не рассматривались, элемент (1, 1) произведения никогда не будет равен 1, откуда и следует требуемый ре- зультат. II Таким образом, множество квадратных матриц задан- ного размера с определенными на нем операциями умно- жения и сложения образует кольцо. Используя далее связь между бипарными отношения- ми на множестве и матрицами над (Z2, Д, \/), дадим следующие определения. Транспонированной матрицей М называется матрица Мт такая, что М% = Mjt (поэтому, если М получена из отношения а, то может быть получена из отношения о-1); транзитивное замыка- 200
ние M* и рефлексивное замыкание М* (изоморфны со- ответственно о+ и о*) определяются следующим образом: л/+ = s мп> м* = S мп> п=1 п=о где Мй — 1, М' = М и Л/"‘+1 = ММп (n^N). (В некоторых случаях эти замыкапия нельзя определить корректно (чтобы соответствующие ряды сходились), однако над (Z2, Д, V) определение корректно, поскольку это — замкнутое полукольцо.) В заключение заметим, что матрицы могут быть ча- стично упорядочены путем поэлементного сравнения, а именно тогда и только тогда, когда для всех i, /. Из данного определения следует, что тогда и только тогда, когда М + N «= N, при условии что + является операцией «максимум', по- добной или. Упражнение 6.1. 1. Пусть А — конечное множество и |4l=n, а М — матрица над (Z2, Д, V), соответствующая некоторому бинарному отношению на А. Доказать, что Л/+ = s (Следствием этого является тот факт, что вместо полу- кольца (Z2, Д, V) мы можем рассматривать булеву ал- гебру (В, Д, \Д “)), где В = {0, 1). Поэтому мы часто будем обозначать множество матриц п X п через М (п, В) и называть их булевыми матрицами.) 2. Доказать, что если М — конечная квадратная мат- рица над (Z2, Д, \/)’ то Л/* = (7 + Л/)+. Указание: см. задачу 1. 3. Показать, что если матрица М над (Z2, Д, V) такая, что то Мп^Мл+1 для любого rsN. В ка- честве следствия доказать, что если М имеет размер пХп и р > т, то Л/* = (/ + Л/)р, М* = Л/2’ для некоторого q такого, что 2’ > т. 4. Показать, что если существует обратная к М мат- рица М~1 (т. е. — ММ~' = 1), то она единственна. 201
Доказать также, что если N обратима п согласована с М, то (MV)-1 = 5. Доказать, что если А, В и С — согласованные мат- рицы такие, что .4 » В = 0 = 4 » С, то отсюда не следует равенство В — С. II § 2. Матрицы над другими алгебраическими структурами Мы уделяем много внимания матрицам над полуколь- цами (Z2, Д, V) н (В» Л> V» ”11) однако ничего не сказали о матрицах, чьи элементы принадлежат другим структурам. Сначала мы рассмотрим вопрос о том, что надо требовать от структуры (S, *, +) для того, чтобы матрицы над S обладали нужными свойствами. Затем об- судим технику вычислении, применяемую в ситуациях, когда операция замыкания корректно определена. 2.1. Обобщенные матрицы. Пусть (Л, ®, ®) обозна- чает множество Л(п, (S, *, +)) матриц пХл над (S, *, +) с операциями ® и ®, определенными в тер- минах * и +. Можно легко определить матрицы над про- извольным непустым множеством, однако индуцирован- ные при этом операции над матрицами могут быть не- корректными и обладать неестественными свойствами. Рассмотрим вначале операцию сложения. Если М и 1V — согласованные матрицы над 5, тогда по определению (21/® А) ц = Для получения ® использовалась только одна операция сложения +. Поэтому сложение матриц выполняется про- сто. Однако для того, чтобы операция ® была коммута- тивна и ассоциативна, теми же самыми свойствами долж- но обладать (5, +). Отсюда следует, что нулевая матри- ца Л существует тогда и только тогда, когда существует двусторонняя*) единица 0 по отношению к + в S. Ана- логично существование аддитивных обратных элементов в Л зависит от существования аддитивных обратных эле- ментов в 5. Поэтому сложение ® на Л всегда может быть *) Левая и правая,— Примеч. ред. 202
определено. Причем, хотя для того, чтобы (Л, ®) стало коммутативной группой, требуется выполнение многих свойств на (S, +), многое можно получить даже тогда, когда операция + не обладает достаточным набором хо- роших свойств. В противоположность этому умножение в Л требует гораздо большего от S. По аналогии с матрицами вад (Z2, Д, V) положим (M®N^ = ^Mik»Nhl. h Поскольку суммирование проводится в S, то для коррект- ного определения умножения в Л необходимо, чтобы ре- зультат не зависел от порядка суммирования. Это будет выполнено, если сложение в S ассоциативно. Не следует ожидать, что умножение в Л будет комму- тативно; даже (так как {Л, ®), зависит от (S, *) и (S, +)) для того, чтобы обеспечить ассоциативность в (Л, ®), требуется больше, чем ассоциативность в (5, *). Рассмотрим следующий пример, в котором будут выполне- ны левая и правая дистрибутивность * над +, ассоциа- тивность в (S, *) и ассоциативность и коммутативность В (S, +). Пример 2.1. Пусть Л/, N и Р — матрицы размерно- сти 1X2, 2ХЗпЗХ1 соответственно. Тогда ((Л/®А)®Р)11 = 2 (Л/®А')Ъ * Рд = i Л/н * Рд= = ((Л/ц*Ац) + GV12^V21)).Pn + ((Л/h^Vx,) + 4" (Л/12 * А 22)) * ^21 Л" (('^ 11 * 1з) Л" (Л^12 * А 23)) * Р31 = = ((Л/ц * Ап) * Рп) + ((ЛД2 * А21) * Рп) + + ((Мц*А12)*^21)Л- ((Л/12*А22)*Р21) л- (P/11*A13)*PS1) + Л"((Л/12 * А23) * Р31)=(Л/и * (Л Ц * Рц)) + (Л/12*(А21*Рц))-|- + (ЛА1*(А12*Р21))Л-(Л/12*(А22*Р21))+(ЛД]*(ЛГ1з*Р31))Л- Л- (Л^12 * (АГ23* з1))=(Л/ц * (Л н * Рц)) + (Л/11*(А12*Р21))-|- + (ЛЛ1*(АГ13»Р31)) + (ЛД2.(АГ21*Р11)Л- (ЛД2*(А22*Р21))Л- Л- (Л/12 * (Аг2з * Рsi)) = Л/ц * ((Аи * Рц) + (Aj2 * P2i) + 4-GVi3*P8i)) Л- Л/12*((А21*Р11)Л-(А22.Р21) + (А2з*^з1)) = = S Л/ц * I 2 Nii. Рд ] = (Л/ ® (N ® Р)) i=l \J=1 / /И 203
При проведении выкладок предполагалось, что + ассоциа- тивна, поэтому некоторые скобки были опущены. II Пока все это выглядит не очень оптимистично, по- скольку лишь небольшое число структур может удовлет- ворять условиям, накладываемым па (S, *, +). Заметим также, что для существования единичной матрицы тре- буется, чтобы: a) 0*z = 0 = z»0 для всех х5-?, где 0 —аддитив- ная единица в S (напомним, что это условие не являет- ся аксиомой поля); б) S должно иметь двустороннюю мультипликативную единицу. Тем не менее можно проверить, что если (S, *, +) — кольцо пли поле, тогда все вышеуказанные условия вы- полнены и {Л, ®,ф)—кольцо. Понятия упорядочения и замыкания матриц над бо- лее узкими структурами, такими как упорядоченные поля и т. п., становятся слишком сложными и поэтому обсуж- даться не будут. Как уже отмечалось в упражнении 6.1, мы можем рас- сматривать (Z2, Д, V)) как Л{п, В). Аналогично мы можем обобщить вычисления на другие родственные алгебраические структуры, однако требуется тщатель- ность, чтобы сформулировать условия на то, какую си- стему попользовать. Например, из Z2 s Z3 путем обычного включения Z2 с:_> Z3(A «=-> В обозначает тождественное отображение на А, где A S В) следует, что А <= Jit(п, Z2) => А е= Л(п, Z3), Пусть теперь дана матрица из 0 и 1. Спрашивается, оп- пределена она па {0, 1) или же на {0, 1, 2)? Это необхо- димо знать для перехода к построению арифметики. Ко- нечно (как будет показано в § 3), все это вависит от то- го, что мы пытаемся вычислять. Аналогичные проблемы возникают с любыми включениями, особенно Л{п, В), Л(п, Z2), Л(п, Z), Л(п, Zm), ЛЦп, Q) и JT(n, R). 2.2. Алгоритм Уоршолла. В это.м разделе мы опишем быстрый способ вычисления (транзитивного или рефлек- сивного) замыкания квадратных матриц над (Z2, Д, V)- Этот способ — один из вариантов метода Уоршолла; пред- ставим его в виде программы. Если М — матрица размер- ности пХп над (Z2, Д, V), то ее можно преобразовать в М+ следующим образом: for / from 1 to п do for i from 1 to n do 204
if i / and M() = 1 then for к from 1 to n do Mu *- Mih V мл. Чтобы вычислить M*, мы можем прибавить I пли в нача- ле, или в конце, используя соотношение 21/* = (Л/ + /)+ = ЛР +Д Пример 2.2. Пусть -о 1 1 0 0- 0 0 0 1 1 м = 0 1 0 0 0 0 0 0 0 0 _0 0 1 1 0_ тогда, используя алгоритм, заменим 0 на 1 в следующих элементах: (1, 4), (1, 5), (3, 4), (3, 5), (5, 2), (5, 5), (2, 2,), (3, 3). (2, 3), Получим матрицу _0 1 1 М+ = О 1 1 О 1 1 ООО 1 1 1 о 1 1" 1 1 о 1 О 1 1 . и Мы не будем доказывать, что программа выполняет нужные действия, однако отметим, что смысл программы состоит в том, что если i¥=/ и Л/о = 1, то (i, /) ео’ для некоторого р < п, где о — отношение, порожденное М. По- этому заменим г-ю строку на дизъюнкцию i-й и /-й строк, чтобы указать, что все, что относится к /, также относит- ся и к I. Очевидно, что при i = / выполнение этого шага не да- ет никакого выигрыша. Основная сложность проверки пра- вильности программы — убедиться в том, что ничего не пропущено. Читатель сможет доказать это самостоятель- но, прочитав гл. 7. Метод Уоршолла дает значительный выигрыш по срав- нению с прямым использованием определения замыкания; он может быть еще улучшен, однако это требует исполь- зования более сложных структур данных, и поэтому мы не будем больше этим заниматься. Этот метод можно многими путями приспособить для получения различных оценок, сязанных с матрицами (от- ношениями), простейшим из которых является понятие 205
«расстояния» между элементами множества, связанными отношением о. Расстояние между двумя точками х и у у)) равно наименьшему п такому, что ne.N и у е е= оп(л). Если М — матрица, соответствующая о, то, заме- няя циклы следующим образом, получим требуемый ре- зультат: if Мц 0 (hen for к from 1 to п do if MSk 0 and (Л/.л = 0 or M<k > Mlt + Mik} then Mih MiS + MjK. Здесь используется арифметика над Z (а не пад Zj). Пример 2.3. Применение описанной выше процеду- ры к матрице из предыдущего примера дает -0 1 1 2 2~ 0 3 2 1 1 0 1 3 2 2 . // 0 0 0 0 0 _0 2 1 1 3_ Упражнение 6.2. 1. Определение. Говорят, что две (пХп) -матри- цы X и У над полем F подобны над F, если существует обратимая матрица Р над F такая, что X = P-'YP. II Показать, что отношение, индуцируемое подобием на F), является отношением эквивалентности и что матрица 1 подобна только себе. 2. Показать, что если А, В^Л(п, F) для некоторого п е N и некоторого поля F, тогда (Л+5)Т«=ДГ + ЯГ, (АВ)Т = ВТАТ. 3. Определение. Стохастической матрицей называ- ется действительная матрица над ({х: 0 < х «£ II, *, +) такая, что сумма элементов в каждой строке равна 1. II Показать, что множество 3X3 стохастических матриц не замкнуто по отношению к сложению, но замкнуто по отношению к умножению. Установить, какпе свойства поля (R) при этом использовались. § 3. Матрицы и векторные пространства Результаты § 2 показывают, как можно применять матрицы для проверки выполнения отношений между ко- нечными множествами соответствующих размеров. Цель 206
этого параграфа — показать, как использовать матрицы над полем (К, *, +) ( далее просто, R) для ток?, чтобы выполнять некоторые преобразования, в частности линей- ные преобразования в векторном пространстве V над R. В замечании из § 4 гл. 5 было установлено, что если Т <= eEnd(I/) — множество линейных преобразований V, то {(х, Тх): х е D Е V X V является бинарным отношением над V. Мы птцем резуль- тат применения линейного преобразования на V в Л(п, R), где п = dim (V). Возможны два обобщения. Первое — рассмотрение произвольных полей, второе — линейные преобразования между векторными пространствами произвольных размер- ностей, которые могут быть определены аналогичным об- разом в Л(п, m, R). Так как эти обобщения нам не по- требуются, то в дальнейшем рассматривать их не будем. 3.1. Матричные представления линейных преобразова- ний. Операции сложения и умножения матриц в Л (и, R) неявно были определены в § 2. Если A s Л (n, R) имеет элементы 4Ц и/. s R, определим АЛ е Л{п, R) как мат- рицу с элементами A4(J. Эту операцию называют умноже- нием матрицы на скаляр. Поскольку Л(п, R) играет центральную роль в оставшейся части этой главы, то по- лезно перечислить все его свойства относительно опреде- ленных выше операций. Единичную матрицу в Л (n, R) будем обозначать через I при всех п е N. Предложение. Л(н, R) является линейной алгеб- рой. II Мы не даем доказательства этого факта. Рекомендуем вначале проверить выполнение аксиом линейной алгебры для Л (2, R), после чего будет видно, как можно постро- ить доказательство в общем случае. Надо показать, что: а) Л{п, R) является векторным пространством; б) Л(п, R) — кольцо; в) умножение матрицы на скаляр обладает следую- щим свойством: А(АВ) = (АД)В=А (/.В) для всех А е R, А, В е= Л(п, R). Полезно пметь специальное обозначение для подмно- жества обратимых матриц из Л (п, R). Обозначим это подмножество через GL(n, R) = {А е=Л(п, R): А~' существует). Каждое GL(n, R), п е N, определяет группу по умн^же- 207
нию. Эти группы называют полными линейными груп- пами. Пусть V — векторное пространство размерности п над R и Те End(V). Если В—{е\, .... е„} — базис в V, то очевидно, что Те, е V для всех i, 1 < i < п. Следователь- но, должны существовать tit е R (1 < I, j п} такие, что Tei = tnet + /21е2 + ... + fnien, Теп = tInej + t2,fi2 + ... + Пусть Ат — матрица вида At = ^11 (22 • • *1П f2i t-iz ••• f2n t t . t _ ni na ••• nn_ тогда ее называют матрицей преобразования Т в бази- се В. Для данного В матрица Ат единственна; таким об- разом, мы можем определить отображение Фв: End (У) -> Л(га, R) следующим образом: <рв(Т) =ЛГ. Так как Ат можно вычислить, то ее можно использовать для нахождения Т. Предложение. Пусть TeEnd(V) соответствует матрица Ат в базисе В =“ {ец еп}. Тогда, если хе V — вектор х е 2 Mi, i=l TO Тх. = У Pie, ен V, i-l где п Доказательство. Пусть х = У, Мь Тогда »=i ” Л / п \ п/п \ Тх = 2 х;Те4 -2^2 м,- = 2 S Wе*- // »=1 Ml / i=! \j=i 7 лоз
Следовательно, в данном базисе линейное преобразование Т можно выполнить с помощью произведения ЛТА, где Ат имеет размерность п X п, а Л — вектор (матрица размер- ности п X 1) соответствующий х е V. На самом деле можно устано- вить гораздо больше. Ниже мы установим важные свойст- ва ф®. Предложение. Отображение <рв: End(V) -* -+Л(п, В) является изоморфизмом линейной алгебры с обычными операциями в End(Г) и Jll(п, R) на R, при- чем сужение <ра на группу Aut(V) sEnd(Iz) является группой изоморфизмов на GL(n, R). Доказательство. Отметим основные моменты. Чтобы избежать большого количества индексов, ограни- чимся случаем п = 2. В общем случае доказательство ана- логично. Изоморфизм линейной алгебры следует из сле- дующих утверждений: а) фв биективно; б) фв(/г) =7; в) фв(5Г) = фв(‘5)фв(71) для всех S, Т е End(F); г) фв(Х5 + цТ) = Хфв(5)+ |Лфв(Т) для всех S, Т е е End(F) п 1, це R. Докажем некоторые из этих утверждений; остальные оставим в качестве упражнений. Пусть {«i, ег) — ба- зис в V. а) Чтобы доказать, что фв инъективно, необходимо показать, что ФВ(5) = ФВ(Г)^5 = Л Если Sei = suei + $2162, Tei = ti iC[ + '2162, то фв(5) = фв(7’) => Sn = fii, S21 = ^21- Поэтому 5е1 = Tei. Аналогично 5ег = Те2. Следовательно, S и Т совпадают на базисных элементах ci и е2. Однако для всех х s V выполняется соотношение х = Xei + це2; 14 Д. Кук, Г. Бейз 209
таким образом, 6’х = }.Se\ + р5е2 = ХТе! + цГе2 = У (ле, -Ь рс2) = Ух, т. е. S = Т, Доказательство сюръективности оставляем в качестве упражнения. б) Zvx = х для всех х е V; следовательно, 7ге! = в! + 0е2, 7ve2 = Oei + е2, Г1 01 Фв(Л0 = |о J = '- в) Пусть тогда Tei = £це1 + Z21e2, STei = tiiSei + £2iSe2 = ?u (sHe1 + s2ie2) + £2i («i2ei + s22e2) = = (£цЗц + Z2iSi2) ei + (£i2s2i + £21822)02. Аналогично STe2 = (£i2Sii + £22312) ei + (£12821 + £22822)02. Следовательно, фв (ST) =фв(5)фв (У), что и требовалось доказать. г) Утверждение доказывается аналогично утвержде- нию в). Чтобы показать, что сужение фв па Aut(7) является группой изоморфизмов, используем свойства б)—г). Пусть Т е Aut(7); тогда 7 = фа(7у) = фв(ГУ-1) = фв(Г)фа(?’-1). следовательно, Т е Aut (V) => фв (Т) е GL(п, R), фв(П-1 = фв(г-1). // Этот результат играет существенную роль, так как имеет много важных следствий. Выведем некоторые из них. В фиксированном базисе отображение Т -* Ат из End(F) в Л(п, R) биективно (каждому преобразованию 210
соответствует единственная матрица и наоборот). Далее Ав°Т с= AbAti это эквивалентно тому, что татпвпа. На практике это произведения преобразова- ний S ° Т в End (7) может быть вычислена путем ум- ножения матрицы Ав на матрицу Ат- Нет необходи- мости явно определять S ° Т, а затем вычислять диаграмма па рис. 6.3 комму- просто означает, что матрица (5,Г) г Ав°т на основе определе- рпс. 6.3 ния. Аналогичные резуль- таты получаются и для S+ Т. Кроме того, для сужения Фа на обратимые преобразования Aut(F) получаем = Лг1; это означает, что для вычисления Ат^ необходимо лишь найти матрицу, обратную к Ат. Подчеркнем еще раз, что изоморфизм ср8 зависит от базиса; в другом базисе мы будем иметь другой изомор- физм между End(V) и Ж (п, R). Таким образом, элемент Ж (п, R) может рассматриваться как представление эле- мента End (7) в фиксированном базисе или как представ- ление различных элементов End (7) в различных бази- сах. В гл. 10, где результаты этого параграфа будут при- меняться к R" (п = 2, 3, 4), отображение срв будет рас- сматриваться в стандартном базисе {ei, ..ej, как это определялось в § 4 гл. 5. Для этого базиса, если х == = (rt, ..., R", то П -^1 X = 2 Тх = Ат • . i=i L хп Пусть отображение TeEnd(T/) имеет собственный век- тор х s V, соответствующий собственному значению о е R. Тогда, если в базисе В = {ei, еД простран- ства V вектор х имеет вид п х = 2 М» i=l то 14* 211
Поэтому координатные вектора в представлении х явля- ются собственными векторами Ат, соответствующими то- му же самому собственному значению. 3.2. Некоторые другие понятия теории матриц. Опре- делим теперь на Л (п, R) отображение, называемое де- терминантом (определителем): det: Л(п, R)-+ R. Было бы естественным ввести это понятие и исследовать его свойства в § 4 гл. 5, так как det не зависит от базиса. Это означает, что если Ат^Л(п, R) и Ат> & Л (п, R) — матрицы отображения Ге End(V) в базисах В а В' со- ответственно, то det Aj- = det Ат>, Однако, чтобы опре- делить det на End (7), мы должны были бы ввести поня- тия из тензорной алгебры. Вместо этого дадим хорошо известное определение det на Л(п, R) и установим не- которые из наиболее важных его свойств. Определение det будем давать при помощи рекурсии. Вначале определим det для случая Л(2, R). Пусть А = а а 11 12 а а L 21 22J тогда det Л — Я)1<?22 ~ Й21Я12. Если А^Л(п, R) имеет элементы at) (1 <<п), то минором элемента ак1 называется матрица Л**'0 е ^Л(п— 1, R), полученная из А путем вычеркивания к-й строки и l-го столбца. Теперь det: Л(п, R)-* R мож- но определить рекурсивно для всех п е N как п det А = 2 (— 1)г+1 Дц det Л(1,г). г=1 Иногда эту формулу называют разложением по первой строке. Можно показать, что если использовать любую другую строку пли столбец для формирования соответ- ствующего выражения, то сумма будет равна detX. Другими словами, det Л = 2(-1)!+гап det Л(г',), :=i £(- l)‘+rar; det Л(г’!), г=1 Для малых значений п каждая из этих формул подходит 212
для непосредственного вычисления det Л. Чтобы миними- зировать число операций разложения, следует начинать со строки пли столбца, содержащих наибольшее количе- ство нулей. Подчеркнем, однако, что эти разложения яв- ляются в общем случае не подходящими для вычисле- ния и существуют более эффективные вычислительные процедуры для нахождения det. Некоторые важные свой- ства det приведены ниже. Предложение. Отображение det: Jt(n, R)-*R удовлетворяет следующим условиям: a) det I = 1; б) det А = det А1 для всех А&Л{п, R); в) det A A =kndet4, ?.eR, A ej({n, R); г) det А В — det A det В; д) A<^GL{n, R) тогда и только тогда, когда det А Ф ¥= 0. II Мы не будем давать доказательства этих утверждений. Предлагаем читателю проверить пх для ^(2, R). Заме- тим также, что свойство д) характеризует GL{n, R). Удобно выделить некоторые матрицы с «особыми» свойствами, которые будут использоваться в дальнейшем. Если А^лК{п, R) и А=АТ, то говорят, что А симмет- рична; если А — — Ат, то матрица А кососимметрична. Если Л.4Г = ЛТЛ = 7 (т. е. Л-1 = Лг), тогда говорят, что А ортогональна. Множество всех ор- тогональных матриц Я{п, R) обозначается через 0{п). Через SO{п) обозначим подмножество 0{п), состоя- щее из матриц с единичным детерминантом. Элементы SO (и) называют специальными ортогональными матри- цами. II р е д л о ж е п и е. а) О(п) является подгруппой GL{n, R); б) SO{n) является подгруппой 0{п). Доказательство. в) Надо показать, что 0{п) замкнуто по умножению и для каждой /1е0(п) существует обратная матрица Я-i е 0{п). Если А, В ^О(п), то ААТ — АТА — I п ВВТ = = ВТВ = I; следовательно, {АВ) {АВ)Т = АВ{ВТАТ) = А {ВВТ)АТ = ААТ = I. 213
Аналогично (АВ)ТАВ = 1, и, следовательно, АВ^О(п). Если А е О(п), то (А~1)(А-1)Т = АТ(АТ)Т = АТА=7. Следовательно, А~‘ ^О(п). б) Доказательство в этом случае осуществляется по- добным образом и оставляется в качестве упражнения. II Завершим этот параграф кратким обсуждением функ- ций от матриц. Подобно det, это следовало бы рас- сматривать в § 4 гл. 5. Однако у нас нет аппарата для рассмотрения сумм с бесконечным числом слагаемых в End(V). Результаты в Jt(n, R), приведенные ниже, до- статочны для наших целей. Пусть Xe/(n, R), тогда матрица А2^Л(п, R)—это по определению матрица АА. Аналогично можно опреде- лить А* для всех к е N, к > 2; положим А0 = I. Следова- тельно, если р: R-> R есть полиномиальная функция р (х) = У с^х1, где а, е R и п е N, i=0 то определим р(А)е= Л(п, R) как N р(А)= 2] а{А‘. 1=0 Такая матрица существует, поскольку Л (и, R) —век- торное пространство. Эту идею можно обобщить. Если /: R -» R разлагается в сходящийся ряд 00 /(«)= 2 i=0 00 то имеем смысл выражение У а А1, Множество Л(п, R) i=o 2 может быть идентифицировано с Rn . На Rn можно определить норму, как указано в § 4 гл. 5. Тогда это ин- дуцирует норму на Л(п, R), и в этом случае бесконеч- ные суммы имеют смысл. В частности, если А^Л(п, R), то можно показать, что lim У fe=O всегда существует в Л (п, R) и записывается как ехрА 214
пли же еА. Когда п = 1, ехр является обычной экспонен- циальной функцией, однако при п > 1 функция ехр ведет себя совершенно иным образом (см. упражнение 6.3). Упражнение 6.3. 1. Доказать, что -Я(2, R) с обычными операциями яв- ляется линейной алгеброй. 2. 1) Определить матрицы линейных преобразований Ti (z, Z/) = (2х + 2р, -х - у), (*) Тъ(х, у) = (2х + у, -х) пространства R2 в а) стандартном базпсе R2; б) базпсе В'={(1, 0), (1, 1)}. 2) Вычислить координаты вектора а = (—1, 7) в бази- се В' и определить вектор ЛТ^а, используя матричное представление. 3) С помощью понятия детерминанта определить, ка- кие из преобразований (*) обратимы. Является ли про- изведение Т1Т2 обратимым? 3. Пусть Г1 21 Л = [2 В = sin 0 cos0. ’ [—2 б. Определить, является лп каждая из этих матриц сим- метричной, кососимметричной, ортогональной, обратимой. 4. Показать, что у кососимметричной матрицы элемен- ты, стоящие на диагонали, равны нулю. 5. 1) Доказать, что собственные значения симметрич- ной (2 X 2)-матрицы всегда действительны. 2) Доказать, что собственные числа ненулевой косо- симметричной (2Х 2)-матрицы не являются действи- тельными. 6. Пусть R). Доказать, что (Ла) • Ь = а • (ЛТЬ) для всех a, beRn, и использовать этот факт для доказательства того, что ес- ли А симметрична, то собственные вектора, соответствую- щие различным собственным значениям, ортогональны, 7. 1) Пусть Л = [ * Я (-) п р (х) = х2 — 4х + 5. Доказать, что р(Л) = 0. 215
2) Использовать (**) для вычисления обратной мат- рицы Л-1. 8. 1) Пусть Используя индукцию, доказать, что ’1 о]'» О 1 Г1 па! [О 1 J для всех neN, т. е. показать, что еА = еЛ, п выписать выражение для det ел. 2) Пусть п R. Определить матрицу еКА. 9. 1) Пусть A, В^Л(п, R). Какие должны быть вы- полнены условия, чтобы выполнялось соотношение е(Л + В) = елев? 2) Использовать предыдущую формулу для доказа- тельства того, что еА всегда имеет обратную. 10. Пусть А^Л((п, R). След матрицы А (обознача- ется 1гЛ) определяется по формуле tr4 = 2 Ан- i=i Если 4e/(n, R) — матрица с элементами (Х< при i = /, lj = (0 при I =/= /, то, используя индукцию, показать, что п det А «= ТТ = ХхХ2 ... Xn, i*=i т. e. доказать, что в данном случае deteA = е,г А. 11. Пусть 4е/(п, R) имеет собственный вектор х е R", соответствующий собственному значению X е R. Доказать, что х является собственным вектором еА, со- ответствующим собственному значению е\ 12. 1) Доказать, что если AeGL(n, R), то detX_’ = •=(detX)-‘. 2) Доказать, что если А ^О(п), то det А = ± 1. 13. Доказать, что 50(2) является подгруппой 0(2).
ГЛАВА 7 ТЕОРИЯ ГРАФОВ § 1. Вводные понятия Многие отношения на конечных множествах могут быть изображены в виде рисунков (см. § 3 гл. 2), с кото- рыми можно работать при помощи соответствующих мат- риц. Перед тем как определить конструкции этих рисун- ков, необходимо быть уверенными в том, что это не по- влечет за собой никаких двусмысленностей. Введем не- обходимые понятия. Пусть V — конечное множество и Iv = {(у, у): ре V}. Положим Vl = P\Zv = {(p1,p2): p^pj и определим на VL отношение эквивалентности следую- щим образом: (pi, Р2)~(«Л, w2), если (pi, v2) = (wi, w2) или (vi, P2) = (tP2) не- важное свойство отношения ~ сформулировано в сле- дующем предложении. Предложение. Отношение ~ является отношени- ем эквивалентности на VL. II Доказательство оставляем в качестве упражнения. Множество эквивалентных классов, определенное та- ким образом, обозначим через VL/~. Каждый класс эквп- валентпости содержит ровно два элемента, так как если (p1,r2)eVi, то [(pi, ы2)] = {(ь’1, Рг), (у2, fi)}. Здесь [(pi, Рг)]—класс эквивалентности, содержащий (pj, Рг). Сейчас мы в состоянии дать строгое определение графа. Определение. Графом G называется пара G => =(7, Е), где V — непустое конечное множество вершин, а Е — подмножество 7L/~. 217
Другими словами, можно сказать, что граф G есть па- ра G = (V, Е), где V — непустое конечное множество вер- шин, а Е — множество неупорядоченных пар различных вершин. Множество Е называют множеством ребер графа, IVI обозначает число вершин G, |Е| — число ребер G. Следующий результат выражает связь между графа- ми и классами отношений на конечных множествах. Предложение. а) Граф G = (V, Е) определяет нерефлексивное сим- метричное отношение на V. б) Нерефлексивное симметричное отношение на ко- нечном множестве V определяет граф. Доказательство. а) Пусть G=(V, Е) —граф. Определим отношение R(E) на V следующим образом: V[R(E)V2 тогда и только тогда, когда [щ, Vi]^E. Отношение R(E) нерефлексивно, так как vR(E)v тогда и только тогда, когда [у, у]еЕ, но [у, у]^Е, поскольку (у, у)<£ V—. R(E) симметрично для ViR(E)v2 тогда и только тогда, когда [yt, иг]^Е, од- нако [У1, v2] = {(У), Уг), (Уг, У1)} = [Уг, У1]. Следовательно, viR(E)v2 тогда и только тогда, когда V2R(E)ui. б) Если R — нерефлексивное симметричное отношение на 7, то R <= VL. Нерефлексивность R означает, что (у, у) &R для лю- бого ys V, поэтому Rd VL. Симметричность R означает, что (уь пг)е R тогда и только тогда, когда (Уг, У1)еЛ. Определим Е формулой E — R!~, тогда G=(V, Е) есть искомый граф. Графы могут быть представлены матрицами с буле- выми элементами. Многие из свойств графов могут быть определены пз их матричных представлений путем алгеб- раических преобразованпй. Это станет понятным из по- следующего изложения. Определение. Матрица смежности А^^(п, В) графа G = (V, Е), где IVI — п, определяется следующим образом: (1, если [yf, yj е Е, v (О в противном случае. Говорят, что вершины у( и v, являются смежными, если Л«=1. Ясно, что Л(('= 0 (i= !,...,«) и А=АТ. Такпм образом, А симметрична, и в обозначениях § 1 гл. 6 А = = Л(Я(Е)).// 218
Изображение графа G = (V, Е) получается путем рас- положения различных точек па R2 для каждой к <= V, причем, если [к, it] е Е, мы проводим линию, соединяю- щую вершины v и w. Матрица смежности Изображение Рпс. 7.1 Пример 1.1. Пусть 1. V = {Р1, Р2, v3}, E = {[plt Р2], [р2, 1’з], [Pl, Из]}, IVI = = 3, |£| =3. Этот граф изображен на рпс. 7.1. 2. V = {Pi, Р2, Рз, Vi, р5}, Е = { [Р1, Рг], [Р1, Pfi], [Р2, Рз], [Р2, P4J, [^3, Vo], [РЗ, Р4], [Р4, Рз]}, 171 =5, |Е| = 7. Этот граф изображен на рис, 7.2. О 1 1 1 0 1 О 1 1 О 1 1 О 1 1 о Изображение Матрица смежности Рпс. 7.2 Графы являются скорее «топологическими», чем «гео- метрическими» объектами, т. е. они выражают больше от- 219
ношения между вершинами, чем расположение вершил и ребер в пространстве. Таким образом, граф может быть изображен бесконечным количеством разных, по «экви- валентных» способов. Однако изображения графов могут вводить в заблуждение. Например, из пересечения двух ребер на рисунке не следует, что точка пересечения яв- ляется вершиной (см. первую диаграмму на рис. 7.2). Ясно, что нижней (верхней) треугольной части матрицы смежности достаточно, чтобы определить граф. Читатель уже знаком с понятиями подструктуры и изоморфизма или же с эквивалентностью алгебраических систем. Дадим следующие определения. Определение. Говорят, что граф Я = (71, Ei) яв- ляется подграфом графа G = (7, Е), если 7, s V и Et s Е. Если I7! = V, то говорят, что Н является остовным под- графом G. Если Vi — непустое подмножество вершин гра- фа (V, Е), то подграф (7i, £1), порожденный 7Ь опре- деляют как [п, u’] s Ei v, w е 71 и [у, и.'] е Е. И Определение. а) Пусть Gi=(Vi, Е\) и Gi = (V2, Е2) — графы. Будем говорить, что Gi и G2 эквивалентны, если существует би- екция /: 71 V2 такая, что vR(Ei)w=>f(v)R{E2)f(w). б) Пусть G = (7, Е) — произвольный граф. Определим отображение б: 7-► N U {0} следующим образом: величина б (к) равна числу ребер, содержащих вершину xe=V. Назовем б (у) степенью вер- шины V. Следующее предложение выражает два простых, но важных факта о свойствах графов. Предложение. а) 2б(п) = 2|Е|. cev 220
б) В любом графе число вершин нечетной степени четно. Доказательство. Каждое ребро дважды входит в сумму, откуда и следует утверждение. в) Пусть V. s V — множество вершин четной степе- ни, а У о s V — множество вершин нечетной степени. Заме- тим, что V = V. U У о и V. П Уо = 0; следовательно, S б(к)= 2 6(f) + S 6 (V), te V re Vt te Vo 2|£| = 2к + S 6(f). l'evo (Ясно, что S 6(f) = 2А, где к — некоторое целое.) Та- ге г, кпм образом, 2 6(v)~2(\E\-k), геио т. е. четно, однако каждое 6(f) в левой части нечетно, поэтому I Vo! четно. II Во многих приложениях теории графов о топологии графа имеется дополнительная информация, относящаяся к V, пли к Е, или к обоим множествам одновременно. Чтобы конкретизировать вышесказанное, определим по- нятие помеченного графа и дадим несколько примеров. Определенпе. 1) Пусть Sr и Ss — множества меток. Пометкой пли распределением меток графа G—(У, Е) называется пара функций /: У -* Sv — распределение меток вершин, g: Е -> Ss— распределенпе меток ребер. 2) Пусть граф б=(У, Е) помечен с помощью функ- ций / п g, a Gi = (Vi, Ei) помечен с помощью /1 и gi. Гра- фы G п Gi называются эквивалентно помеченными, если существует биекция /г: У -> У], такая что a) G и Gi эквивалентны как непомеченные графы; б) /(f) — /i (Му)) Для всех уеУ, поэтому соответ- ствующие вершины имеют одну и ту же пометку; в) g([f, w]) = gi([h(v), h(w)]) для всех v, weV, т, e. соответствующие ребра имеют одну и ту же пометку. 221
Часто бывают помеченными только ребра или же толь- ко вершины. Вышесказанное применимо и в этом случае. Тогда /: . ? помечены только вершины; g = const, J / = const, ] „ „ > помечены только ребра. / g: E->Se, J Ребра илп вершины (или те и другие вместе) поме- ченного графа несут информацию, которая дополняет илп заменяет обычйую идентификацию с помощью имен. Пример 1.2, 1. Пусть Fe{Pl, V2, КЗ, pj, Е — { [pi, Рз] , [р2, Рз], [Рз, Р4]}, /: V -* {города Великобритании), g: Е -> N, /(pi) —Лондон, g([pb р3])=105, /(р2)—Кардифф, g([P2, Рз])=196, /(рз) — Бирмингем, g([pa, P4])s=292, /(Р4) — Эдинбург. Этот граф изображен на рис. 7.3. у.» ЭЗинЗург 292 2. Пусть графы Gi =({pi, Р2, Рз), { [pi, Р2], [pi, Рз], [Р2, Рз]), G2=({lPl, 1Р2, 1Р3}, {[&’!, W2I, /иЛбирмингем ^1, Ы ^Р) / \ помечены так же, как указано на 19В/ \l05 рис. 7.4; Gi и G2 являются экви- \ валентно помеченными графами \ (вершины не помечены). / Кардиф Мн Упражнение 7.1. 1. Построить доказательство Fnc- 7-3 первого предложения этого пара- графа. 2. Изобразить графы, представленные следующими матрицами смежности: 222
3. Определить матрицы ленных па рпс. 7.5. смежности графов, представ- Рис. 7.4 4. Начертить подграф, порожденный вершинами {у2, ь’з, Vi, ь'б) графа па рис. 7.5, а. Рпс. 7.5 5. Пусть G = (V, Е)—граф и |V|=n. Какое может быть максимально возможное значеппе |Е| ? 6. Сколько существует различных графов, имеющих п вершин? Остальные задачи этого параграфа требуют введения некоторых дополнительных понятии. Определение. а) Граф G = (V, Е) называется полным, если для всех Vi, V2^V имеем [щ, Полный граф с верши- нами обозначается через К„. б) Граф G—(V, Е) называется двудольным, если су- ществует разбиение V — {Izi, V2} такое, что никакие две вершины из Vi или из Г2 ие являются смежными. Дву- дольный граф называется полным, если для любой пары Ui <= l5 6 7i п у2 е Г2 имеем [щ, /;2]еЕ. Если |Vil=m и 1Г2| — п, то полный двудольный граф (V, Е) обознача- ется через К„:П. И 223
7. Изобразить граф К$. 8. Построить пример двудольного графа. 9. а) Изобразить граф К33. б) Сколько ребер имеет граф § 2. Маршруты, циклы п связность Обратим сейчас внимание на понятие маршрута в графе. Значительная часть теории графов и ее прило- жений занимается вопросами существования и свойств маршрутов. Некоторые важные свойства вытекают из следующих определений. Определение. а) Пусть G — (V, Е} — граф. Маршрутом длины к в графе G из v в w называется последовательность <уо. щ, ..., vfc> вершин (необязательно различных) vt&V таких, что vo = v, vk — w, а [у<_i, к<] <= Е для всех 1 = = 1, ..., к. Маршрут называется замкнутым, если Ко = = к*. Маршрут называется цепью, если все его вершины различны. Замкнутая цепь называется циклом. Цикл называется простым циклом, если только Ио = щ, а осталь- ные V, различны. б) Если существует маршрут из v в w, v, w е V, то говорят, что w достижима из V. в) Граф без циклов называется ациклическим. Циклы и длины циклов были определены для случая подстановок в § 4 гл. 3. Заметим, что понятие замкнуто- сти. в сущности, соответствует своему названию. Определение. а) Граф G = (F, Е) называется связным, если каж- дая пара различных вершин может быть соединена маршрутом. б) Деревом называется связный ациклический граф. в) Корневым деревом называется дерево с выделен- ной вершиной, называемой корнем. г) Остовным деревом для G = (V, Е) называется остовный подграф, являющийся деревом. В § 1 мы отметили, что вычисления с матрицей смеж- ности обнаруживают важную информацию о природе графа. Следующие результаты являются примерами внут- ренних связей между алгеброй и топологией в теории графов. В приведенной ниже теореме п ее следствиях степени А* вычисляются в Я{п, Z), а не в М(п, В). Следова- тельно, в Л* могут возникать числа, большие чем 1, 224
Теорема. Пусть А—матрица смежности графа G=(V, Е) и IVI •= п. Тогда (Л*)(1 есть число маршрутов длины к от и, к и,. Доказательство. Будем использовать индукцию по к. Для к = 1 маршрут длины 1 как раз является реб- ром G. Следовательно, результат теоремы при к — 1 вы- текает из определения А. Пусть (Л*_|) (j = ati, AtJ = ai}, тогда (•4ь)ц «= (Л 1^)ij = 2 9-1 Пусть результат имеет место для А: — 1. Тогда, если а(,— элементы матрицы Л'"1, то а(, — число маршрутов длины к — 1 от Vt к у,; по определению — число маршрутов длины 1 от у, к У). Следовательно, — чпсло маршру- тов длины к из у( к vh где у, есть предпоследняя вер- шина маршрута. Отсюда следует, что п 9=1 есть чпсло маршрутов длины к от у( к у>. Это завершает доказательство. // Следствие. а) Маршрут от vt к Vj (i^j) в G = (V, Е) существу- ет тогда и только тогда, когда (г, ;)-й элемент матрицы порядка пХп (п = IVI): Л +л2 + ...+лп-1 не равен нулю. б) Если не использовать условие i^j, то требуемая матрица имеет вид л + л2 + ... + лг-,+лп. Доказательство. а) Пусть <у(, У1, ..., У)> —маршрут из у< в v, в G. Если не существует повторяющихся вершин, то (так как IVI = и) маршрут содержит не более п — 1 ребер, п не- обходимое утверждение следует из теоремы. Пусть существует повторяющаяся вершина. Тогда маршрут имеет вид <Уц . . .3 УГ| • • .-iVri • • ч вамкнутый маршрут 15 д. Кук, Г. Бейз 225
Если мы удалим все такие замкнутые маршруты, то за-* дача сведется к предыдущему случаю, когда вершины не повторялись. Таким образом, в одну сторону требуе- мый результат получен. В обратную сторону рассужде- ния очевидны. б) Если разрешается /*/, то существование маршру- та из vt в влечет то, что существует последователь- ность <у(, Vi, ..., vt>. Если не существует повторяющихся вершин (за исключением, возможно, случая тог- да маршруты состоят из более чем п+1 вершин (не более п ребер). Следовательно, (i, /)-й элемент матри- п цы 2д*не равен нулю. Тогда при |Vl“n отсюда Ь=1 следует А (7Г (£)) = A (R (£)) V А (7?2 (£)) V • • • V А (йп (£)) - - V А(л\Е)\ *=1 Д (7?* (£)) = 7 \/Д (7? (£)) у ... \/Д (7?п~’(£)) = -V Д (Я* (£))./ Напомним, что для произвольного бинарного отноше- ния 7? величина 7?+ определялась как 7?+= U и если RsV'XV при IVI =п, то отсюда следует (с уче- том § 1 гл. 6), что А (7?+) = Д+ (7?) = V Д (7?*)- Л-1 Аналогично Д(7?*) = Д*(7?)= V А (7?Л). В этом параграфе для упрощения обозначений будем теперь обозначать Д(7?*(£)) через A(Rk), A(R+(E}) че- рез А (7?+), а Д(7?*(£)) через Д(7?*). Алгоритм Уоршол- ла требует 4п3 операций для определения Д(Я+), тогда как при помощи приведенных выше соотношений тре- буется 4п4 —7п3 операций. Можно получить и другие, 228
еще более эффективные алгоритмы для больших значе- ний п. Матрицу С— Л (Я*) называют матрицей связи, связ- ности или достижимости графа G = (F, Е). Маршрут из vt к Vj существует в G тогда и только тогда, когда (I, /)-п элемент из С равен 1. Граф G является связным тогда и только тогда, когда CiS “ 1 для всех 1 < i, j < п. Важные свойства отношения Я* могут быть сформу- лированы следующим образом. Предложение. R* — отношение эквивалентности на V. Доказательство. Так как по определению Я* является рефлексивным замыканием Я, то необходимо только проверить симметричность Я*. Выполнение vR*w влечет существование маршрута <у, Vi, ..., vk, w~> err v к w в G, т. e, [у, Vi]&E, [vi, y2] = £, .... [у*, w]&E. Следовательно, [w.pjefi, [у*, Ун]е£ .... [y2, vi]e#, [yi, y]e£. Таким образом, <ш, vk, v*-i, .... V2, Vi, v> есть маршрут из io в v в G, откуда следует wR*v. И Отношенпе Я* определяет важный класс подграфов, который сейчас будет определен. Будут также даны не- которые сопутствующие понятия; они будут важны в дальнейшем, когда будут обсуждаться «пересечения» графа. Определение. Пусть (F<: К г<р} — разбиение графа, определяемое отношением Я*. Тогда говорят, что р —число связности G. Подграфы (Ft, Е(), порожденные классами эквивалентности, называют компонентами связ- ности графа G. Лесом называется граф, в котором каждая связная компонента является деревом. Остовный лес для графа G = (F, Я) —это совокупность вершин разъединенных деревьев Et) таких, что V — U Ff и Е,<=.Е для всех I. (Разъединенность вершин означает, что F( Л V, = = 0 при i^j.) Рисупок 7.6 иллюстрирует вышеупомянутые понятия для графа при р в 2. 15* 227
Упражнение 7.2. 1. Пусть G = (K, Е), где V = {wh v2, v3, vj и E = "Ф1, H [i>i, Уз], [У2, у+], [уз, У«Р. ОстпоВныа лес для ера фа Используя матрицу смежности G, определить: а) число маршрутов длины 2 из vj в v2\ б) число маршрутов длины 3 из в v2-, в) является ли G связным. 2. Изобразить остовные деревья для графов из упраж- нения 7.1, 3. 3. Дать матричную характеристику ацикличности в графе. § 3. Планарные графы Исторически во многих работах по теории графов рас- сматривают специальный класс графов, который может быть аккуратно представлен рисунком на плоскости R2. В этом параграфе мы рассмотрим три важных результата, касающихся таких графов. 3.1. Теоремы Эйлера и Куратовского. Определение. а) Граф G называется планарным, если он мо- жет быть изображен на плоскости так, что его ребра не 228
пересекаются*). Такой рпсупок называют кар- той G. б) Карта G называется связной, если G связен. И Пример 3.1. 1. G=({l?f, V2, V3, Vt}, v2], [vi, v3], [V|, V4I, [l>2, 1>з], [v2, ^4]» [^з, V4]}). Изображение и соответствующая карта G показаны на рис, 7.7; следовательно, G — планарный граф. Изображение G Рпс. 7.7 2. Графы, изображенные на рпс. 7.8, а и Ь обычно обозначают через Кь и К33 соответственно. Позднее мы рассмотрим доказательство того факта, что эти графы не являются планарными. И Карта делит R2 на «области»; проиллюстрируем это в следующем примере. Пример 3.2. Рассмотрим карту, изображенную на рис. 7.9. Она делит R2 на четыре области; л, г2 и гз являются ограниченными областями, а —«неограни- ченная» область. В оставшихся параграфах будем обозначать множе- ство областей данной карты через 91. *) Такой граф, изображенный на плоскости, называется пло- ским графом.— Примеч, ред. 229
Теорема Эйлера. Для произвольной связной карты IVI — |Е| + 1521 = 2. Доказательство. Пусть |V| = 1. Тогда очевидно, что 1Е1=0 и 1521 = 1. Следовательно, формула справед- лива для IV| = 1. Рассмотрим два возможных способа расширения данной карты. J HoSa.9 вершина Рис. 7.10 1) Добавим новую вершину и присоединим ее к су- шествующей карте. 2) Соединим две существующие вершины. Покажем, что значение IVI —IEI + I52I инвариантно относительно обоих способов расширения. В первом случае добавим новую вершину так, как, например, это сделано на рис. 7.10. Этот процесс увели- чивает 1VI на 1 и |Е| на 1, однако 1521 остается тем же самым, вследствие чего значение |V| —|Е| + |52| не из- меняется. Во втором случае соединим две вершины, как, напри- мер, на рис. 7,11, Тогда IVI остается тем же самым, |£| 230
возрастает па 1, а 1521 уменьшается на 1; следователь- но, значение |7| —151 + 1321 опять остается неиз- менным. Все карты могут быть получены из случая 17| = 1 путем выполнения 1) и (или) 2); если необходимо, то процедура повторяется. Следовательно, так как 171 — — 151 + 1521=2 при 171 = 1, а значение |7| —151 +1521 остается инвариантным при выполнении 1) и 2), то мы имеем 171 — 151 + 1521 = 2 для всех связных карт. Очевидно, что каждая область карты ограничена за- мкнутым маршрутом. Ниже приведены два простых ре- зультата (один касается ограничивающих замкнутых маршрутов). Этих результатов оказывается достаточно для доказательства того, что Кз и 5з,з не являются пла- нарными. Определение. Пусть G = (7, Е) — планарный граф. Для карты G определим степень Дг области г как длину замкнутого маршрута, ограничивающего г. П Пример 3.3. Для карты, изображенной на рис.7.12, имеем <щ, 1>з, щ, уз, V2, — граничный замкнутый маршрут для и, а <щ, 1>з, t»2, — граничный замкну- тый маршрут для rj. Следовательно, Дг{ = 5, Дг, = 3. И Предл ожение. Пусть G = (7, Е) —планарный граф. Тогда а) У Дг = 21 Е | для любой карты G; гея б) если |7| >3, то 151 <317| — 6. Доказательство оставляем читателю в качестве упражнения. Предложение. Графы Кз и Кз.з не являются пла* парными. Доказательство. Докажем, что Кз не является планарным. Если Кз — планарный граф, то из предыдущего результата следует, что 15|<317|-6. Тогда для графа Кз с 151 = 10 и 171=5 имеем 10 < 15 — 6 = 9, что неверно. Таким об- разом, предположение, что граф Кз планарный, неверно. Докажем теперь, что Кз.з по является планарным. Предполагая противное, имеем S Дг = 2|5|. Однако в rej? .ЙГ3.3 никакие три вершины не связаны одна с другой; следовательно, Дг^4 для всех Из формулы Эйле- ра 1321=2+151 — 171=2 + 9 — 6 = 5; следовательно, 2 Дг^5»4=20. Таким образом, 2|5| > 20, откуда 231
I El > 10. Поскольку последнее неравенство неверно, то граф Кз.з не является планарным. И Графы Къ и Лз.з интересны тем, что они являются существенно «единственными» неплапарными графами. Все другие непланарные графы имеют подграфы «подоб- ные» или Кз, или Яз.з- Перед тем как уточнить наше утверждение, необходимо ввести два определения. Определение. а) Пусть G->(V, Е) — граф. Элементарное стягивание G образуется путем удаления ребра [vt, nJ из Е, замены каждого и< и Vj в Е новым символом w, удаления vt и и, пз V и добавления w к V. Графически элементарное стя- гивание G получают путем слияния двух смежных вер- шин после удаления ребра между ними и обозначения «составной» вершины через w. б) Граф G называется стягиваемым к графу G', если G' может быть получен пз G путем последовательности элементарных стягиваний. Пример 3.4. На рис. 7.13 изображены графы G п G', при этом G стягивается к G'. И Рпс. 7.13 Теорема (Куратовскпй). Граф является планарным тогда и только тогда, когда он не содержит подграфов, стягиваемых к Kt или /?з.з. Доказательство этой теоремы лежит за пределами це- лей книги и поэтому опущено. / Из теоремы Куратовского заключаем, что К& и К3з являются существенно единственными не планарными графами. Алгоритмы, основанные на этой теореме, были придуманы для того, чтобы определить, является ли дан- ный граф планарным или нет. 3.2. Раскраска карт и графов. Определение. а) Раскраской G = (V, Е) называется задание цвета вершинам G так, что если [i>, w\^E, то v и w имеют различные цвета, 232
б) Хроматическим числом х(^) графа G называется мпнпмальиое число цветов, требующееся для раскрас- ки G. II Теорема. х(б)С4 для всех планарных графов G. / Эта теорема была впервые «доказана» в 1976 г. про- веркой на компьютере всех возможных случаев*). Определение. Пусть М — карта. Определим кар- ту М', называемую двойственной к М, следующим обра- зом: выберем внутреннюю точку в каждой области М\ еслп две области имеют общее ребро, то проведем дугу, связывающую выбранные внутренние точки в этих об- ластях. Этот процесс определяет М'. И Пример 3.5. На рис. 7.14 изображена карта Л! вме- сте с двойственной картой М’. И Рпс. 7.14 Раскраска М' соответствует раскраске областей М так, что области, имеющие общее ребро, имеют разные цвета. Следовательно, мы можем переформулировать тео- рему о раскрашивании в четыре цвета следующим об- разом. Теорема. Если области карты М необходимо рас- красить таким образом, чтобы смежные области имели различные цвета, то для этого требуется не более четы- рех цветов. И Упражнение 7.3. 1. Пусть = (У, Е) — дерево с 1VI -=п. Доказать, что |£|-п-1. 2. Проверить справедливость формулы Эйлера для графов пз упражнения 7.1,1. *) До спх пор нет уверенности в том, что эта теорема на са- мом деле доказана.— Лри.меч. ред. 233
3. Пусть G = (F, Е) —планарный граф и Д, обозна- чает степень области г в карте G. Доказать, что 2 Дг = 2|Е|. гея 4. Пусть G = (F, Е) — связный планарный граф п IVI >3. Доказать, что IEK3IFI-6. 5. Привести примеры, показывающие, что приведен- ное в задаче 4 этого упражнения неравенство неверно при | FI < 3. 6. Определить граф G, для которого х(С)’и4. 7. Пусть Т — дерево. Что является значением х(Л? § 4. Структуры данных для представления графа Матрица смежности предполагает очевидный метод представления графа в машине — на языке высокого уровня мы можем использовать массив, чтобы хранить элементы матрицы. Симметричность и нулевая диагональ сокращают необходимый объем памяти; для графа с п вершинами требуется п (п — 1) ячеек. Обычно многие элементы матрицы равны нулю и поэтому большая часть используемой памяти является лишней, однако, несмотря на это, иногда матрица смежности является наиболее удобным представлением графа. Однако для многих задач предпочтительным является представление в виде списка смежности. В этом случае мы свяжем список связей L, с каждой вершиной i>s F; L, является списком вершин, смежных с v. Рис. 7.15 Пример 4.1. На рпс. 7.15 даны граф и списки, кото- рые могут быть использованы для его представления, 234
Один из путей применения этих списков — это ис- пользование массивов E(j, к), К к < 2, и P(i), l<i<n, где £(/, 1) хранит номера вершин, Е(/, 2) хранит связь, а Р(1)— точки начала списка Lttl в Е. Пример 4.2. Для графа из примера 4.1 мы можем иметь ситуацию, изображенную на табл. 7.1. Таблица 7.1 < E(i, 1) Е(1, 2) Ж О < Е(<, 1) Е(1, 2) Р«) 1 5 13 4 0 2 1 6 2 а 3 И I а 4 35 а 5 2 9 19 2 12 6 3 10 а 7 а • • 8 - 9 3 13 35 1 36 10 4 0 36 2 37 11 1 19 37 3 0 12 4 0 Если vt не имеет смежных вершин, то установим 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. Фрагмент программы, которая дает список смежных вершин к каждой вершине, выглядит следующим образом: for 1 С 1 < п do begin write 'вершины смежные с вершиной' , I k*-P(i) while к ч*0 do begin write Е(к, 1) А*-Е(А, 2) end end Аналогичная программа может быть использована для создания матрицы смежности М графа из представления 235
с помощью списка связей Е, Р следующим образом: for 1 < i, j < п do М (г, у) О for 1 < i < п do begin k-P(i) while к & 0 do begin M(i, E(k, !))*-! k*-E(k, 2) end end Чтобы создать структуры E и P из M, можно использо- вать следующую программу: for 1 < I < п do P(i) *- i for 1</<п do £(i, j) *- 0 for К i < n do begin ifree *- i for 1 </<n do begin if M (i, j)= 1 then do begin E (ifree, 1)*-/ if j ¥• n do begin E (ifree, 2)*-ifree+ n ifree *- ifree + n end end end end Возможно другое представление графов с помощью списка связей. Выбор представления во многом аависит от используемых алгоритмов. Представление L„ вершин, смежных с о, в виде спис- ка связей определяет «порядок» ребер, выходящих из V. Рассмотрим это последнее утверждение и списки связей, данные в начале этого параграфа, по отношению к гра- фу. Ребра упорядочены, как показано на рис. 7.16. Граф с упорядочиванием ребер такого сорта называют упоря- доченным графом. Дадим формальное определение, 236
Определение. Множество V-»{yi, уп} вершин вместе с множеством {L^, LCj, L^J упорядоченных списков упорядоченных пар вершин называют упорядо- ченным графом. Необходимо наложить некоторые условия на спис- ки Lc, чтобы рассматривае- мые структуры были графа- ми. Эти условия следующие: a) (у, y)^L, для любого vsV; б) (w, u)eL«,*-(u, u?)e eLB. / Граф, изображенный на рпс. 7.16, может быть запи- сан в терминах упорядоченного разом: у» Рис. 7.16 графа следующим об- ({vi, v2, уз, vJ, {((У!, уз), (У1, уз), (У1, у*)), ((У2, У1), (У2, Уз), (У2, У<)), ((Уз, У1), (Уз, Уг), (Уз, У4)), ((У4, Vi), (у«, Уг), (У4, Уз)))). Упорядоченный граф определяет единственный не- упорядоченный граф. Обратное утверждение неверно, поскольку в общем случае возможно много способов упорядочения графа. Некоторые из этих упорядочений рассматриваются в соответствии со следующим опреде- лением. Определение. Два упорядоченных графа Gi и Gj называются эквивалентными, если существует биекция /: V\-* V2 между множествами вершин и биекция сохра- няет списковую структуру. Другими словами, если Lc = ((y, и?,), ..., (у, 1У*)) есть список ребер Gi, то ^о»-((/(у), /(*0), .... (/(у), /(»*))) есть список ребер Gj. № Пример 4.3. Графы, изображенные на рпс. 7.17, эквивалентны, однако они не являются эквивалентными как упорядоченные графы. Й 237
Все понятия § 2 (маршруты, замкнутые маршруты, связность, дерево) переносятся очевидным образом на упорядоченные графы. Упражнение 7.4. 1. Записать алгоритмы данного параграфа на каком- либо языке программирования и проверить их работу на некоторых наборах данных. § 5. Обход графа 5.1. Введение. Во многих задачах, включающих гра- фы, требуется обойти граф, т. е. чтобы каждая вершина графа «посещалась» или «обрабатывалась» только один раз. Таким образом, обход графа может быть представ- лен последовательностью вершин, соответствующих по- рядку, в котором они обрабатываются. Если G«=({vi, V2, ..., vj, Е) и о: N,-* N, — пере- становка, то последовательность в уа(1)» уо(8)1 • • •» ^а(п) определяет обход G. Так как существует п! различных перестановок N„, то должно быть п! различных способов обхода графа с п вершинами. Другими словами, суще- ствует п! способов полного упорядочения вершин. Вер- шину ve(i, называют начальной вершиной обхода, опре- деляемого подстановкой о. Мы опишем здесь только два метода обхода графов. Они могут быть полезны в приложениях. Оба метода применяются к упорядоченным графам и позволяют определить перестановку (или полное упорядочение вер- шин). 5.2. Обход графа по глубине. Пусть G = ({п,, ... , |Lti, ..., L„n))—упорядоченный граф. Выберем некото- рую начальную вершину и, (1 < п) и положим о(1) = з. Далее вершины последовательности t определяются 233
следующим образом: v0(2) — первая вершина (смежная с v0(t)) из списка смежности у0(3) — первая верши- на из . которой нет еще в t, и т. д., v„w — первая вершина из которой нет еще в t (к >4). При этом, если встречается вершина и такая, что все верши- ны из Lu уже содержатся в t, то процесс повторяется из вершины w е t, где w — последняя вершина в t такая, что L» содержит вершины, не входящие в t. Обход за- канчивается, когда никакая вершина из F\i не может быть достигнута из вершин последовательности t. Если граф G связный, то описанный выше процесс определяет обход G, в противном случае — только одну из компонент графа G (содержащую Va(i>). Если граф G не является связным, то для получения полного обхода G необходимо начинать процесс в каждой связной компо- ненте графа G. С помощью этого метода можно опреде- лить число связных компонент графа. Для каждого вы- бора начальной вершины в связном графе получен един- ственный обход, так что возможны все п обходов по глубине упорядоченного связного графа. Если G имеет связные компоненты F< (l<i<p), где |FJ=«n(, то определены п\ » Пг * .•. * пр обходов по глубине. С помощью следующей рекурсивной процедуры мож- но найти обход по глубине. Здесь t — массив длины n=|F|, все значения которого вначале равны 0; t(vt) устанавливается равным 1 для обозначения того, что вершина р( обработана, procedure dft(v) *(»)*-! process vertex v for each w&Lv do if t(u>)’ = 0 then d/t(u?J end proc Пример 5.1. Рассмотрим упорядоченный граф, изо- браженный на рис. 7.18. Первый обход по глубине из начальной вершины щ определяется следующим образом: Pl, V2, Vi. Vi, Vs, V6, V3, V?. // 5.3. Обход по ширине. Пусть G = ({plt ..., vn}, {L^, .. • ..., — упорядоченный граф. Выберем начальную вершину v, и предположим, что Ьв<= ((i>„ u’x)t (v,t wj,... Первые к + 1 члепов t определяются следующим об- рЗЗОМ. 1^0(1) = • • *> & ^$(*+1+0 239
является i-й вершиной из LVi, не входящей в t. Это исчерпывает и процесс начинается над LVt и т. д. Обход прекращается, когда все вершины, достижимые из p0(i), содержатся в t. Замечания из п. 5.2 о единствен- ности, связности и числе возможных обходов также при- менимы к этому обходу. Обход графа по ширине можно найти с помощью следующей процедуры: t играет ту же роль, что и прежде, a q — оставшаяся часть в процеду- рах сложения и удаления (addg и delete q соответст- венно) procedure bft(v) 1 process vertex v initialize q with v while g¥*0 do begin delete q(v, g) for w e L, do begin if t(w) — 0 then do begin add q(w, q) 1 process vertex w end end end endproc Пример 5.2. Первый обход по ширине графа в при- мере 5.1 с начальной вершины i>i задается следующим 240
образом! Vi, Уз, Уз, Уз, Уб, У?, Уа. й 5.4. Остовные леса обходов по глубине и ширине. Пусть G = ({vi, ..., yj, Е)~ граф, а t"»y<,(i„ .... у«(В)— обход G. Тогда t определяет подмножество Е‘ из Е сле- дующим образом: [у, w]&Ef тогда и только тогда, когда [у, w] используется прп построении обхода. Так как для упорядоченных графов обход t определяет аналогичным путем подсписок каждого списка £„ то получают из L, удалением всех пар (у, ш), которые не использо- ваны в сечении. Предложение. Пусть G = ({уп ...,у,,}, {LVi, ... — упорядоченный связный граф, a t —обход по глубине или ширине графа G. Тогда G = ({Уц • • • 1 Уп). • • -1 ^}) есть упорядоченное остовное дерево для G. Доказательство. Так как G —связный граф, то подграф G' также связен и является остовным для G. Если G* содержит замкнутый маршрут, тогда некоторые вершины появляются более одного раза в t, но так как t — обход, то это невозможно, и G‘ является ацикличным графом. Следовательно, G‘ — дерево. Й Следствие. Каждый связный граф имеет остовное дерево, Й Рис. 7.19 Пример 5.3. Для графа из примера 5.1 остовными деревьями, определенными первичными обходами по глу- бине и ширине с начальной вершиной Vi, будут деревья, изображенные соответственно на рис. 7.19, а и 7.19,5. 16 д. Кук, Г. Бейз 2/11
Для графов, не являющихся связными, полные обхо- ды по глубине или ширине определяют остовный лес. Упражнение 7.5. 1. Пусть G => ({vlt ..., иъ}, {£В1, ..., LBJ) — упорядо- ченный граф, определяемый следующими списками: “ ((^i. «>2))> = ((^2. Ц>). (у2. у«). v3), (l>2, Vi)), \ = ((«>з, »гУ)1 \ = ((^> v2), (п4, v6)), = ((п61 i>4)4 (fj.^2)). Определить: а) обход по глубине с начальной вершиной Рг! б) обход по ширине с начальной вершиной Vt. 2. Нарисовать остовные деревья, соответствующие об- ходам упражнения 7.5.1. 3. Пусть матрица смежности графа G имеет блочную структуру ~А, 0 " Л2 _0 Ар_ где каждое А( является квадратной матрицей с булевыми элементами, а все остальные элементы равны нулю. Что можно сказать о свойствах G? 4. Написать процедуры на каком-нибудь языке про- граммирования для определения обходов по глубине и ширине. § 6. Ориентированные графы 6.1. Введение. Во многих приложениях теории графов требуется, чтобы ребра графа имели направление. На- пример, поток данных проходит через программу. Определение. Ориентированный граф (орграф) G есть пара G = (7, Е), где V— конечное множество вершин, а Е — произвольное подмножество VXV. И Предложение. а) Ориентированный граф G=(V, Е) определяет от- ношение на F. б) Пусть V —конечное множество. Тогда отношение на V определяет ориентированный граф, у которого мно- жество вершин — V. 242
Доказательство. а) Как и в § 1, определим R(E) следующим образом: vR(E)w тогда и только тогда, когда (р, tw)eE. Очевидно, что R(E) — отношение. б) Если R — отношение на V, то ориентированный граф Е), определяемый R, имеет множество ре- бер Е, где (р, ip)s£, тогда и только тогда, когда vRw. II Направление ребра обозначают порядком в VXF; например, если (р, w)eE, то говорят, что ребро выходит из v и входит в w. На диаграмме в этом случае для указания направления используют стрелки. Пример 6.1. Пусть F —{pi, р2, рз), a £j = {(Pi, р2), (р2, р»), (рз, Pi)). Тогда матрица смежности и изображе- ние орграфа Gi = (Р, Е\) будут такими, как на рис. 7.20. *- J V2 v3 Матрица ИзсЗражение смежности Рис. 7.20 Аналогично на рис. 7.21 приведена матрица смежности и изображение графа G2 = (7, Е2), где Ез-Црц Pi), (Р|, р2), (РЬ Р3), (va, р3), (р3, Pi)>. / Поскольку реберное отношение для орграфа не обя- вательпо симметрично или нерефлекспвпо, то, вообще 1 1 1 0 О 1 1 о о Матрица смежности Рис. 7.21 говоря, не обязательно, чтобы А*=АТ или И(,= 0. Ребра типа (р, р) называют петлей. Степень 6(р) вершины реу может быть записана в виде суммы 6(р)*= 6"(р) + 4 6+(р), где б“(р) —чпсло ребер, входящих в р, 8 б+(р)—число ребер, выходящих из р. Множества 16» 243
(w: (w, v)^E} и {u>: (y, w)&E} называют соответст- венно входящим узлом и выходящим узлом вершины v s V. Понятия эквивалентности и пометки обобщаются на орграфы естественным образом. 6.2. Маршруты и связность в орграфах. Определение. Маршрутом длины к пз v в w в орграфе G = (V, Е) называется последовательность ребер вида (V, Ц>1)', (ц>1, w2), (ш2, Шз), .... (и\_2, (W*_h w), т. e. вторая вершина каждого ребра совпадает с первой вершиной следующего ребра. // Часто удобно представлять маршрут последователь- ностью вершин у, Ц>1, w2, ..., WK-2, Wk-\, w, которые его определяют. Если v — w, то маршрут назы- вают замкнутым маршрутом или циклом. Орграф без цик- лов называется ацикличным. Теоремы § 2 также справедливы с аналогичными до- казательствами для орграфов. Определим связность пли матрицу достижимости тем же самым способом. Заме- тим, однако, что для орграфов отношение R* не является отношением эквивалентности на V п, следовательно, не осуществляет разбиения V. Пусть 2) обозначает множество всех орграфов, а — множество всех графов. Мы можем определить отображе- ние tF: 2) следующим образом. Определение. Пусть G — (V, Е)*=£>. Тогда мно- жество вершин F(G)s^ совпадает с V, а множество ребер F(G) определяется применением следующих опе- раций на Е: а) удаляются все петли из Е; б) (у, w) заменяются па [у, гу] для всех (у, ш)&Е. Тогда F(G) является графом, связанным с оргра- фом G. // Для орграфов понятие связности является более со- держательным, чем для графов, и имеет отношение к проблеме обхода. Сейчас мы определим три важных типа связности орграфа. Определение. Если G = (7, Е)— орграф, то будем говорить, что: a) G слабо связный, если граф F(G) связный; б) G односторонне связный, если для каждой пары различных вершин у, w е V существует маршрут из у в w или обратно, 244
в) G сильно связный, если для каждой пары различ- ных вершин v, w s V существует маршрут из v в w и обратно. II Очевидно, что G сильно связный =>G односторонне связный =>G слабо связный. Пример 6.2. Пз рис. 7.22 мы видим, что орграф: а) только слабо связный (рис. 7.22,а); б) односторонне связный, но не сильно связный (рис. 7.22, Ь); в) сильно связный (рпс. 7.22,с). В терминах связности матрицы C = A(R*) орграф G сильно связный тогда и только тогда, когда Со — 1 для всех 1 С i, j < n; G односторонне связный тогда и толь- ко тогда, когда Со V Clt <= 1 для всех 1 С i, j С п. Пример 6.3. Рассмотрим орграф, представленный диаграммой на рпс. 7.23. Для этого орграфа Л(Я) = Л (Я3) ~0 1 0 1 0~ ~0 1 1 0 1“ 0 1 1 0 0 1 1 1 0 1 1 1 0 0 1 , Л(^) = 1 1 1 1 0 0 0 1 0 1 1 1 0 0 1 _1 0 0 0 0_ _0 1 0 1 0_ "1 1 1 0 1“ “1 1 1 1 1“ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 , Л (Я4) — 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 _0 1 1 0 1_ _1 1 1 0 1_ поэтому для С = V Л (Я*) = I V Л(Я) V Л (Я-) V Л (Я3) v л=о 245
имеем Cfj = 1 для всех 1 1, / 5 и, следовательно, граф является сильно связным. Для более эффективного вы- числения С можно использовать алгоритм Уоршолла. // Если G = (V, Е} — орграф, то можно разбить V путем определения отношения эквпвалептности р следующим образом: ири>, если v = w или существуют маршруты из v в w и обратно. Если {V,: — разбиение V и {Е(: 1 С i < р, а =(V< X У<) Л Е) являются соответ- ствующими множествами ребер, то подграфы = Е,) (1 С i < р) называются сильно связными компонен- тами G. Очевидно, что р = Я* и Л(р) может быть определено из Л (Я*) как А (р)у — Д 4 (/?*),<; граф G сильно связный тогда и только тогда, когда G имеет только одну сильно связную компоненту, т. е. если р = 1. Пример 6.4. Для орграфа на рис. 7.24 имеем г11 1 1-1 г! 0 0 0-1 Л(Я*)=. 0 1 0 0 1 1 0 0 0 10 0 0 0 10 0 0 1 1 0 0 0 1 Таким образом, 0) (!«££«£ 4) являются силь- но связными компонентами графа. / Пусть G —(V, Е) — ациклический орграф. Вершину v&V называют листом, если б+(р) — О. Если (v, w)&E, то v является непосредственным предком w, a w— не- посредственным потомком v. Если существует маршрут из v в w, то говорят, что v является предком w, a w — потомком V. Эти понятия не имеют смысла для орграфов, имею- щих циклы, так как для таких графов вершина может исходить сама из себя. Пример 6.5. Для ациклического орграфа, изобра- женного на рис, 7,25, пз вершин v?, vt и v$ ребра не 248
выходят, Pi является предком Ps, v& является прямым потомком Рз п т. д. Существует тесная связь между ациклическими ор- графами и частично упорядоченными отношениями. В ча- стности, имеет место следующий результат, доказатель- ство которого мы оставляем в качестве упражнения. За- метим, что для сокращения некоторых доказательств, приведенных ниже, частичные порядки будут основаны скорее на отношении <, чем на отношении С, и, следо- вательно, являются транзитивными и нерефлексивными. Предложение. а) Пусть отношение < является частичным отноше- нием порядка на конечном множестве V. Тогда, если Е = { (р, ip) : р < ip), то пара G=*(7, Е) является ациклическим графом. б) Пусть G — (F, Е) —ациклический орграф и отно- шение < определяется следующим образом: v<w, если v является предком w. Тогда отношение < является ча- стичным отношением порядка на V. / В терминах орграфов можно дать точное определение структурам данных, известным как ориентированное де- рево. Ориентированное дерево Т «= (7, Е) — это ациклический орграф, в котором одна вершина р, е V не имеет предков, а каждая другая вершина имеет только одного непосред- ственного предка; рг называется корнем дерева. Бинар- ное дерево — это ориентированное дерево, в котором каж- дая вершина имеет не более двух непосредственных по- томков, т. е. б+(р)«£2 для всех ре V. Говорят, что би- нарное дерево является полным, если каждая вершина, не являющаяся листом, имеет ровно два непосредствен- ных потомка. 247
Предложение. Следующие утверждения эквива- лентны по отношению к орграфу G — (V, Е); a) G является деревом. б) Граф F (G) связный, и существует вершина v„ которая не имеет предков, а все другие вершины имеют только по одному непосредственному предку. в) G имеет вершину v,, которая соединяется с любой другой вершиной единственным маршрутом. г) G имеет вершину vr, которая не имеет предков', все другие вершины имеют только одного непосредственного предка; существует маршрут к каждой вершине из vt. Доказательство оставляем в качестве упражнения. И 6.3. Упорядоченные орграфы и обходы. Списки смеж- ности являются альтернативной по отношению к матрице смежности формой представления орграфов. Заданное списком смежности представление определяет порядок ребер, выходящих пз каждой вершины. Определение. Упорядоченным орграфом называ- ется пара G *=* (V, Е), где V — конечное множество вер- шин, а Е — множество упорядоченных списков ориенти- рованных ребер. Элементы Е имеют вид £. = ((У, Wj), .... (у, wk)), где v, Wt е 7. И Пример 6.6. Упорядоченный орграф C = (bi, и2, из, щ}, {((щ, v2), (щ, Vt), {Vi, Vj)), (<У2, V4), (y2, Vt))}) может быть представлен списками смежности п может быть изображен диаграммой (рис. 7.26). 243
Упорядоченный орграф G определяет единственный неупорядоченный орграф; мы только заменяем каждый список ((п, wi), ..., (р, ш»)) множеством {(р, ipi), ... (р, ip»)}. Орграф, определенный таким образом, на- зывают орграфом, подчиненным G. Упорядоченный ациклический орграф является упорядоченным графом, чьим подчиненным орграфом является ациклический ор- граф. Упорядоченное ориентированное дерево является упорядоченным орграфом, чей подчиненный орграф яв- ляется ориентированным деревом. Пример 6.7. T = ({pi, ..., р6}, {((pi, р2), (Pi, Рз)), ( (^3, 1’4), (Уз, Ь’5), (^3, v6))}) является упорядоченным ориентированным деревом, где Pi — корень. Оно может быть и, пзображепо, как показано на рис. 7.27. И Упорядоченные ориенти- рованные деревья будем изо- бражать спуском вершин слева направо (рис. 7.27). Если принять такое согла- шение, то номера ребер Рпс. 7.27 можно опускать. Определение. 1) Пусть Sv и ST. — множества. Пометкой упорядо- ченного орграфа G = (F, Е) называется пара отображе- ний (/, g), где /: V—> Sy — пометка вершин, °° к g: Е-+ J SE — пометка ребер. fe=i Отображение g имеет вид g (((у, u-j),..., (и, и-к))) - (ар ..., а*) е S&. 2) Говорят, что два помеченных графа Gi=(7h EJ и G2 = (IZ2, П2) с функциями пометок (/i, gi) и (/2, g2) соответственно эквивалентны, если существует биекция /г: V\ -* V2 такая, что а) ((у, •••> (у, тогда п только тогда, 249
когда ((Л(р), h(W,Y), ...» (h(v), h(wk)))eE3 (эквивалентны как упорядоченные графы); б) f3(h(v)) для всех v&V (метки вершин сов- падают) ; в) для всех ((р, wi), (v, w3), ..., (v, wk))&Ei имеем wi), ...» (n, w*)))- ~Ы((адЛЫ). (ftW.iW))) (метки ребер совпадают). / Следуя § 5, определим обход орграфа как перестанов- ку или полное упорядочивание вершин. Для упорядочен- ных орграфов все делается точно так же. Для упорядо- ченных ориентированных деревьев часто полезны другие обходы. Некоторые пз них будут описаны ниже. Определение. Пусть Г“({щ, .... р„), Е) — упо- рядоченное ориентированное дерево и Д> = ((у, и>1), ... ..., (у, wk)}&E. Определим отношение < па множестве {u>i, ..., wki следующим образом: wt < Wj тогда п только тогда, когда i<j. Определим таким образом отношение < для каждого списка Е. II Предложение. Отношение < является отношени- ем частичного порядка на V. Доказательство. Из соотношения и < v следует список вида ((?. U’l)..(*Z, v)..(q, v), .... (q, wk)), который невозможен, так как в дереве не существует циклов. Следовательно, v < v для любого v е V. Из соотношений и < w и w < и следует, что сущест- вуют х, у е V такие, что £« = ((*, 1У1), .... (х, v), ..., (х, н>), .... (х, ш*)), ui)........... (у, w), .... (у, и), ..., (у, и,)). Если х=£у, то б_(ц>) = 2, что невозможно, так как Г— дерево. Следовательно, х = у и L, = ((x, u?j), ..., (х, v), ..., (х, w), ... ..., (х, и), .... (х, w»)), ". е. v < и. Поэтому отношение < есть частично упорядо- ченное отношение на V. II Отношение < сравнивает только вершины, выходя- щие пз одной вершпны, 250
. Пусть < определяет Пример 6.8. Для упорядоченного ориентированного дерева на рпс. 7.28 имеем <“{(У2, Уз), (Уч, Vs), (щ, р6), (l>s, Vs)} или V2 < Уз, Уч < Vs, Уч < Ув И Нв < Ув. // Замечание. Обозначим множество всех спусков из вершины v&V через Г+(н); аналогично через Г-(у) обо- аначим множество входов в v. Определение. Отноше- ние < называют трансверсаль- ным порядком вершин упоря- доченного направленного дере- ва T = (V, Е). И Наша цель в оставшейся части главы — вывести различ- ные полезные методы обхода для дерева с использованием симметрии путем расширения трансверсального порядка. Пе- ред точным определением об- ходов необходимы два результг отношение <, на V следующим образом: если w( < wi, то w't < ,w'j для всех iy, е Г+ J {uj} и для всех ic'e еГ+(^) и W. Предложение. 1) <s<.; 2) <е — частично упорядоченное отношение на V. Доказательство. 1) Утверждение очевидно. 2) а) Из v <,v следует, что или v < v, или существу- ют х, у е V такие, что х < у и v е Г+ (х) U {«} и v е е Г+ (у) U {у}. Однако у < у, так как < — отношение час- тичного порядка. Аналогично из х < у следует х + у, сле- довательно, реГ+(г)11Ы и у е Г+(у)U {у}. Однако это означает, что б”(у)ш2 или б-(ш)в2 для некоторого 1уеГ“(р). Это невозможно, потому что T^(V, Е) — де- рево. Таким образом, v<,v для всех ve V. б) v <,w означает, что v < w или что существуют х, у е V такие, что х < у и v s Г+ (х) U {х} и w е Г+ (у) U U {у}; w<,u означает, что w<u или что существуют г, se? такие, что r<s и w <= Г+ (г) U {г} и и^Г+(а)11 U Ы; wer+(r)Ulr} и w е Г* (у) U {у} дают, что или ге Г*(у), пли у е Г*(г). Следовательно, дерево имеет одну из форм, изобра- женных на рис, 7.29. Если ге Г+ (у), то зеГ+(у) а 251
х<у дает x<, s. Однако ие=Г+(з), следовательно, з <, и, и так как уеГ+(х), то, следовательно, v<,u. Если у «= Г+ (г), то х е Г+ (г) и г < з дает х <, s. Однако Рис. 7.29 не Г*(з)1) {«}; следовательно, х<,и, а уеГ+(:) дает v <,и. Следовательно, <, является отношением частичного порядка на V. / Иногда v<,w читают как «у находится слева от w». Предложение. Пусть Т = (Vt Е) — упорядоченное ориентированное дерево. Тогда для v(, Vj&V или vt <, V), или Vj <, у„ или же vt и Vj находятся на маршруте. Доказательство. Пусть у(, v> е V и vt & v}. Тогда существует вершина у«, такая, что у<е Г* (ye) U {yj и у,е s Г+(ув) U {yj. Если у(“У0 или У| = уа, то у< и у, нахо- дятся на маршруте; в противном случае рассмотрим пря- мые спуски 1У],..., wk из Уд. Тогда или Vt^r+iWi) И Vj6= r+(tym) ДЛЯ Wi^Wm, или у<, yj® Г+(и>*). В первом случае имеем пли у( <« Vj, или v} <, vt в за- висимости от того, и>| < wm или wm < wt. Во втором слу- чае повторяем процесс из wK, пока не будут выполнены условия первого случая, или получаем у( у0 или v} = ув; в этом случае у< и находятся на маршруте. U 252
Много полезных обходов дерева определяют посред- ством расширения отношения <, до полного упорядочи- вания V. Используя приведенный выше результат, надо только расширить <„ чтобы сравнивать вершины, кото- рые находятся на маршруте, для определения полного порядка на V, для которого <е является подпорядком. Определение. Пусть Т = (У, Е) — упорядоченное направленное дерево. Определим полную упорядоченность <1 на V следующим образом: если Vj спускается из vt, то щ<11>>; в противном случае vt<iVj, если у(<, vj. От- ношение <i называют предпорядком на V. И Очевидно, что <, s <ь Пример 6.9. Пусть Г •= (F, Е) — упорядоченное на- правленное дерево, изображенное на рис. 7.30. Тогда предпорядок на F = {д, b, с, d, е, f, g, h, 1} можно запи- сать как д <ib <i в <1/ <ic <jd <-\g <ii <1Л. Соответствующий обход вершины имеет вид a, b, е, f, с, d, g, t, h.U Определение. Пусть Т“(7, Е)— упорядоченное ориентированное дерево. Определим отношение <2 пол- ного порядка на V следующим образом: если vf спускает- ся пз Vj, то vt<2Vj‘, в противном случае v(<2V}, если Vj<,Vj. Отношение <2 называют постпорядком на V. И Очевидно, что <» s <2. Пример 6.10. Пусть Т и V такие же, как и в пре- дыдущем примере. Тогда постпорядок на V будет иметь ВИД е <2/ <2b <2 с <21 <2g <2& <sd <2 а 253
с обходом е, /, Ь, с, I, g, h, d, а. й Определение. Пусть T — (V, Е) — полное бинар- ное дерево. Определим симметричный порядок <, на И следующим образом: для каждой вершины, не являющей- ся листом и имеющей прямые спуски ipj и иъ (wi < ^2) > положим и\ < ,о для всех е Г+ (wj J {wj, и < ,w2 для всех w'2 s Г+ (ip2) Ц Й Порядок <, также является расширением <«. Пример 6.11. Пусть Т — дерево, изображенное на рис. 7.31. Тогда <, определено, как показано на рис 7.31. Обход по предпорядку упорядоченного ориентирован- ного дерева соответствует обходу по глубине с корнем в качестве начальной вершины. Если Г = (У, Е) — упорядоченное ориентированное де- рево, то вершины Т могут быть расположены в предпо- рядок с применением следующего алгоритма, начинаю- щегося с корня: procedure pre(v) process v if 0 do pre(w) for each w&L, endproc Соответствующий алгоритм для постпсрядка имеет вид procedure post (v) if L, — 0 then process i> else begin post ( ip ) for each w^Lv process v end 254
Упражнение 7.6. 1. Пусть В) —матрица смежности орграфа. Выписать выражения для функций б+ и б” в терминах А. 2. Сколько различных орграфов может существовать на вершинах? 3. Пусть G = (7, Е) — орграф. Какое максимально воз- можное значение величины IEI? 4. Пусть G = (7, Е) — орграф, где V = {p)t V2, Рз, Щ, Ps) и E — t(vt, р2), (i>2, v3), (p3, Vt), (Vi, v6), (ps, Рз)}. Опре- делить матрицы R(E*) и R(E*). 5. Дать матричные характеристики слабой, односто- ронней и сильной связности в орграфе. 6. Пусть G«=(7, Е) — ацикличный орграф. Какое мак- симально возможное значение величины |Е|? 7. Доказать два последних предложения в и. 6.2. 8. Показать, что если Г = (7, Е) — полное бинарное дерево и V обозначает множество уходов из Т, то 17'1 = = |7\ 7'1 + 1. 9. Поддеревом Т' e(7', Е') ориентированного дерева Г = (7, Е) называется такое ориентированное дерево, что: в) 0^7's7; б) Е' = 7'Х 7' ПЕ; в) ни одна из вершин 7\7' не является спуском вер- шины в 7'. Нарисовать все поддеревья T“({vi, v2, .... Р6), {(У1, V1), (Р], 1’з), (Р3, Vi), (v3, Рз), (рз, vt))). 10. Определение. Если Т — ориентированное де- рево, то уровень вершины определяют как максимальную длину маршрута от этой вершины до листа. Глубина вер- шины — это длина пути от корня до этой вершины. Глу- биной Т называют длину самого длинного маршрута в Т. Высотой вершины Т называют глубину Т за вычетом глу- бины вершины. Высота Т является высотой корня. / Пусть Т — ориентированное дерево ({pi, ..., р9), {(pi, v2), (pi, Рз), (И, Vi), (р3, Рз), (Уз, Vt), (l>3, V1), (р5, Vs), (l>5, 1>э)}), а) нарисовать T со значениями уровней в качестве ме- ток вершины; б) нарисовать Т со значениями глубин в качестве ме- ток вершины; 255
в) нарисовать Т со значениями высот в качестве ме- ток вершин; г) чему равна глубина Т? д) чему равна высота Г? 11. Пусть Т — ориентированное дерево. Разрезом С де- рева Т называется подмножество вершин Т таких, что а) не существует двух вершин С на маршруте в Т\ б) ни одна вершина не может быть добавлена к С без нарушения а). Определить все разрезы ориентированного дерева, изо- браженного на рпс. 7.32. Рис. 7.32 12. Пусть Te(F, Е)— полное бинарное дерево п IVI—n. Показать, что существует n!/2<n-1)/2 полных по- рядков на V, которые расширяют трансверсальный поря- док <. 13. Проинтерпретировать <ь <2 и <, для бинарных деревьев, связанных со структурой арифметических вы- ражений, как в § 6 гл. 3.
ГЛАВА 8 ЯЗЫКИ И ГРАММАТИКИ Все средства общения включают язык. Обычно мы «об- щаемся» с компьютером при помощи языка, который ка- ким-либо образом записывается (перфокарты, телетайп, экран дисплея и т. п.), и, следовательно, предложения языка состоят из строк символов. Действительно, весь вычислительный процесс может рассматриваться как пре- образование одного множества строк в другое. Такие про- цессы ведут себя совершенно определенным образом, и, следовательно, с ними можно обращаться как с матема- тическими объектами — по крайней мере строки могут рассматриваться как элементы моноида. В этой главе мы будем подходить к изучению языка скорее с математиче- ской точки зрения, чем с литературной. В § 1 будет вве- дено понятие строки и будут рассмотрены некоторые проблемы, относящиеся к этому вопросу; в § 2 будут вве- дены языковые структуры. Далее будут более детально исследованы некоторые важные классы языков и рас- смотрено введение в грамматический разбор. § 1. Основные понятия 1.1. Строки. Буква (или символ) — это простой неде- лимый знак, или символ; множество букв образует ал- фавит. Пример 1.1. А-{а, Ь, с), В-{0, 1), С-{PERFORM, ADD, GIVING, ТО, ...}, Е — {а, Ъ, с,..., х, у, г). Здесь мы можем рассматривать В как бинарный алфавит, С — как алфавит языка Кобол (в котором слова типа PERFORM не могут быть разделены), а Е—-как анг- лийский алфавит. <7 д. Кук, г, Беа» 257
Алфавиты являются множествами, и поэтому к пим можно применять теоретико-множественные обозначения. В частности, если А л В такие алфавиты, что A s В, то будем говорить, что А является подалфавитом В, или что В является расширением А. Строки являются упорядоченными совокупностями букв алфавита (папример, алфавита А) и, следовательно, выглядят подобно элементам Ап = А ХА Х...ХА. Од- нако будет более естественным записывать пх в виде а\аг. ..а„, а не (ai, ач, .... я„). Буквы сами по себе также являются строками для случая п = 1. Мы будем допускать случай, когда строка не имеет букв (пустая строка), и обозначать эту строку через Л. Заметим, что Л не являет- ся символом, т. е. АЙА для любого алфавита А. По аналогии с лингвистикой будем строки также назы- вать словами. Множество всех строк (слов) над алфа- витом А называют замыканием А и обозначают А*, так что А*»= A0 (J A1 (J A2 U ... = U Ап, где А°={Л}. п=о Для удобства определим также множество непустых строк над А следующим образом: А+ = А*\{Л} = U А\ п=1 Как уже упоминалось в примере 2.1 гл. 5, основная операция над строками называется конкатенацией; фор- мально она может быть определена как бинарная опера- ция ® на А* следующим образом: О: (ос, Р) и-*- оф. Аналогично эта же операция определяется для А*. Опе- рация ® ассоциативна, но пе коммутативна; Л является единицей в А* по отношению к ©. Сформулируем ниже основные свойства операции 0 па Л*и Л+. Предложение. Во отношению к операции ® а) А* является моноидом', б) А+ — полугруппа. И Результат слияния строк а и 0, т. е. оф, заключается в следующем: строка записывается сразу же за стро- кой а. Другой способ определения строки — рекурсивный: а является строкой над алфавитом А, если или а = Л, или а, = а$, где де А, а 0 — строка над А. Здесь оф означает, что буква а стоит непосредственно перед строкой 258
Все слова в Ая (п& {01 U N) состоят точно из п букв; в этом случае говорят, что строка имеет длину п. Длина обозначается как |а| и |а1 —п тогда и только тог- да, когда asАп. Очевидно, что IAI =0 и lai = 1 тогда и только тогда, когда as Л. Если строки состоят из повторяющихся букв, то обыч- но принимают сокращенные обозначения, чтобы пока- зать, что строку следует рассматривать как произведение (по отношению к операции конкатенации). Поэтому для аеЛ будем писать Л = a0, аа = а2, аа"-1 = ап, ns N. Будем использовать следующее обозначение для повто- ряющихся строк: строку ababa будем записывать как (ab)2a или же как а(Ьа)2. Этот пример иллюстрирует одну из основных трудно- стей при рассмотрении строк. Мы используем строки для описания строк, и, следовательно, мы должны иметь воз- можность различать используемые алфавиты. Если при- веденные выше выражения рассматривались над алфави- том Л, а символов «(» и «)» в Л нет, тогда смысл по- нятен; с другой стороны, если круглые скобки есть в Л, то выражение (ab)2a может быть понято как (ab))a. При условии что мы осознаем возможность таких проблем и знаем, какие алфавиты используются, этих ошибок мож- но избежать, используя различные алфавиты и биекцию между двумя алфавитами. В некоторых случаях может быть более удобно построить мономорфизм между мно- жествами строк, так что одно множество рассматривается над существенно более простым алфавитом. Пример 1.2. Пусть В = {0, 1} и Л = {а, Ъ, с). Тог- да <р: Л* -* В*, определенное соотношением ф(ху) = ф(г)ф(у), где х, у s Л* и ф(а) = 0, ф(Ь)=10, ф(с) = 110, является гомоморфизмом моноида (нам надо сохранять комбинации) из Л* в {0, 10, 110)*sB*. Например, ф: аЬЬса -> 010101100, ф-‘: 01011010110 -> abcbc. В действительности этот метод построения может исполь- зоваться для отображения произвольного конечного ал- фавита в {0, 1}*, / 259
Из определения длины строки следует, что если a, psЛ*, то |ар| = |а| + |р|, 1а"1=п1а1. Более того, если a s А, то 1ал| — п. При преобразовании одной строки в другую нежела- тельно, чтобы вся входная строка изменялась под дей- ствием одной операции; в противном случае процесс мож- но было бы определить только с помощью множества входных-выходных пар. В дальнейшем нам понадобится понятие подстроки. Пусть заданы строки а и р над алфавитом А. Строка Р называется подстрокой а, если а = 7рб, Т, 6 s А*. Пример 1.3. Пусть А —{а, Ъ, с} и а = abac. Тогда подстроками а являются следующие строки: А, а, Ь, с, ab, Ъа, ас, aba, bac, abac. В частности, заметим, что а является подстрокой самой себя, а А —подстрокой а (и любой другой строки), по- скольку а = ЛаЬас “ ЛаЛЬас = ЛаЛЬЛас = АаАЬАаАс — “ АаАЬЛаЛсЛ = аЛЬас = аЛЛЬас =... / Выделение подстроки естественно приводит к замене подстроки другой строкой. Однако пока еще мы не до- стигли уровня, достаточного для корректного выполнения этой операции. Рассмотрим, что случится, если мы имеем «функцию» /, которая замещает строку ху строкой ухх при условии, что первая строка является подстрокой в операнде. Тогда f(pqxy) = pqyzx. Однако неясно, чтб является результатом f(xypxy). Воз- можны два случая — уххрху или хурухх. Аналогично по- лучается, если мы применяем / несколько раз. Тогда f(xypxy)=> уххрухх, однако, применяя / к ххуу, полу- чаем / (ххуу) =“ хухху, Р (ххуу) — ухххху или хухухх. Таким образом, «функция» является не полностью опре- деленной, н мы не можем поправить дело, потребовав, 260
чтобы операция изменяла все подстроки, поскольку они могут частично перекрываться. Ситуация еще более усложняется, если применяются несколько замещающих функций. Необходимы средства выбора определенной подстроки всякий раз, когда возни- кает такой выбор; в частности, мы будем рассматривать подстроку, встречающуюся первой при чтении слева на- право. Для формализации рассуждений будем использовать порядковые свойства целых чисел и сами целые числа, соответствующие длинам строк. Предположим, что а и Р~ строки над A, loti < |р| и а является подстрокой р. Предположим, что а в р встречается т различными спо- собами и что |р| — loti = п. Тогда мы можем записать pm различными способами: Р — 7ia6i — 72аб2 =... — 7ma6m, где 7<, 6(sЛ*, К К m и m < п + 1 (если а = р, то п — = 0; поэтому существует только одна возможность). Бу- дем говорить, что 71, ..., 7™ специфицируют различные вхождения а в р и что 71 дает первое вхождение, а вхож- дение а непосредственно за 71 является первым вхож- дением. Пример 1.4. Пусть g — функция А*-* А* такая, что {х, у, р, и g заменяет первое вхождение ху в строке на ухх. Тогда g (PQxy)“ РЧУХХ, g (хурху) = уххрху, g2 (хурху) = уххрухх. Заметим также, что g® (а: V) “ g5 (хух2у) = g4 (ух*у) = g3 (ух3ух2) = ^{ух2ух') •= g(yxyx3) — у2хя, g(y2x3)=-у2х8; поэтому g® (х2у2)=g7 (х2у2)=... о Перед тем как продолжить изложение, отметим, что существует альтернативный набор терминов для буквы, алфавита и слова; это — слово, словарь и предложение соответственно. В некоторых контекстах эти термины бо- лее разумны, однако в этом случае необходимо проявлять особую тщательность в использовании термина «слово», поскольку оно имеет два смысла. 1.2. Языки. Совокупность строк (или предложений) называется языком, Формально язык L над алфавитом 261
A —это множество строк в А*; поэтому LsA*. Следова- тельно, операции над строками индуцируют операции на языках. Отсюда получаем L+ (транзитивное замыка- ние L) и L* (рефлексивное замыкание L) следующим об- разом: а) £°={А}; б) если Ц и L} — языки, то LiL} = {ху: х& Lt, у е в) Ln^Ln~'L, nsN; г) Z+ = Un>1£"; д) L* = U„>0£B. Сейчас обратим внимание на то, как слова могут со- ставляться в предложения, а множество всех предложе- ний, имеющих смысл, образует язык. Нас будут в основ- ном интересовать искусственные языки, такие как языки программирования или языки, описывающие правильные математические выражения, однако вначале будет полез- но рассмотреть случай английского языка. Это даст воз- можность сформулировать некоторые определения таким образом, что мы сможем сделать первые шаги в теорию языка. Возьмем предложение «The dog bit те». Это предложение можно рассматривать двумя способа- ми. Во-первых, изучать его как простую совокупность слов, каждое из которых является упорядоченной сово- купностью букв; в этом случае предложение рассматри- вается синтаксически. Во-вторых, интерпретировать пред- ложение, считая, что мы понимаем значения слов и их внутренние связи; тогда мы получаем семантику — зна- чение предложения. В дополнение заметим, что если мы произносим предложение, то оно влияет на нас своим воздействием — прагматизмом. В совокупности эти три области образуют семиотику языка. Пример 1.5. В языках программирования Фортран и Кобол утверждения Л-В + С, ADD В ТО С GIVING А имеют одинаковый семантический смысл понятий сложе- ния и присваивания, однако у них разный синтаксис. Прагматически они могут быть представлены на некото- рой машине как результат выполнения кода LOAD В ADD С STORE А. В 262
Основным объектом нашего рассмотрения будет об- ласть синтаксиса. Чтобы проиллюстрировать класс струк- тур, которые мы будем изучать, рассмотрим диаграмму на рис. 8.1. Предложение Подлежащее Сказуемое /Утолнение Артикль СущестВительное the dog btt Рис. 8.1 те На самом деле эта диаграмма означает, что (предло- жение) может быть построено путем слияния (подлежа- щего), (сказуемого) и (дополнения), хотя это требует формального определения. Подлежащее состоит из (ар- тикля) с (существительным), и окончательно получаем (артикль) «the», (существительное) «dog», ..., что дает нам предложение «the dog bit те». Перед тем как ввести терминологию и обозначения, необходимые для уточнения общих понятий в конкретной ситуации, изображенной на рис. 8.1, мы установим ос- новные цели теории языков и сделаем обзор оставшейся части главы. Напомним, что для заданного алфавита А язык L яв- ляется произвольным подмножеством множества А*, од- нако произвольные подмножества представляют очень не- значительный интерес. Мы хотим сосредоточить внима- ние на специальных языках, содержащих строки, которые благодаря внешней информации об их семантике счита- ются осмысленными или хорошо сконструированными. Наиболее интересные языки бесконечны и, следова- тельно, не могут быть выписаны явно. В этих случаях на- до придумать способы порождения языка; грамматика G может рассматриваться как такая порождающая система. Сформулируем две основные задачи формальной теории языков: а) Как по заданной грамматике G (и связанным с ней языком L) порождать предложения а: а s L? б) Как по заданным и а&А* устанавливать, принадлежит ли а е L? 263
Для того чтобы проверить, входят ли эти строки в L, надо знать, как L порождается грамматикой G. В § 2 и 3 мы опишем общие принципы грамматик с фразовой струк- турой, а затем подробнее рассмотрим некоторый подкласс, имеющий большое практическое значение. Обозначим через L(G) язык, порожденный граммати- кой G. Тогда алгоритм проверки вхождения a = L(G) называется грамматическим разбором; он использует а и G. Часто первоначальная грамматика не подходит для определенной техники разбора, однако она может быть преобразована к эквивалентному, более подходящему ви- ду. Вопросы, относящиеся к грамматическому разбору или модификации грамматики, будут рассматриваться в § 4. Проводя далее идею манипулирования грамматикой G, в некоторых весьма специальных (но обычных) ситуаци- ях можно перенести почти все (а иногда и все) трудно- сти грамматического разбора в анализ грамматики и, сле- довательно, намного упростить анализ конкретных строк. Спецификация ограничений, которым должны удовлет- ворять эти грамматики, является более сложной. Изуче- нию этих проблем посвящен § 5. Упражнение 8.1.1. Предположим, что Л и В — не- пустые алфавиты такие, что |Л| =р, 1В| — q, и ср: А -* NP, ф: В -* Ng — биекции. Пусть уу. А* -* N оп- ределено как л Х1: ах ... ak ~ 2 Ф (а»)*/5*1’, i=l а Хг: В* N определено как л Ха: .. Ък 2 -ф 1>. г=1 Доказать, что ХГ1оХ1 является биекцией строк, и пока- зать, как применяется это отображение. Для этого надо найти прямые и обратные образы строк x2yxz в А* и 145332 в В*, где А = {х, у, z), В — {1, 2, 3, 4, 5). § 2. Грамматики с фразовой структурой 2.1. Основные определения. Определение. Грамматикой с фразовой структу- рой (ГФС) G называется алгебраическая структура, со- стоящая из упорядоченной четверки (N, Т, Р, S), где: 264
a) N и T — непустые конечные алфавиты нетерми- нальных и терминальных символов*) соответственно та- ких, что N Л Т = 0; б) Р — конечное множество продукций, Р s V+ X V*, где V = NU Т называется словарем G; в) SeN называется начальным символом или источ- ником. II Предполагая, что символ -* не содержится в V, соот- ношение (а, Р)еР обычно записывают в виде а-* 0. Понятие продукции, которую также называют прави- лом преобразования, должно давать возможность заме- нять одну строку символов другой. Терминальные симво- лы обычно рассматриваются как неизменяемые символы. Поэтому, возможно, определение продукции в ГФС является чрезмерно общим. На практике соответствую- щие ограничения будут вводиться так, чтобы не нару- шать постоянства терминальных символов, однако сей- час этого определения достаточно. В качестве первого шага рассмотрим рис. 8.1 и по- пытаемся понять, как он связан со следующими при- мерами. Пример 2.1. Предложение на английском языке, приведенное ранее в качестве иллюстрации, может быть определено в грамматике G = (N,T,P,S), где 2V = {(пред- ложение), <подлежащее>, <артикль>, (существительное), (сказуемое), (дополнение)); Т — {the, dog, bit, me); P = = {((предложение), (существительное), (сказуемое), (до- полнение)), ((существительное), (артикль), (подлежа- щее)), ((артикль) the), ((подлежащее) dog), ((сказуе- мое) bit), ((дополнение) me)); S = (предложение). Эта частная система порождает только одно предло- жение «the dog bit ше» и, следовательно, может быть заменена на 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» (их бесконечное множество), добавляя к Т и Р незначительное число элементов. И Перед тем как описать механизм порождения пред- ложений, мы должны упомянуть нотацию, введенную Бэкусом (нормальная форма Бэкуса или форма Бэкуса- Наура, БНФ). Она особенно полезна, когда мы хотим использовать элементы из А, которые можно спутать с элементами из Т такими, как (предложение) и «пред- ложение». Эта нотация использует четыре символа: ::= (мета-присвоить), < (мета-открыть), > (мета-закрыть), I (мета-или). Понятия «мета-открыть» и «мета-закрыть» используют- ся для того, чтобы выделять строки в качестве элемен- тов IV, «мета-присвоить» заменяет символ и если (а, Р)еР, (а, то это может быть записано в виде а ::= 0 I у, что читается как «а есть р или у». БНФ впервые использовалась для определения син- таксиса Алгол-60. В случае, если у читателя имеются какие-либо сомнения в том, что БНФ способна опреде- лить что-нибудь серьезное, рекомендуем прочитать сооб- щение про Алгол-60. В работах по формальным языкам обычно избегают длинных строк в N и, следовательно, нотация Бэкуса не используется, за исключением сим- вола мета-или. Обычно прописные буквы используют для обозначения элементов N, а строчные —для элемен- тов Т. Пример 2.2. Рассмотрим G=(N, Т, Р, S), где N = {S,T}, Т •=* {a, b, с, d}, P = {S-*aTd, T-bT\b\cT\ с). Заметим, что двойное использование Т в этом примере не вызывает никаких затруднений. Грамматика будет порождать все строки a{b, c}+d, однако мы все еще не показали, как этого можно до- 266
стичь. Будем использовать продукции следующим об- разом. Пусть а, 0 е V*; тогда 0 прямо выводится из а, если а = "(00 и 0 = урб, где у, б, р е У*, a^V+ и о -* р е Р. Этот факт будем записывать в виде а =► 0; он может не- формально рассматриваться как преобразования строки а в строку 0 замещением подстроки о в ос на р. (Заме- тим, что не обязательно заменять конкретное вхождение о в а или использовать конкретную продукцию с левой частью о. Возможны любые вариации.) Пусть теперь а и 0 — ~лова над V и существует ко- нечная последовательность осо, oci, ..., сс„ где осо = ос, осг = 0 и ос<-1 => ос( (i = l, ..., г). Тогда будем говорить, * что а порождает 0 (записывается ос => 0) и что вывод 0 из а реализуется следующим образом: а=> он => осг=* ... ,.. =► осг-1 =► 0. Аналогично а => 0, если вывод использует непустую последовательность прямых выводов. Если a^V* такое, что S=> ос, то а называют сентенциальной ♦ формой. Более того, если a е Т* a S => а, то а является предложением, порожденным G. Таким образом, язык L(G), порожденный G, есть {а: а^Т* я S* •=► а). Там, где G подразумевается, можно определить L(X) = = {ос: а^Т*, X^N и А'=>ос}. Поскольку, применяя про- дукции к сентенциальным формам, можно действовать достаточно произвольно, то возможно существование не- скольких допустимых выводных последовательностей для данного предложения в L(G), где G — конкретная грам- матика. Среди этих последовательностей мы выбираем ту, которая на каждом этане оперирует с самой левой из возможных подстрок, в которой элементы заменяются на элементы из Р. Такая последовательность Низывается (левой) канонической выводной последовательностью для предложения. Пример 2.3. Пусть G = ({B}, (( , )), Р, 5), где Р = {5->(5)|РР|( )). Тогда предложение ( ) (( ) ( )) может быть выводе- но многими способами. 267
Приведем пять из них: 1) В^ВВ^ 2) =>( )В + =>( )(£)=> =>( )(55)=> =>( )(( )5)* В =*- ВВ => =>( )В^ =>( )(В)^ =>( )(В5)=> =>В(5)=> ">( )(В)=> =>( )(55)=> =>( )(( )*)=* =>( }(В)^ =>( )(2?2?)=> =>( )(*( ))^ *( )(( )( )); =>£(£)=> =>5(55)=> -В(( )В) + *( )(( )*)- =>( )(( )( ))• Первый из этих выводов является каноническим. 2.2. Иерархия Хомского. Обсуждавшаяся до сих пор система — сильное описательное средство, однако при создавшемся положении вещей она является слишком общей. Тем не менее, если наложить ограничения, мы получим более интересный, хотя все еще достаточно мощ- ный математический объект. Начальные ограничения, которые мы будем накладывать па структуру граммати- ки, определяют элементы Р. Определение (иерархия Хомского). Пусть G = *=(N, Т, Р, S) является ГФС, описанной в п. 2.1. Такую грамматику называют грамматикой Хомского типа 0. Если все элементы Р получаются из формы а -* р, где 0 = 71x72, а Р = 71672, 7ь 72 еЕ*, x<=N, то гово- рят, что G является контекстно-зависимой грамматикой, или грамматикой Хомского типа 1 (КЗГ). (В этом опре- делении строки 71 и 72 могут рассматриваться как кон- текст, в котором х может заменяться посредством б.) Другим (альтернативным) ограничением для грамма- тики Хомского типа 1 является то, что в каждой продук- ции аир должны быуь такими, что 1 < lai < Ipl. (Экви- валентность этих двух определений неочевидна и доказы- вается ниже.) Если подстановки могут быть выполнены 268
без рассмотрения контекстов, тогда мы можем заме- нить «контексты» Yi и 72 пустой строкой Л и получить более слабое ограничение: если то x^N и б^У+.Этому ограничению удовлетворяют грамматики Хомского типа 2. Наконец, если Р состоит только из про- дукций вида х -* б, где x^N и б е Т U TN (так, что пра- вая часть является или единичным терминалом, или единичным терминалом, за которым следует единичный нетерминал), то говорят, что G является грамматикой Хомского типа 3. И Часто бывает полезно использовать более общие фор- мы внутри множества продукций, хотя формально это и не разрешается. Хотелось бы быть в состоянии вклю- чить пустую строку Л в качестве правой части любой продукции. Однако, как увидим позднее, это вызывает трудности. Такие Л-продукции крайне необходимы с об- щей точки зрения, если только Л е L. В этом случае мы можем добавить S -* Л к Р при условии, что S не встре- чается в правой части любой продукции. Однако в неко- торых случаях необходимо разрешать также и более об- щие Л-продукции. Чтобы различать грамматики Хомско- го и те грамматики, в которых разрешаются Л-продук- ции, введем расширенные версии грамматик Хомского типа 2 и 3 — контекстно-свободные и регулярные грам- матики соответственно. Языки, порожденные каким-либо из этих типов грам- матик, имеют аналогичные названия. Так, структурная грамматика порождает структурный язык, структурная грамматика Хомского типа 1 — язык Хомского типа 1, контекстно-свободная грамматика — контекстно-свобод- ный язык, а регулярная грамматика порождает регуляр- ный язык (или регулярное множество'). Большинство примеров этой главы будет касаться контекстно-свобод- ных языков, а в гл. 9 мы сконцентрируем внимание на регулярных языках. Однако большинство практических языков являются некоторыми расширениями контекст- но-зависимых языков. Чтобы указать на ограничения контекстно-свободной грамматики, рассмотрим следую- щий важный пример. Пример 2.4. {xnynzn: neNl является контекстно- зависимым языком. Предположим, что (? = (Л, Т, Р, S), где Л = {S, X, Y, z}, Т = {х, у, z), Р = {Р1, ..., Р1}, Pi = S->-xSYZ, P2 = S-+xYZ, 269
Рз — xY -> xy, Pt = yY -> yy, P6 = yZ -> yz, P6 = ZY-* YZ, Pi — zZ-+ zz. Вначале лучить заметим, что для любого rasN мы можем по- • xn~1S(YZ)n~1=> (Л) zn(YZ)n=X (Л) * xnYnZn=> (Р,) xnyY“'~'1Zn^- (Ps) * xnynZn=> (Ра) « x у z£ (Р6) * n n n я у z ; (Р,) поэтому {xnynzn‘. n&N);sL(G). Теперь мы долиты показать, что никакие другие строки не могут быть порождены G. Хотя возможны не- которые изменения в порядке применения правил (Pi), (Рг) и (Ре), любое предложение должно выводиться по- средством сентенциальной формы такой, как xnYZa, где а состоит из га — 1 символов У и Z. Для того чтобы по- лучить строку над Т, мы должны в конце концов исполь- зовать правила (Ра), (Ps) и (Р?), одпако (Pz) может преобразовать Z в z только в контексте zZ, а (Ре) осу- ществляет такую же замену в контексте yZ. Аналогично для замены У па у при помощи правил (Р4) и (Pg) тре- буются контексты yY и xY соответственно. Па этой ста- дии подстрока хп состоит только из терминалов, поэтому на следующем шаге строка должна иметь вид xnyZa и получаться при помощи (Рз). Однако мы знаем, что пра- вильное предложение должно порождаться преобразова- нием из Za в У-'Я" посредством (Ре). Действительно, только таким образом можно успешно получить строку. Предположим, что мы имеем промежуточную подстро- ку вида yYmZfY^, где р состоит из оставшихся элементов У и Z. Из рассуждений, аналогичных приведенным вы- ше, следует, что для получения подстроки ym+'ZrY$ нуж- 270
но т раз применить (Р4). Однако, если сейчас мы ис- пользуем (Рб) для получения ym+izZp~iY^, то никаким правилом нельзя заменить элемент У на у (или любой другой терминал). Единственный способ выйти из этого положения — это р раз применить (Р6), чтобы переме- стить У влево и, следовательно, получить xnynzn. И Это пример контекстно-зависимого языка, который, как будет показано, не является контекстно-свободным. Аналогично существуют контекстно-свободные языки, которые не являются регулярными (см. гл. 9). Вернемся теперь к доказательству эквивалентности альтернативных определений коптекстно-зависимых грамматик. Определение. Грамматики G4 и G2 эквивалентны, если L(t?i) = £(G2). И Предложение. L является контекстно-зависимым языком тогда и только тогда, когда он может быть по- рожден грамматикой, у которой продукции а -> ц удов- летворяют условию 1 lol =С Ipl. Доказательство. Если L контекстно-зависи- мый язык, то существует грамматика G с продукциями вида аАр -+ аур, где А е N, у е 7+ и а, р е V* такие, что L = L(G). Однако I аАр I = lal + lAl + lpl = lal+l + lpl^'l, lay pl = lai + I у I + Ipl > lai + 1+ Ipl = laApl. Следовательно, 1 C laApI =5 laypl, что и требовалось до- казать. Пусть G = (N, Т, Р, S) — грамматика, у которой про- дукции а -* ц удовлетворяют соотношению lol |ц|. Мы должны создать грамматику G', эквивалентную G, с продукциями вида аЛр -> аур. Продукции из G имеют вид 1) А -> yi.,.уР или же 2) ai... а„ Pi... Р„ где п С q и A s N, at, р(, у( е V. Во всех продукциях заменим каждый встречающийся элемент at е Т новым нетерминальным элементом А< и включим продукции At -* а{ в G'. Продукции типа 1) те- перь имеют правильную форму и включены в G'. Однако продукции типа 2) необходимо модифицировать. Сейчас они имеют вид Wi^Wn- n^q, 271
где Wt ъ Yt являются нетерминальными символами новой грамматики. Для каждой такой продукции введем новые элементы У1, Yg, не являющиеся терминалами, и n + q новых продукций: п продукций W. ... ... Wn-^W,... Wn, Wn->Y1Y2Wa...Wnt Ух ... Yn^Wn-.Wn-^ Ух ... Yn-tYn^Wn, Ух ... ?п^2?п-^п -> Ух ... У„_2У„_1У„Уп+х ... ?g и q продукций YlY2...Yg^YlY2...Yg, YlYa...Y9-YlY2Y3..,Y9, YlY2...Yg-iYq^YlY2...Y9-iY9. Все эти продукции имеют вид аА [J -* ayfJ. Новые нетерминалы У1, У, вынуждают приме- нять эти продукции в написанном порядке так, чтобы никакие из предложений, не входящих в исходный язык, не могли быть созданы. И В заключение этого параграфа обсудим понятие не- однозначности. Классическим примером неоднозначного предложения является предложение «They аге flying planes». Мы имеем две интерпретации этого предложения, зави- сящие от того, рассматриваем мы «аге flying» как ска- зуемое или же «flying planes» как дополнение. Это при- водит нас непосредственно к точному определению не- однозначности. Язык называется неоднозначным, если он содержит неоднозначное предложение. Предложение яв- ляется синтаксически неоднозначным, если оно имеет более одного канонического вывода, и семантически неод- нозначным, если для заданного канонического вывода оно имеет более одной интерпретации. (Выводы относятся не непосредственно к языку, а к грамматике, порождающей его. Следовательно, мы. должны ссылаться на неоднознач- ную грамматику; однако существуют существенно неод- нозначные языки, которые могут порождаться только не- однозначными грамматиками.) Для более подробного 272
изучения семантических неоднозначностей рекомендуем обратиться к специальной литературе о языках програм- мирования, а сейчас проиллюстрируем синтаксические неоднозначности двумя примерами. Пример 2.5. 1. Пусть С“(Ш, {1, -}, {Е — Е-Е ID, Е). Тогда а) Е^Е-Е* ->!-£•* "►!-£-£*> *>1-1-Е=> *>1 — 1 — 1; б) Е^-Е-Е^ *> Е — Е — Е °> ">1-1-£*> ">1-1-1. Из этих последовательностей следует, что два указанных вывода являются различными, и, следовательно, хоте- лось бы придать им различные значения. В примере а) ait 1 1 Ь Рис. 8.2 второй знак «минус», вычисляемый вначале, дает 1; в примере б) первый знак «минус», выполняемый пер- вым, дает —1. (Диаграммы на рис. 8.2 иллюстрируют различные структуры. 18 Д. Кук, Г. Бейэ 273
2. Рассмотрим хорошо известный пример из первой спецификации языка Алгол-60. Сужая грамматику до относящегося к делу подъязыка, будем иметь продукции S -> if В then 5 else S I if В then S I U, где S — утверждение, В — булево • выражение, U — без- Рис. 8.3 условное утверждение. Теперь рассмотрим выражение if Bi then if Bz then Ui else Uz. Мы не знаем, принадлежит ли else Uz к if В\ или к if Bz. Формально мы можем вывести это предложение, рассматривая В и U как терминалы, следующим образом (рис. 8.3,а, Ъ соответственно): a) S =► if В then S •=► •=> if В then if В then S else 5 => 274
=► if В then if В then U else S => *=> if 5 then if В then U else U; 6) S =► if В then S else S => =► if В then if В then S else S =>• => if В then if В then U else S => if В then if В then U else U. Й Упражнение 2.2. 1. Выразить явно языки, определенные следующими грамматиками: a) G =({<число>, {0, 1, 2, 9), Р, <число)), где Р = {<число> -*011121314151617181 91; б) G=({<P>, <L>, <ZJ>}, {0, 1, 2, .... 9}, Р, <Р>), где Р = {<Р>-* <LXD> | <£>, <L >-* 11 2 I 3...8 I 9, <£>-<£>, </)>-> 0). 2. Определить грамматику G' —{N't Т\ Р\ S'), экви- валентную G=(U, В, С, S), {х, у, z), Р, S), где P = {S-*42?’G, AB-+BAz, zB -> АгВх, Ах, В-*-у, C-+z), с продукциями вида для уб=(ДГ UT')*, а, [J <=(2V'U 71')*» 3. Определить класс Хомского грамматики, опреде- ленной следующим образом: G = (U, В, Т, S), {х, у, z), Р, S), где Р = {5 -> хТВ I хВ, Т -* хТА 1 хА, В -* yz, Ay -* у A, Az -* yzz). Используя свойство класса, к которому принадлежит G, установить, принадлежат или нет L(G) следующие строки: x*yxz, xiy2z2t xyxz. 18* 275
4. Определить последовательность разрезов представ- ленного здесь производящего дерева, соответствующую самому правому выводу предложения х + х * х. 5. Определить порядок в множестве продукций Р та- ким образом, чтобы была возможность канонического вы- вода, определяющего последовательность целых чисел в N. Продемонстрировать две такие последовательности для предложения «aza» в L(G\), где Gi дано ниже. Вы- вести также строку над N, описывающую все выводы + в языке ЦСп), т. е. показать, что А=>А подразумева- ет неоднозначность. Здесь Gi=(N, Т, Р, Е), G2 = (N, Т, Р, А), где N = {А, В, С, Е, R}, Т = {a, d, е, х, z) и Р = {А В I Cd, В - Вх I еС I С, С -* A I xR, Е -> аЕ\ Еа\ R, R -> z). 6. Выяснить, являются ли следующие грамматики не- однозначными: a) G=(U, В, S}, {а, Ь, с}, Р, S), где P = {S-+AB, А -> а.1 ab, В -+ с I Ьс}‘, б) С?=({(целое без зпака>, (число)}, D, Р, (целое без знака)), где D = {0, 1, ..., 9} и Р = {(целое без знака) -> (число), (число) -> (число) (число), (число) -> О I 1 I 2 ... I 9}. § 3. Контекстно-свободные языки 3.1. Основные определения. Контекстно-свободные грамматики (КСГ) и контекстно-свободные языки (КСЯ) важны для практических вычислений, так как, хотя большинство языков является некоторым расширением конте! стно зависимых языков, их легче изучать как кон- текстно свободные языки, а затем по другим (семанти- 276
ческим) критериям отбросить некоторые из предложений. В этих случаях на КЗГ можно ссылаться как на грам- матики, специфицированные связанным синтаксисом, а на КСГ — как специфицированные несвязанным синтак- сисом. КСГ также дают возможность прояснить вопросы, содержащие (синтаксическую) неоднозначность. Последовательность вывода a^L(G) может быть изо- бражена как упорядоченное дерево (см. ниже). Корень * дерева обозначен через S, и если S=>a^ Т* и а = = ai... а„, то выходы помечены по порядку at, ..., а„. • • Предположим, что S => Р => у => а и что р =► 7 достигает- ся в результате применения продукции С -* 71... ym, где 7< е V. В дереве это представляется пометкой вершины С и тп ее преемников (точек, из которых С достигается за один шаг) 71, ..., т™. Поэтому метки могут быть оди- наковыми. Пример 3.1. Рассмотрим грамматику с продук- циями Е-Т\Е + Т, Т-+1\1*Т, 1-*(Е)\х. Обычно в случае контекстно-свободных грамматик мы будем опускать другие эле- менты грамматики; первое правило специфицирует ис- точник, а нетерминалами яв- ляются только символы в левой стороне продукций. В этом случае вывод предло- жения х + х * х может быть изображен так, как это сде- лано на рис. 8.4. II С конструктивной точки врения это изображение на- зывается деревом вывода. (Когда это дерево используют для того, чтобы проанали- зировать, могут или не могут строки содержаться в L(G), оно называется деревом грамматического разбора.) Легко видеть, что предложение является неоднозначным, если оно имеет два неизоморфных дерева вывода, и что для контекстно-свободных грамматик канонический грамма- тический разбор изоморфен любой другой схеме обхода дерева. Мы уже установили тот очевидный факт, что КСГ являются более ограниченными, чем КЗГ, но тем не ме- 277
нее они все же обладают весьма широкими изобразитель- ными возможностями. Пример 3.2. Используя контекстно-свободные пра- вила, можно породить: 1) все последовательности из символов А: S = AS\A.; 2) все непустые списки из символов А, отделенные друг от друга символами В: S A I ABS; 3) те же списки, что и в примере 3.2,2, однако до- пускается возможность пустого списка: S + Т I Л, Т А I АВТ-, 4) все строки, начинающиеся с последовательности символов А или В и оканчивающиеся символами С или D соответственно: SASC\BSD\X- например, S -> [S] I (S) I X. В этих примерах А, В, С, D и X могут быть опреде- лены дополнительно. И 3.2, Характеристические свойства. Особенностью рас- смотренных выше примеров, о которых вскоре мы смо- жем сказать несколько больше, является свойство ре- курсии (один шаг рекурсии при каждом n^N). Труд- ности возникают тогда, когда требуется наложить неко- торые ограничения на глубину рекурсии, не придумывая новых правил для каждой допустимой глубины рекурсии. Поскольку N и Р конечны, то очевидно, что если не раз- решать никаких рекурсий, то L(G) также будет конечен, и этот случай не очень интересен. Прежде чем идти дальше, введем необходимую тер- минологию. Говорят, что грамматика G: а) леворекурсивная, если в ней имеются выводы вида Х=>Ха, где X е 2V, аеУ+; б) праворекурсивная, если в ней имеются выводы вида * Х=>аХ, где X и а такие же, как и выше; 278
в) самовключающая, если она имеет выводы вида X => аХр, где X е W и а, Ре V+, Говорят, что КСГ рекурсивна, если имеется один из слу- чаев а) — в). Из сделанных выше замечаний ясно, что желательно бы иметь в грамматике «петли», однако не произвольного типа. К этому вопросу мы вернемся в § 4. Сформулируем результат о возможностях КСГ. В тео- рии КСЯ это, вероятно, наиболее известный результат. Его доказательство использует рекурсивные свойства КСГ и структуру деревьев. Этот результат известен как лемма о разрастании для КСЯ или же как uvwxy теорема. Теорема. Если L — контекстно-свободный язык, то существует neN такое, что если z^L и |z|>n, то г может быть записано в виде uvwxy, где и, v, w, х, у ® Г*, vx ¥• Л и для любого t е N выполняется условие utfwx'y <= L. Доказательство. Поскольку L — контекстно-сво- бодный язык, то он может быть порожден некоторой грамматикой G = (N, Т, Р, S) и не имеет продукций, за исключением, возможно, S-* А (если AsL(G)), умень- шающих длину сентенциальных форм. (Если A&L, то S также исключают из правых частей продукций для того, чтобы не уменьшалась длина сентенциальных форм. В § 4 показано, что такая грамматика G может быть найдена.) Если G не рекурсивна, то, поскольку N и Р конечны, L(G) также конечен, и, следовательно, теорема справед- лива, если взять п большим, чем длина самой длинной строки в L(G). С другой стороны, если G рекурсивна, то существует дерево вывода, в котором некоторый нетер- минал, например А, встречается дважды на пути от кор- ня к листу. Эта ситуация изображена на рис. 8.5. (Сюда включены лишь необходимые нам свойства.) Более того, поскольку G рекурсивна, то мы можем добиться выполнения соотношения \uvwxy\^n, треп больше длины самого длинного предложения, получен- ного путем нерекурсивного вывода (<fcm, где /с —длина самой длинной продукции Р, a m= |А1). Таким образом, если z^L и |zl>n, то z должно иметь требуемый вид + для некоторых пяти строк. Тогда А=> vAx (vx¥= Л, по- 279
этому |уЛх| > Ш) и А =>и\ Следовательно, А => vlAxl=> viwxi * для любого i е N. Отсюда, так как 5=> иАу, имеем „ * st S=>uv и>х у для любого i е N и, таким образом, urfwafy s L для любого f е N. И Этот результат может быть использован для проверки того, что некоторые конструкции в языках программиро- вания не могут быть определены с помощью КСГ. Да- дим более реальный пример, который не требует знания конкретного языка. Пример 3.3. Грамматика из примера 2.4 порожда- ет язык {xnynznx nsN}. Сейчас мы можем показать, что этот язык является контекстно-зависимым и не может быть порожден КСГ. Из теоремы следует, что существу- ет некоторое достаточно большое п, при котором xnynzn может быть записано в виде abcdf (требуется очевидная замена символов) для некоторых строк а, ..., /. Посколь- ку х и z в строке разделены, то очевидно, что строки а и b не могут содержать все символы х, у и z; аналогич- но и для всех других пар из {a, b, с, d, /}. В частности, по крайней мере один из символов х, у и z не может быть одновременно в строках bad; таким образом, стро- ка ab2cd2j, которая по теореме содержится в L, содержит не все символы х, у и z (они также могут быть распо- 280
ложены в другом порядке, однако в дальнейшем мы не будем рассматривать эту возможность). Следовательно, мы не получаем тот же самый язык, из чего и следует требуемый результат. И Подобные противоречия могут быть получены во мно- гих ситуациях, когда информация, содержащаяся в более ранней части строки, влияет на требуемую структуру по- следующей подстроки. Следующий пример является ти- пичным в этом отношении. Пример 3.4. Язык L = {1р: р е N, р — простое чис- ло) не является контекстно-свободным: L = {11, 111, 11111, ...). Предположим, что L является КСЯ. Так как существует бесконечное множество простых чисел, то имеется про- стое число q такое, что 1’ = uvwxy, vx = Л, uv'ivx’y s L для всех i s N (это следует из приведенной выше леммы). Таким об- разом, существуют a, b, с, d, е такие, что I9 == 1а 1с 1 * при b + d > 0 и 1’1 = аа(1ь),Г(1‘,)Чге£ для всех iе N, так что g = a + b + c + d + e — простое число и g>l, a qt — а + с + е + (b + d)i— простое число для всех i е N. В частности, — простое число при i = = a + b + c + d+ e+l, и в этом случае = (л + с + е) + (b + d) (а + Ь + с + d + е + 1) = = (а + с + е) + (Ь + d) ((a + с + е) + (Ь + d) + 1) = = ((a + c + e) + (& + d))(l + (b + d)) = g(l + b + d). Однако д>1 и Ь + d + 1 > 1; следовательно, qt не явля- ется простым числом для всех i е N, и мы получаем про- тиворечие. Поэтому £ = {1₽: peN, р —простое число) не является КСЯ. И Этот пример также демонстрирует практическую важ- ность связанного и несвязанного синтаксисов. Можно придумать жесткий фиксированный синтаксис, который 281
включает правильную семантику. Однако, где это воз- можно, часто гораздо удобнее и эффективнее разрешить использование более широкого языка, порожденного (обычно контекстно-свободной) грамматикой, а затем, если необходимо, сузить множество путем дальнейшей семантической проверки. В примере 3.4 мы могли бы использовать правило 8 ->15111, чтобы породить все строки 1’: <?>1, и после этого про- верить, что «q — простое число», с помощью подходящего арифметического алгоритма. Короче говоря, контекстно-зависимые грамматики яв- ляются сложными и не изучены с достаточной полнотой. С другой стороны, контекстно-свободным грамматикам уделяется достаточно много внимания, и они составляют основу почти всех практических компьютерных трансля- ционных систем. Упражнение 8.3. 1. Вывести КСГ, которая порождает множество всех строк над {а, Ь}, имеющих равное количество а и Ь. 2. Построить грамматики, порождающие следующие языки: a) {ain: п>1); б) {а”Ь2т-1: п, т > 1); в) {anbn: п>1}, n, meN. 3. Используя лемму о разрастании, показать, что язык L = (an : п е n| не является контекстно-свободным. 4. Показать, что если L\ и La являются КСЯ, то та- ким же является язык L\ U Li. 5. Доказать, что множества {xnynzm: п > 1, т > 1), {xmynzn‘. п > 1, т > 1} являются КСЯ; показать, что если языки L\ и Li явля- ются контекстно-свободными, то отсюда не следует, что язык Li П L2 является контекстно-свободным. 282
§ 4. Понятия грамматического разбора и грамматических модификаций Наиболее непосредственный и очевидный контакт, ко- торый средний пользователь имеет с процессами перево- да (трансляцией с одного языка на другой),— это ис- пользование различного рода компиляторов для таких языков высокого уровня, как Паскаль, Фортран, Кобол, Алгол и др. При использовании такого языка программа, которую мы написали, транслируется в эквивалентную программу в машинном коде (объектную программу), которая может быть расшифрована и выполнена компью- тером. Общая схема компиляции изображена на рис. 8.6. Исходная программа Лексический анализа- тор I Лексическая форма Грамматический разбор Дерево грамматического разбора Таблица символов Генератор кода < I Объектная программа Оптимизатор I Оптимизированная объектная программа Рис. 8.6 В общем случае стадии процесса компиляции могут рассматриваться связанными последовательно, как это изображено на диаграмме; однако на практике они часто выполняются одновременно. Генерация кода требует зна- ния семантических интерпретаций, которые связаны о 283
каждой синтаксической структурой внутри программы. Для оптимизации машинного кода необходимо знать тон- кости строения машины. Мы пе будем рассматривать эти стадии, а ограничимся лишь обсуждением трансляции ключевой программы в дерево грамматического разбора. Ключевая (исходная) программа является просто строкой символов. Внутри этой строки часто встречаются некоторые комбинации символов, в которых отдельные символы не имеют смысла, однако комбинация символов передает смысл. (См. пример 2.1; «dog» имеет значение, а буква «о» внутри «dog», очевидно, отдельно не несет смысловой нагрузки.) Такие составные символы, назы- ваемые также лексемами, не являются абсолютно необ- ходимыми и могут не использоваться в некоторых языко- вых трансляторах, однако обычно они существуют и ко- дируются одним символом (для каждой комбинации свой символ), чтобы сократить длину исходной программы (на данный момент в ее лексической форме) и избежать необходимости рассматривать ненужные детали на сле- дующих этапах. Типичными лексемами являются: а) ключевые слова, т. е. слова с постоянным значе- нием в языке; например, begin end while Паскаль, GOTO' DO .OR. Фортран, +,—,*,/ в большинстве языков; б) числа 52, 31.65 и т. п.; в) строки или последовательности символов; г) идентификаторы, введенные программистом. Лексемы обычно описываются регулярными грамматиками. Следо- \ вательно, мы свели исходную про- \ блему к грамматическому разбору \ строки лексем. Графически это оз- \ начает — заполнить треугольник на \ рис. 8.7 таким образом, чтобы он flja2 ' • • • • • ап был совместим с продукцией правил грамматики. Рис' °-7 4.1. Процедуры приведения. В об- щем случае нам не разрешается из- менять строку a = aia2...«n; поэтому вся деятельность до проведения процесса грамматического разбора должна быть направлена на грамматику. Потенциально нам 284
будет необходимо осуществить достаточно сложные пре- образования грамматики, чтобы проверить, что все нетер- миналы действительно можно использовать в граммати- ческом разборе. Существует два варианта, в которых нетерминалы могут не подходить для проведения произ- вольного грамматического разбора; опишем их формально. Определение. Пусть G = (N, Т, Р, S) есть КСГ. Тогда говорят, что нетерминальный символ X&N яв- ляется: а) недоступным, если X ¥= S и не существует вывода вида 5=>аХР для а, 0eV*; б) непродуктивным, если не существует строки 7 е + е Т* такой, что X => у; в) бесполезным, если он недоступен или непродук- тивен. Грамматика, не имеющая бесполезных нетерминалов, называется редуцированной. И Ясно, что бесполезные символы не играют никакой роли в построении предложений. Хотя хотелось бы не включать в грамматику бесполезность символов, они мо- гут быть введены алгоритмами, предназначенными для модификации грамматики с целью соответствия некото- рым требованиям (см. ниже). Бесполезные символы не обязательно увеличивают размер грамматического разбо- ра, и сейчас мы опишем процесс их удаления. Пусть G = (N, Т, Р, S) есть КСГ. Определим множе- ство N' как 2V'==/VU{t), где т — новый символ (т^ V), и отношение р на N' сле- дующим образом: (Л, В) ер, если А-*-аВ$^Р при A, B^N, а, р е V*; (Л, т)ер, если Л -> 7 ® Р при неко- тором 7 е Г*. Предложение. а) Л доступно тогда и только тогда, когда A^S или (S, Л)ер+; б) Л является продуктивным тогда и только тогда, когда (Л, т) е р+. Доказательство. а) Л доступно тогда и только тогда, когда существует * вывод вида S => аЛр для а, р е 7* или, что эквивалент- 289
но, тогда и только тогда, когда существует i > 0 такое, что I S => ... => аЛр. Когда S^=A, это имеет место лишь в случае 5р+Л; по-1 этому (5, Я)ер+. б) А продуктивно тогда и только тогда, когда Л=Ф-у для некоторого i > 0 и к е Г*, т. е. тогда и только тогда, когда существует последовательность сентенциальных форм ао, ац ..а,- таких, что Л => а0 =*- ai => ... => а,- = у, т. е. когда существует последовательность А=Ао, Ai,... ..Aj-i s N такая, что At является подстрокой af, и, следовательно, ЛорЛь Л1рЛг, ..., A{-2pAt-t, Л<-1-> р, где р —подстрока у, т. е. ЛорЛц AipAz, Л<_1рт. По- этому Лр+т. II На практике р+ можно вычислять, используя алго- ритм Уоршолла. Пусть NucN — множество бесполезных символов G и N' = N\N„, Р' — Р\Ри, где Ри — множество продукций, содержащих элементы А«. Тогда G’ — (N', Т', Р', S), где Т’ — множество терминальных символов, по- являющихся в продукциях Р', эквивалентно КСГ без бесполезных символов. Алгоритм. Удаление бесполезных символов. Вход: КСГ G=(A, Т, Р, S). Выход: эквивалентная КСГ G' = (A', Т', Р', S) без бесполезных символов. Метод: построить N', Т', Р', как указано выше. / Пример 4Л. Рассмотрим грамматику G= ({Л, В, С, D}, {х, у, р, q, w, а), Р, А), где Р = {Л -* xlyDClD, B-*-qlBx, С-+Сх\уС, D-+Da\Cw\p\. Используем отношение р, определенное выше, и его пред- ставление в матричной форме: 286
В этом примере имеем Л/(р+) = Л/(р) = М. Таким обра- зом, Мав = МСх = 0, и поэтому В недоступно, а С непро- дуктивно. Следовательно, грамматика сводится к G' = ({4, D), {х, а, р}, Р', А), где Р' = {А -* x\D, D -^-Da\p}. И После удаления бесполезных символов каждый остав- шийся нетерминальный символ X встречается по крайней мере в одном дереве вывода (рис. 8.8) с X, связанным вверх с S и вниз с некоторыми терминальными строками ai...ал. Один «очевидный» путь грам- матического разбора строки — это вывести все строки, отметить их соответствующие канонические последовательности, а затем про- верить предложение, сравнивая его с каждой строкой. При совпа- дении использовать выводящую последовательность, чтобы опре- делить дерево грамматического разбора. Конечно, в большинстве примеров величина |Л| бесконечна, и поэтому этот про- цесс невозможен; однако если грамматика не имеет не- удачных продукций, то это приближение обеспечивает основу техники разбора, которая, по крайней мере в ло- кальном контексте, может использоваться на практике. Если длина сентенциальных форм не может умень- шаться при применении G, то при проверке ае L(G), lal=n можно отбросить все формы (перед получением строк над Т}, чья длина превосходит п. Предложения, длина которых не превосходит п, могут сравниваться с а обычным путем; в разумной грамматике все такие воз- можные строки должны порождаться за конечное число шагов. Сейчас мы займемся приведением грамматики и построением ее эквивалентной версии, которая обладает «более легким» грамматическим разбором. Для того чтобы процесс порождения, связанный с данным предложением, был конечен, необходимо гаран- тировать, что все последовательности вывода действи- тельно могут быть получены. Следовательно, появление таких ситуаций, как X -* X и X -» Л, представляет ин- терес, Записывая их непосредственно как продукции, это 287
легко обнаружить; однако более общие ситуации Х=*Х + и X => Л труднее локализовать. Более того, два типа вы- водов связаны таким образом, как это продемонстрирова- но в следующем примере. Пример 4.2. Предположим, что включенные продук- ции некоторой грамматики имеют вид X-+Y, Y-»-W, Z-V, W-Z, V-+X. Следуя возможной последовательностью вывода из X, по- + лучаем, что X => X, и, следовательно, как только X встречается в сентенциальной форме, мы могли бы вста- вить прогрессию Х=*У=>1У=>2=>Р=*-Х (снова и сно- ва), не получая, таким образом, ничего, кроме неодно- значности. Как нетрудно видеть, это «петля» из нетерминалов внутри N. Заметим, однако, что мы могли бы иметь практически такую же ситуацию в завуалированном ви- де, если вместо X -> Y и Y -* IV имели бы, например, X-+AY, Y -* AWA, АА. / Определение. A-продукцией является продукция вида Х->Л, ХеЛ КСГ G—(N, Т, Р, S) называется A-свободной, если а) или Р не имеет Л-продукций, б) или существует только одна Л-продукция S -* А и S не появляется в правой части произвольной продук- ции из Р. Продукция является одиночной, если она имеет вид Х->У, где X, Y^N. Продукция вида X -> X при X е N называется тривиаль- ной. КСГ G = (N, Т, Р, S) называется циклически сво- + водной, если не существует выводов вида Х-> X для лю- бого X^N. 1 Как уже отмечалось, обнаружение и удаление циклов и Л-внводов тесно связаны. Мы начнем с места располо- жения всех нетерминалов, из которых может быть до- стигнуто Л. Замечание. Для заданной грамматики G = (2V, Г, Р, S) через Nt будем обозначать множество {х: X => л) S еЛГ. / 288
Алгоритм. Вычисление Na. Вход: произвольная КСГ G = (2V, Т, Р, S). Выход: Na. Метод: пусть Р = {Pi, ..Р,Р|}, где каждое Р< имеет вид а, Р<: тогда, рассматривая NA как «переменную» типа множе- ства, имеем Na*-0, I*-IPI, repeat (if (а{ Л\) and (fo € Л^л) then(/VA -- Na П {«J, i *- |Р|)' elsei*- i— 1) until i«» 0, / Алгоритм. Переход к Л-свободнрй грамматике. Вход: произвольная КСГ G = (N, Т, Р, S). Выход: эквивалентная Л-свободная КСГ G' ~(N', Т, У, S'). Метод: 1) определяем Na', 2) строим Р' следующим образом: а) Пусть А — aoBittiBaaj... B»a* е Р, где к > 0 и при 1 < г < & каждое Bt есть в Na, но ни один символ в ajSV* (0</<&) не находится в NA. Тогда добавим к Р' продукции вида А -> «о-Х^а 1X2^2. •. Xkah, где Х( есть или Bt или Л, без добавления А -> Л к Р' (это могло бы иметь место, если бы все а< совпали с Л). б) Пусть S s Na- Тогда добавим к Р' продукции где S' — новый символ, и тогда N' «2VU {$"}; в против- ном случае N' = N и S' *•* S. И Сейчас мы можем рассмотреть удаление циклов из КСГ. Месторасположение циклов может быть легко най- дено выделением отношения р = {(А, В): А-^В^Р} и формированием замыкания р+. Тогда ясно, что произ- вольное X: Хр+Х должно быть в цикле. Объединим это вместе со схемой «обратной замены», которая удаляет 19 Д. Кук, Г. Бейз 289
все нетерминалы внутри произвольного цикла. (Она так- же удаляет любую тривиальную продукцию.) Алгоритм. Переход от КСГ к эквивалентной цик- лически свободной грамматике. Вход: Л-свободпая КСГ G — (N, Т, Р, S). Выход: эквивалентная циклически свободная грамма- тика G' = (N', Т', Р', S'). (Нетерминалы G переименованы: А\ па А„, где га = |ЛП, 5 на Ai, а каждую продукцию Р{ выражают через ai -*• р>.) Дополнительно мы используем множество INCYCLES, а п нетерминалов обозначаем через REPLACE/, где 1 К п. Алгоритм будет иметь следую- щий вид: 1) определяем р над N„ так, что ip/ тогда и только тогда, когда At -> А} е Р; 2) пустьо==р+; 3) INCYCLES <- 0; 4) for i from 1 to га — 1 do (for j from i + 1 to n do if (j Ф INCYCLES and io/ and /oi ) then (INCYCLES - INCYCLES U {/}, REPLACE/ - A.)) 5) / *-0 for i from 1 to IP| do (for all /се INCYCLES in P( replace Ah by REPLACED giving new P( if (new Pi {P;, ..., P'j} and a, in new P.) then (/ 4- / + 1, P —- new Pj)) 6) G' = (NI INCYCLES, T, P', S). II Говорят, что КСГ является приведенной, если она Л-свободна, циклически свободна и редуцирована. Полу- 290
чив собственную КСГ G, мы можем использовать ее для проверки условия a<=L(G) для данного а^Т*. 4.2. Модификации грамматического разбора. Как было установлено во введении к § 4, задача грамматического разбора строки состоит в заполнении треугольника вы- вода (рис. 8:7) с соответствующим деревом. Конечно, в большинстве случаев это заполнение нельзя разумно выполнить за один шаг, и обычно оно получается при помощи последовательности поддеревьев. Эти последова- тельности поддеревьев могут быть получены многими способами; три наиболее используемых способа изобра- жены на рис. 8.9. Рис. 8.9 Стратегия грамматического разбора, изображенная на рис. 8.9, а, называется грамматическим разбором сверху вниз. D нем применяют продукции (в некотором выбран- ном порядке) к сентенциальным формам, пытаясь рас- ширить S внутрь строки а\...ап. При таком разборе естественно использовать в качестве гида часть, строки (ai...a„), чтобы управлять выводом. Для практических рассмотрений, согласующихся с чтением а\...а„ слева направо (рис. 8.9, Ъ) и желанием начать разбор перед включением полной строки, необходимо использовать на- чало строки. Следовательно, в поиске сентенциальных форм, которые начинаются с а\ е Т (и соответственно исследуя терминальные строки как начальные подстроки последовательных частей входной строки), мы должны н~ / отвергнуть возможность выводов вида X => N, Таким образом, чтобы начать разбор сверху вниз, мы должны удалить левую рекурсию. В общем случае это может быть сделано с использо- ванием процесса, аналогичного решению системы линей- ных алгебраических уравнений. Часто возможно рассмат- ривать одну рекурсию за один раз и удалять ее, ис- 19* 291
пользуя довольно простое тождество. Оправданием такого + подхода служит порождаемый язык. Рассмотрим X => Ха. Путем «обратной подстановки» правых частей продук- ций мы можем получить прямую рекурсию как элемент Р; таким образом, имеем X Ха I р. Рассматривая это как полную грамматику над {а, р) (р представляет все другие нелеворекурсивные возможности для X), очевид- ным образом получаем, что £(Х)={рал: га = 0 или neN}. Это множество может порождаться также продукциями Х-*рУ, У-* аУ I Л, которые не являются леворекурсивными (они праворе- курсивны). Чтобы закончить преобразование, продукция X -* р У должна быть расширена при необходимости до правильного числа термов. Пример 4.3. Рассмотрим грамматику с продук- циями А -* Вс I dC, В -* хА I Се, С -+ Ab\ w. Она леворекурсивна, поскольку А => Вс => Сес => Abec. Путем обратной подстановки для С в В и В в А полу- чаем В -* хА \ (Ab \w)е & В -* хА I A be I we, А -> ВС ] dC а А -> (хА | Abe | we) с | dC as es4 -> хАс | Abec | wee |dC ^=А -> A bee | хАс | wee I dC. » В Поэтому, используя преобразование 4-*рУ, У->аУ|Л, получаем А -* (хАс I wee I dC) У •= А -* xAcY I wecY I dCY, Y-becY\X, B-*xA I Ce, C-Ab\w. II Заметим, что в этом примере В может быть «выреза- но» и может не принимать никакого участия в произ- вольном предложении, порожденном из корня А (следо- вательно, надо удалить все следы В из грамматики). 292
Отметим также, что мы ввели Л-продукцпю. Эта про- дукция, созданная как побочный эффект «преобразова- ния грамматического разбора», вызвала бы меньше про- блем, чем аналогичная продукция, встречающаяся есте- ственным образом. Символ В может быть удален при помощи алгоритма для удаления бесполезного символа. Хотя обычно будет достаточно частичного удаления отдельных леворекурсивных цепей внутри X, мы должны использовать матричное обобщение описанного процесса для того, чтобы справиться с удалением внутренних ле- вых рекурсий. Напомним, что в обычном случае мы заменяем X -* -> Ха I р при помощи X -* (ЗУ, У -> а У I Л. Если мы име- ем п нетерминалов Х\, ..., Хп, которые являются взаим- но леворекурсивными, так что не сводятся путем после- довательности обратных замен к простому случаю, тогда мы можем представить соответствующие продукции схе- матически следующим образом: Xi -> Х1Лц I Хг-^21 1 ... I XnAnt I Bi, Х2 XiA 121 Х2А221 ... I XnAn21 В2, Хп -* Xi4ln I Х2А2ПI... I ХпАпп |5П, где каждое Atj представляет собой остаток всех операций, которые могут быть выведены из Xj и которые начина- ются с Х(, и аналогично каждое Bj представляет все аль- тернативы для нетерминалов Х;, которые не начинаются с элементов {Xj, ..., Х„}. Теперь, поскольку Ais и Bs являются множествами строк, отсюда следует, что: 1) если X;-> Х(, то 2) если Xj-* а и Хф для (3е V*, то аsВ}; 3) если Xj аХ^ для любого к s V*, то Ац = 0. Следовательно, над алгебраической системой (У*, О, |) мы можем свести эти продукции к матричной схеме X-XAI В в Л(п, (У*, ®, I))', или, записывая альтернативный оператор I как +, к схе- ме Х = ХА + В в Л(п, (У*, ®, +))'. По аналогии с простым (нематричным) случаем, о кото- 293
ром будет более подробно сказано в гл. 9, скажем, что X = BY, где Y = AY +1, а I определяется на (7*, ®, +) как {Л}, если i = 7, . 0, если i =/= j. Пример 4.4. Предположим, что S — D и G имеет следующие продукции: D -* Dx I Еу f Fz, Е -+ Da\ Fc, F Dp \ Eq \ Fr\ w. Таким образом, используя общую схему, получаем А1. | х2 А2. | хз А3. | В. D -> Dx E Da F -> Dp I Еу I Eq Fz Fc Fr Итак, Xi = 2 5AYfti. Поэтому x, = D -> 2 BkYkl = 53Y31 = WYS1, h E-+wYS2, F->wY3S, Yij = 2 AihYkj + Zij; k следовательнс. Fn - xYn I aY2l I pY3l I A, F12 xY 121 aY22 I pY32, Fi3-* xYi3 I аУгз I pF33, F21 -> yYn I 9F31, Y22-*-yYt2l ?Уз21 A, F23 yYis I Уз1-* zFn 1сУ21 I гУзь F32 ZF12 I CY22 I ГУ32, Y33 -* zFi31 cY23 I гУзз I A. В этом примере преобразования производят ненужные нетерминалы; удаляя их, получаем D -> щУ31, 294
Уз1 * zYlt I сУ2,1 гУ81, Уи -> хУп | аУ21 | pY311 Л, У21 уУп I ?Узь Изменяя соответствующим образом имена, получаем D -► wJ, J -* zK\cL\ г J, K-*xK\aL\pJ\A, L-*yK\qJ. Чтобы нагляднее показать степень трансформации, приведем здесь дерево грамматического разбора строки «wcqzayx» для первоначальной грамматики (рис. 8.10, а) и модифицированной (рис. 8.10, 6) грамматик. Удаление левых рекурсий обеспечивает, если это воз- можно, вывод строки, начинающейся с требуемого тер- минального символа; однако это не гарантирует, что мы получим только одну такую строку, и, следовательно, мо- жет случиться, что мы пойдем неправильным путем. Пытаясь избежать неправильных последовательностей грамматического разбора, мы можем явпо использовать манипуляции, уже встречавшиеся при предыдущих пре- образованиях. Этот процесс называют левой факториза- цией. Процесс требует, чтобы были проведены продук- ции, включающие в левую часть данный нетерминал. Затем расширяют все правые части и те, которые начи- наются с общей подстроки над Т, собирают вместе. Пример 4.5. А -► хуВ I хуВС I yPQ I ух V & А -* хуВ(Л | С) I у (PQ I xV) = А -+ хуВА \ \ уЛ2, 295
где Л1-*Л1С, обычно записываемое как С I Л, и .Дг-*- -+PQ I xV. // Заметим, что мы вновь можем ввести Л-продукцип. Однако если в настоящий момент нет Л-продукций, то в заключительных левофакторизованных продукциях п грамматике не будет левых рекурсий. В этом случае сле- дующий символ входной строки можно использовать для того, чтобы непосредственно определить, какие альтерна- тивы надо использовать для расширения нетерминалов в сентенциальную форму. Если Л-продукции встречаются в явном виде, то это вызывает затруднения. В силу того что Л является ведущей подстрокой каж- дой строки над произвольным алфавитом, она всегда совпадает с началом строки задания, и, следовательно, никакие последующие альтернативы никогда не будут рассматриваться. Здесь нет возможности входить в пол- ный анализ проблемы, однако заметим, что если G = = (Х, Т, Р, S) и мы определяем a) FIRST (а) = {х: а => х & Т, р е У*} и б) FOLLOW (а) = {я: 5 => уалгб, х е Т, уб е 7*}, и если для каждой продукции X -> аи I аг I... I ап a) FIRST (а<) П FIRST (а,) = 0, i + j и б) Х=>Л, то FIRST(X) П FOLLOW (X) = 0. В этом случае G можно использовать для предсказываю- щего анализа (см. рис. 8.9,6). В таком анализе можно проверять альтернативы в произвольном порядке, не применяя Л-выводов, пока все другие возможности не исчезли. Следующий пример иллюстрирует этот процесс. Пример 4.6. Предхюложим, что единственной про- дукцией в грамматике является С -* хСх I Л. Попытаемся провести грамматический разбор строки «xxi>. Строка отбрасывается, хотя она и законна, потому что мы вынуждены применить первую продукцию дваж- 296
ды, порождая таким образом неправильное продвижение, поскольку х s FIRST (С) Л FOLLOW (G) и С -► Л. Это графически изображено па рис. 8.11. Использование грамматики С ххС I Л (рис. 8.12) не вызывает никаких трудностей в грамматическом разборе, потому что сейчас х FOLLOW (С). II С хСх х х Л X X Рис. 8.11 С хх С //I х X л Рис. 8.12 Перед тем как завершить параграф, упомянем другой основной метод грамматического разбора — снизу вверх, в котором продукции применяют назад, пытаясь свести строку задания к S (см. рис. 8.9, с). Этот метод приме- няют более широко по сравнению с методом сверху вниз; используя некоторые модификации этого метода, можно повысить эффективность грамматического разбора. Упражнение 8.4. 1. Модифицировать грамматику, продукции которой даны ниже, таким образом, чтобы она не была леворе- курсивной: А -* Вх I Cz I w, В-+АЪ\Вс, С Ах\Ву\Ср. 2. Пусть G — (N, Т, Р, S) является КСГ и символ А е N не является бесполезным символом G. Показать, что существование одного из следующих выводов в G влечет за собой неоднозначность G: + а) 4=>4у4; б) 4 => а41 4(5; в) 4 => а4 [ а4{34; г) 4=>4 при f e(2VUT1* и а, ₽s(/VUT)+. 297
3 . Определить Л-свободную КСГ, эквивалентную КСГ и определенную как G=({5), {а, ЬУ, Р, S), где P = {S-+aSbS\ bSaSlA). 4 , Пусть G = (L4, В, С, D, Е, 8У, {а, Ь, сУ, Р, SJ, где Р = {S А I В, А-С ID, B^DIE, C-^Slal Л, D -> S I b, E -> S I с I A). Найти приведенную грамматику, эквивалентную G. § 5. Грамматики опера торпого предшествования Важное подмножество КСГ содержит к себе так на- зываемые операторные грамматики. Это грамматики, в которых все продукции такие, что никакие два нетер- минала не являются смежными в любой правой части, и, следовательно, лежащий между ними терминал можно представить как оператор (хотя пе обязательно в ариф- метическом смысле). Попытаемся определить отношения предшествования на множестве Т(J{|—, -|}, где |- и -j суть новые символы, которых нет в V и которые ограни- чивают «предложение». Правила определим следующим образом: 1. а = Ь, если А aa^by & Р; здесь a, fsl7* и еЛ'иШ. + 2. а <• 6,если А-*ааВ$&Р; здесь В=>уб6, J И} и а, р, 6 е V*. + 3. а •> Ь} если А aBb$& Р; здесь В => уаб, 6 s AU U {Л) и а, М е V*. + 4, |- <• ал если S => аа[\ as /V (J {A)j 0е А*. 5, а •> если S => аа$, [5 е N (J {А}3 a е Г*, Символы О, = и •> обозначают отношения предше- ствования (читается как «имеет меньшее старшинство, чем», «имеет такое же старшинство, как», «имеет боль- шее старшинство, чем»); при условии но не более од- 4 V3
ного такого отношения справедливо между двумя произ- вольными операторами из ГС {|-, —|}, соответствую- щую операторную грамматику называют грамматикой операторного предшествования. Хотя она и является гораздо более сложной, чем дру- гие виды грамматик, встречавшихся до сих пор, понятие предшествования может быть введено так, что будет совпадать с обычным старшинством арифметических опе- раторов и будет расширено до операторов, действия кото- рых важны с точки зрения вычислений, одпако обычно считаются само собой разумеющимися при вычислениях «на бумаге». Пример 5.1. Е -> Е + Т I Т, Т-+Т*Р\Р, Р-*(Е)\х. Для того чтобы увидеть, что происходит в действи- тельности, рассмотрим этап внутри вывода предложения )- х* (х + а)—Из правила 2 определений предшество- вания видно, что для символов * и ( имеем Т-*Т*Р, Р^(Е). Таким образом, выполняется отношение *<•(, и поэто- му поддерево Р должно быть вычислено перед вычисле- нием Т * Р\ следовательно, действие, связанное с «(», ко- торым является удаление этой и парной к ней закры- вающей скобки, выполняется перед действием, обозна- ченным «*». (Графически ситуацию можно представить так, как это сделано па рис. 8.14. Здесь для правила 2 имеем А = Т, а^Т, а=*, В Р, fsA, —( и б s Е. Отсюда видно, что основная структура грамматик 299
операторного предшествования является простой и есте- ственной, однако выглядит сложной при записи из-за общности правил.) Заменяя х целыми числами 2, 3 и 4, а Арифметическая структура ( £ ) Ь Синтаксическая структура Рпс. 8.14 А //\\ а а В /3 /i\ у Ь 8 С Общая форма пробила Z получаем [- 2 * (3 + 4) -]. Записывая отношения предше- ствования под этим выражением, видим, как определя- ется порядок вычислений [— 2 *; а) выберем число 2 и сохраним его в стеке: |— * ( 3 +, б) аналогично удалим 3 из выражения и поместим в стек: И * ( + 4 ), в) с 4 поступим подобным образом: h * ( + )> г) выполним сложение двух верхних элементов в сте- ке и результат оставим там ate; удалим символ +: !-*()» д) отбросим скобки: h * Ч> 300
е) произведем умножение двух верхних элементов стека, оставляя результат в стеке; удалим символ *: h Ч; ж) останов из-за отсутствия отношений предшество- вания; ответ находится в стеке. Конечно, вместо выполнения арифметических опера- ций мы могли бы породить код и после этого вычислить выражение — это как раз то, что сделал бы компилятор. Упражнение 8.5. 1. В проведенном ранее обсуждении привлекаемая се- мантика принималась само собой разумеющейся, однако она была тесно переплетена с грамматической структу- рой. Показать, что каждая из следующих грамматик яв- ляется грамматикой операторного предшествования, и исследовать, как ее внутренняя семантика отличается от обычных соглашений: Рх - {Е - Е * Т | Г, Т Т + Р I Р, Р -> (Е) I х}, Р2 = {Е - Т + Е\Т-Е\Т, 7’->7’»PlP, P-(E)lz).
ГЛАВА 9 КОНЕЧНЫЕ АВТОМАТЫ Автоматом является устройство, управляющее и кон- тролирующее само себя. Обычный компьютер с програм- мой способен при достаточном запасе энергии контроли- ровать сам себя и, следовательно, является автоматом. Как таковые, компьютеры изучались много лет, однако более естественно рассматривать программу и машину, в которой она содержится, как отдельные компоненты. Конечно, для выполнения вычислений нам нужна не только программа, но и машина, на которой эти вычис- ления могут выполняться. Однако здесь мы не стремим- ся приступать к детальному течению теории вычисле- ний, поэтому, за исключением тех случаев, где это необ- ходимо для полноты, мы ограничим наше внимание ма- тематическим описанием некоторых конечных машин. Несмотря па эти замечания, мы начнем (в § 1) с об- щего введения, которое показывает границы того, что ма- шины могут выполнять. Далее (§2) мы изучим матема- тические модели устройств (обычно их малые фрагмен- ты), а затем (в § 3) связанную с этим алгебру. § 1. Общие понятия Все используемые на практике компьютерные устрой- ства ограничены (некоторым образом) количеством ин- формации, которую они могут хранить,— они конечны. Цель данного параграфа — показать, как можно делать утверждения о программах без утомительного рассмот- рения синтаксических деталей; затем мы продемонстри- руем, что даже при отсутствии ограничения па размеры памяти существуют задачи, которые нельзя решить. 1.1. Универсальная машина. Несмотря на использо- вание многочисленных различных типов данных и мно- жеств символов внутри реальных программ, для теорети- ческого изучения достаточно ограничиться рассмотрени- ем программ, которые действуют на множестве К = N Ц U {0}, Это равносильно изучению программ, вычисляю- 302
щих теоретико-числовые функции, которые будут введе- ны в § 2; наша непосредственная задача — описать идеа- лизированный компьютер, позволяющий запоминать эле- менты V, с которыми можпо осу- R -----1 ществлять преобразования, и дать ' -----'—। детальное описание того, как могут 2 —-—г-------1 быть представлены программы для J---- —I---> машины. 4------—---1 Предположим, что машина имеет память, состоящую из неограничен- ; ного числа регистров: Ri, Ri, R3 и : т. д., п что содержание каждого ре- R r । гистра Rt есть п е К. Это можно л----------—-------' изобразить так, как это сделано на рис. 9.1. I Для более ясного изложения : удобно разрешить использование рис g д многих операций, действующих лад регистрами, однако па самом деле необходимы лишь две операции: Rn+-Rn+i, Rn-'-Rn — l- Обозначая содержимое регистра п до операции и после через гп и гп соответственно, можпо описать результаты выполнения этих операций следующим образом: Rn Rn + 1 = r'n = rn -1-1, , (rn—• 1, если rn>0, Rn Rn “ 1 === Гn === In n (О, если rn = 0. Кроме операций, изменяющих значения регистров па- мяти, необходимо, чтобы машина имела связь с програм- мой для того, чтобы влиять на ее работу. Необходимой в этом случае является только одна операция, а именно та, которая осуществляет сравнение Rn — 0. Однако, как и прежде, мы будем разрешать более общие формы опе- раций такого рода. Результат Z?n = 0 справедлив тогда и только тогда, когда гп = 0, и это условие используется для управления программами. Множество регистров вместе с описанными выше определениями называется машиной с неограниченной памятью (МНП). Программы состоят из конечной совокуппосги опера- ций, занумерованных от 1 до некоторого neN. Мы не будем вдаваться в детали, а выведем-более общие заклю- чения об этих программах. Поэтому не будем давать фор- мального определения такой структуры. Рисунков 9.2 и 303
9.3 достаточно, чтобы понять, какого рода конструкции допустимы в ной. Программа на рис. 9.2 не предназначена для выпол- нения особо разумных вычислений, однако она указывает вид блок-схемы программы для нашей машины. Заме- тим, что все это может быть записано не обязательно в виде рисунка. Например, можно написать: 1: если Яг ” 0 то перейти к 4 иначе перейти к 2 2: R2 +- Rt — 1 (затем перейти к 3) 3: Ri ** Ri + 1 (затем перейти к 4) 4: если Rs “ 0 то перейти к 6 иначе перейти к 5 5: Rg *- Rs “ 1 (затем перейти к 2) 6: STOP На рис. 9.3 представлена более общая форма про- граммы, в которую включены макрокоманды Ft и про- верки Ti. Это могут быть стандартные команды того ти- па, который уже определен, или же они могут быть пред- ставлены последовательностью основных команд, кото- 304
рым для удобства чтения даны имена (подобно подпро- грамме), детали которых уже где-то определены. Такие последовательности будем называть макропоследователь- ностями. Сейчас мы можем описать некоторые из этих макро- последовательностей, которые обеспечат связь с после- дующими темами, а также помогут убедить читателя, Рис. 9.4 Рис. 9.3 что наше небольшое число простых команд на самом де- ле является достаточно мощным средством. Пример 1.1. *- 0 может быть реализовано сле- дующим фрагментом программы, где метки х, у и z вы- браны так, чтобы не пересекаться с другими командами в программе: х: если 2?( = 0 то перейти к z иначе перейти к у у. Rt-*~ Rt— 1 (затем перейти к х) г: ? В терминах блок-схем этот фрагмент программы изобра- жен на рис. 9.4. Пример 1.2. Сейчас, определяя макрокоманду, удовлетворяющую предыдущему примеру, и включая в явном виде выражения «go to» («перейти к») только тог- 20 д. кук, г. Бей» 805
да, когда мы уклоняемся от выполнения команды «go to next instruction» («перейти к следующей команде»), мы можем дать раскрытие формулы Rf т (для некоторого m <= N): Ri ч- О Ri ч— R\ + 1 Ri ч— Ri 4- 1 •т раз + 1 Очередное расширение множества команд требует ис- пользования «рабочей памяти». Мы будем предполагать, что по крайней мере в простейших случаях читатель в состоянии придумать подходящую стратегию работы с памятью, и, следовательно, не будем специально упоми- нать о том, как выбираются эти дополнительные регист- ры. Случаи, когда количество требуемой памяти неиз- вестно (такие, как стеки и т. п.), будут рассмотрены ниже *). Пример 1.3. Используя Rh в качестве рабочего ре- гистра, мы можем скопировать содержимое Rj в Rt (Rt R^. Делая это, мы уничтожаем содержимое 7?,-, ко- торое в дальнейшем должно быть восстановлено. Следу- ющая программа осуществляет требуемые вычисления: 7?»*-0 х: if Rj = 0 then go to у R^R.+ i R>-*~ Rj — 1 then go to x y: Ri^-0 w. if Rh — 0 then go to z Ri *- Ri + 1 Rt *- Rj+ 1 Rk •*- Rk — 1 then go to w z: // Сейчас мы вернемся к «собственно» арифметическим вычислениям. Сложение и вычитание строятся непосред- ственно, однако, поскольку в регистрах существуют огра- *) В дальнейшем будем использовать символы: «go to z» — «перейти к z»; «if (условие} then .(оператор}»—«если (условие}, то (оператор}»; «else»—«иначе»; «шеи go to z»—«затем перейти к I».— Примеч. пер. зов
ничения на значения величин, операция вычитания должна быть несколько модифицирована. Подобным же образом можно выполнить умножение и усеченное де- ление. Пример 1.4. Сложение Z?f R, + Rk, имеющее ре- зультатом G = г, rh, может быть выполнено следую- щим образом: Rj * Rk х: if Rj = 0 then go to у Rt <- Rt + 1 Rj +- Rj — 1 then go to x У" Чтобы получить полную программу в терминах основных команд, мы должны расшифровать макрокоманду «R, — *- Rk», как это было сделано в примере 1.3. С этого вре- мени мы не будем требовать доказательства таких рас- шифровок. Подобным образом «ограниченное вычитание» Rt *- *- Rt — Rh может быть выполнено как <- Rk х: if Rj = 0 then go to у Rj^Rj-1 Rt*- Ri—i then go to x У- Заметим, что если первоначальные значения Rt и Rk бы- ли такие, что < гк, то после г( итераций операция Z?( »- ! не будет иметь эффекта. Аналогично Л, Rt* Rk может быть представлено как Rj*-0 R.*-Rk х: if Rt = 0 then go to у Rt *- R, - 1 Rj *- Rj + Rj then go to x y. Ri-Ri a В большинстве случаев таким же способом, каким может быть расширено множество операций над регистрами пу- тем определения макрокоманд, можно также ввести ко- 20* 307
манды сравнения, которые на первый взгляд оказывают- ся более сложными, однако в действительности строятся из последовательностей стандартных операций и опера- ций сравнения. Пример 1.5. Мы можем записать операцию «if Ri> > Rk then go to x else go to уъ («если Ri>Rk, то перейти к х; иначе перейти к у») следующим образом: Rs*-R< Ri * Rs- Rh if 7?, = 0 then go to у else go to x Этими операциями условного перехода мы можем до- полнить наше множество первоначальных арифметиче- ских операций вместе с операцией деления «/?» Rk, где rt = 0, если гк = О». В нашем случае этой операции соответствует следующий алгоритм: /?, ^0 if Rk = 0 then go to x у: if Ri < Rk then go to x Ri*-Rt + i if Ri = Rk then go to x Ri*- Ri — Rk then go to у x: Ri *- Ri Из менее общего, но необходимого приложения, ко- торое кратко приведено ниже, следуют две операции, связанные с точностью усечения при делении целых чисел. Пример 1.6. Если п^О, операция «если Rk — де- литель Rt, то перейти к х; иначе перейти к у» действу- ет следующим образом: if Rk = 0 then go to у Rs*-Rt Rs*~ Rs^Rk Rs*~ R>* Rh if Rj — R( then go to x else go to у При помощи этой (возможно, несколько странной) опе- рации и операции сравнения вида Ri — т (оставленной в качестве упражнения) мы можем проверить, является ли г( простым числом. 308
Ясно, что можно операцию «если Rt простое, то пе- рейти к х; иначе перейти к у» смоделировать следующим образом: if Ri = 0 then go to у if Ri — 1 then go to у R^Ri-1 z: if Rj = 1 then go to x if Ri делитель Rj then go to у Ri *- Rj — 1 then go to z № Перед последним примером этого параграфа мы дол- жны упомянуть, как в машине вводятся данные и выво- дится результат. Предположим, что мы хотим вычислить значение теоретико-числовой функции /: V” -* Vm. Зна- чения пит известны перед началом выполнения соот- ветствующей программы; поэтому мы можем вначале вы- делить п регистров (в которые должны быть загружены начальные значения перед началом выполнения про- граммы) для входных данных и т регистров (которые не должны быть обязательно отличными от выбранных вна- чале) для выходных данных. Когда программа останав- ливается, мы предполагаем, что некоторый «внешний представитель» может выдать «ответы» из соответствую- щих мест. Это, конечно, разумный путь моделирования потоков данных в программе, поскольку точно показыва- ет взаимодействие операций ввода-вывода. С этими согла- шениями пример 1.7 может рассматриваться или как полная программа (в которой Rf и Rj выбраны как вход- ные и выходные регистры), или как схема для подпро- граммы. Пример 1.7. Последовательность команд приведен- ных ниже, помещает га-е простое число в Rj, где п явля- ется содержимым Ri’, предполагается, что п не равно нулю: (Start) Л - Ri-1 Rj^ 2 х: if R„ — 0 then go to у R, — /?, + 1 z: if R, простое then go to w Rt+- 7?j + 1 then go to z 309
w: Rh<-Rk — 1 then go to x y: (stop) II Сейчас мы объясним наш очевидный интерес к простым числам. 1.2. Кодирование программ. Программы п. 1.1 могли работать с элементами из V = N U {0). Мы должны объяс- нить, как в принципе можно любую программу рассмат- ривать в качестве программы такого типа. Это можно сделать, описав способы, при помощи которых различные типы данных могут быть закодированы в элементы из V. Для этого рассматриваем данные предложения над под- ходящими алфавитами и, следовательно, почти как по- стороннее следствие этого процесса получаем также ме- тод для кодирования предложении на языках програм- мирования, а именно сами программы. Основное математическое средство, используемое для этой цели, это теорема о единственности разложения, из- вестная также как основная теорема арифметики. Эта теорема устанавливает, что произвольный элемент из V является или 0, или 1 либо может быть выражен един- ственным образом как произведение упорядоченных про- стых чисел. Ясно, что если «е У\{0, 1} и га = <?1 » <72 * ... • = «< • «2 * ... * «в где <7i, •.., <7<, si, ., Sj — все простые числа такие, что ?1 ?2 S1 «2 Sj, то i = j и а» = qk для всех к, 1 к i. Напомним, что простые числа — это элементы из N, которые делятся только на 1 и на самих себя. Полное доказательство этой теоремы несложно, но его запись существенно отвлекла бы нас от основной за- дачи. Поэтому вместо доказательства мы предлагаем рас- смотреть конструкцию алгоритма (процедуры/програм- мы) для выделения упорядоченных простых множителей <71, ..., qt для любого данного га. Таким образом, избегая деталей ввода и вывода, мы можем использовать схему, представленную на рис. 9.5. Предположим теперь, что некоторая программа чита- ет данные, которые состоят из последовательпости сим- волов алфавита А = {ж, у, z). Произвольно выбирая по- рядок <р для элементов из А, можно получить <р(1) = х, <p(2) = y, <p(3) = z. Если вводимая последовательность т. имеет длину п и выражается как aia2...an, где а,^А, 310
тогда существует последовательность <р-1(а|)ф-1(а2)...ф-1(ап) лад {1, 2, 3}. Взяв первые п простых чисел pi, р„, мы можем составить число JLJ. Pi Pi ♦ • • **Рп ) i=l назовем его Ф(ак Пусть по соглашению Ф(Л) = 1. Чтобы проиллюстрировать использование этой общей формулы, закодируем строку «хухг» посредством 1, 2, 3 следующим образом: З'З^1?3 = 30870. Используя теоре- му о единственности разложения на простые множители и тот факт, что Ф"1 является биекцией, имеем, что «хухг» является единственной строкой над А, которая дает это значение. Следовательно, применяя Ф, мы можем 811
«обратить» вычисления, чтобы восстановить строку «xyxzt>. При помощи этой процедуры все строки пад А можно закодировать таким образом, чтобы они имели разные значения в множестве V. Это в силу упорядоченности, индуцируемой Z (поскольку 7sZ), влечет упорядочен- ность строк из А*. Например, «ху»>«ух». Необходимо отметить два фактора, связанных с этим методом. Во-первых, поскольку А конечно, в N сущест- вуют значения, которые не являются кодами какой-либо строки в А* (например, не существует а&А* такого, что Ф(а) = 25, так как иначе а^А: ф~1(5) = а, а такого а не существует). Во-вторых, поскольку элементы Л* явля- ются неограниченными, то таковыми являются и коды. (Для любого п е N возьмем простое рт > п и рассмотрим строку а = ai... ат... а« такую, что |а| тогда отсюда следует, что Ф(«) = Пр« Pm>«.) i=l Используя методику, описанную в § 3 гл. 3, преобразу- ем кодирование Ф так, чтобы получить новое кодирова- ние, которое сохраняет порядок, полученный Ф, но ис- пользует все V. Это один из тех случаев, когда трудно дать арифметическую формулу для вычисления изменен- ных кодов, однако все еще достаточно легко описать спо- соб их получения. Очевидно, что новое кодирование Т с областью значе- ний V задается формулой ]{₽: Ф(Р)<Ф(а)}|. В частном случае для рассмотренного в примере множе- ства А и его упорядочения ф первые десять значений Ф и 'Р приведены в табл. 9.1. Таблица 9.1 Строка а А Я V XX t У* гу ZX XXX УУ Ф(а) 1 2 4 6 8 12 18 24 30 36 ¥(а) 0 1 2 3 4 5 6 7 8 9 Чтобы получить эти коды и выполнить процедуры ко- дирования, требуется машина, способная понимать и со- здавать символы вне алфавита D —{0, 1,2,..., 8, 9), на котором определены элементы множества V. Для этого 312
необходимо только устройство, позволяющее имитировать действие ф (и ф-1), некоторым простым способом воздей- ствуя на таблицу ввода-вывода; остаток процедуры коди- рования, включающий Ф и V, можно потом учесть прп помощи машины с неограниченной памятью. Следовательно, любой ввод в данную компьютерную систему может рассматриваться как конечная строка (взятая из потенциально бесконечного множества строк над некоторым конечным алфавитом), и если применить описанный выше процесс к соответствующему алфавиту А, то эту строку можно преобразовать в единственный элемент V. Обратная процедура, примененная к получен- ному значению из V, дает значение над другим алфа- витом В. Следовательно, программа Р: А*-*В* похожа на со- ответствующую программу Р': V -* V, тре Р: а ~ Ф-1 (Р' (Ф (а))), Р': п - Ф (Р (ф-1 (п))). Величина используемых значений даже в простых ситуа- циях делает примеры непригодными, однако связанные О © а Ь / / / / / / / i \ ч> Ф Ф ’’ ’-----------------* Рис. 9.6 диаграммы па рис. 9.6 восстанавливают сущность пропу- щенных этапов, 813
Переходы, включающие детальную спецификацию Р', являются сложными и не обязательно соответствуют Р «очевидным» образом. Однако если Р вычислимо, то и Р' вычислимо. Как отмечалось выше, мы можем также применять такие же кодирующие процедуры к программам, и, следо- вательно, расширив Ч1, таким образом, чтобы можно было игнорировать семантически неверные программы так же, как и программы, включающие синтаксические ограни- чения, можно перечислить все программы для данной системы, использующей числа из V. Мы предполагаем, что для того, чтобы программа превосходила любое за- данное в V число, к ней можно добавить неограниченное множество кодов, которые содержат произвольно много нулевых утверждений, таких, как Rt <- Rt. Однако в большинстве языков программирования существует мно- го избыточности в синтаксисе; поэтому в лучшем случае мы будем обращать внимание только на лексические зна- ки. Прежде чем пытаться сделать замечания общего ха- рактера, рассмотрим, что можно сделать с простым язы- ком, который использовался ранее в машине с неограни- ченной памятью. Существует четыре типа команд: х: Rt Rt + 1 then go to у x‘. Rt+- Ri— 1 then go to у x: if Ri — 0 then go to у else go to z x: stop (Без потери общности мы можем предполагать, что все программы начинаются с команды, помеченной индек- сом 1.) Все, что мы должны знать из команды х,— это, какой тип операции должен выполняться, на каком ре- гистре и какая команда выполняется следующей. Для того чтобы можно было использовать ту же самую схему для всех команд, введем формат (тип, регистр, правильный выход, неправильный выход). Обозначая команды «останов» («stop»), «больше», «мень- ше» и «равно нулю» через 0, 1, 2 и 3 соответственно, получаем Ф-уровневое кодирование типичных утвержде- ний, как показано ниже: Ф (Rt ♦- Ri + 1 then go to у) = 2’3<51'71' Ф (Ri - Ri - 1 then go to y) = 223‘5t'7" Ф(1[ Rt = 0 then go to у else go to г) = 233‘5"7* Ф(8Юп) = 2°3°5°7° = 1. 314
Поэтому команда Ф содержит всю информацию, необхо- димую для ее выполнения или, если необходимо, для перехода к следующему шагу выполнения программы. Поскольку все строки в А* конечны, а блок-схема программы для машины с бесконечной памятью сверху не ограничена, то каждая отдельная программа имеет п утверждений, п s N. Тогда можно распространить Ф на программы следующим образом: П Ф(«{) Ф(prog) = П Pi , i=l где «prog» состоит из га помеченных утверждений, из ко- торых i-м является s{. Из Ф(pгog) можно получить Ф(з() выделением ком- поненты pit и, следовательно, разлагая это- значение на простые сомножители, мы можем узнать детали утверж- дения, помеченного номером I. Используя подходящую «урезающую» функцию Т, мы получаем кодирование, которое является биекцией между 53, множеством всех программ для машины с бес- конечной памятью и V. 1.3. Проблема останова. Теперь мы можем доказать, что конструкции некоторых общих программ невозмож- ны: не только потому, что мы не находим решения, но и потому, что решение может не существовать. Формаль- ные доказательства ограничим рассмотрением двух ос- новных случаев. Первое из доказательств получим, ис- ходя из начальных принципов, а затем покажем, как второе выводится из первого, иллюстрируя, таким обра- зом, общее использование техники сведения одних задач к другим. После этого сформулируем перечень проблем, относительно которых будет показано, что они неразре- шимы подобным образом. Строго говоря, все утверждения, приведенные ниже, относятся к программам па машине с бесконечной па- мятью со специальным кодированием функций ЧГ1 и Та. Однако, задав произвольную «универсальную» машину и подходящий язык программирования, мы в состоянии построить адекватные кодирующие функции, и, следова- тельно, полученные результаты применимы и в общем случае. Первой задачей, относительно которой мы докажем ее неразрешимость, является задача самоприменимости. Теорема. Для машины с бесконечной памятью не существует программы, которая для нюбой заданной про- 315
Рис. 9.7 зраммы А при ее кодировании a = 4fi(4) будет оста- навливаться с выходным значением 0, если Л (а) оста- навливается (т. е. программа А останавливается, если входное значение равно а), и с выходным значением 1, если А (а) не останавливается. Доказательство. Будем строить доказательство от противного. Предположим, что такая программа су- ществует; назовем ее В. Итак, В {а) останавливается с результатом, равным 0, если а приводит программу А к останову, и с результатом, равным 1, если а не приводит к останову А. Изменим программу В следующим об- разом. Заменим команду останова услов- ной петлей, так что, если выходной ре- гистр имеет значение 0, мы обходим эту команду; в противном случае — останов. Назовем эту программу С (рис. 9.7). Име- ем следующее: С (х) останавливается (и имеет то же самое выходное значение, что и В(х)) тогда и только тогда, когда выходное значение равно 1. Рассматривая С при входном значении « = ¥(£), получаем противоречие: так как С (с) останавливается тогда и только тогда, когда С(с) = 5(с)=1, то В(с)=1 тогда, когда С (с) не останавливается. От- тогда и только сюда следует, что С не может существовать, а поэтому и В не существует. И Предыдущее доказательство по стилю подобно тому, которое использовалось, чтобы опровергнуть существова- ние множества Рассела в примере 1.1 гл. 1. Кажется, что оно но<-ит тривиальный характер, однако, подобно многим другим кратким математическим рассуждениям, является достаточно тонким. Следует на это обратить внимание перед тем, как использовать этот факт при доказательст- ве более общего результата — неразрешимости проблемы останова. Теорема. Для машины с бесконечной памятью не существует программы, которая по произвольным входным данным, представляющим программу и ее данные, будет определять, останавливается программа на этих данных или нет. Доказательство. Покажем, что если бы такая программа существовала, то мы могли бы путем выбора правильных входных данных решить проблему самопрцт 316
С(а) = В(Аа) = менимости. Поскольку последнее невозможно, то отсюда будет следовать, что решение проблемы останова также невозможно. Очевидно, что программа требует ввода двух сортов данных: а(=Ч/'1(Л)) —кода программы А и а:(=Чг2(-У)), где X — входные данные для А. Это может быть закоди- ровано обычным путем — с использованием двух различ- ных простых чисел р и q. Пусть входные данные будут paqz, и предположим, что существует программа для ре- шения нашей задачи; назовем ее В. Тогда B(paqz) оста- навливается с результатом 1, если А(Х) останавливается, и останавливается с результатом 0, если Л(Х) не оста- навливается. В этом случае из В можно создать новую программу С, добавляя к началу В последовательность команд, которые превращают содержимое t-ro входного элемента в (pg)s. Тогда 1, если Л (а) останавливается, О, если Л (а) не останавливается. Следовательно, С решает проблему самоприменимости, о которой мы знаем, что опа неразрешима. Следовательно, С не существует, а поэтому не существует и В. И Проблема останова является классическим результа- том о неразрешимости в теории компьютеров. Приведен- ное здесь доказательство использует общую технику све- дения одной задачи к другой. Далее показывается, что первая задача неразрешима, поскольку если бы это было не так, то была бы разрешима и другая задача, о которой известно, что она неразрешима. Используя этот принцип (и соответствующие конст- рукции, детали которых здесь опускаются), можно пока- зать, что многие другие проблемы также неразрешимы. В частности, неразрешимы следующие проблемы: а) останавливается или нет произвольная программа, если входное значение равно 0; б) останавливается или нет произвольная программа при любых входных данных; в) выполнено ли равенство £,(£)= 0 для произволь- ной контекстно-зависимой грамматики G; г) выполнено ли равенство £(С|)П L(Gi) = 0, где Gri и С?2 — произвольные контекстно-свободные грам- матики; д) выполнено ли равенство L(G)—T*, где G = (2V, Т, Р, S)— произвольная контекстно-свободная грамматика; 317
е) выполнено ли равенство L{G\)<=‘ £(вг), где Gi и Gv — произвольные контекстно-свободные грамматики; ж) является ли произвольная контекстно-свободная грамматика неоднозначной. 1.4. «Расширенная» машина. Насколько реалистичной является машина с бесконечной памятью в качестве мо- дели компьютера? Память такой машины, очевидно, пре- восходит память любой существующей машины., которая подвергается ограничениям как на число регистров, так и на значения, которые могут содержаться в каждом ре- гистре. Однако эта идеализация в пределах машины с неограниченной памятью расширяет, а пе ограничивает возможности машины. Существуют ли аспекты в компью- терных системах, которые не могут быть смоделированы да машине с неограниченной памятью? Мы утверждаем, что пет. Хотя формально мы не мо- жем доказать это высказывание, остановимся на основных моментах такой «расширенной» машины, которая может моделировать все нужные свойства, хотя в качестве аб- страктной модели она применяется редко. Нас будут интересовать следующие свойства: а) большой набор операций; б) более широкий набор внешних типов данных; в) массивы; г) стеки; д) более сильные команды управления; е) общий механизм управления; ж) рекурсия. В пп. 1.1 и 1.2 мы показали, как в случае а) можно добавить арифметические операции к множеству команд, а в случае б), добавляя простые периферийные устрой- ства (для того чтобы иметь возможность работать с сим- волами, которых пет в машине с неограниченной па- мятью), можно расширить диапазон представлений входных и выходных данных над произвольным алфа- витом. Остановимся па работе с массивами. Предположим, что нам необходим массив с десятью компонентами А [1], ... ..., А [10] и что содержимое этих регистров суть а\,..., що- С помощью методики, которая уже использовалась, мы можем сохранить эти значения, вводя величину 10 которую затем можно запомнить в одном регистре. Мы 318
уже описывали процедуру выделения каждого at из а. Этот метод не зависит от границы массива и поэтому переносится на случай работы со стеками. В стеках мож- но хранить результаты промежуточных вычислений, не требуя существенно больше регистров. С помощью подхо- дящего механизма управления (см. ниже) мы можем так- же поместить в стек адреса возврата пз подпрограмм, Любая программа на машине с неограниченной па- мятью конечна, и строки программы могут быть прону- мерованы (помечены) числами от 1 до п, n^N. В контек- сте блок-схемы программы мы можем сконструировать в случае е) «вычисление goto», используя таб- личную технику, дан- ную выше, для того, что- бы получить «go to(Rk)», как указано на рис. 9.8. Используя схему прямого кодирования для программ Ф (а не Чг), мы можем закоди- ровать всю программу одним значением, кото- рое запоминается в ре- гистре. Разложение на простые множители за- тем может использо- ваться для выделения кода «следующего ут- верждения». Это моде- лирует свойство ж), а Рис. 9.8 вместе с использованием стеков дает возможность ре- курсии з). Следовательно, используя машину с неограниченной памятью, можно произвести «расширение» путем добав- ления этих свойств. Однако в действительности такие расширения носят лишь внешний характер, а результи- рующая система может быть смоделировала с использо- ванием другой машины с неограниченной памятью, у ко- торой блок-схема программы состоит из простых команд увеличения, уменьшения и «равенства нулю». Упражнение 9.1. 1. Построить на машине с неограниченной памятью блок-схему программы, осуществляющей проверку «7?( = пг». 319
2. Спроектировать машину с неограниченной памятью, которая, если дана программа, закодированная в Ro, бу- дет выполнять эту программу. (За основу взять кодирую- щую схему пз п. 1.2.) § 2. Конечные автоматы Уже достаточно много сказано об универсальных ма- шинах (их свойствах и ограничениях на эти свойства), которые могут вычислять все, что вычисляется, и, следо- вательно, проводя рассуждения в обратном порядке, по- лучим, что любая вычислительная проблема, которая не- разрешима в такой общей системе, будет неразрешима и в любой другой системе. Одпако возникает вопрос: как это связано с реальными компьютерами? Основная пробле- ма—это конечность памяти реальной машины (правда, и ее можно несколько сгладить, используя машину с не- ограниченной памятью, описанную в п. 1.1). Машина с неограниченной памятью состояла из неограниченного числа регистров, каждый из которых имел возможность содержать любое число из множества V. Хотя, как это следует из построений п. 1.4, мы можем обменять «ко- роткую и широкую» память (имеющую несколько реги- стров, каждый с большой емкостью) на «длинную и тон- кую» память (в которой емкость каждого регистра умень- шена, зато число регистров увеличено), существенное ограничение состоит в конечности числа различных кон- фигураций или состояний, которые может принимать па- мять. Такое ограничение вызвано физическими ограниче- ниями. Это понятие формирует основу нашей математи- ческой модели конечных машин. 2.1. Детерминированные машины. В соответствии с опытом электронного машиностроения (низким уровнем аппаратуры при построении элементов типа «не и» и т. п., микропроцессорных систем или универсальных цифровых машин) наша первая модель воплощает в себе понятие детерминизма, т. е. если некоторая ситуация достигается более одного раза, то в каждом случае устройство ведет себя одинаковым образом. Начнем с формального опи- сания. Определение. Конечным (детерминированным) ав- томатом М называется алгебраическая структура M=^(Q, S, t, jo, F, p)t 320
где @ —непустое множество состояний-, S—конечный входной алфавит; t — отображение Q X S -* Q, называе- мое переходом (или функцией переходов); qo~Q—на- чальное состояние; F ^Q, F — множество заключительных состояний (или принимающих состояний); р — функция Q X S -> S, называемая функцией печати (пли функцией выходов). (В некоторых случаях полезно модифицировать функ- цию выходов таким образом, чтобы она имела вид р: QX X S S', где S' — некоторый другой алфавит.) Идея состоит в том, что мы начинаем из состояния qo, и если q,^t(qo, s), то под действием входного символа s автомат переходит в состояние qi. Аналогично, если (go, s)^Dp, то, когда автомат перейдет в состояние (до, «), па выходе появится p(qo, s). Продолжая таким образом и читая каждый раз очередной входной символ, будем пе- реходить от одного состояния к следующему, пока плп не прочитаем символ, которого нет в S, или входные дан- ные будут исчерпаны — в этих случаях обработка прекра- щается. Входная последовательность называется представимой (автоматом М), если состояние, в которое перешел авто- мат М, принадлежит F. Для наглядности рассмотрим пример. Однако прежде опишем представление М в виде диаграммы. Во-первых, мы представим элементы Q вершинами ориентированного графа, которые изображаются малень- кими кругами; имя состояния указывается внутри круга. Элементы из F имеют дополнительные круги, начерчен- ные вокруг маленьких кругов. Если ((gf, ss), qk)^t, то проведем ориентированное ребро от д( к д* и пометим его символом Sj. Далее, если ((д<, s,), s()s р, то пометим реб- ро через s,: st. К одному и тому же ребру может быть добавлено несколько меток. Наконец, определим до стрел- кой, входящей в до- Пример 2.1. Рассмотрим машину, изображенную на рис. 9.9. Предположим, что мы читаем строку «аЬЬаа». Ребра, обозначающие функции перехода, заставляют ма- шину проходить через состояния go, gi, дг, gi, до и gi в указанном порядке. Легко впдеть, что, начиная с до, под действием t получаем (g0, а) — дх, (др b) ~ q2, (д2, Ь) ~ дх, (дх, а) д0, (д0, а) - дх. 21 Д. Кук, Г. 321
Однако qi пе является заключительным состоянием, и по- этому этот вход не подходит. Проверка диаграммы пока- зывает, что строками, представимыми этой машиной, яв- ляются только те строки над алфавитом {а, Ь), в которых имеется четное число символов а и четное число симво- лов Ь. У этой машины нет явного выхода; требуемая ин- формация может быть извлечена из результирующего состояния только после останова машины. II Следующие два примера относятся к арифметическому «оборудованию» и фактически порождают непосредствен- ный входной результат. Пример 2.2. Машина, изображенная на рис. 9.10 для пары строк над {0, 1), вычисляет и выводит их сум- му. Входные данные начинаются с битов с наименьшими Рис. 9.10 значениями, и пары читаются справа налево. По данным двум n-разрядным числам эта машина вычисляет их «-разрядную сумму. Однако она пе распознает условии переполнения и не работает с отрицательными числами. II Проверяя свойства функции выхода (функция выхода имеет вид (?Х{0, I}2-* {0, 11), полезно вспомнить факты, 322
касающиеся двоичной арифметики и описанные в § 3 гл. 4. В более сложной модели можно учитывать условия, при которых возможны ошибки при двоичном сложении. Пример 2.3. Машина, изображенная на рис. 9.11, также осуществляет двоичное сложение тем же самым Рис. 9.11 способом, что и в предыдущем случае, за исключением того, что она содержит два дополнительных состояния q% и <?з, которые проверяют наличие ошибок, связанных с внесением в знаковый бит и вынесением из знакового би- та соответственно. Заключительные состояния qo и qi обозначают выходы, в которых либо произошли оба эти переноса одновременно, либо не произошел ни один из них. Следовательно, эти выходы являются арифметически правильными. II Эти примеры показывают, что можно выполнить не- которые полезные преобразования и вычисления, однако остается открытым вопрос: насколько «сильными» явля- ются конечные автоматы? В ответе на этот вопрос встре- чаются две точки зрения. Первая, хотя и нетипичная, заключается в следующем: можно заметить, что исполь- зованные в примерах алфавиты основывались лишь на двух символах. Мы можем использовать любой конечный алфавит, однако, как отмечалось в § 1 гл. 8, алфавита размерности 2 всегда достаточно. Вторая точка зрения заключается в том, что общая доступная память в данное время в определенном компью- тере является конечной. Если она содержит п битов, то существует ровно 2П конечных состояний, в которых 21* 323
память может находиться. Это число может быть боль- шим, но оно всегда конечно (см. упражнение 9.2), и, сле- довательно, мы имеем конечную машину. 2.2. Недетерминированные машины. Рассмотрим с ма- тематической точки зрения, что могут делать эти аб- страктные машины. Чтобы упростить дело, в определении, данном выше, будем игнорировать функцию р. Следова- тельно, мы будем иметь дело только с устройствами, име- ющими конечное число состояний; будем их для кратко- сти называть КР (конечными распознавателями или ак- цепторами). В дальнейшем будет удобно расширить область значений функции переходов t (см. определение) так, чтобы выполнялось условие t: QXZ-+&(Q). Следовательно, из данного состояния под действием за- данных входных значений машина может иметь выбор, куда идти дальше. Это ничего не добавляет к определе- нию, однако обеспечивает простой способ конструирова- ния КР, который будет активно использоваться в этом параграфе. Машины такого тина называют недетермини- рованными КР. Чтобы еще более прояснить, дело для заданного КР М определим множество строк, представимых машиной М (обозначим это множество через А (М)), как указано ниже. Пусть М = (Q, S, t, qo, F) и s^S*. Запишем s в виде s = SiS2-..$n и определим множество Т($) индукцией по длине слова s следующим образом: Г(Л)-={д0} и T(Gsh) = U t(q,sk), ?еТ(о) где a —Si...sM-i для всех к, Таким образом, Т ($) — это множество всех заключительных состояний М, которые могут быть достигнуты под действием входной последовательности s. Если T(s)(\F = 0, то слово s пред- ставимо; поэтому множество строк, представимых маши- ной М, имеет вид Л(Л/)={5: Г(«)ПГ¥=0}. Недетерминированные КР полезны тем, что они упро- щают задачу построения сложных машин. Существенным является то, что нам хотелось бы иметь возможность со- брать машины вместе таким образом, чтобы не было нуж- ды, по крайней мере па первом этапе, касаться вопроса, 324
является или нет результат перехода функцией или от- ношением над (@Х5)Х@. (Напомним, что функция Q X S -* &{Q) соответствует отношению QX S -> Q.) Введение недетерминированности не увеличивает по- тенциала КР. От недетерминированной машины всегда можно перейти к детерминированной, как будет показано в следующей теореме. Теорема. Для любого недетерминированного КР М\ существует детерминированный КР М2 такой, что Л(Д/1) = Д(Л/2). Доказательство. Дадим вначале общую схему доказательства. Пусть Л/i = {Qt, Sj, ij, g0, Fj), a M2 = ^2, f2, q0, F2). Установим вначале, что Q2 = &{Q\) (в общем случае все эти состояния нам будут не нужны) и S2 = Si. Для это- го, начиная с qoе (?i, рассмотрим множество всех состоя- ний в i(qo, Si) (для «1 еSi) и назовем это множество об- разом (.Чо> $i) функции /2; т. е. мы переводим различные возможности машины Mi в единственное состояние ма- шины М2. Предположим, что далее мы читаем символ зг. В Mi это могло бы вызвать перевод состояния ti(qo, Si) в состояние из множества Л(М<7о, ®i), S2). Множество всех состоянии, полученных таким образом, сейчас дает един- ственное состояние в М2, получающееся в результате при- менения t2 к образу из (g0> ®i) и ®2- Таким образом, мы приходим к конструкции переходов между состояния- ми в Q2. Так как конечно, то конечно и Q2', следовательно, необходимо вернуться к ранее построенным состояниям, и, таким образом, процесс в конце концов оборвется. Если одно из «выбранных» состояний в Qi было в F\, то со- стояние в Q2 является заключительным и, следовательно лежит в F2. Перейдем к подробному доказательству. В соответст- вии с описанной выше конструкцией q0 = {<?0}п U (?П> ®ЛЧ 1=1 J и {gtI, ..., qtj} еЕг тогда и только тогда, когда qik е Fi при некотором k, 1 =£ к С /. Возвращаясь назад к определению множества А (М) для данной машины Mi, мы можем расширить ti и t2, 325
чтобы получить Т\ и Т2 так, как это показано ниже! (Л) — {(Jo}i F1 (os/<) = U sk), S 'l 1(а) 72(Л) = (до), T2(<JSk)^ U t2(q, sk) = t2{q, sft), qeT2{a) где T2(o) = {q) и о = Si... s^-t. Поскольку 4(Л/)= {s: 7’(з)П F¥=0) и существует есте- ственное соответствие между и F2, то мы должны лишь продемонстрировать такое же соответствие между Т। (з) и T2(s) для любого з; т. е. {..., qt, ...}•= Л (з) тогда и только тогда, когда {{..., qt, ...}} = Т2($). Сделаем это индукцией по длине s. Если |s| — 0, то з = Л, откуда Л(А) = {?0}, т2(\) = {<ь1 Предположим теперь, что соответствие имеет место для всех строк о: lolCfc—1, и рассмотрим строку озА. По предположению индукции {..., д(, ...} = Ti (о) тогда и только тогда, когда {{..., q„ ...}} = Г2(о). Однако тогда, если д, з„), то отсюда следует, что & е ГДоз*) и (по определению i2) qi, ..J qt, ..J, sA) = 7’2(asft). Из определения T2 и t2 следует, что все элементы из T2(ask) должны выводиться таким же образом; поэтому {. ..,qt, ...} = Ti (osA) тогда и только тогда, когда {{..., q„ ...}} = Г2(оза). Следовательно, Тi (s) для любого s е Р «соответствует» T2(s), и поэтому А(ЛЛ)= {s: Г1(з)ПГ1#0}« = {з: 7’2(з)П^2#0}=4(Л/2). / Приведенная выше аргументация была достаточно сложной и включала некоторое сомнительное (однако строго определенное) понятие «соответствие», которое под- разумевало уровень вложения включаемых множеств. В частных примерах мы можем обойти это путем введе- ния подходящих имен для результирующих состояний в детерминированной машине М2. Как будет показано в последующем примере, построе- ние М2 из М\ является непосредственным, однако, чтобы сохранить математическую строгость, напомним вначале 326
общепринятое соглашение, связанное с функциями. В си- лу используемых построений такое соглашение было бы здесь неуместным, однако краткое напоминание об этой погрешности послужит объяснением, «откуда берутся не- которые множества». Пусть задана функция /: А -> В такая, что /: х<-+у. Мы должны были бы писать ]{х)={у}, однако часто за- пись сводится к /(х) = у. Аналогично обычно детерминированный перенос обо- значаем как t: где t: fan s) - q„ Однако, когда мы имеем t: Q XX -> Ф (Q) (как в M\ и Л/2), то мы должны заключать множества в скобки даже тогда, когда \t(qit s) I = 1, и писать t(q(, «) = {дД. Перей- дем к примеру. Пример 2.4. Возьмем М\ таким, как указано на рис. 9.12, а. Тогда М?о, х) = {gb g2) и q\sFpt следовательно, получаем {gi, g2) в F2. Ана- логично *) = {g2, дзН следовательно, ^({gi, ?2), z) = {go, g2, дз> в М2 и т. д. Окончательно получаем ситуацию, изображенную на рис. 9.12, Ь. Тогда перенумерация дает нам рис. 9.12, с. II С этого момента мы не будем выяснять, какие маши- ны рассматриваются — детерминированные или нет; они всегда могут рассматриваться как детерминированные. 2.3. Составные машины. Сейчас мы в состоянии опи- сать, как заданную совокупность КР можно «собрать вме- сте» для Tofo, чтобы получить некоторые корректно опре- деленные множества строк. Основные свойства даны в виде предложения, однако вместо формальных доказа- тельств мы дадим лишь описание включаемых в доказа- тельство построений. Предложение. По заданным машинам М\ = ((?!, 2, fi, g, Fi,), М2 = (<?2, S, f2, р, F2) 327
мы можем построить машины Мз, ..М& такие, что Л(Л/3) = 2*\Л(Л/1), Л (Л/4) = Л (Л/^П Л (Л/2), Л(Л/6) = Л(Л/2)\Л(Л/|), Л(М6) = Л(ЛГ,)и Л(Л/2), Л(Л/7) = Л(Л/,)Л(Л/2), Л(М8) = Л*(М1). 328
Построение М3. Машина М3 получается из Mi заменой множества F\ заключительных состояний на множество Qi\F\. Следовательно, л/з = (<21, s, q, Qi\FQ. Чтобы получить Mi, возьмем (?4 = (?1Х(?2, возможно, с некоторыми подходящими переобозначениями. Пусть r = (g, Р)- Определим как Ч- ((?<> Л)> s) «)> s))j и множество Fi = {(?,-, А): д.е/7!, Pj^F2}. Тогда Mi = (Qi, S, tt, г, Ft) (см. пример 2.5). Построение М3 следует из Л/2 и М3, так как А (Л/2) \4 (Л/J = А (Л/2) П (2*\4 (Л/J) = А (Л/2) П А (Л/3). Построение Л/6 проводится подобно Л/4. Имеем Q3 = = Qi, ig = ti, однако F6 = {(qt, pj: qt^Fi или p,^F2}. Тогда Л/6=(<2б, S, fg, r, F3). При построении Л/7 используется идея присоединения выхода из Л/i к входу Л/г. Однако при этом следует быть внимательными, чтобы не проделать лишний шаг при движении от Mi к М2. Итак, возьмем @7 = (М____|(?г (разъ- единяющее объединение |_______________________| изменяет названия так, что Qi и Q2 не имеют общих состояний, и использует Qi U U Q2), множество \f^f2, p^F2, и добавим переходы от элементов Fi к другим состояни- ям Л/г, а именно i7 = ii U Z2U {((qi, s), р^, где Pi^t2(p, s)}. Тогда Л/7 = (^7, S, tj, q, F7), Построение Л/g проводится аналогично. Сначала не- обходимо позаботиться о том, чтобы Л°(Л/1)=0 было 329
представимо. Для этого добавим новое начальное состоя- ние и (u&Qi) таким образом, чтобы выполнялись усло- вия Qs = Q\ U {u}, Z?8 = Ft U {и}, a ts расширим (так же, как и ty) следующим образом: pi U {((и, «). ?,), <7j е h (?> «), » е 2}. 8 ~ bi U {((.Qi, s), g), ts (qit s) e Fv s e S}. Тогда Ma — {&, u, F8], h Пример 2.5. На рис. 9.13—9.15 даются последова- тельность диаграмм состояний для машин и М2 и ре- зультирующие составные машины Л/3, ..Л/8, которые были построены выше. Заметим, что некоторые из этих машин являются недетерминированными, однако от не- детерминированности можно избавиться при помощи пре- дыдущих результатов. // Построения, включающие объединение, конкатенацию и замыкание (операция «звездочка»), обеспечивают осно- ву алгебраических систем для описания множеств, пред- ставимых конечными распознавателями. Эта алгебра будет обсуждаться в § 3, а в оставшейся части этого параграфа обратим внимание на моделирование реальных компью- теров. 2.4. Моделирование «реальных» компьютеров. Как уже отмечалось, если данный компьютер имеет память, состоящую из п битов, то для того, чтобы смоделировать его поведение, вообще говоря, необходим конечный авто- мат с 271 состояниями. Пусть начальное состояние имеет такую конфигурацию, что программа и значения данных находятся в «ядре». Тогда не существует внешних сти- мулов, которые могли бы дать начало последовательно- сти переходов. Однако рассмотрение машины в несколько другом виде может привести к выполнению команд, ис- пользующих конечное число (уже определенных) состоя- ний машины. Предположим, что память состоит из т /-битных слов; тогда п = т * I. Теперь отделим программный ука- затель (называемый также программным счетчиком или указателем следующей команды) от оставшейся части машины; получим машину с n' = l*(m — 1) битами па- мяти. (Для простоты предполагается, что указатель имеет ту же длину, что и другие компоненты памяти.) Теперь 330
Рис. 9.13
можно программны!"! указатель рассматривать после каж- дого изменения состояния и его значение использовать для того, чтобы осуществлять очередной переход. Таким образом, функция перехода имеет вид Г: QXP-QXP, где t: (qa, рь) (tfr, Рл) соответствует значению указате- ля рь, что означает: выделить команду из состояния qa так, чтобы перевести машину в состояние gC1 а значение 332
Рь в программном указателе заменить на pd. (Здесь удоб- но рассматривать команду как действие, частично осу- ществляемое программным обеспечением, а частично — аппаратным методом. В этой модели мы не делаем раз- личия между ними; на практике бывает, что програм- мное обеспечение — это просто начальные данные, кото- рые управляют аппаратными процессами.) Рис. 9.15 Обычно программы начинают работу с программного указателя, установленного на определенное значение. Начиная с этого значения, все последующие значения порождаются автоматически при помощи описанного вы- ше процесса до тех пор, пока не выполнится команда останова. Конечно, не все 2' значений, которые могут содер- жаться в программном указателе, должны быть верны- ми. Часто 2' может быть больше т, и, следовательно, 2' — т значений будут неправильными адресами и будут вызывать ошибку, приводящую к останову. Число правильных значений, которые может прини- мать программный указатель, определяет число перехо- дов, которые могут быть нарисованы в виде стрелок из каждого состояния. Однако это не ограничивает число состоянии, которое равно 2 . При отсутствии дополнительной информации о моде- лируемой системе мы можем сказать о ней довольно ма- ло, однако на один момент следует обратить внимание. Если построенный нами конечный автомат останавлива- ется за «короткое» время или под воздействием команды останова, или из-за полученного неправильного значения указателя, то результат известен. Однако если машина 333
продолжает считать в течение длительного промежутка времени, то встает вопрос: остановится ли она когда-ни- будь и получим ли мы результат? Поскольку машина конечна (и, следовательно, имеет ограниченную память), то эта задача разрешима, однако неизвестно, как долго ждать результат. В силу способа построения машины пара (q, р), являющаяся указателем состояния, единст- венным образом определяет последовательность состоя- ний, которые должны последовать за данным состоянием, и, следовательно, повторение любой данной пары подра- зумевает бесконечный цикл. Поэтому, чтобы гарантиро- вать, что последовательность вычислений никогда пе остановится, мы должны обеспечить, чтобы опа пересе- кала заданную дугу перехода дважды. Все это требует достаточно много времени, так как необходимо выпол- нить 2” * т = 2( * т команд. Даже при достаточно малых значениях т и I число операций очень велико, и поэтому реальное время их выполнения требует десят- ков, сотен и даже тысяч лет. Урок, который мы должны извлечь из рассмотрения этого упражнения, заключается в том, что практически невозможно проверить корректность программы разум- ных размеров, используя тестовые данные. Требуется слишком много времени для выполнения всех прогонов программы. Такие тестовые прогоны могут только нахо- дить ошибки. Упражнение 9.2. 1. Построить конечный автомат, который будет рас- познавать четные числа, записанные в двоичной форме и читаемые слева направо. 2. Построить конечный автомат с входным алфавитом {а, ЪУ, который останавливается в заключительном со- стоянии тогда и только тогда, когда входные данные пе содержат рядом двух соседних элементов а и двух со- седних элементов Ь. 3. Показать невозможность построения конечного ав- томата, на вход которого поступают только строки над алфавитом {а, ЬУ, и только те из них являются предста- вимыми, которые имеют равное количество символов а и Ь. 4. Построить (детерминированный) конечный авто- мат, для которого представимыми являются только стро- ки над {0, 1), состоящие из чередующихся единиц и ну- лей, следующих за чередующимися парами из единиц и нулей. 334
5. Придумать конечный автомат, способный распозна- вать десятичные числа, записанные в виде ±dd*. d*E ± dd, где d е {0, 1,2, ..., 9). § 3. Регулярная алгебра Способы комбинирования конечных распознавателей могут использоваться для проверки аксиом множеств, из которых могут развиваться алгебраические системы. Классическая система, известная как регулярная алгеб- ра, основана на трех операциях — объединении, пересе- чении и конкатенации, определенных на множестве строк. Уравнения в алгебре могут точно определять не- которые множества строк; эти множества являются ре- шением уравнений (п. 3.1). Результаты, вытекающие из решений, имеют непосредственное применение к аспек- там теории языков (п. 3.2). 3.1. Выражения и уравнения. Перед тем как дать формальное определение, мы введем две константы внут- ри системы. Существует множество строк 0 и {Л}, кото- рые обозначим символами 0 и 1 соответственно. Мы обо- сновываем их использование изображением конечных распознавателей соответственно на рис. 9.16, а и Ъ. Рис. 9.16 Определение. Пусть X — множество строк, пред- ставимое конечным распознавателем. Тогда X называется регулярным выражением. Если X и Y обозначают мно- жества строк, представимых двумя определенными маши- нами, то (в силу определения построения конечных рас- познавателей) XU У (далее будем писать Х+У), X* и ХУ также являются регулярными выражениями. Разрешенные конструкции составных конечных автома- тов предполагают следующие аксиомы для работы с про- извольными регулярными выражениями А, В и С'. 1) 4+В = В + 4; 2) А + (В + С) = (4 + В) + О, 3) А + А =4; 4) 4 + 0 = 4; 335
5) 4(ВС) = (4В)С; 6) Al = 4 = 14; 7) ЛО=*О = О4; 8) 4 (В + С) = АВ + АС; 9) (А + В)С = АВ + ВС; 10) 0* = 1; И) 4* =4+4*; 12) (4*)* = 4*. Такую алгебраическую систему называют регулярной ал- геброй. Проверка достоверности этих аксиом требует рассмот- рения совершенно общих случаев. Поэтому их трудно должным образом описать. Тем не менее, чтобы обозна- чить используемые ниже идеи, рассмотрим два примера, исходя из двух аксиом, примененных к конкретному ре- гулярному выражению. Пример 3.1. Пусть 4 = {яд": ОСп). Это выраже- ние регулярно, так как является представимым для ма- шины Л/, изображенной на рис. 9.17, я. Используя машину, изображенную на рис. 9.16, а, ко- торая распознает 0, и применяя подходящее построение, получим машину, изображенную на рис. 9.17, Ь, которая, очевидно, эквивалентна М. Следовательно, 4=4+0. И Пример 3.2. Используя 4 и 1, определяемые маши- нами, данными выше, и обычной конструкцией конкате- нации, получаем недетерминированный конечный распо- знаватель, изображенный на рис. 9.18, я, который будет представлять строки в регулярном выражении 14. Эту машину делаем детерминированной (рис. 9.18, Ь), затем получаем машину (рис. 9.18,с), эквивалентную М, кото- рая удовлетворяет (в данном случае) части аксиомы 6), а именно 14 = 4. И Определив регулярную алгебру, посмотрим, как ее ис- пользовать. Предположим, что 4, В и С являются задан- ными регулярными выражениями (множествами строк) 336
и что X и У — неизвестные регулярные выражения та- кие, что выполнены следующие соотношения: X = AX + BY, Y = XC + B. Существуют ли решения этих «уравнений», и если да, то как их найти? Как мы вскоре увидим, регулярные Рис. 9.18 уравнения не имеют единственного решения; поэтому мы вначале введем понятие аппроксимации для регулярных выражений. Определение. Для регулярных выражений X и Y отношение С определяем следующим образом: X С Y {X аппроксимирует У), если X + У = У. И Теорема. Отношение С, определенное над регуляр- ными выражениями, является отношением порядка. Доказательство. Транзитивность имеет место, так как .хсу, ycz=>x+y=y, у + z-z. (*) Поэтому X + Z = X + (y + Z) = (X+y) + Z=y + Z = Z и, следовательно, X С Z. Антисимметричность имеет место, поскольку ЛЧ У, УсХ=*У = Х + У- У + Х = Х, Рефлексивность следует из X + X «• X. № Отсюда также следует, что X С У => ZX ZY для ре- гулярных выражений X, У и Z, однако детали доказа- тельства оставим в качестве упражнения. Перед тем как рассматривать уравнения, напомним, что из определения операции замыкания следует А* = 4° + А’ + ... + Ап + ... = 2 Лп, п=о 22 д Кук, Г. Бейз 337
где А° = 1. Это соотношение оказывается полезным при доказательстве следующих утверждений. Лемм а. Пусть Y и Z — решения регулярного урав- нения X = АХ + В. Тогда а) В С У, б) А У С У, в) Y + Z — решение. Доказательство. а) Так как У — решение уравнения X = АХ + В, то У = А У + В, и поэтому У + В = (AY + В)+ В - AY + (В + В) = AY + В = У. Следовательно, В =5 У. б) Аналогично У + АУ = (В + АУ) + АУ = В + АУ = = У. Следовательно, А У С У. в) Имеем Y + Z = AY + В-Y AZ + В = A (Y + Z) + В. II Уже достаточно много сказано о свойствах решений уравнения, однако существует ли хотя бы одно решение? Лемма. А* В является решением уравнения X => ^АХ + В. Доказательство. Подставляя А*В в уравнение, имеем А(А*В) + В — (АА* + А0) В = [А % Ап + А0) В = = ( 5 Ап + А») В ~ ( S А”') В = А*В. // \П = 1 / \п=о / Теорема. А*В является наименьшим (по отношению к С) решением регулярного уравнения Х — АХ + В. Доказательство. Из лемм следует, что А*В — решение, и если У — какое-либо другое решение, то В СУ, АВ С А У С У. Поэтому АВ =5 У, А"В С У, и, добавляя неравенства для всех п е N U {0), получаем А*В =5 У. Следовательно, утверждение теоремы верно. II Заметим, что А*В — это множество строк, каждая из которых является решением уравнения; если А = {а} и В — {Ы, то все строки вида апЬ также являются решениями. Заметим также, что так как А *В является наименьшим решением уравнения X — АХ + В, то оно является наи- меньшим выражением таким, что X >-► АХ + В совпа- дает с тождественным отображением. Поэтому его также 338
называют наименьшей стационарной точкой уравнения (или минимальной стационарной точкой). Рассмотрев одно частное уравнение, мы сейчас можем непосредственно получить аналогичные результаты для других похожих уравнений; доказательства в этих слу- чаях будем опускать. Теорема. Для заданных регулярных выражений А и В уравнение X = АХ + В эквивалентно паре уравне- ний X *= YB, Y = YA + 1 в том смысле, что они имеют одно и то же наименьшее решение, и это решение есть Х — А*В. И Теорема. Для заданных регулярных выражений А и В уравнение X = АХ + В эквивалентно паре уравнений X = BY, Y =• AY + I. (В этом случае обе системы наименьшее решение X = = В4*.) И Эти две теоремы позволяют нам преобразовывать пра- вые линейные формы (X = АХ + В) в левые линейные формы (X — ХА + В), которые соответствуют правым и левым рекурсиям внутри регулярных грамматик. Детали этого соответствия даны в п. 3.2, однако сначала мы обоб- щим результаты на системы алгебраических уравнений. Предположим, что Xi, ..., X» — неизвестные регуляр- ные выражения и что Ац (1 < i, / < п) и Вь ..., Вя — известные регулярные выражения такие, что X, = Х,Л „ + Х2Л21 + ... + ХПЛП1 + Bi, Х{ — ХхАц + X2A2i + ... +ХПЛ„( + В^ Хя = XiA’ln + Х2А2я + Xjln + Вя. ’ Теперь можно использовать операции, определенные на регулярных выражениях, чтобы ввести операции на мат- рицах из регулярных выражений: (С -f- D)ij = Су + Dy, (CD)y-SCuDWt h C* = 2 Cn; 11=0 С C D тогда и только тогда, когда C(J < D(j для всех i, ], 22* 339
где С и D — согласованные матрицы, элементы которых являются регулярными выражениями. Обозначив через X «регулярную матрицу», мы можем представить приве- денные выше уравнения в виде X = ХА + В. Применяя рассуждения, аналогичные тем, которые ис- пользовались в случае одного уравнения, можно показать, что эта система имеет минимальную стационарную точку ВА*, которая достигается на решениях X — BY, где Y = e AY + I; I — единичная матрица. Соответствующие ре- зультаты справедливы для правых линейных систем. Из замечаний следует, что эти системы эквивалентны. Это помогает удалению левых рекурсий в контекстно-свобод- йых грамматиках. Ясно, что для уравнения X •= ХА + В решение может быть определено как Х^ВП-^ВЛ, Л где Yy = (AY + 1)ц = 2AiftYft) + ly. k Пример 4.4 гл. 8 показывает, как этот результат пе- реносится на контекстно-свободные грамматики. Преобра- зования, используемые в этом примере (хотя они и не строго обоснованы), появились при помощи рассуждений по аналогии. Мы завершаем этот раздел, указывая на формальную связь между регулярной алгеброй конечных распознавателей и регулярными грамматиками. 3.2. Представления регулярных грамматик. Напомним, в гл. 8 структурная грамматика G = (N, Т, Р, S) назы- валась грамматикой Хомского типа 3 или (Л-свободной) регулярной грамматикой, если все элементы Р имели вид А -* х или А -* хВ, где х = Т и А, В е N, или же (если AeL(G)) S -* Л; в этом случае S не встречается ни в какой правой части. Множество предложений, порожденных регулярной грамматикой, называют регулярным множеством или ре- гулярным языком. В настоящий момент мы в состоянии обосновать использование дважды одной и той же терми- нологии и, следовательно, использовать регулярную алгеб- ру в грамматиках. Основной результат состоит из двух частей и дан в виде теоремы с конструктивным доказательством. Часть I является непосредственной, так как каждый пе- 340
реход определяют на всей его области определения; в части 11 пе обязательно, чтобы грамматика (N, Т, Р, S) для данных X и as Т имела продукцию вида X -* а или X а У при некотором У ^-N. Теорема. Множество, представимое конечным ав- томатом, является в точности таким же, как если бы вы- водилось из регулярных грамматик. Доказательство. Опишем конструкции доказа- тельства. Вначале рассмотрим конечный автомат М — (Q, S, t, g, F). Теперь построим регулярную грамматику G—(2V, Т, Р, S). Если ЛЙЛ(Л/), то можно сделать следующее. Пусть N — Q, Т = 2 п S =* q\ построим Р такое, что Р = (Х->аУ, a)) U {X -* a, t(X, ajUF?#}. Если AsA(4f), то расширяем конструкцию, создавая новый нетерминал q, полагая S = q и добавляя к Р про- дукции 3- Л, 3 -* aY (если У s t(q, а)), Sа (если t(q, a)DF = 0). Сейчас легко показать, что для каждого х = 2* усло- вие х s А (М) выполнено тогда и только тогда, когда х s e£(G). Очевидно, что если q s F, то Л представимо ав- томатом И и S -* Л — продукция G и наоборот. Если также a s А (М) и |а| = п, то а = а\йг ... а„, a, s S, и поэтому существует путь в графе М, как показано па Рис. 9.19 рис. 9.19. Здесь At<^N (не обязательно все различны) п В s F, и по построению {S -»• aiAt, Hi * U2A2, . •Ап-z "* вв-1Л»-|, А.,-1 ая1 s Р (рис. 9.20). Таким образом, ae£(G). Проводя рассу- ждения в обратном порядке, аналогично получаем и, следовательно, равенство доказано. 341
Сейчас надо показать, что для данной (Л-свободной) регулярной грамматики предложения этой грамматики могут быть представимы некоторым конечным автоматом, а все другие строки не представимы этим автоматом. Возьмем Gi =(Nit Tit Ph S|) и построим М\ =(Ct, Ei, #1, 9ь ^i)> как показано далее. Пусть = и Qi = Рис. 9.20 e Nt U {т1 U {л} (где тип — специальные символы, ко- торых нот в М; х представляет правильную терминаль- ную строку, а л представляет ошибку), <?i “ Si и Ft = = {т). Если также As£(Gi), т. е S, -* Л принадлежит Pi, то Fi — {т, gj. Окончательно имеем £ = {((X, а), У): Х-*аУ есть в Pt) U Uj((X, а), т): X -* а есть в PJU U {((т, а), л) для всех а <= SJ U U{((X, Ъ), я): если X s N{ п не X -* bY для любого У е е Ni и не выполняется условие X -* Ъ есть в PJ U U {((л, а), л) для всех а е EJ. Обоснование того факта, что эта машппа представляет £(Gi), оставляем в качестве упражнения. / Пример 3.3. Пусть задана регулярная грамматика G = ({А, В, С, D}, {г, у, z), Р, А), где Р = {Л - Л |хВ| уС, B-zB |у I уС, C^xD,D^ yD\x). Используя описанную выше конструкцию, получим ма- шину, изображенную на рис. 9.21. И 342
Упражнение 9.3. 1. Пусть заданы регулярные выражения А, В, С и D такие, что А С и В^С. Доказать, что а) А + D С С + Z); б) AD С CD; в) DA С DC; г) А* С С*; д) А + В С С. 2. Исследовать, как преобразуются результаты п. 1 данного упражнения, если А, В, С и D — регулярные матрицы размера пХп. 3. Определить конечный автомат для языка L, опреде- ленного как 11*01* (т. е. L — {ш е {0, 1)*; w} начинает- ся с 1 и имеет только один нуль. Выписать правую ли- нейную грамматику, определяемую этим автоматом, и по- следовательность перемещений, делающих представимой строку 111011,
ГЛАВА 10 КОМПЬЮТЕРНАЯ ГЕОМЕТРИЯ Эта глава дает некоторые сведения из геометрии, ко- торые широко используются в компьютерной графике и компьютерном вспомогательном математическом обеспече- нии; при этом делается попытка изложить все более стро- го и унифицированно, чем это делается во многих книгах по компьютерам. Мы стремимся представить серию «при- емов» в некотором, очевидно, случайном порядке, а так- же использовать концепции, развитые в предыдущих гла- вах (особенно в гл. 1—3, 5, 6), чтобы обеспечить основу для обсуждения выбранных тем, включающих однород- ные координаты, кривые и поверхности. Дано также че- тырехмерное представление данных трехмерной геомет- рии, широко используемое на практике. Перед началом обсуждения будет полезно, чтобы чи- татель имел некоторое представление о разнице между терминами «топология» и «геометрия»: геометрия изуча- ет расстояния и углы, тогда как топология занимается более общими свойствами. Например, две сферы с различ- ными радпусами являются топологически эквивалентны- ми, а геометрически — нет. Два объекта топологически эквивалентны, если один пз них может быть получен из другого искривлением и растяжением последнего без раз- рыва (чтобы быть более точными, путем использования непрерывного отображения, обратное к которому также непрерывно), тогда как в геометрии эквивалентные объ- екты должны быть идентичны во всех отношениях, за ис- ключением их положения и ориентации в пространстве. Теория графов является частью топологии, поскольку вершины не обладают свойством положения в простран- стве и топология графа есть отношение ребер. Обычно удобно запоминать в памяти компьютера два различных множества данных, относящихся к рассмат- риваемому объекту,— топологические данные и геометри- ческие данные. Например, можно представить широкий 344
класс объектов при помощи каркасных моделей. На рис. 10.1 дано такое представление конечного цилиндра. Топология модели такого типа может рассматриваться как граф и может быть представлена в виде связной спи- сочной структуры. Геомет- рические данные могут быть просто списком век- торов, определяющих по- ложения вершин в R3. Целью разделения содер- жания геометрии и топо- логии является то, что мы хотим преобразовать рашу модель некоторым обра- зом, например чтобы она была физически меньше, пли передвинуть ее в не- Рис. 10.1 которое новое положение, изменив ориентацию в пространстве. Такие пре- образования не изменяют топологии модели, и нам просто изменить соответствующим образом геометри- ческое множество данных. В § 1, 2 мы будем заниматься системами координат, которые дают возможность пред- ставить геометрические данные, и некоторыми полезными в дальнейшем множествами преобразований, которые мо- гут применяться к геометрическим множествам данных. § 1. Системы координат для подмножеств R’ В общем случае система координат (координатная система) или параметризация множества S s R" являет- ся идентификацией каждой точки в S при помощи един- ственного упорядоченного набора чисел (£i, ..., B,)eR’ (geN). В терминологии отображений система координат для S может быть определена как непрерывная биекция Ф: S -* д’, где ЯР s R’. Любое преобразование или другое вычисление, осуществляемое на S, тогда выполняется в терминах координат (Bi,..., В,). Конкретное отображение, которое выбирается для данной задачи, часто будет опре- деляться геометрией пространства S. Можно показать, что q для фиксированного S является постоянным для всех систем координат и называется размерностью S. К сожалению, в одном из приведенных ниже примеров (однородные системы координат) требуется, чтобы ЯР бы- ло всем пространством; кроме того, существует много по- 343
лезных подмножеств, для которых такие отображения не существуют (например, круг или сфера). Чтобы разо- браться с этим, следовало бы совершить небольшой экс- курс в топологию; однако вместо этого будем надеяться, что проведенное ниже рассуждение, несмотря на недостат- ки определения, поможет хорошо разобраться в данном вопросе. В основном нас будут интересовать пространства раз- мерности 3 и меньше; например, кривые являются одно- мерными объектами, а поверхности имеют размерность 2. В следующих примерах представлены некоторые наи- более общие координатные системы в R2 и R3, однако там, где легко обсудить более общий случай, мы это бу- дем делать* Пример 1.1. Прямоугольная система координат в R" (neN). Если B = {ei, ..., е„} — базис в R", то каж- дый элемент х е R' может быть записан единственным образом в виде п х = 2 aie«> гДе fli е R, 1 i п. i=l Отображение Ф: Rn-* R”, задаваемое как Ф(х) = (Д1, ... ..., ап), определяет координатную систему в R”. Если В ортонормирован, то соответствующие координаты назы- ваются декартовыми координатами в R". В R2 и R3 обыч- но ортонормированный базис интерпретируют геометри- чески как правостороннюю систему координат в смысле § 4 гл. 5. И Следующий пример в Rn является более сложным с математической точки зрения. Необходимо некоторое предварительное обсуждение перед тем, как мы опишем эту систему. Начнем с определения отношения ~ на R"+l. Опреде- лим его следующим образом: х ~ у, если х = ау для не- которого aeRMO}. Важные свойства этого отношения сформулированы в следующем предложении, доказатель- ство которого оставляется в качестве упражнения. Предложение. Отношение ~ является отноше- нием эквивалентности на Rn+1. Отношение ~ определяет следующие классы эквива- лентности: Рп = {L\{0): L— одномерное векторное подпространство Rn+1, 0 — нулевой вектор в Rn+1) и {0). 346
Очевидно, что Rn+I = Р" U {0). Определим подмноже- ство Рп. Определение. Пусть х е R"+l имеет вид (zt, ... ..., хп, 0), где не все равны нулю. Тогда [х] е Рп на- зывают бесконечно удаленной точкой. Обозначим множе- ство всех бесконечно удаленных точек Рп через Li и определим Нп как Pn\Li. // Следующий результат играет важную роль: он уста- навливает координатное отображение R". Предложение. Существует биекция Q”: Нп -* - R". Доказательство. Определим отношение Qn: Нп -> R" следующим образом: ^r‘(l(xv • • • > *n+i)]) = «= —-—(Хц ...,хп). Вначале заметим, что правая часть хп+1 всегда определена, так как Ai исключена из области оп- ределения (?"; следовательно, S)(Qn) = Нп. Необходимо установить три факта: Qn — отображение на Н”; Qn инъективно; Qn сюръективно. Qn является отображением, если (xi, .... *п+1)~(Уь •••, Уп+1)=> => Qn([(^1, i/n+i)])- Пусть (xi, ..., xn+i)~(jn, Уп+1); тогда существует а е R\{0} такое, что xt — ayt для всех i, 1 i п + 1. Тогда по определению .. •> Zn+i)l) = Q" • • • ,ayn+i)]) = -i—(aylt ..., ayn) = -^—(yv ...,уп)= “»п+1 Уп+1 = • ••. !/n+i)]). Следовательно, Qn — отображение на Н\ Qn инъективно, если Q”( [х] ) = Qn( [у] )=► х ~ у. Запи- сывая выражение для х и у в виде х =(zi, ..., хп, xn+i) и у =(У1, ..., Уп, Уп+1), получаем @n(lxJ) = Q ((у])=* j-(х1> • • •> гп) - (Рц • • •> Уп). хп+1 »п+1 откуда x< = (xn+\lyn+\)yt*>" х ~ у, a = in+i/yn+i. Следова- тельно, Qn инъективно. Q” сюръективно, если для всех x=(ji, ..., z„)sRn сущестует x*eR"+l такое, что ()п([х*])=х. Если опре- делим х* =(xi, ..., хя, 1)е Rn+1, тогда очевидно, что Qn( [х*] ) = х, т. е. Qn сюръективно. / 347
Пример 1.2. Однородные координаты в R"(nsN)'< Однородные координаты в R” определяют как отображе- ние В" на //", имеющее обратное отображение Qn, так что Ф: R” -* Нп, где Ф==(^”)-1. Другими словами, одно- родными координатами точки (zi, z„)eRn являются (п + 1)-мерные наборы классов эквивалентности [(хь хп, 1)] == {(pxi, рхп, р): р^О}. Элемент из [(ац, хп, 1)] называют однородным пред* ставлением для (ii, ..хп). Часто бывает удобно представить в компьютере гео- метрические данные в однородной форме (см. § 3). Что- бы из однородных координат получить физические, осу- ществим отображение (хи ..., хп+1) >-»----..., хп). Xn + l Сформулированное выше предложение показывает, что все однородные представления данной физической точки имеют те же самые физические координаты. Чтобы прояснить ситуацию, рассмотрим геометричес- кую интерпретацию однородных координат в R. Случай Рис. 10.2 более высоких размерно- стей имеет подобную гео- метрическую интерпрета- цию, однако ее нелегко изобразить на рисунке. Элементы Р1 являются бесконечными линиями в В2, проходящими через на- чало координат, однако начало координат выбро- шено (рис. 10.2). Ясно, что единственной, беско- нечно удаленной точкой будет ось Oxi с выбро- шенным началом коорди- нат. Рис. 10.3 проясняет понятие «бесконечно удален- ная точка в Р‘>. Точки на линии £„ = [(«, 1)] явля- ются однородным представлением п = R. Из рис. 10.3 видно, что при п -► оо прямая Ln стремится к бесконечно удаленной точке Л». И Пример 1.3. Полярные координаты в R2, Пусть Z/SR2—полубескопечная линия L — {(х, 0): х > 0) и (я, у) = В2\Л. Тогда, если Ф: R2\L ->• J0, °°[Х]0, 2л[ опре- делено как Ф(х, у) = (г, 0), где г = (х2 + у2)1/2, а 0 = “ arctg (у/х), то Ф определяет множество полярных ко- 348
ординат в R2. Обратное к Ф отображение задается соотно- шением Ф"’(г, 0) = (rcos0, rsin0). Геометрическая ин- терпретация г и 0 дана на рис. 10.4. Исключение L из области определения Ф часто неправильно комментиру- ется в элементарных учебниках. Линию L удаляют, что- бы получить непрерывность Ф. Пример 1.4. Цилиндрические координаты в R3. Пусть Р с R3 — полуплоскость Р = {(х, 0, z): х > 0) и (х, у, г)€=П3\Р. Тогда отображение Ф: R3\P -* ]0, °°[Х]0, 2л[X R, определяемое как Ф(х, у, z) = = (р, <р, z), где р = (х2 + у2)1/2, ф = arctg(y/x), опре- деляет множество цилиндрических координат в R3\P. Обратное к Ф отображение задается формулой Ф-1(р,Ф, 2) = (рсозф, рз!пф, z). На рис. 10.5 изображены величи- ны р, ф, z, относящиеся к осям декартовой системы ко- 349
ордипат. Полуплоскость Р исключена из области опреде- ления Ф, чтобы получить непрерывность. II Пример 1.5. Сферическая система координат в R3\P; Р определено, как в примере 1.4. Сферическую си- стему координат определяют как отображение Ф: RVP -* ]0, «>[ X [0, л] X ]0,2л[, где Ф(х, у, z) = (r, 0, <р) а г = (х'2 + у1 + г2)1/2, 0 = = arccos(z/r), ф = arctg(i//. ). § 2. Преобразования Одной из наиболее часто используемых операций над геометрическими данными является преобразование. На- пример, вращение трехмерного пространства R3 дает воз- моягность рассматривать трехмерные геометрические объ- екты с любой удобной точки. Это может оказаться полез- ным при проверке геометрической целостности объекта, или при подробном изучении какого-либо свойства, или по какой-либо другой причине. Некоторые подходы осно- ваны на библиотеках основных геометрических «строи- тельных блоков», из которых путем преобразования мо- гут быть построены более сложные геометрии. Они следу- ют из некоторых теоретико-множественных операций, ко- торые будут построены далее. Алгоритмы для такого типа геометрического синтеза являются весьма специаль- ными и не будут здесь обсуждаться, однако мы упомя- нем, что обобщенная форма теоремы Эйлера для графов может быть использована для исследования топологии конструируемого объекта. Преобразования используются более широко. Некоторые из наиболее употребляемых преобразований и их линейные представления будут сей- час описаны. 2.1. Преобразования в R2. Переносом в R2 называет- ся отображение вида Тт = г + г0 для всех г е R2, где го s R2 — фиксированный вектор. Перенос перемещает всю плоскость сдвигом на фиксированный вектор и может быть записан в координатной форме: Т (х, у) = (х, у) + (хо, Уо) = (х + х0, у + уоу. Обозначим через Т(2) множество всех переносов па R2 и определим произведение в Г (2), используя композицию отображений. Пусть Л —перенос на вектор rj, а Та — перенос на вектор Гг. Тогда произведение 7^ ° Л опреде- 350
лим как Уз0 Т\Т = Т2 (Т\т) — г + ti + г2. Очевидно, что У2 ° У1 есть перенос на Г) + г2, и, следова- тельно, операция ° является бипарной на У (2). В дей- ствительности справедливо более сильное утверждение. Предложение. (У(2), °) — коммутативная груп~ па нелинейных преобразований R. Доказательство. Замкнутость относительно опе- рации ° уже доказана. Аксиомы группы следуют из груп- повой структуры (R2, +); например, если УД1 i 3) — переносы па гП1 то (Уз ’(У2 ° У1))г = Уз((У2» У0г)= Уз(г + П +г2) = = т + Г1 + Г2 + ГЗ = (г + Г1) + (г2 + Гз) = = (Уз»У2)(У1Г) = ((Уз»У2)’У1)г; поэтому (У(2), ») ассоциативна. Единицей является пе- ренос на вектор (0, 0), а обратным переносов к Уг = г + + Го будет У'г = г — го; поэтому У ° У'г = У'Уг = г для всех г е R2. Коммутативность также выполняется, поскольку (У2» У1) г = г + ri + г2 = г + r2 + ri = (У1 ° У2) г. В общем случае, если УеУ(2), то У(0, 0)=?^(0, 0); поэ- тому начало координат смещается и, следовательно, пере- нос является нелинейным отображением. // На практике это означает, что можно применить любое число переносов к геометрическому объекту и получить один и тот же результат. Кроме того, нелинейный харак- тер элементов У (2) означает, что мы не можем выпол- нить У(2) при помощи элементов из М(2, R); другими словами, уравнение для всех (х, у) е R2 не имеет решения. Следствия из этого факта будет рас- смотрены ниже. Опишем поворот в R2, используя рис. 10.6. Интуитив- но ясно, что поворот на угол 0, обозначаемый 1У(0), ото- бражает точку (х, у) в точку (х', у'), где llrll = Ur'll = г. Из рисунка видно, что х = г cos 0, у — г sin 0, х' = г cos(0 + 0i), у' = г sin(0 + 01). pH в12 РП Г*+*° 1*21 ° 22 * + *0 351
Применяя тригонометрические формулы, получаем х = r(cos0cos 0i — sin 0 sin 0j) = xcos0 — у sin 0, у' = x sin 0 + у cos 0, так что W(0) (x, у) = (x cos 0 — у sin 0, x sin 0 + у cos 0). В матричной форме это можно записать следующим образом: rrz/nw \ ГСО!30 -sinGlp’. TF(0)(^, у) j^sin 0 cos 0] р ' IF(0) геометрически соответствует повороту вокруг нача- ла координат О. У Следующее предложение непо- средственно вьп екает из представ- / ления Л (2, R) и, с нашей точки / зрения, суммирует основные свой- гу ства поворотов. / ’ Предложение. а) Преобразование W (0): а? — линейно, 0*^ — ортогонально, detlV(0)=l. Рис. 10.6 б) Множество {JV(0); 0 0 < < 2л) является коммутативной группой по отношению к композициям отображений (ум- ножением матриц). И С практической точки зрения из а) следует, что для вычисления преобразования, обратного к повороту, до- статочно лишь транспонировать матрицу. Часть б) озна- чает, что любое число поворотов может применяться к множеству геометрических данных в любом порядке п будет давать одинаковые результаты. На самом деле вер- но обратное к а) утверждение. В частности, если W е ^Л(2, R) и выполнены условия, a) W является пово- ротом. Другими словами, мы можем определить поворот в R2 как элемент группы 50(2). Хотя Т(2) и 50(2) являются коммутативными груп- пами, преобразования из Т(2) не коммутируют с преоб- разованиями из 50(2), так как если W<=S0(2) и Т<= &Т(2)—сдвиг па го, то мы имеем 7’FFr = lFr + ro и TF7,r = PF(r + r0)=PFr + IFr0=?fe7’IFr прп го^(О, 0). На практике это означает, что преобразования переноса и по- ворота надо применять строго в том порядке, в каком они записаны. Некоммутативность проиллюстрирована на 352
рис. 10.7, где показаны результаты применения преобразо- ваний Т • W(nl2) и 17(л/2)в Т к полусфере. Из рис. 10.7 видно, что если площадь {(х, у): 0<х<а, 0<у^Ь} соответствует экрану графического терминала, то резуль- тат применения W (л/2)»Т к полукругу даст в итоге пу- стой экран. Группы Г(2) и SO(2) могут быть объединены в виде третьего множества Е(2) преобразований плоскости, на- зываемых евклидовыми. Элементы £7еЕ(2) имеют вид Ur — Wt + Го для всех г е R2, где W е SO(2), а Го «в В2 — фиксированный вектор. Эти преобразования часто запи- сывают в виде пар вида (И\ Го). Если (Wt, ti)^E(2) и (W2, г2)еЕ(2), то (W2, г2)°(1Уь г«)г-(Ж8, rj)(Wrir + + h)= IV2(IVir + ri) + r2 = (IV2IVi, W2ri + г2)г, так что (Wa, r2)-(Wh r1) = (IV2IV1, W2r. + r2>£(2) и E(2) замкнуто. В действительности имеет место следу- ющее предложение. Предложение. Е(2) является группой по отно- шению к операции композиции. Доказательство. Ограничимся указанием ос- новных моментов доказательства. Замыкание уже доказа- но. Ассоциативность следует из применения преобразо- ваний несколько раз. Если I^GL(2, R)—единица, то справедливы соотношения (Z, они; Го) - (IV, ъ).(Л 0)=(IV, Го) для всех (IV, г0)е£(2); следовательно, (7,0) является единицей в Е (2). Обратный 23 д. кук, г. Бей» 353
элемент (Ж, г0)“’ к (W, г0) будет равен (W*, —ТРго) при (WT, -PFTr0)e£(2), и (W, r0)°(IVT, -IVTr0) = (Z, O) = (IVT, -WTr0)’>(W, т0). / 80(2) и Г(2) являются подгруппами {(Wt 0): Wа е5О(2)} и {(Z, го): гое В2) из Е(2) соответственно, и каждый элемент (W, го)е£(2) может быть представлен следующим образом: (IV, го)-(7, ro)°(IV,O). Е(2)— некоммутативная группа, так как (W2, r2)’(Wb r1) = (IV2WI, jy2ll + r2), (IVb nHW,, г2) = (ИМГ2, TV1r2 + rI)¥=(TP2, r2)o(TVlt n). В приложениях компьютерной графики часто хотят повернуть объект около некоторой фиксированной точки, отличной от начала координат. Например, на рис. 10.8 полукруг повернут на л/2 около точки Р. Общая ошибка при этом заключается в попытке применить преобразова- ние W(л/2); однако это приводит к результату, изобра- женному на рис. 10.9. Проиллюстрируем последователь- ность преобразований поворота вокруг фиксированной точти го s В2 на рис. 10.10, используя понятия Е(2). Тре- буемое преобразование, таким образом, будет равно (/, го)’(IV(л/2), 0)«(/, -го). Эту запись можно упростить, используя правило произве- дения в Е (2); получим (IV (л/2), -1У(я/2)го + го). Ясно, что применять составное преобразование к множе- ству геометрических данных более эффективно, чем при- менять в отдельности каждое преобразование. Е(2) дает 354
возможность расположить объект в любой точке плоско- сти и в требуемой ориентации. Множество полезных операций на плоскости включа- ет в себя преобразование масштаба. Преобразованием масштаба на R2 называют отображение вида S(x, у)==(Хх, цу), Л, ц>0, или же (в матричной форме) Множество всех преобразований такого типа обозначается 5(2). Важные свойства 5(2) сформулированы в следую- щем предложении, доказательство которого оставляем в качестве упражнения. Предложение. 5(2) является коммутативной группой линейных преобразований по отношению к опе- рации композиции. {Другими словами, 5(2) является коммутативной подгруппой GL{2, R).) / Преобразование масштаба не коммутирует с перено- сом, так как если Т — перенос на вектор го и 5(i, y) = (U, Ир), то 5»Т(х, y)*=S{x + x0, у + уа)*“{Ъ{х + х0), р(у + уо)), Т»S(x, у)-=Т{Хх, цу)=-{Хх + х0, цу + yo)¥‘S*T{x, у) в общем случае некоммутативность проиллюстрирована 23* 855
на рис. 10.11; используются преобразование масштаба $(х, и перенос Т(х, у) = (г+1, у + 1) единичного квадрата с вершиной в начале координат. Аналогично можно показать, что преобразования масшта- ба не коммутируют с поворотами. Доказательство этого (2,2) Рис. 10.11 и построение соответствующего рисунка, который это де- монстрирует, оставляем в качестве упражнения. На практике это означает, что если преобразование масштаба комбинируют с переносом или с поворотом, то следует обращать особое внимание на порядок примене- ния преобразований. Языки высокого уровня предусматривают массивы как структуры данных; следовательно, матричное представле- ние всех рассмотренных выше преобразований должно существенно упростить их применение. Например, все произведения преобразований тогда могли бы вычислять- ся путем умножения матриц (см. гл. 6) вместо того, что- бы работать с определениями этих преобразований. Нели- нейная природа переносов препятствует представлению в Л (2, В); однако возможно получить подходящее пред- ставление обсуждаемых выше преобразований в ЛО>, R), 35в
где матрицы оперируют в пространстве И2 однородных координат R2. Поскольку техника получения представле- ния в однородных координатах носит весьма общий ха- рактер и, в частности, может быть применена к преобра- зованиям в R3 (где получается представление в ^#(4, R)), мы отложим рассмотрение до описания преобразований в R3. 2.2. Преобразования в R3. Перенос в R3 есть отобра- жение Т: R3 -* R3 вида Тт = г + г0 для всех г е R3, где Го е R3 — фиксированный вектор. Если Го = (хо, Ро, zo), то перенос иа Го может быть записан в компонентной форме как Т (х, у, z) = (х + то, у + уо, z 4- z0). Пусть Т’(З) обозначает множество всех переносов R3. Тогда Т(3) образует коммутативную группу (по отноше- нию к операции композиции) нелинейных преобразова- ний R3, изоморфную группе (R3, +). Следствием этого является тот факт, что последовательность переносов R3 может применяться в произвольном порядке и будет да- вать один и тот же результат и что мы не можем выпол- нить Т’(З) при помощи элементов из R). Группа поворотов в R3 имеет более сложную структу- ру, чем 50(2). Рассмотрим поворот 1Е-(0) на угол 0 вокруг оси, определяемой единичным вектором n s R3, как это изображено на рис. 10.12. Тогда JV-(0)r = r', где г — вектор с концом в точке Р, а г' — преобразован- ный вектор с концом в точке Р'. Чтобы определить явно 357
TTj- (0), мы должны выразить г', как функцию г, п и 0. Ясно, что если гЛ- — вектор, определяемый точкой N, ле- жащей на оси поворота, то г« = (п; г)п, и если rWp — вектор, соединяющий N и Р, то го = г - г» = г - (п г)п = (п Хг)Х п. Рисунок 10.13 показывает, как выглядит поворот из точки N в направлении начала координат О; Q — точка, полученная поворотом точки Р на л/2 относительно оси ON. Таким образом, VKj(0)— поворот; следовательно, II ГЛ’<э|1 = l'rNP|l = || ГЛ'Р' Ц, глр' — rjvQsin 0 + торсов 0, где Гиз —- проекция вектора на ось NQ. Отсюда следует, что = n X r.vP = n Х((пХг)Хп) = пХг (см. упражнение 10.1); следовательно, Глр- = (n X г) sin 0 + ((n X г) X п) cos 0 = = (n X г) sin 0 — (n X (« X г)) cos 0, но (9) г = г' = гЛ + гл?, = •= г + (n X (n X r))(l — cos 0) + (n X г) sin 0. Предложение. 1ТП- (0)еSO(3). Доказательство. Некоторые детали доказатель- ства будем оставлять в качестве упражнений. Запишем ^-(0) в несколько иной форме. Если nsR3 определяет ось поворота, то определим преобразование R3->-R8 следующим образом: Лпг=нхг; является непрерывным и антисимметричным (см. уп- ражнение 10.1). Тогда - А~ (Л?т) = А~ (n X г) = n X (n X г); А~ линейно и симметрично. Сейчас мы можем записать 858
TV- (0) как сумму W~ (0) = Z + (1 — cos 6) + sin 0-^j* в *$(3, R). Но v^(3, R) — векторное пространство; сле- довательно, И7—(0) линейно. Ортогональность следует из свойств Л-, так как TV- (0)т = I + (1 _ cos 0) (Л1)Т + sin 0 (Л-)г = — I + (1 — cos 0) — sin 0Л-, ТУ- (0) ТУ- (0)Т =[/ + (!- cos 0) + sin 0Л-] * *[/ + (1 — cos 0) А~ — sin ОЛ-J = = Z + [2 (1 — cos 0) — sin2 0] A~- + (l-cos 0)41 = = I + (1 - cos 0)2 (л^ + Л1), по (см. упражнение 10.1) Следовательно, T7-(O)J7;?(0)T = Z и ТУ- (0) ортогонально. Доказательство того, что det ТУ- (0) = 1, оставляем в качестве упражнения. И Обратное утверждение также справедливо (см. зада- чу 12 упражнения 10.1); в частности, если TVs 50(3), то можно показать, что существуют единичный вектор иб R3 в угол 0 в пределах 0 С 0 < 2л такой, что W = W- (0). Следовательно, разумно определить повороты в R3 как группу 50(3). Определим некоторые подгруппы 50(3). Часто тре- буется повернуть объект вокруг одной из декартовых осей координат. Соответствующие матрицы могут быть полу- чены из общего вида W- (0). Например, чтобы осущест- вить поворот на угол 0 вокруг оси OZ, выберем n = к =• = (0, 0, 1), для которого ‘0 Л£= 1 L0 -1 О' о о о о л!. О О' -10, о oj О 359
так что 'cos 0 —sin 9 О" sin 0 .0 cos О О О 1 Г1 JJZ~((p)= 0 cos ф — sin <р , sin ф cos ф Р7?(х) = Wf(0) = О о О Аналогично матрицы cos % 0 sinx" О 1 О — sinx 0 cosx. соответствуют поворотам па углы ср и % вокруг осей ОХ и OY соответственно. Доказательство этого оставляем в качестве упражнения. Сейчас легко показать, что 50(3)—некоммутативная группа, так как в общем случае [ WT (<р), (Х)] 0, [ 1У? (ср), WY (6)] О, [W'-j(x). и^(0)]^о. Однако все подгруппы (IV-(0): О<0<2л], nsR3 коммутативны (см. упражнение 10.1). С практической точки зрения из этих результатов следует, что для обращения поворота надо просто транс- понировать матрицу, и если к некоторому геометрическо- му объекту применяют несколько поворотов, то порядок их применения важен. Следуя двумерному случаю, объединим 7(3) и 50(3) в виде множества 5(3) евклидовых преобразований R3. Элементы 5(3) имеют вид C/r = Wr + г0 для всех reR3, где W е 50(3) и r0 е IV. Правило композиции в 5(3) записывается следующим образом: (W2, r2)>(Wt, г1)-=(1У21У1, W, + r2); по отношению к нему 5(3) становится некоммутативной группой нелинейных преобразований R3. Отсюда выте- кают следствия, аналогичные двумерному случаю. В частности, подчеркнем, что 5 (3) не может выполнять- ся в R). Преобразование масштаба в R3 является линейным отображением вида S(x, у, z) = (X.r, р.у, оз), (х, у, z)e. IV, где X., ц, о > 0. Множество 5(3) всех преобразований 360
масштаба определяет коммутативную группу по отноше- нию к операции композиции. Остальные преобразования, рассматриваемые в этом параграфе, имеют цели и свойства, отличные от рассмот- ренных выше. Нашей целью является задача представ- ления трехмерного геометрического объекта на двумер- ном графическом терминале. С математической точки зрения мы ищем преобразования В3 в двумерные под- пространства, в которых получаются необходимые гра- фические представления нашего объекта. Напомним, что преобразование Р векторного пространства называют проекцией, если Р2= Р. Пусть объект описывается в декартовой системе коор- динат (х, у, z) и в этой системе экран графического дис- плея соответствует прямоугольному подмножеству {(х, у): 0 =£ х С а, О у Ь} на плоскости ху. Простейший метод получения образа объекта на экране — это применить преобразование Pit = г', где г = (х, у, z) и г'=(х, у, 0), к множеству геометрических данных. При условии что все значения х и у для множества данных находятся внутри экрана, получаем полную картину объекта. Если некоторые зна- чения х и(или) у находятся вне пределов экрана, то на- до вначале произвести подходящее преобразование мас- штаба. Р\ — линейная проекция, так как '1 о отр (х, у, z) = о 1 0 у [о 0 oj [z и Р\г = PjF для всех г е R3. Однако Pt1 не существу- ет, так как 1 0 О' det 0 1 0 =0. ООО Геометрически Pi можно получить следующим обра- зом. Начертим линию сегмента (линию проекции) из точки Q, определяющей положение вектора г, в точку Q', определяющую положение г', в плоскости ху так, чтобы линия отрезка QQ' была ортогональна плоскости ху (рис. 10.14). Тогда ясно, что г' = г + (—zk) = (x, у, 0)=Р1Г. Pi называют параллельной ортогональной проекцией R3. 361
В параллельной проекции не отражается глубина полу- чаемого образа; высота объекта появляется на экране такой же независимо от его расстояния до плоскости ху. Последнее преобразование, которое мы опишем, предна- значено для того, чтобы дать глубину образа или «пер- спективу». Вместо линий параллельной проекции постро- им линии проекции, выходящие из некоторой фиксиро- 362
ванной точки. Определим проекцию Рц — г', где фикси- рованной точкой является конец вектора zpk (как пока- зано на рис. 10.15) и, следовательно, точка Q отобража- ется в точку Q'. Рисунок 10.16 представляет вид рис. 10.15, если смотреть вдоль оси О к. Очевидно, что У’ _ у гР гр~г’ или же Аналогично получаем , х х = з—г-; 1 - z/zp явная форма для Ра имеет вид Л (*, У, «) = У' °)’ Предложение. Ра является нелинейной проек- цией R3. Доказательство. Р2Цх, у, z) = Р2(кх, Ку, Xz) = -—^-(Ха;, Хр, 0), 1 — Л2/Zp ХР2(х, у, z) = -f-Lz/z ^У’ °)Pz4X> У< z) для произвольного X. Следовательно, Рг нелинейно. Имеем Рг (ра (х, у, z)) = P2( . х , , , v j , o') = 2 1 — z/zp ’ 1 — z!zp J ~ —~i—» T——> o') = P2 (ж» У» z)’ 1—0^1—з/гр 1—z/zp J 2\ » »» /» и, таким образом, Рг — проекция в R3 по определению. Й Отсюда можно сделать заключение, что Ра нельзя включить в ^(3, R). В образе можно достигнуть хоро- шей глубины применением Ра, при условии что выбрана подходящая точка проекции. На рис. 10.17 показан вид прямоугольного параллелепипеда, полученный проекция- ми Pi и Ра- 363
2.3. Однородные координаты и линейное представле- ние. В этом разделе мы опишем технику представления преобразований R2 и R3, рассмотренных выше, при по- мощи элементов из Л? (3, R) и v<(4, R) соответственно. Рис. 10.17 Идея является общей и описывается в R”; мы ищем вложение некоторых специальных классов преобразова- ний R", не все из которых являются линейными, в ал- гебру матриц Л(п + 1; R). В § 1 было показано, что Qn является биекцией И” -► R" и может быть использовано для определения системы координат в Rn. Это означает, что если Т — преобразование R", то мы можем его выразить как пре- образование Нп. Другими словами, существует отобра- жение Т: Н"-> Н" такое, что диаграмма на рис. 10.18 коммутативна. Имеем Qn ° Т — Т » Qn, но отображение Q" имеет обратное. Поэтому мы можем записать Т ==(<2")-1 ° ° Т ° Qn. Если S — другое преобразование R", то = (<?") -1«S о Qn ° ((J”)"1»Т»Qn = S ° Т. Другими словами, мы можем соединить вместе диаграм- мы, не нарушая коммутативность, как это показано на рис. 10.19. Для некоторых преобразований Т простран- ства R" существует линейное преобразование Те Rn+1 * Rn+1 такое, что 7’[х] = [TVx] для всех х s R"+I. TL существует для всех преобразований, рассмотрен- ных в этой главе, и является требуемым представлением Т в Rn+1, так как если г е R”, то мы имеем Тг = (2"оГо(^")-1г = (2"оЗ’[г> 1] = ^"[7’ь(г, 1)]. Таким образом, преобразование Т получается путем при- менения TL к однородному представлению и последую- щим применением Qn для возврата к физическим коор- динатам. 364
Чтобы иметь уверенность в том, что все работает правильно, надо показать, что композиция 8 °Т соответ- ствует произведению матриц SLTL. Это „ легко сделать, так как и”---------*-я" 5»Г[х] = 5[Т1.х] = [51.7’1.х]. Графически это означает, что мы можем т т И”--------------► И"---------л" * т s * н"---- Рис. 10.18 Рис. 10.19 расширить коммутативную диаграмму, изображенную на рис. 10.19, до коммутативной диаграммы, изображенной на рис. 10.20. Отсюда следует, что, один раз определив матрицы Si, .... соответствующие преобразованиям Рис. 10.20 Г, S, ..., которые мы хотим осуществить, мы затем со- храняем их, опуская обозначения классов эквивалентно- сти и работаем с векторами, представляющими эти клас- сы. Произведения преобразований в R” получают путем умножения матриц из ^(п+ 1, R), примененных к векто- рам, представляющим классы. Все представители данно- го класса будут давать те же самые физические коорди- наты в соответствии с отображением . . ., Хп, Яп+1) ~ (®1» • • •» ®п+1 Обычно выбирают вектор (г, l)sRn+1, чтобы предста- вить Такой выбор, очевидно, всегда возможен. 865
В следующих примерах мы получим матрицы для преобразований, описанных в пп. 2.1, 2.2. Все матрицы вычисляются в стандартном базисе. Пример 2.1. Пусть Т: R”-* R” — линейное преоб- разование с матрицей Ат. Тогда матрица Л, будет равна А], „0... 0 0 1 так как если х = (r, 1)е R"+l, (<2”)'1в^<2пм то (Q^.Tt On ММтг, 1)] = Aj* О о...О 1JL1. On Для А^ -0...0 [А^ о 1 °] 1 • если это удобно, используют обозна- Раскладывая по последней строке, видим, что det |q j J = 0 тогда и только тогда, когда [Ат 0 ]-1 О 1 2.1 показывает, о ио 1., как применять линейные det Ат “ 0; Пример преобразования; например, применяя преобразования к 50(2), получаем представление — sin0 COS0 О О' О 1. — sm6 cos 6 ‘cos 6 sin О . О в v#(3, R) для матрицы COS0 sin0 Аналогично, если W е£О(3), то Wi имеет вид 01 1р 11 в v<(4, R) и w о]-1 1>т о’ О 11 =IО 1 . / 366
Пример 2.2. Пусть Г: R" -*• R" — перенос Тт = г + а для всех г е R", где »“(«!, .a,)sR" — фиксированный вектор. Тогда матрица 7’ь будет равна аГ I : “п ’ _о...о 1 она может быть записана в более краткой форме: I' а1. [о 1]’ Легко показать, что если х =(г, 1), то ? М - ОТ"1 • Т. Qn [х] - (<2П) • Тт - - ОТ"1 (г+а) - кг + а, 1)] - [[' ;] [;]]. / Пример 2.3. Аналогичными вычислениями можно показать, что преобразование (FK, а) «=£(2) можно вы- полнить, используя U “]eCL(3, R), где W е= 50(2) и ае R2, а преобразование (W, а)е£(3) можно выполнить, ис- пользуя ;]gGL(4,R), где W&S0(3) и ае R3. Обратные матрицы имеют вид ГЯТ al-1 Ги,т — W^al [о 1J “[о 1 J как в 2?(2), так и в Е(3). / Пример 2.4. Проекция Pz'. R3 -* R3, определяемая соотношением Т\ (Х1 У> я) = j _ (х< У, 0), может быть выполнена в М (4, R) как _ 1 0 0 0" 0 1 0 0 0 0 0 0 0 0 1 367
так как если х = (r, l)s R* и г = (х, у, z), то Л [х] = (Qn)-^PeQn «г. 1)1 = (<2П)~1-^ = * у 0У „ Г х v о 1 - г/г₽ ’ 1-г/з/ J |\1 - zlzj 1 - zlzj U’ 0" 0 О 1 [(г, у, 0,1 — z/zp)] == “1 О О о о 1 о о О О О -1/гр х У z 1 • / Упражнение 10.1. 1. Показать, что группы морфны. 2. Доказать, что если (R2, +) изо- (Т(2), то матрица поворота ТГ(0)е5О(2) может быть записа- на в экспоненциальной форме W (0) =» ехр{0/}. 3. Определить евклидово преобразование, отображаю- щее треугольник PQR, изображенный на рис. 10.21, а, в треугольник P'Q'R', изображенный на рис. 10.21, Ь. л Р=(2,2) Ц=(3,2) Рис. 10.21 4. Доказать, что 5(2)—коммутативная подгруппа ли- нейных преобразований R2. 5. Показать, что в общем случае элементы 5(2) не коммутируют с элементами 50(2), и построить рисунок, демонстрирующий: это. 6. Доказать, что единица нетривиальной подгруппы 5(2) не коммутирует с 50(2). 7. Используя преобразование 5 (я, р)х=(3г, 5у), изме- нить масштаб R2 так, чтобы точка (2, 2) оставалась фиксированной. Определить это преобразование. 368
8. ^Показать, что если n е R2 — единичный вектор, то nX((nXr)Xn)= nXr для всех геR3. 9. Пусть n е R3 и A a' R3-* R3 определено соотноше- нием A n г >= n X I для всех г е R3. Показать, что А п— линейное преобразование R3, и определить матрицу Лп— в стандартном базисе {i, j, k). 10. Используя результаты п. 9 этого упражнения и выражение W~ (0) через А~, получить в явном виде матричную форму поворота И7~(0) в R3. Показать, что det И7- (0) = 1. 11. В обозначениях п. 9 показать, что для всех г е R3 имеем Л-т = - Л-r, Л4-г = - Л-г, а а ’ а a ’ Л~г = Л-г, Ав-г = Л?-г, а a ’ n п ’ Л£+*г = A2-+kt a a для всех к е N; использовать эти результаты для дока- зательства равенства И7-(0) = ехр (0Л~). 12. а) Используя экспоненциальную форму W-(0), получить другое доказательство того, что ^-(0)(^-(O))T = 1. б) Если А е Jt(n, R), то можно показать, что (п 1 i=0 J используя этот факт, получить другое доказательство соотношения det JV-(0) = 1. 13. Доказать, что п является собственным вектором W- (0) при любом 0, 0 < 0 < 2л. Чему равно собствен- ное значение? Дать геометрическую интерпретацию это- му результату. 14. Вывести формулу для матриц поворота И>(ф). ИХ~(х). 15. Показать, что все подгруппы (JV-(0): 0^0<2л| изоморфны SO(21. 24 д. Кук, Г. Бейз 369
16. Пусть ae R! - фиксированный вектор и преоб- разование Т: R3 -* R3 определено как — при а«гч4=0, Тг = аг О в противном случае. а) Доказать, что Т — нелинейная проекция в R8. б) Доказать, что т((Г, i)]-[(r,a.r)] для всех г е R8 при г • а ч* 0. в) Определить матрицу Ле/(4, R) такую, что Т (х] = [Лх] для всех х е R4, где [х] ® Н3« § 3. Кривые и поверхности 3.1. Математическое представление. Кривые и по- верхности образуют основу большинства вспомогатель- ных устройств компьютера и графического математиче- ского обеспечения. Возможны различные математические описания одной и той же геометрической формы; неко- торые из них обсуждались и доступны с точки зрения приложений. Если I cz R — интервал, то через х" обозначим мно- жество всех отображений класса С1: с: I -> R”, причем с' ч4* 0 на I. На и" определим отношение ~ сле- дующим образом. Пусть Ci: Ii -* R", сз‘ It -*• R4; тогда Ci ~ ct, если существует отображение <p: h -* It из класса С1 такое, что ci = Cj • ф и ф' ч^ 0 на Zi. Предложение. Отношение ~ является отноше- нием эквивалентности на н". / Доказательство оставляем в качестве упражнения. Пусть <ё>п обозначает классы эквивалентности х"/~- Определение. Кривой в R™ называется элемент // Если с s и" и с: I -> R”, то I называют параметриче- ским пространством с, a t — параметром или координа- той с. График с (graph с) определяют как множество то- чек {с(£): t^I}. S70
Если [с] обозначает класс эквивалентности с в &я, то для всех а е [с] имеем graph Ci = graph с, так что разумнее говорить о графике кривой [с]. Обрат- ное неверно; мы можем иметь соотношение graph [щ] = = graph [сг], но при этом [cj ч* [с2]. Отношение эквива- лентности ~ группирует вместе элементы х", которые параметризуются «аналогичным» образом. Для вычислительных целей выберем элемент с е [с] и назовем кривую также с, хотя с точки зрения терми- нологии это неправильно. Это возможно при условии, что мы понимаем разницу и проявляем осторожность, когда это необходимо. График кривой в Ф2 является множест- вом точек, которые мы видим отображенными на графи- ческом терминале. Тогда — множество плоских кри- вых, а элементы <<F3 — множество пространственных кри- вых. 92 и 93 важны для приложений, однако, где легко провести рассуждения в более общем случае, будем это делать. В литературе по компьютерной графике употребляют термины «параметрический», «явный», «неявный» по от- ношению к различным методам определения кривых. Ес- ли (£1, ..., £„)—система координат в Rn и элемент се <= х” определен при помощи п функций (1<£Си), то такое задание кривой называют явным параметрическим описанием. Иногда выделяют два ти- па — «симметричный» и «несимметричный». Описание не- симметрично, если параметр является одной из коорди- нат, т. е. t = & для некоторого i, 1 =£ i О. Следователь- но, несимметричные описания имеют вид (£<, (Si(£<), ЫЫ, .... Ъ, М&))), в случае <<F2 и декартовых координат эта запись имеет знакомый вид (х, (х, у(х))), xs=[x0, Si], и кривую определяют, задавая явно у как функцию от х. С другой стороны, мы можем описать кривую в IV, определяя подходящую функцию /: Rn-*R. Для фикси- рованного а е R функция / определяет кривую с гра- фиком Г1 («)={(Si. .... S»): /(51. /(§1. •••. Sn) называют уравнением кривой (строго гово- ря, следовало бы назвать графиком кривой). В принципе 24* 371
уравнению такого типа можно придать явную форму, хотя в общем случае это сделать достаточно сложно. Го- ворят, что кривые, определяемые такими уравнениями, описаны неявно. Заметим, что не все отображения /: R" -* R будут за- давать кривые описанным выше способом. Например, по- стоянное отображение задает все R”. Далее функция /: R” -* R может для одних значений постоянной а зада- вать кривую, а для других — нет, как мы это увидим ниже. Плоская кривая, заданная неявно уравнением вида ах2 + by2 + сху + dx + еу + f = 0, называется квадратичной кривой (кривой второго по- рядка). Пусть сг. [a, b]-*R" и с2: [с, d]-*Rn, где а<Ь = •=c<d и щ(Ь) = Сз(Ь). Тогда щ V Сз определяют следую- щим образом: CJ на [а, Ь], С1 V С2 = гл 2 |с2 на [с, d] и называют объединением функций щ и сз. Для симмет- ричных описаний, если с Ь, сз может быть параметри- зовано таким образом, чтобы это условие выполнялось. Это означает, что мы можем построить сг е [с2] такое, что интервал для с2 начинается с Ь. Следовательно, при условии ci(b)= Сз(Ь) объединение щ V сз имеет смысл, но может не быть, строго говоря, кривой. Проблема со- стоит в том, что ci V сз может не принадлежать С1. Пример 3.1. Прямо- линейная кривая (пря- мая) может быть опреде- лена в R2 обычным обра- зом как ' (х0,у0} 0=arctg Рис. 10.22 у(х) = тх + с, Хо С х < Х[, где т — наклон прямой, а с — точка пересечения с осью Оу (рис. 10.22). В на- ших обозначениях это будет (х, (х, тх + с)), Хо<:Х^хс, т и с могут быть заданы непосредственно, однако более 372
естественно использовать концы го = (х0, у0) и и = = (xi, yi)t откуда получаем m = (yi — у0)/(хх — х0), c = yt — тхх. Проблема, возникающая в несимметричных описаниях, теперь очевидна. Эта форма не описывает вертикальную линию (когда xo = xi). Если вместо этого воспользовать- ся неявной формой (У — Уо} — х0) — (ух — у0) (х — хо) = 0, х0 < х < х,, то при Xi = хо получим уравнение вертикальной линии х = хо. Неявное уравнение прямой линии в общем слу- чае имеет вид ах + by + с = О, и вертикальные линии описываются этим уравнением при Ь — 0. Обычное симметричное описание может быть записа- но в векторной форме: (t, го + fu), ie [0, Hri — Toll ], где u — единичный вектор, u = (г! — to)/Hti — ro" - / Рассмотренные выше примеры приводят к общим на- блюдениям о природе кривых, определенных несиммет- ричным способом. Перед тем как обсуждать это, дадим несколько необходимых определений. Определение. Говорят, что плоская кривая (и, (х(и), у (и))), и^1 = [ил, ив] является: — однозначной, если для всех »>, u2s Z имеем x(ui) = x(u2)-> у(их)^у(и2)’, — многозначной, если предыдущее условие не вы- полнено; — замкнутой, если (х(иА), у(ил)) = (х(ив), у(ив)). И На рис. 10.23 проиллюстрированы все три случая. Очевидно, что замкнутая кривая является многозначной. Несимметричное описание (х, (х, у(х))), xo<x<xi может определять только однозначную кривую. Это по- тому, что у является функцией от х и, следовательно, Xi =х2=> y(xi) = y(x2). Вертикальная линия является многозначной кривой. Многие приложения в компьютерной графике требу- ют, чтобы замкнутые и многозначные кривые были вклю- 873
чены в описания. Единственный путь достижения этого — объединять кривые, как это описывалось ранее. При ис- пользовании несимметричных форм это не очень удобно Однозначная правая а Многозначная кривая Ъ Рис. 10.23 Замкнутая кривая с и редко применяется на практике. Симметричные описа- ния не имеют этого ограничения и, следовательно, явля- ются более удобными для таких приложений. Несиммет- ричные формы обычно исполь- зуют, когда требуется одно- ____ Значная кривая. 2 'ч\. 1 Пример 3.2. Окружность / \ является примером замкнутой I___________д____ кривой. Рассмотрим окружность Г Та в R2 3 радиуса а с центром в на- \ J чале координат (рис. 10.24). 3 * Чтобы записать окружность в несимметричной форме, необ- ходимы две кривые: yi(x) = Рис. 10.24 = («2 “ 1/2» —а а: С а в квадрантах 1 и 2 и г/а(^) = = — (а2 — х2)|/2, —а С я С а в квадрантах 3 и 4. Уравне- ние окружности в неявной форме имеет вид х2 + у2 — а2 = 0 или же в векторных обозначениях, Hill — а = 0, Это ~ ~—— — — - — - — — - - — -- - - быть записано в симметричной параметрической форме (0, a(cos0, sin0)), 0е[О, 2л[, {. (l^t2 2t \\ . п t, а ---------т , f е R, \. \1 + « 1-Н // Возможно бесконечное число других симметричных форм, 374 уравнение описывает всю окружность; оно может
выбор которых зависит от приложений. Для выполнений рисунков более предпочтительной является параметриза- ция с относительно постоянным изменением r(t). Мате- матически это означает, что величина Иг'(1)11 приблизи- тельно постоянна на 1. Несимметричное представление в большинстве случаев является неудобным, так как тре- буется проверка, на какой ветви кривой мы сейчас на- ходимся. И Примерами кривых второго порядка являются эллипс, гипербола и парабола. Если G — группа преобразований R”, тогда G преоб- разует 5F” естественным образом. Если се?1" — кривая с = (М(0), и g <= G, то определим кривую gc следующим образом: gc~(t, gr(t)), tel. Например, когда G = SO(2) и се'®’2, то график "РИ(0)с является графиком с, повернутым на угол 0 (рис. 10.25). Рис. 10.25 Уравнения обычно описывают кривые в «стандарт- ном» положении, когда ось ОХ является осью симмет- рии. Чтобы получить уравнение геометрически эквива- лентной кривой в некотором другом положении и ори- ентации в пространстве, надо просто применить подхо- дящий элемент группы Е(2) к уравнению. В качестве примера выведем уоавнение эллипса с графиком в, изо- браженным на рис. 10.26. В стандартном положении (изображенном штриховой кривой на рисунке) кривая записывается в виде с = (ф, («cosip, bsintp)), <ре[0, 2л1; 375
следовательно, кривая с графиком 8 имеет вид (17(0), d) с = (<р, (Р7(0), d) (a cos ф, b sin ср)) = *= (<р, (а cos ф cos 0 — b sin ф sin 0 + d\, a cos ф sin 0 + + b sin ф cos 0 + d2)), ф e [0, 2n[. Неявные уравнения для кривых в нестандартном поло- жении могут быть получены аналогично. Перед тем как перейти к дру- гой теме, упомянем один интерес- ный факт, проверка которого осу- ществляется довольно легко, ког- да кривые заданы неявными урав- нениями. Пусть /(х, у) = 0 — урав- нение плоской кривой, которая делит плоскость R2 на три части, тогда, если (х', у')—произволь- ная точка пространства., то знак Рис. 10.26 У) определяет область, в которой лежит (х', у’). Например, возьмем уравнение окружности у) = х2 + у2 — а2 = 0; тогда f(x', у/)>0=»-(г', у') лежит за пределами круга, f(x', у')а0=^(х', у') лежит на окружности, f(x', у’)< < 0 =► (а:', у') лежит внутри круга. Проверки такого типа используют в трехмерных слу- чаях в алгоритмах удаления невидимых линий с изобра- жений. Исследование поверхностей может быть проведе- но по аналогии с исследованием кривых. Методы пред- ставления имеют те же самые преимущества и недо- статки. Поверхности двумерны и имеют пространство пара- метров вида I1XI2, где Ii, h — R— интервалы. Парамет- рическое представление в общем случае имеет вид ((«, у), r(«, v)), (u, v)e/iXZ2. Неявное уравнение поверхности записывается в виде f(x, у, z)=0, а поверхностью второго порядка является поверхность, определяемая уравнением ах2 + by2 + cz2 + dxy -Ь exz + fyz + gx +hy + iz +j = 0, где a, b, c, d, e, ft g, h, it ] e R. 876
Пример 3.3. Пусть Z) = {r,: r(sR3, 0 < i < 2} —• множество линейно независимых векторов. Тогда г(и, у) = Го + u(rj — г0) + у(т2 — Го), (u, y)s R2, есть симметричное описание плоскости Р, проходящей через точки D (рис. 10.27). Если q = (r2 — ’r0)X(ri — r0), тогда n = q/Hqll — единичный вектор, ортогональный Р (называемый нормалью). Таким образом, г<=Р тогда и только тогда, когда (г — Го) • п = 0, или (х — Z0) «1 + (у — у0) п2 + (z — z0) п3 = 0. Это является неявным представлением Р. И Пример 3.4. Пусть S — сфера в R3 радиуса а с центром в начале координат. Очевидно, что г®S тогда и только тогда, когда llrll = а, или же х2 + у2 + z2 — а2 = 0. Сферические координаты дают симметричное представ- ление ((0, <р), а(зш0созф, sin0sinф, cos0)), (0, ф)е [0, л]Х]0, 2л[. № Пример 3.5. Пусть С —цилиндр радиуса а с осью симметрии OZ. В этом случае {х, у, z)^C тогда и толь- ко тогда, когда х2 + у2 —а2 = 0. Используя цилиндрические координаты, получаем сим- метричную форму ((ф> z)» (а cos ф, a sin ф, z)). 377
Обычно рассматривают «конечный» цилиндр (рис. 10.28). Для него уравнение будет иметь вид х2 + у2 — а2 = 0, zo z С Zi. И Относительно уравнений поверхностей, находящихся в нестандартном положении, можно сделать те же заме- чания, что и для случая кривых; надо лишь £(2) заме- нить на £(3). 3.2. Геометрия плоских кривых. Целью данного раз- дела является определение понятий длины, касательной и кривизны плоских кривых. На рис. 10.29 изображена плоская кривая с = (г, г (г)), t ефА, гв]. Р — произвольная точка на с, являющаяся концом век- тора r(f)> я Р' — конец вектора r(t + fit), 5/eR\{0}. Пусть 6r(t) обозначает вектор РР’. Тогда, очевидно, бг(£)= r(f + fif)— г (£), w*)i-|r(,+5?,-,lT есть длина отрезка РР'. Если разбить интервал [£А, <в] на много маленьких интервалов равной длины i, tj, tA = to < ti <...<£„ = = tB, то можно образовать сумму Sab — s ЦбпЦ, 1=1 где 6r< = r(Z()—которая равна длине ломаной ли- 878
нии вдоль с. Интуитивно ясно, что мы получаем аппро- ксимацию кривой S АВ между r(tA) и г(<в). Приближение будет тем лучше, чем больше число разбиений отрезка [tA, £в]. Эти интуитивные понятия приводят нас к опре- делению длины кривой SAB: п SAB= lim2 п-ьоо t=l С вычислительной точки зрения эта формула трудна для использования. Поэтому мы перепишем ее в .более удоб- ном виде: п п lim 2 II 6г{ || = lim 2 II г («{) — г || = n-*oo i=i n-*oo i=»i r^ + fiQ-r^) где 6t = (tB — tA)/n. Но это по определению интеграл следовательно, Если — то формула принимает вид Интуитивно ясно, что линия наклона (па рис. 10.29 это QQ') к кривой с является прямой, касающейся этой кривой и имеющей тот же самый наклон, что и с, в точ- ке Р. Пусть 0 — это угол между отрезком РР' и каса- тельной QQ’. Тогда при -* 0 следует ожидать, что 0 -► 0. Это означает, что направление 6r(i) или же 6r(i)/Sf стремится к направлению QQ' при Дру- гими словами, вектор dr dt, 6г Ьттт tt-»o 879
параллелен QQ'. Если t *д dt, тогда в принципе все кривые могут быть выражены в терминах параметра длины дуги (s, r(s)), «е[0, SAB]. Из определения длины дуги получаем о дифференцируя обе части по 5, имеем Другими словами, dr/ds — единичный вектор, параллель- ный касательной линии к r(s). Это вызывает следующее определение. Определение. Пусть (s, г(s)), sе[О, 5ЛВ],— кри- вая с длиной дуги в качестве параметра. Определим единичный вектор касательной T(s) к кривой в точке s как т (*) = £(«), а нормальный вектор N (s) к кривой как N(s)= W(n/2}T(s). И Базис (У, 7V) образует правостороннюю систему коор- динат в R2. Если кривая не параметризуется в терминах длины дуги, то выражение для Т (см. упражнение 10.2) будет иметь вид Т(н) = если если ?>° du £-<0, du Эти формулы неявно предполагают условия на s. В действительности знак Т не образует класса эквива- лентности, инвариантного на <₽’2, а является функцией выбранного параметрического представления. Даже если параметризация осуществлена с помощью параметра — длины дуги, она зависит от того, с какого конца мы на- 880
чинаем измерять s. Касательное пространство к точке кривой является классом, инвариантным на <₽'2, где ка- сательное пространство к [с] в точке Р имеет вид {аТ: а s R, где Т — касательный вектор в Р для неко- торого с s [с]}. Из упражнений к § 4 гл. 5 следует, что d^lds ортого- нален к Т; следовательно, существует функция и: [О, Sab] -* R такая, что = % (s) N (s); х (s) назы- вают кривизной кривой r(s), а 1/х(а) — радиусом кри- визны r(s). Упражнение 10.2. 1. Получить в R2 явное уравнение прямой, проходя- щей через точки (—1, 3) и (2, —1). Определить еди- ничный вектор, параллельный этой прямой, и написать уравнение в параметрической векторной форме. ~ 2. Определить касательный и нормальный векторы Т и N и кривизну х следующих плоских кривых: а) окружрости — (0, a(cosOi + sinO/)), ОС9<2л; б) эллипса — (ф, (асозфг + b вшф/)), 0СфС2л; в) параболы — (t, (at2i + 2atj)), — oo<t<oo, где a > 0 и b > 0 действительные. 3. Плоская кривая определена формулой (u, (a cosui + Ь(1 — е-и/2)/)), 0 С и < <», где a > 0 и b > 0 действительные. ау Показать, что касательный вектор к кривой зада- * - т “2a sin u~l + be~u/2j ется формулой Т(и)- ц. б) Начертить кривую в интервале 0 С и < 2л. в) Найти нормаль к кривой. 4. Начертить кривую (u, (acos и, b sin и, Ьи)), —оо < и < о®, и найти выражение для касательного век- тора Т(и). 5. Пусть (х, (х, у(х))), x0^x^xi, описывает пло- скую кривую. Показать, что касательный вектор Т(х) может быть записан как гг (i. dyldx) w d + (^/d№’ 881
и, следовательно, кривизна х(х) в точке х имеет вид d2y/dx (1 + (dy/dx)2)3/2 6. Получить формулы, аналогичные полученным в п. 5, для симметричного представления (и, (x(u), у(и))), Uo < U < И]. 7. Найти симметричное параметрическое уравнение плоскости Р, проходящей через точки (0, 1, 0), (3, —2, 0) и (1, 3, 4) в R3. Показать, что нормальный вектор будет параллелен (—4, —4, 3), и использовать этот факт для вывода неявного уравнения для Р. 8. Поверхностью вращения называется поверхность, являющаяся результатом вращения плоской кривой во- круг некоторой фиксированной оси в R3. а) Показать, что если плоская кривая (и, (p(u)i + Q'(u)k)), делает поворот па угол 2л вокруг оси OZ, то соответст- вующая поверхность вращения описывается уравнением ((и, ф)» (p(^)cos<pi+ p(ft)sin<pj + g(u)k)), где ил < и < ив, 0 < ф < 2л. б) Использовать результаты задачи 8, а) для получе- ния симметричных параметрических представлений сле- дующих поверхностей: — цилиндра; — конуса; — тора. 9. Цилиндр Ci длины 21 определяется уравнением х1 + z2 = Ь2, — I < у < I, и пересекается с цилиндром Сг длины h, который определяется уравнением у2 + (z — а)2= = а8, 0 < х где 0 < а < b, h> Ъ. Используя параметрические координаты {(х, 0): 0 < х < h, 0 < 0 < 2л) на Сг, показать, что кривая, являющаяся пересечением Ci и Cj, может быть записана как (0, г(0)), 0<8<2л, где т(0) = ((&2 — (а + a sin 0)2)1/2, acos0, a + asin0). Показать также, что единичный касательный вектор к кривой в точке 0 = 0 задается формулой l(-aa,0,a(&2-a2)1/2).
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ Автомат конечный 320 Автоморфизм 136 Алгебра Булева 176 — линейная 162 — регулярная 336 Алгебраическая структура 134 Алфавит 138, 257 Атрибут 56 База данных 54 Базис 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 Комбинация линейная 155 Композиция 159 Конкатенация 138 Кривизна 381 Логарифм натуральный 104 Маршрут 224 Матрица 195 — булева 201 — смежности 2<Ч — транспонироь иная 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 — коммутативная 110 — монадическая 106 — над множеством 106 Определитель 212 Основание индукции 81 Отношение антисимметричное 43 — бинарное 36 — обратное 39 — порядка 51 • — полное 51 • — пустое 37 — рефлексивное 43 — симметричное 43 — составное 62 883
Отношение тождественное 37 — транзитивное 43 — универсальное 37 — еквивалентности 47 — п-мествое 36 Отображение 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 Терминал 265 Трансформация 63 Указатель 134 Файл нормированный 54 Функционал 89 Функция 68 — биективная 70 — инъективная 70 — сюръективная 69 — експоиенциальиая 104 Характеристика 148 Цикл 85, 224 — длины п 88 Число рациональное 49 — связности 227 Шаг индукции 81 Эквивалентность множеств 25 Элемент идемпотентный 111 — обратный 111, 139 Эндоморфизм 136 Ядро 170 Научное издание КУК Д., БЕЙЗ Г, КОМПЬЮТЕРНАЯ МАТЕМАТИКА Зуведующий редакцией Е. Ю. Хода» Редакторы: Е. В. Ильченко, А. Б. Угольников Художественный редактор Т. Н. Кольченко Технический редактор С. Я. Шкляр Корректоры: М. А. Смирнов, И. Я. Кришталъ ИБ М 32537 Сдано в набор 02.03.89. Подписано к печати 20.04.90. Формат 84X108/32. Бумага квижно-журиальная. Гарнитура обыкновенная. Печать высокая, Усл. печ. л. 20,16. Усл. кр.-отт. 20,16. Уч.-изд. л. 19,84. Тираж 23 000 екз, Заказ Л5 604. Цена 1 р. 70 к. Ордена Трудового Красного Знамени издательство «Наука» Главная редакция физико-математической литературы 117071 Москва В-71, Ленинский проспект, 15 4-я типография издательства «Наука» 630077 Новосибирск, 77, Станиславского, 25