Text
                    ОГЛАВЛЕНИЕ
Предислови е
I::
Часть первая
ЭЛЕМЕНТЫ ОБЩЕЙ АЛГЕБРЫ
Глава 1. Множества
§ 1.1. Понятие множества. Подмножества. Включения 11
1.2. Основные операции над множествами 15
1.3. Мощность множеств. Счетные множества 22
§ 1.4. Континуальные множества 27
§ 1.5. Кардинальные числа 31
Глава 2. Отношения. Структуры
§ 2.1. Основные определения 36
§ 2.2. Операции над отношениями 41
§ 2.3. Функциональные отношения. Отображения 46
§ 2-4. Отношения эквивалентности и порядка 52
§ 2.5. Вполне упорядоченные множества. Структуры 58
Глава 3. Универсальные алгебры
§ 3.1. Понятия моделей и универсальных алгебр 67
§ 3.2. Подалгебры. Системы образующих 76
§ 3.3. Структура подалгебр универсальной алгебры 81
§ 3.4. Функции алгебры логики 87
§ 3.5. Изолированные множества. Конгруэнции 94
§ 3.6. Полугруппы. Многоосновные алгебры 101
Часть вторая
ЭЛЕМЕНТЫ ТЕОРИИ ПРОГРАММИРОВАНИЯ
Глава 4. Системы алгоритмических алгебр
§ 4.1. Понятие системы алгоритмических алгебр ИЗ
§ 4.2. Тождественные соотношения в системе алгоритмических ал-
алгебр 125
§ 4.3. Полугруппы периодически определенных преобразований . . 141
§ 4.4. Модифицированные алгебры Поста 150
§ 4.5. Реализация регулярных схем адресных программ в однород-
однородных структурах 163


ОГЛАВЛЕНИЕ Предислови е Часть первая ЭЛЕМЕНТЫ ОВЩЕЙ АЛГЕБРЫ Глава 1. Множества § 1.1. Понятие множества. Подмножества. Включения 11 § 1.2. Основные операции над множествами 15 § 1.3. Мощность множеств. Счетные множества 22 § 1.4. Континуальные множества 27 § 1.5. Кардинальные числа 31 Глава 2. Отношения. Структуры § 2.1. Основные определения 36 § 2.2. Операции над отношениями 41 § 2.3. Функциональные отношения. Отображения 46 § 2-4. Отношения эквивалентности и порядка 52 § 2.5. Вполне упорядоченные множества. Структуры 58 Глава 3. Универсальные алгебры § 3.1. Понятия моделей и универсальных алгебр 67 § 3.2. Подалгебры. Системы образующих 76 § 3.3. Структура подалгебр универсальной алгебры 81 § 3.4. Функции алгебры логики 87 § 3.5. Изолированные множества. Конгруэнции 94 § 3.6. Полугруппы. Многоосновные алгебры 101 Часть вторая ЭЛЕМЕНТЫ ТЕОРИИ ПРОГРАММИРОВАНИЯ Глава 4. Системы алгоритмических алгебр § 4.1. Понятие системы алгоритмических алгебр ИЗ § 4.2. Тождественные соотношения в системе алгоритмических ал- алгебр 125 § 4.3. Полугруппы периодически определенных преобразований . . 141 § 4.4. Модифицированные алгебры Поста 150 § 4.5. Реализация регулярных схем адресных программ в однород- однородных структурах 163
Глава 5. Формальные языки и грамматики - § 5.1. Представление языков с помощью грамматик ¦ 172 § 5.2. Система составляющих. вс-Грамматпки 178 § 5.3. Контекстно-свободные языки 187 § 5.4. Линейные и автоматные грамматики 198 § 5.5. Алгебры контекстно-свободных языков 210 Глава 6. Параметрические системы программирования § 6.1. Автоматы над внутренней памятью 222 § 6.2. Синтез магазинных автоматов 234 § 6.3. Методы синтаксического анализа в системах программирова- программирования 246 § 6.4. Параметрические грамматики ппверспо-рекурсивного п ре- рекурсивного типа 265 § 6.5. Метаязык СМ-грамматпк и проблемы трансляции 282 § 6.6. СМ-формалпзмы н нх применение к системам программиро- программирования 29 i § 6.7. Многоосновпые алгебры и языки программирования .... 302 Литература 306 Пред.\:етпый указатель 313 Указатель теорем и лемм 319 ПРЕДИСЛОВИЕ В связи с бурным ростом вычислительной техники и постоянным расти; рением сферы применения ЭВМ в современной кибернетике возникают и интенсивно развиваются все повые теоретические направления. В частности, оформляется в науку такая, вначале главным образом эмпирическая область знаний, как программирование, в задачу которого входит. разработка средств'общения человека с ЭВМ. Теория программирования основывается на таких важных разделах дискретной математики, как теория алгоритмов, с.хпматология, теория автоматов и теория формальных языков. Практичес- Практические приложения ее состоят в решении прежде всего задач, связанных с разработкой систем математического обеспечения ЭВМ и проектированием структур самих машин. При решении задач автоматизации программиро- программирования и проектирования ЭВМ, в частности, возникает необходимость в при- применении идей и методов общей алгебры — одного из основополагающих и глубоко разработанных направлений математики. Этим обусловливается необходимость ознакомления специалистов по программированию и кон- конструированию систем математического обеспечения ЭВМ с основпыми алгебраическими понятиями п результатами. Монография представляет собой введение в теорию программирования с уклоном применения в ней понятий и методов ущ!версальпых алгебр. Первая часть посвящепа основным понятиям сСщей алгебры. Рассматрива- Рассматриваются интуитивная теория множеств, основные понятия теории отношений п. универсальных алгебр. Значительное внимание уделено структурам, в .част- .частности структурам подалгебр универсальных алгебр, с целью установления критериев полноты'—необходимых н достаточных условий, при которых произвольная система элементов порождает донную алгебру. Понятия и результаты, изложенные в первой части, . подбирались с учетом прпмепепия их во второй части книги. Так, аппарат теории .мно- .множеств и отношений применяется в свягн с изучепием проблемы тождест- тождественных преобразований в системах алгоритмических алгебр (гл. 4, § 4.1, 4.2), классификацией формальных языков (гл. 5), разработке й методов синтаксического анализа для параметрических систем программирования (гл. 6). Свойства структуры подалгебр универсальных алгебр, рассмотрен- рассмотренные в гл. 3, применяются при изучении проблемы полноты для модифици- модифицированных алгебр Поста (гл. 4, § 4.3, 4.4) н алгебр контекстно-свободных языков (гл. 5, § 5.5). С аппаратом многоосповны.х алгебр (гл. 3, § 3.6) свя- связаны концепция алгоритмических алгебр (гл. 4, § 4.1) н методы формали- формализации енптакенса п семантики языков программирования (гл. О, § 6.7). В первой частп использованы результаты, изложенные в работах [1,6, 8 — 10, 24, 25, 36, 49, 52, 54, 60, 61,'64, 66, 67, 70, 71, 73, 74, 77, 78, 86, 103, 108, 111—115, 118, 119, 127, 128, 133, 134, 139, 155, 156).
Вторая часть посвящена элементам теории программирования. В гл. 4 рассматривается аппарат алгоритмических алгебр, предложенный В. М. Глуш- ковым [26] для решения проблем прикладной теории алгоритмов. Особое внимание уделено задачам, возникающим при автоматизации проектирования ЭВМ н программирования. Установлена связь аппарата алгоритмических алгебр с концепцией структурного программирования [41], которое пред- представляет собой комплекс технологических средств, ориентированных на конструирование больших алгоритмов и программ. Показано, что алгорит- алгоритмические алгебры можно рассматривать в качестве теории схем структури- структурированных алгоритмов и программ и применять при разработке схемного и программного математического обеспечения для современных вычисли- вычислительных систем, в частности при решении проблемы формализации семан- семантики языков программирования (гл. 6, § 6.7). В гл. 4 использованы резуль- результаты, изложенные в работах [8, 18, 23—27, 31—37, 41, 43—50, 53—63, 65, 09, 72, 75—78, 80—82, 84, 91, 92, 113—117, 120—122, 128, 131, 133, 134, 136, 139, 145, 146, 148, 155, 156, 158]. Пятая глава является введением в теорию формальных языков. Рас- Рассматриваются вопросы классификации порождающих грамматик, формы их представлений, алгебраические свойства операций над языками. Изло- Изложенные ре!ультаты применяются в гл. 6 при решении проблем анализа и синтеза автоматных моделей языков (§ 6.1, 6.2), создании формализмов, ориентированных иа эффективное решение задач конструирования многих пажных системных процессов (§ 6.3—6.6), развитии алгебраических методов описания синтаксиса и семантики языков программирования (§ 6.7). В гл. 5 использованы результаты, изложенные в работах [3, 7, 17—25, 36, 37, 48, 70, 80, 85, 94, 95, 99, 100, 109, 110, 118, 128, 137, 138, 146]. Методологии построения современных языков и систем нрограммпрова- ния посвящена гл. 6. В настоящем издашш эта глава существенно пере- переработана. В ней отражены некоторые новые результаты. Для этого, в связи с ограниченностью объема книги, пришлось опустить часть материала, изложенного в первом издании. Так, в § 6.1 рассмотрена концепция авто- автоматов Инд внутренней памятью [37], обобщающая известные автоматные структуры (магазинные и БС-автоматы, счетчпковые машины и др.), при- применяемые в системном программировании (в первом издании этот параграф посвящен историческому очерку развития идей программирования и СССР н зп рубежом). В связи с введением автоматов над внутренней памятью и определенной мере изменены и последующие параграфы главы, в част- частности рассмотрены стратегия двустороннего синтаксического анализа и ее обобщение в связи с конструированием параллельных систем программи- программирования для многопроцессорных вычислительных комплексов, методы фор- формализации синтаксиса и семантики языков программирования с привлече- привлечением аппарата многоосповных алгебр, Методы конструирования парамет- параметрических систем программирования применялись при разработке програм- программного обеспечения некоторых современных вычислительных систем как специализированного, так и универсального назначения. Дальнейшее раз- питие этих методов будет способствовать созданию высокопроизводительных комплексов ЭВМ последующих поколений. В гл. 6 использованы резуль- результаты, изложенные в работах [2—5,11—16, 18—21, 28—30, 36—42, 48, 51, 52, 62, 68, 70, 71, 79, 83, 85, 87—90, 93, 95—98, 101—107, 123—126. 128— 130, 132, 135, 140—147, 149—154, 157, 159, 160]. В настоящее ндаиче монографии внесены поправки, вызванные допу- допущенными в первом издании неточностями, опечатками или недосмотрами. Авторы
ГЛАВА 1 МНОЖЕСТВА § 1.1. Понятие множества. Подмножества. Включения. Потребности интенсивно развивающегося анализа, особенно теории функций действительного переменного, обусловили в конце XIX в. создание теории множеств — фундаментального раздела современ- современной математики. В окружающей нас реальной действительности существуют как отдельные объекты, так и их совокупности, или множества. Например, можно говорить об отдельной почтовой марке и об их коллекции, о произведении Л. Н. Толстого «Война и мир» и о полном собрании сочинений этого писателя, о числе 5 и о совокупности всех натуральных чисел, о некоторой ячейке памяти и о массиве ячеек запоминающего устройства ЭВМ, о программе; написанной в некотором алгоритмическом языке, и о самом языке как множестве таких программ. Основоположник теории множеств известный немецкий мате- математик Г. Кантор понимал множество как объединение в одно целое объектов, хорошо различаемых нашей интуицией или мыслью. Термины «множество», «совокупность», «коллекция», «собрание», «массив», «объединение» вполне равноправны. Далее в качестве основного используется лишь один из них — мно- множество, причем в отличие от аксиоматических теоретико-мно- теоретико-множественных построений (см., например, [9]) рассматривается ин- интуитивная теория множеств. Понятию множества нельзя дать строгого математического определения, так как оно настолько широко и общо, что не входит как часть ни в какое другое более общее понятие. Поэтому множество относится к неопределяемым понятиям науки. Элементы множества могут быть самого разнообразного вида, любой природы. Однако нас далее будут интересовать множества, образованные из абстрактных математических объектов, таких, как числа, функции, векторы, цепочки символов (слова) в неко- некотором алфавите. Объекты плп элементы, составляющие множество,
12 Глава 1. Множества будем обозначать строчными латинскими буквами: а, Ъ, с, ... , х, у, . . . , а множества — прописными: А, В, С, ... , М, N, ... Как обычно, обозначения элементов или множеств могут быть с индексами или без них. Следует различать общий элемент х множества А, т. е. произвольный элемент, принадлежащий дан- данному множеству, и конкретные элементы а, Ь, с, ... , каждый из которых отличен от остальных. Символ е обозначает при- принадлежность элемента х множеству А. Так, выражение х^А читается «элемент х принадлежит множеству А». Если а; не при- принадлежит А, будем писать х^А. Элементы, принадлежащие не- некоторому множеству А, условимся заключать в фигурные скобки: А = {а, Ь, с, . . .} означает, что а, Ь, с, ... — суть элементы мно- множества А. Множество, состоящее из конечного числа элементов, называется конечным; в противном случае говорят о бесконечном множестве. Например, конечны множестю всех кресел в зритель- зрительно;! зале кинотеатра, множество всех абонентов городской теле- телефонной станции, множество всех четных положительных чисел, меньших 9 (А = B, 4, 6, 8)), множество всевозможных пар из элементов а и Ъ (В = {(а, а), (b,b), (a, b), (b, а))). Примерами бесконеч- бесконечных множеств являются множество всех натуральных чисел (N={1,2,3, ...}), множество всех четных натуральных чисел (^о = [2> 4, 6, . . .}), множество точек на окружности, множество слов произвольной длины в алфавите из двух символов: 0; 1 (под длиной слова в некотором алфавите понимается число сим- символов из этого алфавита, входящих в данное слово). Каковы же способы задания множеств? Приведенные примеры показывают, что множество может быть задано перечислением всех его элементов. Этот способ при- пригоден для задания конечных множеств, состоящих из сравни- сравнительно небольшого числа легко различимых элементов. Например, множество всех книг в библиотеке задается библиотечным ката- каталогом, множество номеров телефонных абонентов — телефонным справочником, множество ячеек оперативной памяти ЭВМ — сово- совокупностью адресов этих ячеек. Однако певошожно перечислить множество вс«х птиц в лесу или множество всех песчинок на пляже. Гораздо ча)це множества задаются посредством указа- указания характеристического свойства — признака, которому удов- удовлетворяют этемепты этого множества и только они. Это наиболее общий сиосэ'э задания множеств. Таким способом задаются беско- бесконечные множества: множество натуральных чпсеч, множество всех действительных чисел в интервале [0, 1], множество Есевоз- можных последовательностей конечной длины, состоящих из букв некоторого алфавита, множество всех программ, которые можно записать на определенном языке программирования, и др. Множества могут быть заданы также с помощью элементов уже известных множеств в результате применения к ним неко- § 1.1. Понятие множества. Подмножества. Включения 13 первая компо- . . , ah}, а вто- торого правила (алгоритма) или с помощью некоторых операций над известными множествами. Например, множество целых чисел, заданных в десятичной системе счисления, сумма цифр которых делится на 5, множество всех прямых вида у = х -f с, где с — произвольный элемент из множества Есех действительных чисел, множество псех слов произвольной длины, состоящих из элемен- элементов (букв) множества (алфавита) 91 = {аи аг, ... , ah), множество С = B, 4, 6} всех элементов, принадлежащих одновременно мно- множеству А = {1, 2, ... , 7) и множеству 5= {2, 4, 6, 8, 10). При этом описания вспомогательных множеств всегда должны содер- содержаться в описании задаваемого множества. Как правило, исполь- используется следующая форма записи: No = {2п \ п = 1, 2, ...{ — мно- множество всех четных натуральных чисел, Nx = [2п — 11 п = 1, 2, ...{ — множество всех нечетных натуральных чисел, р = (х, и) xd la,, ... , ah}\ v 'Jl у,,1' ' ,k — множество всех пар, г/t (о,, . . . , uh\) цента которых принадлежит множеству А = {alt рая — множеству В = [Ьх, ... , bh). В приведенных примерах описания вспомогательных множеств содержатся после черты. В .математических рассуждениях часто приходится рассмат- рассматривать так называемые одноэлементные множества, т. е. множест- множества, состоящие лишь из одного элемента (например, {а}), а также пустое множество, не содержащее элементов вообще, 0. Необ- Необходимость в этих понятиях вызвана тем, что, говоря о множестве, мы иногда зтранее не знаем, содержит ли оно какие-нибудь элементы, содержит ли оно один или более чем один элемент. Например, неизвестно, существуют ли целые не равные нулю числа х, у, z такие, что хп + уп = zn при п > 2, или множество таких чисел пусто (великая теорема Ферма). В то же время в евклидовой геометрии пусто множество треугольников, сумма углов которых не равна 180°, а множество действительных кор- корней уравнения х3 — хг -f- х— 1 = 0 одноэлементно. Множества А и В называются равными, А = В, если они состоят из одних и тех же элементов. Если все элементы мно- множества А являются также элементами множества В, говорят, что /1 _ подмножество В, или А включается в В. Включение мно- множества А в множество В обозначается следующим образом: с:, с, з), id. Так, выражение 4сД читается «множество А вклю- включается в множество В». Такой же смысл имеет запись В^А. Если A S1 В, причем А Ф В, то употребляется запись A czB. Знак cz (zd), в отличие от знака с= (р), называется знаком строгого включения. Очевидно, для любого множества л выполняются вклю- включения 0 с=л, А<=А (рефлексивность). Множества А и 0 называются несобственными подмножест- подмножествами множества .4, а все остальные подмножества л — его собственными подмножествами. Например, множество пешек
Глава 1. Множества является собственным подмножеством множества всех шахматных фигур, множество натуральных чисел — подмножеством множества всех целых чисел, а последнее, в свою очередь, — подмножеством множества всех рациональных чисел. Если А^?В ж В^А, то А = В (антисимметричность). Кроме того, если А <^В и В с С, то А^С (транзитивность). Для удобства изложения далее используются следующие обо- обозначения: ди д2, ... , дп{А — каждый элемент д{ принадлежит множеству A; Av Аг, ... , Ап с: А — каждое множество At явля- является подмножеством множества A (i = 1, 2, ... , п). Обычно множества, встречающиеся в рассуждениях той или иной математической теории, являются подмножествами некото- некоторого фиксированного множества Е, называемого универсальным для данной теории. Как правило, множество Е представляется здесь в неявной форме. Например, в некоторых разделах элемен- элементарной математики универсальными являются множество всех точек пространства (в геометрии), множество всех неотрицатель- пых чисел (в арифметике), множество всех комплексных чисел и алгебраических функций (в алгебре). Каждому подмножеству А с Е можно сопоставить характеристическую функцию <вА такую, что <?А(х) = 0 для всякого х б А и wA (х) = 1, если х^ А. Харак- Характеристической функции соответствует определенное свойство эле- элементов, принадлежащих множеству А, которое также называется характеристическим. Если характеристические свойства выделяют в универсальном множестве Е одно и то же подмножество, то они называются эквивалентными относительно Е. Выберем, на- например, в качестве универсального множество всех треугольников евклидовой плоскости. Тогда характеристическое свойство «быть треугольником, у которого углы при оснований равны», опре- определяет подмножество всех равнобедренных треугольников. Экви- Эквивалентным данному свойству является свойство «быть треуголь- треугольником, у которого совпадают высота и медиана, проведенные из одной вершины». В то же время свойство «быть равносторонним треугольником с углом, отлпчным от 60°», очевидно, определяет множество 0. В качестве элементов множества .могут использоваться другие множества, тогда говорят о совокупности (семействе) множеств {A~\ail}, где Аг — некоторые множества, а / — .множество ин- индексов, которое может быть конечным плп бесконечным. Так, можно рассматривать множество {An\?nN}, где Ап — .множество всех слов в алфавите 31- длины, не превышающей п, пли мно- множество {Pn\niN}, где Рп — множество всех многочленов аохк-±- -г a1xh~1 — ••• -f- ah_lx -f- ah с рациональными коэффициентами О; (i = 0,1,2 к) при Л < ?г. В обоих случаях множеством индексов является множество Лг всех натуральных чисел (/ = Лг), § 1.2. Основные операции над множествами 15 Рассмотрим множество Ш (А) ¦ всех подмножеств некоторого множества А, включая- и его несобственные подмножества. На- Например, если А= {а, Ъ, с}, то Ж {А) = {{0}, {а}, {Ь}, {с}, {а, Ь), {а, с), {Ь, с), {а,Ь,с}}. Пусть В = {av a2, ... , ап) — некоторое конечное множество. Каждому подмножеству 5'<=5 сопоставим двоичный набор а (В1) = (аи а2, ... , а„) такой, что { 0, если а; 6 5', а* = \ 1, если а^В' (i = 1, 2, ... , п). Так, несобственным подмножествам множества В соответствуют наборы 5 @) = A, 1, .... 1) и 5 (В) = @, 0, ... , 0), а подмно- подмножеству В' = (а2, а3, аъ] - набор а (В) = A, 0, 0, 1, 0, 1, .. . , 1). Таким образом, для того чтобы подсчитать число элементов, вхо- входящих в множество ЗК (В), достаточно выяснить число I (п) дво- двоичных п-мерных наборов. Рассуждая по индукции, замечаем, что I A) = 21 = 2. Далее, допустим, что I (п — 1) = 2п~\ Но каждому (п — 1)-мерному набору (а1( а2, ... , an_j) соответствуют и-мерные двоичные наборы (ах, а2, ... , ьп-ъ 0) и (ах, а2, ... , an_lt 1). Следовательно, число элементов 1(п), входящих в множество Ш (В), равно I (п - 1) • 2 = 2"-1.- 2 = 2". § 1.2. Основные операции над множествами Как отмечалось, множества могут порождаться в результате при- применения некоторых операций к уже известным множествам. Рас- Рассмотрим так называемые булевы операции над множествами: объединение, пересечение и дополнение. Объединением множеств А и В {А [} В) называется множество всех элементов, каждый из которых принадлежит хотя бы одному из множеств А или В. При этом элементы, принадлежащие как множеству А, так и множеству В, входят в объединение А {] В только один раз. Например, [а, Ь, с, d, е] = {a, b, c)[\ {b, с, d, e}; Лг = iV0U A\ (No, N} — множество четных и нечетных натуральных чисел соответственно). Пересечением множеств А и В (А[}В) называется множество, состоящее из нсех элементов, одновременно принадлежащих как множеству А, так и множеству В. Например, {Ь, с] = {а, Ь, с] {] []{Ь, с, d, е}; К = P[)R {К, Р, R — множества квадратов, прямо- прямоугольников и ромбов соответственно). Множества А и В называются непересекающимися, если 4 р5= 0; в противном случае множества А и В пересекаются. Не пересекаются, например, множества всех четных и нечетных чисел, множества всех прямоугольных и равносторонних треу- треугольников в евклидовом пространстве. -
16 Глава 1. Множества § 1.2. Основные операции над множествами 17 Операции объединения и пересечения множеств могут быть распространены на случай совокупности множеств {Аа | а е I). Тогда объединение U Ал состоит из всех элементов, которые принадлежат хотя бы одному из множеств Аа, а пересечение f] Aa — из всех элементов, одновременно принадлежащих каж- каждому из множеств Аа. Дополнением множества А^Е к универсальному множеству Е называется множество А всех элементов х^Е таких, что х g A. Дополнение часто также обозначают1 Се (А) или С (А). Напри- Например, Nl = Cn (No) (N, No, JVj — определенные выше множества натуральных чисел), Т°г — Ст (Т1?) (Тг, Т°г, Т\ — множества соот- соответственно всех равнобедренных треугольников, всех равносторон- равносторонних треугольников, всех равнобедренных треугольников; у которых углы при основании отличны от угла при вершине). Пусть срд, »в — характеристические свойства множеств А а В соответственно. Тогда срд. , в = fA\/fB, Уапв^ Уа^'^в' ^а = ~^'?а~~ характеристические свойства соответственно объединения А [} В, пересечения А[\В, дополнения А, где »д\/»в—логическое сло- сложение (дизъюнкция) свойств срд, срв (т. е. характеристическое свойство истинно тогда и только тогда, когда хотя бы одно из свойств срд, срв истинно), ®А Л <рв — логическое произведение (конъюнкция) свойств срд, tpB (т. е. характеристическое свойство истинно тогда и только тогда, когда оба свойства срд, срв истинны), ~"]<рА — отрицание свойства »д (т. е. характеристическое свойство истинно, когда оА ложно, и ложно, когда срд истинноJ. Для иллюстрации булевых операций над множествами часто используются диаграммы Венна (рис. 1, квадрат означает универ- универсальное множество Е, а заштрихованные области — результат применения операций к множествам А а В). Назовем наиболее важные свойства булевых операций [} > П> —• коммутативность — ассоциативность — 1 С — начальная буква французского слона complement — дополнение. 2 Операции над высказываниями V, д,  впервые были рассмотрены известным английским математиком Дж. Булем. Более подробно о логи- яееких операциях алгебры высказываний см. в работе [86]. (свойство ассоциативности позволяет использовать бесскобочную запись А^ U Аг U ... U An, A1 f] A2 f] ... П Ап)\ дистрибутивность пересечения относительно объединения — дистрибутивность объединения относительно пересечения идемпотентность — 1 { АС\А = А 4J 9av?b Рис. 1. (свойство идемпотентности позволяет записывать формулы, содер- содержащие знаки U , ("|, без коэффициентов и показателей); правила поглощения — A U {А П В) = А, А ("| (A U В) = А; инволюция — (А) = А; правила де Моргана A U В = А П В, обобщение правил де Моргана для совокупности множеств — U 4=fl Aa, l П А* = acl
18 Глава 1. Множества свойства универсального и пустого множеств А[]А = 0, = 0, А{}0=А, А =Е, Af]E = A, A 0. Заключенные в скобки пары свойств двойственны друг другу в том смысле, что если в одном из них заменить [] знаком |~), Е — знаком Q и- наоборот, |~) — знаком U , а 0 — знаком Е, то получается парное свойство. Рис. 2. С целью упрощения записи формул скобки могут опускаться. Тогда предполагается, что их роль играет знак дополнения и поря- порядок выполнения операций следующий: дополнение, пересечение, объединение. Согласно этому условию формулу /r4)j (А Г) Б)) U U (А[}В) можно кратко записать так: A U A (]B\j А [\В. В справедливости перечисленных свойств нетрудно убедиться. В качестве примера докажем первое правило де Моргана АпВ = А[)В. A.1) Покажем вначале, что левая часть этого равенства включается в правую, т. е. __ ~ A.2) Действительно, пусть х -. А[] В. Это означает, что хсА и х g В, но тогда х 6 А и х 6 В, следовательно, xiA[\B. Таким образом, выполняется включение A.2). Справедливо также и обратное включение ~А[\В<=М\В. A.3) В самом деле, пусть х{А^\В, это означает, что х^ А и х$В. § 1.2. Основные операции над множествами 19 Но тогда ?? АЦВ и, следовательно, х е А [] В. Ввиду справед- справедливости включений A.2), A.3) выполняется равенство A.1). Про- Проведенное доказательство интерпретируется на диаграммах Венна (рис. 2). Заштрихованная область рис. 2, а совпадает с областью, отмеченной двойной штриховкой на рис. 2, г. К основным теоретико-множественным операциям относится разность множеств. Разностью множеств А и В (А\В) называется множество всех элементов из А, не принадлежащих множеству В. При этом не обязательно выполнение включения В<±А, так что А\В= А\(А[)В). Например, (а, Ь, с}\{Ь, с, d] = {а}. Пусть Р, R, К — множества прямоугольников, ромбов и квадратов соот- ( ггТТТ Д \ ч. X в J Рис. 3. ветственно. Тогда разность P\R — множество прямоугольников, не являющихся квадратами, т. е. P\R = Р\К, где К =. Р р/?. Разность множеств иллюстрируется на рис. 3, а. Заметим, что разность множеств можно выразить с помощью введенных ранее булевых операций А\В = А[}В. С операцией разности тесно связана операция симметрической разности множеств. Симметри- Симметрической разностью множеств А и В (А^В) называется множество, содержащее все элементы ш А, не принадлежащие множеству В, а также все элементы и;з В, не принадлежащие множеству А. Например, {а, Ь, с) ф {Ь, с, d] = {a, d); P ф R — множество всех прямоугольников и ромбов, не являющихся квадратами (Р, R — соответственно множества прямоугольников и ромбов). Симметри- Симметрическая разность иллюстрируется на рис. 3, в. По определению А~В = (А\В) U (В\А) = (.4 П В) U (В f] А). Назовем некоторые свойства симметрической разности: коммутативность — А~В = BQ-A, ассоциативность —
20 Глава 1. Множества дистрибутивность относительно пересечения — АП(В®С) = (А[)В)®(А{)С), свойства универсального и пустого множеств — А&А=0, Л©? = 1, 400=Л. При классификации элементов и в ряде других случаев ис- используется разбиение R (А) множества А на непересекающиеся подмножества — классы этого разбиения; иными словами, мно- множества R (А) = [Alt А2, ¦ ¦ ¦ , Ak) образуют разбиение множества k А, если А = U Аи причем A{{]Aj = 0, где i ф ) (i, / = 1,2, ... ... , /с). В этом случае множество А часто называют прямой сум- суммой подмножеств Аи Аг, . . . , Ah. Например, множество Z всех целых чисел является прямой суммой множеств Zo — всех четных чисел и Z: — всех нечетных чисел, а множество ЗК (В) всех под- подмножеств множества 5SR В = {<Z а2, ... , ап] — прямой суммой мно- множеств SSK0, 5SR,, . . . , 9К„, где ЭД0 = {0}, ЗК4— множество всех под- подмножеств множества В, каждое из которых содержит точно i элементов (i = 1, 2, ... , п). Разбиение Вх (А) = {Аъ Аг, . .. , Ah) называется подразбиением разбиения R2(A), если для каждого класса B{^R2{A) существует разбиение R(Bi) = {Ail, Аи_, ... , Ai^^Ry (А). Например, под- подразбиением любого разбиения множества А = (а,, а2, ... , ап} является тривиальное разбиение R(A) = {{ai), {a2}, ... , {ап)\. Рассмотрим также операцию декартова (прямого) произведе- произведения множеств. Декартовым произведением А X В множеств А и В называется .множество всех пар вида {пи bj), в которых первая компонента принадлежит множеству А (аг q А), а вторая — мно- множеству B(bjiB). Аналогично декартовым произведением ,4, X X А2 х • • • X Ап множеств Ah А2< . . . , Ап называется множество всех 71-мерных последовательностей (а^, а,,, . .. , ain), в которых /v-я компонента принадлежит множеству Ah (а,); 6 Аи) при любом к = 1, 2, ... , п. В частности, если А1 = А2 = • • • = Ап = А, то декартово произведенпе А X Ах ¦ ¦ ¦ X А называют п-п степенью п раз а при ?г = 1 мноукества А. Причем при п = 0 принимается /1° = Л1 = .4. С помощью понятия степени множества определим операцию .4* = U Ак, которая порождает множество всех последователь- последовательно ностей (произвольной длины), состоящих из элементов множества Л. Декартово произведение, вообще говоря, некоммутативно (А X X ВфВ х А) и ассоциативно (U х В) х С = А х (В х С)). Очевидно, (А1 х А.2 X ¦ ¦ • X Ап) = Z тогда и только тогда, когда по крайней мере одно из множеств А{ пусто, At = 0 (i i A, 2, ... <$ 1.2. Основные операции над множествами 21 .. . , /г)). Пусть для множеств AY, А2, . . . , Ап и BY, В2, .. . , Вп выполняются включения В;С^; (t = 1, 2, ... , п). Тогда (Вг X X В2 X • • • X Вп) с= А1 X А2 X • ¦ ¦ X А„. Декартово произведение множеств связано с числовым умножением. Пусть Аъ А2, .. . . . ., Ап — конечные множества, причем множество АК содержит тг элементов (i = 1, 2 п). Тогда декартово произведение Аг X X Ао_ X ' • • X Ап содержит vilvx2 ... тп элементов. Приведем при- примеры декартовых произведений различных множеств. Пример 1. Пусть даны множества А = (а, Ь) и В = {Ъ,с\. Тогда А X В == (а, Ъ) X [Ь, с) = ((а, Ъ), (а, с), (Ъ, Ъ), (Ь, с)}. Пример 2. Пусть V — множество всех действительных чисел. Тогда V2 = V х V представляет собой множество всех пар (х, у), У / ¦] О -5 ¦i -3 -h 2 Ж W а Рис. 4. Рис. 5. где х, у ? F. Каждой такой паре (ж, i/) б V2 можно сопоставить точку координатной плоскости, абсцисса которой равна первой компоненте пары, а ордината — второй. Если теперь в качестве множества А выбрать все точки х оси абсцисс такие, что 3 < х < 5, а в качестве множества В — все точки у оси ординат такие, что 2 < у < 6, то декартову произведению А X. В соответствует мно- множество точек плоскости с координатами из множеств А и В (рис. 4, заштрихованный прямоугольник). Пример 3. Рассмотрим множество V направленных отрез- отрезков — векторов координатной плоскости. Для задания некоторого вектора АВ достаточно указать координаты его начальной точ- точки А, длину вектора и направление s i S (рис. 5), S — множество всех направленных лучен, которые могут исходить из произволь- произвольной точки плоскости. Тогда множество V векторов плоскости можно представить как декартово произведение V = "Г2 х V х S, где 1/2, V и S — множества соответственно координат гсех точек плоскости, длин всех отрезков плоскости и всех направленных лучей из произвольной точки. Пример 4. Декартова степень Е\ = Е2 х Е.2 х • • • ;• Еъ где п раз
22 Глава 1. Множества Е% = @, 1), представляет собой множество всех n-мерных двоич- двоичных наборов, состоящих из нулей и единиц. Пример 5. Операция %°° порождает множество всех наборов любой конечной длины в алфавите 9t, причем здесь 0 — пустой набор. § 1.3. Мощность множеств. Счетные множества Изученные в предыдущем параграфе операции и их свойства справедливы как для конечных, так и для бесконечных множеств. Принципиальное различие между конечными и бесконечными множествами проявляется при сравнении их по числу входящих элементов. Пусть, например, даны два конечных множества: А с числом элементов п и В с числом элементов т. Тогда выпол- выполняется лишь одно из трех возможных соотношений п = т, п > т, п<.т. Если множества А и В состоят из сравнительно неболь- небольшого числа элементов, то вопрос о том, какое из этих соотно- соотношений справедливо, может быть решен в результате прямого подсчета элементов в сравниваемых множествах. Однако такой подсчет даже конечных множеств не Есегда осуществим. Напри- Например, как подсчитать число элементов в множестве песчинок на городском пляже или число атомов на земном шаре? Существует и другой способ сравнения множеств. Так, для того чтобы выяснить, какое из следующих множеств содержит больше элементов: множество кресел в зрительном зале или мно- множество всех желающих посмотреть фильм, достаточно усадить зрителей на соответствующие места. Результат сравнения этих множеств зависит от того, будут ли в зале свободные места, или, наоборот, у кинотеатра окажутся «охотники» за лишними биле- билетами. Точно так же можно сказать, что песчинок на пляже меньше, чем атомов на земном шаре, так как каждая песчинка содержит по крайней мере один атом. Сравнение множеств в приведенных примерах связано с ус- установлением взапмио-однозначного соответствия. Элементы мно- множеств А и В находятся во взаимно-однозначном соответствии, если каждому элементу а множества А по некоторому закону сопоставлен единственный элемент Ь множества В, причем каждый элемент Ъ -" В оказывается сопоставленным одному и только одно- одному элементу а ^ А. Взапмно-однозначное соответствие элементов множеств А, В обозначается а<*Ъ. Множества А и В называются эквивалентными илп равно- мощными (А — В), еслп можно установить взаимно-однозначное .соответствие их элементов. Из определения эквивалентности множеств следует, что: 1) А — А (рефлексивность), § 1.3. Мощность множеств. Счетные множества 23 2) если А — В, то В — А (симметричность), 3) если А — В и В — С, то А — С (транзитивность). Приведенное определение эквивалентности справедливо как для конечных, так и для, бесконечных множеств. Очевидно, ко- конечные множества А ж В эквивалентны лишь тогда, когда они содержат одинаковое число элементов; если А — В', где В' а В, то множество А содержит меньше элементов, чем множество В. Таким образом, понятие мощности является обобщением понятия числа элементов. Приведем примеры эквивалентности бесконечных множеств. Пример 1. Множество N — A, 2, 3, . ..} натуральных чисел эквивалентно множеству ./V2 = {1, 4, 9, ... } квадратов этих чисел. Взаимно-однозначное соответствие множеств N и N2 устанавли- устанавливается по следующему закону: каждому числу п 6 N сопоставля- сопоставляется число п2 б N2 (п<->п2). Пример 2. Множество Z всех целых чисел эквивалентно множеству ZQ всех четных чисел; взаимно-однозначное соответ- соответствие устанавливается следующим образом: z <-> 2z, где z 6 Z, 2z 6 Zo. Приведенные примеры показывают, что бесконечное множество может быть эквивалентно своему собственному подмножеству. В этом проявляется принципиальное различие между конечными и бесконечными множествами, так как из основного закона конеч- конечных множеств следует: часть всегда меньше целого. Пример 3. Рассмотрим множество L слов произвольной длины в бесконечном алфавите ? = [Ьъ Ь%, ... ,Ьп, .. .}. Каждому символу Ъп с S сопоставим его код — слово Aп0) в двухбуквенном алфавите Ш- == @, 1), где 1П^-краткая запись последовательности 111 — 1 длины п. Тогда каждому слову (b^b^ ... ftifc) g L можно поставить в соответствие слово A*1 0 1?* 0 ... lih 0). Нетрудно видеть, что указанное соответствие взаимно-однозначно и поэтому множество L эквивалентно множеству Lc кодирующих слов в ал- алфавите 91 (т. е. множеству всех слов, начинающихся с единицы, заканчивающихся нулем и не содержащих подслов вида 00). Описан- Описанная конструкция реализуется также при конечном алфавите й (част- (частный случай так называемого взаимно-однозначного кодирования). Пример 4. Множество всех действительных чисел эквива- эквивалентно множеству точек прямой. Взаимно-однозначное соответ- соответствие этих множеств устанавливается, например, с помощью чис- числовой прямой, принимаемой за ось абсцисс некоторой координатной системы. Пример 5. Пусть X — .множество точек осп абсцисс, a G — множество точек единичной полуокружности с центром в точке О,@, 1), за исключением ее концов Л/\ (—1, 1), Л/2-A, 1) (рис. 6). Полуокружность касается оси абсцисс в начале координат. Мно- Множества X и G эквивалентны: их взаимно-однозначное соответствие
24 Глава 1. Множества можно установить, сопоставляя произвольной точке х е X точку q e G, в которой луч О,а; пересекает данную окружность. Пример 6. Множество всех точек х оси абсцисс, для которых выполняются неравенства а < х < 6, где а, Ъ — некоторые дейст- действительные числа, называется интервалом (а, Ь). Если к интервалу (а, Ь) присоединить его концы, то получится сегмент [а, Ь], т. е. множество точек, удовлетворяющих неравенству а <х< Ь. Спро- Спроектировав множество G точек полуокружности на интервал (—1, 1) (рис. 7), убедимся в эквивалентности этих множеств. Однако X — G (см. предыдущий пример), и, следовательно, множество X всех точек числовой оси эквивалентно ее интервалу (—1, 1). Очевидно, таким образом можно установить эквивалентность числовой оси и любого ее интервала, а следовательно, и экви- эквивалентность любых двух интервалов. о, / / Х2 У ¦ ? 0 gh 1 \ Хз X х, х2 О Рис. 6. X, Ха X Рис. 7. Пример 7. Сегмент [а, Ь] эквивалентен интервалу (а, Ь). Действительно, рассмотрим произвольную последовательность S = {su s2, ... , sn, . . . } различных точек сегмента [а, Ь] такую, что s, = a, s2 = b. Тогда точки s3, ... , sn, ... , как и остальные точки сегмента [а, Ь], не попаншие в выбранную последователь- последовательность 5, принадлежат интервалу (а, Ь). Выполнив сопоставление Si S S «• si+2 е (а, Ь) и yi[a,b]<*y?{a,b), где y~?S, установим взаимно-однозначное соответстьие сегмента [с, Ь\ и интервала (а, Ь). Часто рассматриваются множества, эквивалентные множеству N = A, 2, .. . , п, . . . } всех натуральных чисел. Такие множества называются счетными. Следовательно, некоторое бесконечное множество А счетно, если можно установить взаимно-однозначное соответствие его элементов и натуральных чисел, т. е. указать способ задания элементов множества А (без повторений) в виде бесконечного перечня (пересчета) так, что первый элемент в этом перечне соответствует числу 1, второй—числу 2 п т. д. Таким образом, несмотря на бесконечность пересчета, каждый элемент множества А занимает в нем некоторое конечное положение и число, соответствующее данному элементу, служит его индексом, А = {alt аг, ... , ап, ... ). Перейдем к изучению некоторых важных свойств счетных множеств. Всякое бесконечное подмножество В счетного мно- § 1,3. Мощность множеств. Счетные множества 25 жества А также счетно. Действительно, вследствие бесконечности подмножества В можно осуществить пересчет его элементов по порядку их следования в множестве А. Теорема 1.1. Объединение конечной или счетной совокупности счетных множеств также является счетным множеством. Доказательство. Рассмотрим сначала конечную совокуп- совокупность счетных множеств {Alt А2, . ¦ . , Ah), где Ак = [af, а^\ . . . . . . , а?\ ... ] (? = 1,2, ... , к). Выпишем в строку все элементы множеств Aiy Аг, . . . , Ah: Пересчет выписанных элементов можно осуществить по порядку их следования в строке, причем элемент, встречающийся в строке более одного раза, приобретает номер при первой встрече, а затем h пропускается. В результате каждый элемент объединения (J А{ г=1 получит свой номер, что и требовалось. В случае счетной совокупности счетных множеств {А{ | ? = 1, А, = {а<<>, а<<>, .... <#>, ... }, все их элементы записываются в одну строку по группам эле- элементов с равной суммой верхнего и нижнего индексов в порядке возрастания этой суммы: = N\j В остальном рассуждения аналогичны рассуждениям в случае, рассмотренном выше. Теорема доказана. Следствие 1. Множество Z всех целых чисел счетно. ^Справедливость следствия вытекает из соотношения \JN, где ;V = {0, —1,-2, ... ]. Числовое множество ЭД называется плотным, если для каждой пары чисел qu q.2 -' SK (qL < q.2) всегда существует некоторое число q i SK такое, что ^j < q < q,,. И3 плотности множества ЭД следует его бесконечность, более того, для каждой пары чисел qu q.2 6 SK существует бесконечное множество чисел q б 3JI, для которых вы- выполняется неравенство ql < q < q2.
26 Глава 1. Множества Всякое подмножество Z' c=Z множества всех целых чисел не плотно. В отличие от множества Z множество R всех рациональ- рациональных чисел (т. е. чисел — , где р и q целые плотно. Однако, не- несмотря на плотность множества R, для него справедливо такое следствие. Следствие 2. Множество R всех рациональных чисел счетно. Действительно, множество R является объединением счетных множеств А1—Есех целых чисел п¦— О, +1, ±2, ... , А.2—всех дробей вида -к-, п = 0, ±1, ±2, ... , Л3 —всех дробей вида ~, п = 0, ±1, ±2, ... , О Ат — всех дробей вида-?-, п — О, ±1, +2, ... , Следствие 3. Декартово произведение А X В счетных множеств А = (а,, а2, ... , ап, ... ) и B^\bv b2, . .. , 6n,. . . . ) счетно. Действительно, множество всех пар (пи bj) (i, j = 1,2, ... ) можно представить как объединение счетной совокупности счет- счетных множеств 41 = {(aI, bj, {avb2) (ttj, bn), ...}, A2 = {(a2, 6j), (a2, b2), ..., (a2, bn), .. . }, := l(am. bi), (am, b2), ..., (am, bn), . . . ), В частности, множество всех точек плоскости, обе координаты которых являются рациональными числами, счетно. Используя индукцию, нетрудно показать, что декартово про- произведение А1 х А2 X • ¦ • х Ап, где Аи А2, . . . , Ап — счетные множества, также счетно при любом п. Действительно, при п = 1 Лх счетно по условию. Пусть А1 х А2 X • • • X Ап_х счетно. Тогда по доказанному ранее декартово произведение А1 X А2 X • • • X X Ап_1 х Ап также счетно. Следствие 4. Множество Р всех многочленов р (х) = ао.гп -j- + alxn~l -J- • • ¦. -|- ап_гх -j- an произвольной степени с рациональ- рациональными коэффициентами а{ (i = 0, 1, ... , п) счетно. § 1.4. Континуальные множества 27 Множество Р представляет собой объединение счетной сово- совокупности множеств [Рп\п = 0, 1,2, ... ), где Рп означает мно- множество многочленов степени, не превышающей п. Каждому много- многочлену р (х) = аохп.+ а^ + • • • -\- ап_^х последовательность рациональных чисел этому Р„м(йхй (а0, av ... , ап), : X R). Тогда в силу следствия 3 ап можно сопоставить i по- мно- п раз жество Рп счетно, а поэтому счетно и множество Р. Следствие 5. Множество всех алгебраических чисел (т. е. корней многочленов с рациональными коэффициентами) счетно. Согласно следствию 4 множество Р всех многочленов с рацио- рациональными коэффициентами счетно. Известно, что каждый такой многочлен имеет некоторое конечное число корней. Таким образом, множество всех алгебраических чисел можно представить как объединение счетной совокупности конечных множеств, которое, очевидно, счетно. . . . Следствие 6. Множество F (Щ гсех слов коночной длины в алфавите 91 = [av а2, . .. , ат) счетно. Действительно, множество F (Щ можно представить как объе- объединение счетной совокупности [Ап\п = 0, 1,2, ... }, где Ап — множество всех слов в алфавите 91 длины, не превышающей п. Очевидно, каждое множество ность множества F (Щ. Ап конечно, откуда следует счет- § 1.4. Континуальные множества Среди бесконечных множеств существуют множества, элементы которых не поддаются пересчету. Такие множества принято назы- называть несчетными. Существование несчетных множеств впервые было доказано Г. Кантором с помощью предложенного им диа- диагонального метода. Теорема 1.2 (Кантора). Множество есех действительных чи- чисел интервала @, 1) числовой оси несчетно. Доказательство. Как известно, каждому действительному числу из интервала @, 1) можно сопоставить правильную беско- бесконечную десятичную дробь О.а^Оз • ¦ • i .которая содержит бес- бесконечно много цифр, отличных от нуля. Так, если число пред- ставимо в виде конечной десятичной дроби (т. е. дроби с повто- повторяющимися нулями), то ему сопоставляется бесканечная десятич- десятичная дробь с по-вторяющимися девятка-ми. Например, числу 0,576 (или 0,576000...) соответствует дробь 0,575999... Такое соответ- соответствие действительных чисел интервала (О, 1) и правильных бес- бесконечных десятичных дробей взаимно-однозначно. Предположим теперь, что теорема неверна и множество всех действительных чисел интервала @, 1) счетно, т. е. для этого множества существует пересчет xlt хг, .х3, аг4, . . . , хп, ... Рас-
28 Глава 1. Множества положим одну под другой правильные десятичные- дроби, соот- соответствующие элементам данного пересчета, так, что Ч х1 -н- 0, апа12а13аи . . . а1п . . . , Ч хг -н- 0, a21aMa23a2i ... а2п ... , Ч х3++0, a31a32a33a3i ... а3п ... , Ч хА -н- 0, а41а42а43а44 • • • а4п • • • » Ч хп++ О, anlanian3ani .. . апп ... , Ч Следуя по диагонали (указанной стрелками), образуем новую дробь О, а^а^а^а^ ... а„'п ... такую, что при п = 1, 2, ... 1, если аппф 1, 2, если апп= 1, причем вновь полученная дробь должна остаться бесконечной (для этого достаточно предположить, что ап'п Ф 0 при любом п). Дан- Данная дробь б, а^а^йз'з • • • ^пп соответствует некоторому действи- действительному числу х, которое принадлежит интервалу @, 1), но не входит в рассматриваемый пересчет. Действительно, построенная дробь отличается от каждой из дробей в указанном пересчете цифрой, расположенной по диагонали. Так, от дроби, соответст- соответствующей числу хх, она отличается своей перЕой цифрой после запятой, от дроби, соответствующей числу х2, — второй цифрой после запятой и т. д. Следовательно, для множества всех дейст- действительных чисел интервала @, 1) пересчета не существует. Таким образом, наше предположение относительно счетности этого мно- множества неверно. Теорема доказана. Всякое множество, эквивалентное множеству всех действитель- действительных чисел интервала @, 1), называется континуальным или мно- множеством мощности континуума. В § 1.3 показано, что множества действительных чисел (точек) любого интервала (а, Ь), любого сегмента [а, Ь] и, наконец, всей числовой оси —оо < х < оо экви- эквивалентны множеству точек интервала @, 1). Таким образом, каждое из этих множеств континуально. Справедливо следующее утверждение: если А-—некоторое не- несчетное множество и В cz A—счетное подмножество множества А, то множество С = А\В, полученное в результате исключения из А всзх элементов множества В, также несчетно. Действительно, из предположения о счетности множества С следует счетность множества А=В[]С (см. § 1.3, теорема 1.1). § 1.4. Континуальные множества 29 Следствие 1. Множество R всех иррациональных чисел явля- является множеством несчетной мощности. Числа, не являющиеся корнями многочленов с рациональными коэффициентами, называются трансцендентными. Следствие 2. Множество Т всех трансцендентных чисел явля- является множеством несчетной мощности. Следствия 1 и 2 справедливы в силу того, что множества всех рациональных и всех алгебраических чисел счетны, а мно- множество V всех действительных чисел является множеством мощ- мощности континуума. Приведенные результаты доказывают само существование транс- трансцендентных чисел. Первые трансцендентные числа построены Ж. Лиувиллем A844 г.), причем их построение было сопряжено со значительными трудностями. Канторовский диагональный метод не только доказывает существование трансцендентных чисел, но и позволяет строить их по некоторому пересчету множества алгебраических чисел. Теорема 1.3. Множество ЗК (А) всех подмножеств некоторого счетного множества А является множеством мсщнссти континуума. Доказательство. По определению счетного множества ^4 существует взаимно-однозначное соответствие элементов этого мно- множества и натуральных чисел, заданное в виде пересчета аи а2, ... ... , ап, ... чА. Следовательно, для доказательства теоремы до- достаточно рассмотреть случай, когда в качестве множества А вы- выбрано множество N всех натуральных чисел. Каждому подмно- подмножеству N' <=iV соответствует его характеристическое свойство (характеристическая функция) <sN, (n) такое, что ( 0, если п е N', lN I 1, если п~? N' при любом п = 1, 2, ... Это означает, что каждому подмножеству N' <^N можно сопоста- сопоставить последовательность значений его характеристической функ- функции <sN, (n) (т. е. бесконечную цепочку, состоящую из нулей и единиц) так, что N' ^ yN. (I), oN, B), .... yN, (k), ... , причем указанное соответствие взаимно-однозначно. Предположим теперь, что множество ЗК (./V) счетно и сущест- существует пересчет N[, N2, N3, . .. , ЛГА', . .. его элементов. Расположим одну под другой бесконечные последовательности значений харак- характеристических функций, соответствующих элементам данного пере- пересчета, так, что Ч 1 Ч ), ?л,,B), ?л„C), ... , ?JV,(A), ....
30 Глава 1. Множества N'h+>- <?N; A). 14 A). 4' 4 B), B), <P^C), ... ^C), ¦•• • 4 ч ' 4 (fc), .... По диагонали (следуя стрелкам) а„, A), '•'ft построим новую последовательность оЛ„A), (га) ф 1 при такую, что 5N, (п) = $N, B) сл„ (r), ^ любом ?i = 1, 2, ... (х ф г/ — сложение по mod 2, удовлетворяющее правилам Оф1 = 1фО = 1, 1 ф 1 = 0 ф 0 = 0). Эта последова- последовательность является последовательностью значений характеристи- характеристическойфункции (pN, (тг), соответствующей некоторому подмножеству N' czN. Очевидно, подмнажество N' не входит в рассматриваемый, пересчет, так как по построению yN,(n) Ф vN,(n) (п — 1,2, .. .), и, следовательно, функция cpjV (n) отлична от любой из характе- характеристических функций, соответствующих элементам данного пере- пересчета. Это означает, что для множества ЗК (N) не существует пересчета всех подмножеств множества N. Таким образом, мно- множество $R (N), а следовательно, и множество Ш(А) несчетны для любого счетного множества А. В заключение заметим, что каждой последовательности зна- значений <?w,(l), фдг-B), ... , qv(fc), ••• некоторой характеристи- характеристической функции tpN, (n) можно поставить в соответствие правильную бесконечную двоичную дробь 0, oN, A) ф^, B) ... cpN, (к) ... , которая представляет некоторое действительное число из интер- интервала @, 1) в двоичной системе счисления, причем каждое число из интервала @, 1) однозначно (с точностью до представления 0,0100... = 0.,00111...) представило в виде правильной бесконечной двоичной дроби (точно так же, как оно представило в виде правильной бесконечной десятичной дроби). Таким образом, множество 9К (А) эквивалентно множеству всех действительных чисел интервала @, 1) п, следовательно, является множеством мощности континуума. Теорема доказана. Рассмотрим множество F E1) всех слов в некотором конечном алфавите 51. Любое подмножество L^FEl) называется языком над алфавитам 51. Следствие. Множество Есех языков над конечным алфавитом 51 является множеством мощности континуума. Справедливость след- следствия вытекает дз счетности множества F E1) (см. § 1.3). § 1.5. Кардинальные числа 31 § 1.5. Кардинальные числа Рассмотрим совокупность [А] всех множеств, эквивалентных не- некоторому произвольно выбранному множеству Л. Очевидно, мно- множества, входящие в [А], эквивалентны. Под кардинальным числом А понимается некоторый объект, определяющий мощность любого из множеств рассматриваемой совокупности. В случае конечности множества А кардинальным числом А любого из множеств, вхо- входящих в [А], является натуральное число, определяющее число элементов в каждом из множеств данной совокупности3. Обратимся к важному вопросу сравнения кардинальных чисел. Кардинальные числа А и В конечных множеств А ж В, как под- подчеркивалось выше, являются натуральными числами, и поэтому возможно одно из следующих трех соотношений: А = В, А < 5 и 1 >!. При сравнении бесконечных множеств А и В логически воз- возможны четыре случая. _ 1._Множества А и В эквивалентны, A oj В. В этом случае 1 = 1. 2. Множества А ж В неэквивалентны, но одно из них, напри- например А, эквивалентно подмножеству другого, A oj В' а В. Тогда говорят,_что мощность множества А меньше мощности множества В, ~А< В. 3. Множество А эквивалентно некоторому подмножеству мно- множества В, и, наоборот, множество В эквивалентно некоторому подмножеству множества А, А <х> В' с; В и BooA'czA. Этот случай, как будет показано далее, сводится к первому. 4. Множество А не эквивалентно никакому подмножеству множества В и множество В не эквивалентно никакому подмно- подмножеству множества А (множества А ж В несравнимы). Четвертый случай невозможен ц множество всех кардинальных чисел вполне упорядочено (см. § 2.5L. Рассмотрение третьего случая исчерпывается следующей важной теоремой. Теорема 1.4 (Кантора—Бернштеина). Если множество А эквивалентно некоторому подмножеству множества В, А оо Bj aB, и одновременно множество В эквивалентно некоторому подмно- подмножеству множества A.Bc\jA1ciA, то множества А и В экви- эквивалентны. 3 Капторовский символ А означает, что при определении кардинального числа множества А происходит двойное абстрагирование от природы эле- элементов мпожества А и их порядка. 4 См. также работу Ф. Хаусдорфа [108] пли П. С. Александрова [1].
32 Глава 1. Множества § If). Кардинальные числа 33 Доказательство. Пусть даны множества А1 и Въ причем A го ВгсВ и В со АгаА. Предполагается, что подмножества Аг и Bj являются собственными подмножествами множеств А и В, так как в противном случае справедливость теоремы очевидна. Ввиду В го А1 достаточно показать, что А1 го А. Из В со А1: поскольку BxczB, следует существование подмно- подмножества A2czA1 такого, что А2соВ1. Но по условию теоремы A го В1 и, следовательно, А го Л2. Это означает, что существует взаимно-однозначное соответствие о элементов множеств А и А2, о х** х' \х? А, х' € А2. Далее, в силу принятого закона соответствия ф подмножеству Л, с: А соответствует некоторое подмножество А3аА2 такое, что А1 го А3. В свою очередь, по этому же закону с, под- подмножеству A2<zzA1 соответствует подмножество AiczA3 такое, что Ао го Ai. Продолжив эти рассуждения, получим бесконечную А А A А 4 A i рд цепочку строгих включений А id ••• , причем А го А2 го Ai го у А1 id An А1 А3 со .45 го • го A 2h+1 Кроме того, в силу принятого закона соответствия ср из постро- построения множеств А2, А3, . . . следуют эквивалентности (А\АХ) го {А2\А3) со ( го (A3\At) го (As\Aa) го Действительно, при любом п по принятому закону взаимно-од- взаимно-одА А А 4 Дй, р р нозначного соответствия ф Ап го Ап+2 и Ап+1 A AA Е у 4 П+3, причем AnhlczAn, An+3<zzAn+2. Если теперь из множеств Ап и исключить подмножества Ап+1 и Ап+3 соответственно, то разности п+1 и 4п.^2\^1п+з останутся эквивалентными: (Ап\Ап+1)со(АП1.2\Ап+3). 00 Пусть D= П ^. —пересечение множеств A.4) А2, ... (в част- частности, D может оказаться пустым). Тогда множества А ж А1 можно представить в виде объединения попарно-непересекающихся мно- множеств так, что А = D U (А\Аг) U (-4,\i,) U (Л2\А3) U • • • Пусть, далее, U DТЛ4^) U U ••• U .-•U ( А, = Do IJ (Л,\А3) U (At\A.a) U (Ae\A7) IJ Тогда равенства (^) можно переписать в виде (Х-Х) Теперь нетрудно установить взашшо-однозпачное соответствие олемеитов множеств А и Аи сопоставив их по следующему закону: каждому элементу х 6 А такому, что х 6 Do, сопоставим тот же элемент х ? А{, одновременно каждому элементу х 6 A\D0 сопо- о ставим элемент х' е A1\DU такой, что х*+х'. Таким образом, и:; равенств (XX) и соотношения A.4) следует эквивалентность А го А1, а значит, и А со В. Теорема доказана. Следствие 1. Если справедливы включения А :г> А: :з А2, при- причем А со А2, то множества А и Ах экиппалеитиы. Иными словами, мощность промежуточного мпоичоства Ах совпадает с мощностями крайних множеств А, А.2; А1 = А = А.2. Справедливость следствия вытекает из эквивалентностей А го А.г cz А{; А1 го Ах czA. Следствие 2. Если А^В, то А^В. Кардинальные числа бесконечных .множеств называются бес- бесконечными или трапефшштнымн, ка])Дииалы1Ы.ми числами. Kaj)- динальное число множества N всех натуральных чисел, а следо- следовательно, и любого счетного множества обозначается через Хо (атеф-нулъ). Следствие 3. Пусть А—произвольное копечное множество. Тогда 1<NO. Теорема 1.5. Во всяком бесконечном множестве А можно вы- выделить некоторое счетное подмножество. Действительно, выберем в множестве А некоторый элемент аг и рассмотрим множество /11 = Л\{а1). Очевидно, множество А1 также бесконечно и, следовательно, можно выбрать из него не- некоторый элемент а2$ Ах и перейти к множеству Л, = Л1\{а2]. Продолжив этот процесс неограниченно, в множестве Л выделим счетное подмножество В = \aY, а2, ... , ап, . . . }. Гаким образом, среди бесконечных множеств наименьшие по мощности счетные множества с кардинальным числом Ко. Воз- ннкцот вопрос: существуют ли множества наибольшей мощности? В § 1.4 рассмотрены множества мощности континуума с кардиналь- иым числом Nj = 2 о. Обобщая пригеденные выше результаты, можно доказать следующее важное утверждение, принадлежащее Г. К.лпору. 2 8-350
34 Глава 1. Множества Теорема 1.6. Мсгиностъ множества 5R (А) всех подмножеств любого непустого множества А больше могиности данного мно- множества А, Ж (А) > А. Доказательство. Достаточно доказать, что множества ЗК (Л) и А неэквивалентны, причем существует подмножество В<^Ш(А) такое, что А со В. Множество 5R (А) наряду с другими подмножествами содержит в качестве своих элементов несобст- несобственные подмножества множества А (т. е. подмножество 0 и само множество Л), а также его одноэлементные подмножества. Докажем, что множества Ж (/1) и А неэквивалентны. П| едпо- ложпм противное: пусть 5Ж (А) ос А. Тогда существует взаимно- взаимнооднозначное соответствие cf элементов множества А н его под- подмножеств, а*+А'(а?А; А' е Ж (А)). Возможна следующая альтернатива: элемент а принадлежит соответствующему ему подмножеству А' пли не принадлежит. В первом случае элемент а назовем отмеченным, во втором—не- втором—неотмеченным. В множестве А существуют как отмеченные, так и неотмеченные элементы. Действительно, несобственному подмно- подмножеству А 6 5R (А) в соответствии ср, очевидно, сопоставлен отме- отмеченный элемент множества А; в то же время пустому подмножеству 0 6 Ж (А) сопоставлен неотмеченный элемент данного множества А. Рассмотрим подмножество /loci, состоящее из всех неотме- неотмеченных элементов множества А. Пусть этому элементу Ао d 5R (А) в соответствии ср сопоставлен элемент а0 g А. Очевидно, что эле- элемент а0 не относится к отмеченным, так как принадлежность а0 g Ао противоречит определению подмножества Ао, состоящего нз всех неотмеченных элементов множества А. Вместе с тем эле- элемент а0 нельзя считать неотмеченным, так как тогда он входил бы в соответствующее ему подмножество Ао и поэтому был бы отмеченным. Таким: образом, элемент а0 не может быть гш отме- отмеченным, ни неотмеченным, что противоречит высказанной выше альтернативе, а следовательно, и предположению об эквивалент- эквивалентности множеств 9К (А) и /1. Выбрав в качестге #ci9)l(.-l) мно- множества всех одноэлементных подмножеств множества А. легко убедиться, что А со В. Значит, множества ЭД (А) и А неэквива- неэквивалентны и существует подмножество Вс13й(Л) такое, что J w S. Следовательно, S3K (А) > А. Теорема доказана. Следствие. Не существует множеств наибольшей мощности. Иными словами, множество всех кардинальных чисел не имеет максимального элемента. Действительно, при рассмотрении множествЛ:. Ж (.V). 5R (Зй (Дг)), Ж EК EI (-V))), . • • получим бесконечно возрастающую носледова- тельность трансфшштных кардипальных чисел N*o, Nj = 2' °, Ns2 = § 1.5. Кардинальные числа 35 К наиболее интересным проблемам теории множеств относятся контннуум-пшотеза, состоящая в том, что любое несчетное мно- множество "содержит подмножество мощности континуума (т. е. для счетных и континуальных множеств не существует множеств с кардинальным числом К таким, что Хо < X < Х^, и обобщен- обобщенная континуум-гипотеза, состоящая в том, что для любого беско- бесконечного кардинального числа X любое кардинальное число X' > X удовлетворяет неравенству Х'>2'\ Решение этих проблем явля- является одним из самых интересных математических результатов. Именно за этот результат на Международном математическом конгрессе в Москве A966 г.) П. Коэн— профессор Стэнфордского университета—был удостоен медали Филдса, присуждающейся за выдающиеся достижения в области математики [64].
ГЛАВА 2 ОТНОШЕНИЯ. СТРУКТУРЫ § 2.1. Основные определения Теория отношепий—одна из ветвей общей алгебры—оказалась полезной при изучении многих математических проблем, в том числе проблем обоснования математики. Широко используется она и в различных областях кибернетики, в частности в про- программировании. Рассмотрим произвольные множества А1} А2, ... , Ап (не обя- обязательно различные). Под ¦н-арпьш отношенном, или ¦н-оттшп>- ннем, р" на множествах Аи А2, . . . , Ап понимается закон (харак- (характеристическое свойство), выделяющий в декартовом произведении А1 X Аг х • • • X Ап некоторое подмножество оА А <^А1 х X Аг X • • • X Ап, называемое графиком отношения рп. Если А1 = = Аг = ••• = Ап = А, то говорят об 71-отношешга рп на мно- множестве А с графиком pAS.An. Огпошешш обозначаются греческими буквами (с индексами или без них) а, [3, f, . . . и специальными символами =, <, >, <,^, oj и др. Часто понятие ?г-отнотешщ отождествляется с его графиком, т. е. под п-отношением рп на множествах /1,, А2, ... , Ап поин- гп Ап — ' А, А а[П мается само подмпожество Если а = («U', af), ... , «(")) g p';^ Лп (где 2, ... , 7i), то говорят, что элементы а^\ а[2\ .... a[nJ находятся в отношении рп: рп (о(.'', а[-\ ... , а{.п)), так что обозначения (о'.", ар', ... , а(п)) 6 рпА д и р" (а(.'\ а(л>. ... , а(п)) равпоси.'и-ны. Последовательность а = (аИ1, ар, ... , а^п>) g p" 4 назыьиетси элементом пли вектором /готношения р71. Отношения, графики которых состоят из конечного множества векторов, называются конечными 7г-отношениямп. Если ьп. . = 2, то тг-отнсшоние ' -"il Л п оп называют пустым (Дп); если р" 4 = AY ;< Л., х • • • >; Ап, говорят об универсальном отношении (\/п). Поскольку тг-отношенпя р" можно рассматривать как подмно- подмножества декартова произведения .4, х А2 х • • • ;•: Ап, существуют § 2.1. Основные определения 37 различные способы задания ?г-отношекий, аналогичные способам задания множеств (см. § 1.1). В частности, график р^ Ап удобно задавать матрицей, строками которой являются векторы отноше- отношения рп. Например, если {а.} = (а\), a\j , ... , ai.)\j = 1, 2, . . . ,rj—множество всех векторов отношения рп, то график этого отношения представим в матричной форме , Ат а['\ а'2», ... , L<}. «!;'- • • Отношения о1 Gг=1) на множестве А называют унарными, отношения р2 (п = 2) на множествах А, В— бинарными, отноше- отношения о3 (?г = 3) на множествах А, В, С — тернарными. Унарное отношение о1 на множестве А является характеристи- характеристическим свойством некоторого подмножества ^дЕЕ-4—графика дан- данного отношения. Таким образом, множество всех унарных отно- отношений на А совпадает с множеством Есе.х подмножеств множест- множества А. Если А = {alt а2, ... , ап], то число унарных отношений на А равно 2П. Так, унарными на множестве N = {1,2, ... ) явля- являются отношения а1, р\ -f1 с графиками ^ = {3,7,10,11, ... , 19), == {/г при любом у1 = [п\ При Любом 71 ф г) Отношения «быть четным числом», «быть нечетным числом» на мпожестве N также унарны, их графиками являются множества Лг0 = \Ъх | п = 1, 2, ... ) и Л\ = [2п—\ \ п = 1, 2, ... } соответ- соответственно. Заметим, что любому n-отношеншо оп па множествах Av А2. . . . ... , Ап соответстнуот унарное отношение о1 на мно;кестве Аг X X А.-, >. • • • X Ап такое, что р1 (а) тогда и только тогда, когда pn(a]1),'a|=), ... , а',»)), где S = (al1', a^i, ... , а[п1),— произволь- произвольный вектор отношения рп. Бинарное отношение р на множествах А. В определяется гра- графиком 1АВ<=А>:В. Если элементы а б -4 и Ь е -В находятся в отношении р, то наряду с обозначениями (а. Ь) б р_4] в u p (а, ?>) часто пишут также аф. Существуют различные (наряду^ с матрич- матричным) способы задания графиков бинарных отношений. К наиболее
38 Глава 2, Отношения. Структуры употребляемым относятся методы представления бинарных отно- отношений с помощью таблиц и стрелок. Табличный метод представ- представления бинарного отношения о на множествах А = [aL, а.г, . . . , а,.), В = [blt b2, ... , Ьь] сводится к построению таблицы, строки кото- которой соответствуют элементам множества А, а столбцы—элементам множества В; на пересечении г-ж строки и /-го столбца ставится знак ^, если элементы a;, bj находятся в р-отношении, aipbj. При стрелочной записи бинарного отношения р на множествах А, В элементы множеств А и В изображаются в виде точек плоскости, а затем точки а^ и bj соединяются стрелкой, направленной от ui к bj, тогда и только тогда, когда a$bj. р 2 3 5 2 3 -X- 4? 5 -X- 6 ¦х- Рис. 8. Рис. 10. График тернарного отношения р3 имеет вид р3АВС — Например, с каждой бинарной операцией F (х, у), и в частности с арифметическими операциями «+», «—», «•», «:» и другими, связано тернарное отношение ср3 такое, что ю3 (х, у, z) тогда и только тогда, когда F (х, у) = z. Приведем примеры «-арных отношений. Пример 1. Пусть А = {2, 3, 5), В = {2, 3, 4, 5, 6). График бинарного отношения о на множествах А, В такого, что aob тогда и только тогда, когда а—делитель Ь, имеет вид 2, см" 2, 3, з, 5, 2 4 6 3 6 5 (табличное представление отношения р изображено на рис. 8» стрелочное — на рис. 9; в последнем случае используется вклю- включение A czВ, рис. 10, петля а означает айа). Пример 2. На множестве .V = A, 2, 3, ... ] бинарные отно- отношения <, >, =, <, ^ определяются соответственно графпкамп § 2.1. Основные определения 39 ' 1, 2 " 1, 3 ' 2, 3 ' 2, 4 к, к -f 1 к, к + 2 >л-= >Л = " 2. 1 3, 1 3, 2 4, 2 A-h l", Л 7, 1 О /,. п, — о, л _ 1, 1 п 2, 2 3, 3 2, 1 3, 1 2,2 3, 2 4, 2 к, к , А 2, " 1, 1 1, 2 1,3 *2, 2 2,3 2, 4 Ча /с, Д: + /«, /с + Пример 3. Любое подмножество руЕ:^2' гЛе ^—множество всех действительных чисел, является графиком некоторого бинар- бинарного отношения о на множестве V. Так, отношения х = а, у = Ь, х = у, х-Су определяются графиками, показанными на рис. 11. У \ у. 0 у=Ь X у, Ilil I .1 Рис. 11. В частности, бинарным отношеппем па множестве V является любая функция у = / (х), причем графиком этого отношения служит график функции /. II ]i н мер 4. Пусть F {Щ—множество всех слов конечной длины в алфавите ut = [av a.2, ... , ап). Отношение < на мно- множестве F (Щ можно определить графиком <F(on таким, что (sv So) € <г/яп т0ГДа п только тогда, когда ] s1 \ < j s, ], где | s | — длина слова stF($i). Отношение = на множестве F {%) определяется
40 Глава 2. Отношения. Структуры графиком =j так> чт0 (si> S2) € = тогда и только тогда, когда | &! Пример 5. Пусть ЗК—некоторое множество, F(Щ—неко- F(Щ—некоторое множество слов в алфавите 5t. Закодируем элементы из множества 3JJ в алфавите 5t, сопоставив каждому q ? ЗК некоторое множество Cq слов в алфавите 5t—кодов или имен элементов q. При этом Cqi[\Cq2= 0 для любых gi ?= ?2 (?i-?2 € ЗК). Отсюда следует, что каждый элемент q б ЗК может иметь, вообще говоря, несколько кодов в алфавите 5t. В случае, когда каждому q ? ЗК соответствует лишь один код, кодирование взаимно-однозначно (см. § 1.3, пример 3). Кодирование элементов множества Ш в ал- алфавите 91 можно задать, выделив в декартовом произведении ЗК X F (91) подмножество ф^ р,^ = {(q, s) | g € ЗК, s € С9} —график отношения ф. Пример 6. Пусть А1 = {1,2, ... , Щ, А2 = B, 3, ... , /с— — 1), ... , Ап= {п,п+1, ... , /с — п+ 1}. /г-Отношения ап, (in, f" определим следующими графиками: An' 1, 2, 2, 3, п п + 1 ./с_2/г Лп , /г —2/г /с, /с— 1, к — 1, к —2, З, . . , /с — ?г к — п + 1 /г — тг 1J А, _2п — 1, 1 тг — 2, п-1. тг 1 2 _/с — тг + 1> к — п, ... , /с — 2тг + 2_ Ввиду справедливости включений Ахтэ А2^з ••• ^э Ап отношения a", pn, fn можно рассматривать как тг-отношения на множестве Л^ Пример 7. Пусть ЗК — некоторое множество, F C^), F Ci2), . .. . .. , F (9tn) — множества слов в алфавитах 3tlf 5t2, .. . , 9tn соот- соответственно, f^м i, Фдл,fCt,)' ••• > ^5К, f(9tn) — ГРаФпки би~ парных отношений кодирования (см. пример 5). Отношение 6" на множествах F Eta), ^Et2), ... , ^Etn) определим следующим образом: ф (s^1', s'2), ... , s^">) тогда и только тогда, когда найдется элемент q € ЗК, для которого (g, s|1}) € фд^ fi% у (?. s-2)) € (я) ( Аппарат теории отношений применяется в программировании при создании формализмов для описания синтаксиса языков про- программирования, а также при решении задач, связанных с конст- § 2.2. Операции над отношениями руированием систем программирования, в частности при решении проблем перевода с одного языка на другой (см. гл. 5, 6). Отно- Отношение перевода я на языках L1 и L2 определяется так, что пара цепочек s 6 Lx и s' € L2 находится в отношении я, sirs', если ука- указанные цепочки синтаксически соответствуют друг другу, сохраняя один и тот же смысл. Применение ЭВМ в некоторой новой области связано с разработкой входного языка программирования высокого уровня, ориентированного на описание задач, относящихся к дан- данной области, и системы программирования, реализующей отноше- отношение перевода с выбранного входного языка на язык конкретной ЭВМ. Различают системы программирования транслирующего .и интерпретирующего типов. К трансляторам относятся системы, осуществляющие перевод с некоторого входного языка на язык ЭВМ с последующим выполнением переведенной программы на данной ЭВМ. Интерпретаторы совмещают процесс перевода про- программы с ее выполнением на ЭВМ. Подробному изучению фор- формализмов, ориентированных на решение задач, связанных с конст- конструированием систем программирования, посвящена гл. 6. § 2.2. Операции над отношениями Изучение тг-отношений на множествах AL, А2, ... , Ап в значит тельной степени связано с рассмотрением их графиков — подмно- подмножеств множества Ах X А2 X • • • X Ап. Так, на множество тг-отшь шений легко распространяются известные теоретико-множествен- теоретико-множественные операции (см. § 1.2). В частности, можно говорить о включении тг-отношений рп^ ап, если рА А А El°a а ' а также о пере- пересечении, объединении и дополнении тг-отношений. Отношение 8П =="- = p"f)an, график которого имеет вид 6™ ап~ & а П' ПаА а ' является пересечением отношений р™ и ап. Под объе- объединением отношений рп и ап понимается отношение 6n = pn (J 6п с графиком 0" = рп I) о" Отношение рп назы-1 вается дополнением рп, если а ? р"; . тогда и только тогда,' когда a g рА Ап. Например, для бинарных отношений <, =., <i ^i > (см. § 2.1, пример 2) выполняются следующие равен- равенства: т. е. отношение < является объединением отношений < и =, отношение =•—пересечением отношений < и ^, отношение < — дополнениед1 отношения ^. В то же время отношение < |~| = пусто, а отношение < (J ^ универсально. - ¦'¦ Пусть рп-^.отношение на множествах Аг, А2, ... , АЛ, а от-^^ отношение на множествах Ап+1, ...... А^^ Под
42 Глава 2. Отношения. Структуры произведением отношений рп и ат понимается отношение 6n;m== = рп X з'п, график которого имеет вид @А+т Ап т = о™ ^ Ап X X о . ал.' гДе Pa a ll па л. а . ~ графики отно- отношений рп и а соответственно. Пример 1. Пусть Лх = {0,1,2}, А2= {a, b}, As= {b, с, d], а2, р3—отношения с графиками А,, А2 0. а 1, Ъ 1 -4,, А2, А, 0, а. о 1, Ь, с .1, 6, d. Тогда отношение -E = а2 X [f определяется графиком ], А2, А3, Aj, АБ 0, а 1, Ъ X , 1, Li, а, ь, b, b' с = "О, а, 0, а, Ь- 0, а, 1, Ь, с 0, а, 1, Ь, d 1, 6, 0, а, 6 1, 6, 1, Ь, с 1. 6, 1, Ь, d Кроме теоретико-множественных операций в теории «-отно- «-отношений важное значение имеют операции перестановки и отожде- отождествления координат (столбцов), приписывания фиктивной коор- координаты, а также свертка де Моргана, существенно обогащающие ее по сравнению с обычной теорией множеств. Пусть рп — отношение на множествах Аг, А2, ... , Ап, к = = A, 2, ... , ?г) — набор координат (номеров) столбцов в матрице графика р'А,, ... , а„, к' — (i^ i2, ... , fj —набор, полученпьп1 из к в результате некоторой перестановки элементов. Операция '^(р71) перестановки координат порождает «-отношение -[¦" на множествах A-Xl, Ai2, . . . , А\п, график которого *[пА л. получается из гра- фика рА А перестановкой его столбцов в соответствии с па- бором к'. Так, для отношений ап и ¦;•" ("'• § 2.1, пример 6) т]~, (ап) = -{"-, где 1-е' = (п, п — 1, ... . 1). Рассмотрим наборы /i0 = = B, 3, ... , п, 1) п Д-j = B, 1, 3, . . . ; ?г). Перестановка т,~ (рп) • • (f)f (?")) называется циклом (транспозицией) и обозначается через ; (о") (- (рп)). С помощью цикла и транспозпцпп можно вы- выразить любую перестановку т, (п11) [66]. Пусть I- = (п. п — 1, ... , 2, 1). Тогда отношение (р71)" = г,к{рп) над .множествами Ап, Л„_1, . . . , Л2. Л1, полученное из отно- отношения рп в результате перестановки, соответствующей набору к, называется обратным. Очевидно, а = (а|п). а({п—1>, ... , ар, а\1~>) g а^2), ... , а[п)) б 6 (pn 7n i тогда и только тогда, когда а'= § 2.2 Операции над отношениями 43 € рА А . Например, для бинарных отношений <, >, <, ^ (см. § 2.1, при.мер 2) справедливы соотношения <~х = > и, на- наоборот, >~х = <; точно так же <~1 = ^ и ~^~г = <. Для обра- обращения ?г-отношений выполняются следующие равенства: ((pn)~lw = р"; если то (П ?д~х = 0 (рТ1' г г (U рГГ= у (р?)-1, B.1) B.2) B.3) B.4) (Р")-1 = (р"). B.5) Докажем, например, справедливость равенства B.5). Пусть а = = (а{ ,_аР, ... , а[п))—произвольный вектор отношения (р71). Тогда р" E'), где 5' = (af, at~l\ ... , af, af). Поэтому a'g ?РЛт1 A;. Но тогда аёЧр71)^1 An и, следовательно, (р71) (a), т.е. (pn)~1E(pn)~1- Остается доказать справедливость обратного включения (pn)~1^(pn)~1. Действительно, пусть (рп)~1 (а). Тогда ^?(рп)л^, ... ,ап и *' 6 (рп)Ап А[. Отсюда следует, что р"(а'), а поэтому (pn)~1(a). Таким образом, рС") Е(р")~1 и справедли- справедливость равенства B.5) доказана. Из равенств B.3)—B.5) следует, что, если 91 (р", р™, ... , р") — выражение, построенное из отношений операций fl, U , —, то й-^рГ, ?% ... , рй = ЭЧДО)-1, (р? Справедливо также равенство (рп X ^m)~1 = (a'") X , р" С ПОМОЩЬЮ B.6) Пусть, далее, рп — отношение на множествах Аг, ... , Ап; {]'и /2i • • • > О] — некоторое подмножество множества номеров A, 2, ... , п). Операция отождествления координат S (рп) по- h ¦¦¦ П рождает отношение 0"-'+' = о(оп) на множествах А^, h ¦¦¦. н ... . Л;-,_1, Л;-2+1, ... , Aj3—i, А]3л.и ... , ^;,_i, ^;,-j-i, ••• , Ап, график которого получается из графика рА А в результате выделения множества векторов [а. = (a'1', af\ ... , а\п)) \ a[jl) == = а{}- = ар = ... = ap'jcrp7^ An с последующим вычерки- вычеркиванием в каждом а элементов ар', ар', .. . , ар). Иными словами,
44 Глава 2. Отношения. Структуры в отношении рп выделяются все векторы, в которых совпадают элементы, расположенные в столбцах с координатами ju . .. , /;, с последующим исключением «столбцов-копий», имеющих коор- координаты /2, уд, . . . , /(. Пример 2. Для отношения f5 (см. пример 1) 5 (-f0) = 0% 2, 4 где отношение О4 определяется матрицей 1„ Аг, А„ А3 0, а, О, Ъ 1, Ь, 1, с Ll, 6, 1, d] Для отношения О4 8 (О4) = ;3, где график отношения ;3 имеет вид 1, 3 с3 lt A2, Аз 0, а, 6 1, 6, с Ll, 6, d Если 1 = 2, /i = 1, U = 2, то отождествление 3 (оп) обознача- 1, 2 ется 8(рп). Очевидно, с помощью 8 (р") и перестановки координат можно произвести любое отождествление координат. Отношение 8" на множестве А называется диагональю, если его график имеет вид 8™ = (а, ... , а) для любого а б А. Диаго- Диагональю, например, является бинарное отношение = на множестве N (см. § 2.1, пример 2), как, впрочем, и на любом другом числовом множестве. Если 8 (рп)—отношение на множестве А, то 1 ... , п 8 (рп)с=8п. Кроме того, для любого отношения рп с= 5П спра- 1 п ' ведливо (р71) = рп. Операция приписывания фиктивной координаты v(pn) порож- порождает отношение О"^1 = у(р") наД множествами A, AD А.г, ... , Ап такое, что при оп (a\l\ af\ .'. . , a<n') 0n+1 (a, a[l\ af\ ..., а\п)) для любого а е А. Операция приписывания отношению рп фиктивной координаты по множеству А состоит в образовании отношения 6пы = у (рп) с графиком, который получается следующим образом: для каждого вектора Ъ.{ = (а^, а^\ .. . , а(.п>) 6 р^ _ Ап строятся векторы (а, a\l\ af\ . . . , а^>) 6 0^"^ __ Ап, полученные припи- приписыванием к вектору а; слева поочередно всех элементов мно- множества А. Например, для отношения а3 на множестве А = @, 1} с графиком 1, 0, 01 О, 1, О L0, 0, lj § 2.2. Операции над отношениями 45 в результате приписывания фиктивной (для множества А) коор- координаты получаем "О, 1, 0, 0" 0, 0, 1, О 0, 0, 0, 1 1, 1- О, О 1, О, 1, О _1, 0, 0, 1_ С помощью операции у можно производить выравнивание арностей в отношениях. Одной из наиболее важных операций над отношениями явля- является свертка де Моргана. Пусть рп—отношение на множествах Ах, Ао, . . . , Ап_х, А, а о— отношение на множествах А, Ап, Ап^,. . . ... i Ai-f-m-2- Тогда операция свертки отношений рп и ат порож- порождает отношение оп+7П~г = р'г X ат над множествами Аъ А.2, ... , Ап+т_2 такое, что Ъп+т~2 (a{l\\f\ ... , a("+m-2>) тогда и только тогда, когда найдется а б А, для которого pn(aj1), af\ . . . , af~l\ а) и ат(а, а^\ а^+1\ . . . , a{jn+m~2'>). Например, свертка отношений о" и fn (см. § 2.1, пример 6) порождает отношение 02n~2 = a"X"(n на множествах Ait . .. , Ап_2, An_i, . .. , Av график которого имеет вид Q2T1-2 А1 An—i, An—1 А, П — 1, ?г— 1, ... , П, П, ..., — 2, з, 1, 2, 2п + 2, к — 1, 2, 2, 3, 2?г ¦3, к—п, к — п, ... , к—2м -j- 3, к — 2п + 2_ График свертки а X Р бинарных отношений а, |5 на множествах А = [а, Ь, с] и В = [0, 1, 2] = С с графиками ГО, 1- 0, 2 1, 2 L2, 2J , В — а, ъ, -С, 0" 1 2 имеет вид ~а, 1 a, 2 b, 2 Ц 2J Операция свертки ассоциативна, но не коммутативна. Так, в приведенном выше примере свертка
46 Глава 2. Отношения. Структуры а<1 очевидно, не определена. Кроме того, справедливо равен- равен)- B-8> ство Пусть р — бинарное отношение на множествах А, В; а — бинар- бинарное отношение на множествах В, С. Свертка бинарных отношений р и а называется их композицией или произведением. Операция композиции бинарных отношений допускает и другие обобщения на га-арный случай (см. § 2.3). Пусть Ly, L2, L3—алгоритмические языки и т.—отношение перевода с Ly на L2, а т.'—отношение перевода с L2 на L3 (см. § 2.1). Тогда композиция т." = г. ^ г.' отношений г. и т.' также является отношением перевода с языка Ly на Ls. § 2.3. Функциональные отношения. Отображения Пусть рп — отношение на множествах Ау, А2, ... , An с графиком Рп = гAlf ... , An , a(/l)J Проекцией отношения рп на множество Aj (при любом /=1, 2, ... , га) называется множество Пр(Л (рп) = {аФ, а{?\ . . . , alJ]\ сз ^_Aj всех элементов у-го столбца матрицы р™ А . Иными сло- словами, проекция отношения рп на множество Aj — это совокупность /-х компонент всех векторов отношения р™. Сечением 5J(j) (;-_i) (j+i) (п> (pn) отношения рп по эле.мен- ai ' '" ' ai ' ai ai там a(J), . . . , a{J~l\ a(J+]\ . . . , af] называется множество всех элементов а[3) 6 Aj, для которых рп(а;\ а\\ ... , а^~ ] "<;)- а/^ , ... , al ), т. е. а(п)(?")={4 a< <i+1) , . . . , а[п))) (/ = 1, 2, . . . , в). Р смотрим множество Aj'on = {S3{i) (J-_i) у+)) (п) (рп)} сече- сечений отношения р" по всевозможным совокупностям (oll\ . . . • ¦ • х .4П. Множество Aj,'on называется фактор-множеством мно- множества Aj по отношению р". Вместо одной последовательности а';1', . . . , ар'-1', аРЧ', .... af' можно рассматривать их совокуп- совокупность X = {a\t, . . . , а?~1), а[3^1), , . . , a(f"' ] t = 1, 2, ... , А-}. § 2.3. Функциональные отношения. Отображения Тогда сечение S'1- (рп) отношения р" по совокупности X является объединением сечений отношения рп по всем последовательностям, входящим в X: и SX (P") = U ^( l a(j-l), a(j+l>, ... , a<n) (p" Пример. Пусть отношение a3 на множествах А = В = {bv, bt, b3] и С = @, 1} определяется графиком ~аъ by, О" «!, йа, О а2, Ьи 1 a2, b2, 1 _а2, 62, 0_ Пр1 (я3) = Л, Пр2 (а3) = (&!, 62}, Пр3 (а3) = С, Фактор-множество С/а3 представимо в виде Г/ 3 __ I С3 С*3 С3 С3 <?3 С3 1 EП{1 Ь;.—соответствующие сечения отношения a3, i = 1, 2; / = 1, 9 Ч4! г™ С3 1П1 Q3 Ml С3 1П1 С3 Г С3 ^, о;, Где Ouii t>^ = |Uj, Оаг, ь, = IJ- Ь "а,, Ъг = \u(i "a., b2 = ^i "а,, Ь3 = = 5а„,ь..,= 0 для множествах = {(аЛ, 6J, (a,, by)}, S% (a.3) = ^Qlt bi|J Отношение ср" на множествах Ау, . .. , Лп называется функ- функциональным, если для каждой последовательности элементов (aj1*, af\ ..., af~1)) € Ay X Л2 X • • • XinJ сечение 5"A) a(n_i) {on) содержит не более одного элемента a(."' € ^4П. Если сечение 5"(i, a(n-i) {'fn) содержит точно один элемент аИ е Ап для любой i i последователыюстп (a[1>, . .. , af ~1)) 6 -^ X • • • X ^4тг_1, то оп называется всюду определенным функциональным отпошепнем. Функциональными, например, являются отношения а3 и (З3 на множествах А = [аъ а,], В = {6Ь 6,} и С = @, 1} с графиками К V о- хл в с оз _ Ра, в, с ~ -а,, &!, lj а,, 6:, О _а2, B.9) B.10) причем отношение |53 всюду определено.
48 Глава 2. Отношения. Структуры Рассмотрим функциональное отношение ср" на множествах Аи ... , Ап. Функция F~n(X\,x2, ... , хп_1) называется связан- связанной с отношением срп, если каждая ее переменная xi принимает значения из множества Ai (i = 1, ... , п — 1), причем F9n (а\1), . . . ... , а[п~1)) = Sna{i)t a(n-i)?n Для любого набора (я(Д . . . , яГ')? 6^4, х ••• X Ап_1. В приведенном выше примере с функциональ- функциональным отношением а3 B 9) связана частичная функция Fa* (x, у), определенная на множествах А, В и принимающая значения из множества С, так что Fa= (ях, b{) = /v(a;, Ъ2) = 0, Fa=(a2, bl) = l. В то же время с функциональным отношением |53 B.10) связана функция F-2 (х, у), заданная на этих же множествах, причем F--> (au bt) = F-2 (я2, Ь.2) = 1, F';,i (au b2) = F^ (я,, 6,) = 0. Пусть о™—отношение на множествах Аи ... , Лт_и В{, р'2" — па множествах Аи ... , Ат_ъ В.2; ... ; о™__г—на множествах /115 . . . , Ат_1, Вп_1\ о" — на множествах B]t . . . , Bn_v Am. Су- Суперпозицией отношений р™, о™, ... , p7"_i, a" называется т-от- т-отношение 07П = о" (о7", . . . , p7^l_i) на множествах Аи . . . , Лт такое, что О771 (я!1', . . . , a<m)) тогда и только тогда, когда найдутся эле- элементы bf$Bu bf 6 Во, ... , bf~l) 6 Бп_д, для которых г,^;^1', я'.2), ... , a?1", 6s.) (при любом s = 1, 2, ... , п — 1), причем Gn(b{j\bf\ ... , bf~l), a?) [111]. Частным случаем суперпозиции отношений является свертка де Моргана (см. § 2.2). Если отно- отношения ср7П, ср^г, . . . , o™_v ср" функциональны и с пим связаны функции F..7n, F.7n, ... , F.m ,F.n соответственно, то суперпозиция Ti  -11—1 tp"('fin, ts, ... , ср^_1) также является функциональным отноше- отношением, причем с ней связана суперпозиция функций Fji(F.jn, t t.m Заметим, что суперпозиция всюду определен- определенфункциональных отношений также является всюду опреде- определенным функциональным отношением. Проиллюстрируем введенные понятия на одном важном классе булевых функций. Функция f (х1, ... , хп) называется булевой, если она и гее ее переменные а\. о-п принимают значения ил двухэлементного множества Е.-, = [0, 1]. Каждая н-местная булева функция связана с всюду определенным (п -\- 1)-арпы.м отношением на множестве Е2. Нап]шмер, дизъюнкция х\/у (см. § 1.2) свя.иша с тернарным отношением р3, график которого имеет ьпд г3 = гО. 0, 1, -1, 0. 1. 0. 1, 0" 1 1 1. B.11) § 2.3. Функциональные отношения. Отображения Рассмотрим суперпозицию р3 (а, |5) бинарных отношений a, p с графиками Г0, 0] Г0, 1] a?2= [l, lj- P^:, = I_l, 0j и отношения р3 с графиком B.11). Результатом такой суперпози- суперпозиции является бинарное отношение 6 = р3 (а, |5) с графиком •,-[?:!]¦ Отношения а, р\ р3 функциональны и всюду определены; с ними" связаны соответственно функции fa(x) = x, f$(x) = x, f^(x,y) = — x\jy. В то же время суперпозиция 0 = р3 (а, р) также является всюду определенным функциональным отношением, с которым связана функция j(, (х) = z\Jх = 1. Пусть <р — бинарное отношение па множествах А, В. Отноше- Отношение о называется отображением множества А в В, если ср функ- функционально и всюду определено; иными словами, для любого а 6 А сечение 5п(ср) не пусто и содержит точно один элемент sn (ср) = = Ъ б В. Элемент b = (а) о называется образом элемента а при отоб- отображении о, а элемент а—прообразом элемента b при данном отображении. Множество гсех прообразов элемента Ъ, т. е. совокуп- совокупность всех а 6 А таких, что (я) о = Ь, называется полным прооб- прообразом элемента b в А при отображении ср. Пусть ср—отображение множества А в -В, а <1> — отображение множества В в С. Композиция cpi является отображением мно- множества А в С, при котором (а) ф<Ь = ((я) <рN для любого а 6 А. Отображение с мпожества А в В называется отображением А на В, 'если каждый элемент в b 6 В имеет в А хотя бы один прообраз. Например, отображением .множества А = {а, Ь, с. d] на множество В = [[, 2, 3} является отношение а. с графиком "Я. ь, с, ц 1-1 1 2 3_ В то же время бинарное отношение |5 на множестве В с графиком 1, 1 2, 1 L3, 2J является отображением множества В в себя. Отображением мно-
50 Глава 2. Отношения. Структуры жества А в множество В является композиция <х|3 с графиком а, ь, с, d, 1-1 1 1 2_ Отображение ср множества А на множество В называется вза- взаимно-однозначным (взаимно-однозначным соответствием, см. § 1.3), если обратное отношение ср является отображением множества В на множество А. В частности, взаимно-однозначным отображе- отображением множества А на А является бинарное диагональное отно- отношение од (см. § 2.2), которое часто называют тождественным ото- отображением множества А в себя. Теорема 2.1. Отображение а множества Л па множество Б взаимно-однозначно (в этом случае множества Аи В эквивалентны) тогда и только тогда, когда <?'•? г = о а, r-l,n =- B.12) ¦где од, ов — тождественные отображения множеств А и В соот- соответственно. Действительно, пусть ср—взаимно-однозначное отображение множества А на В. Тогда по определению взаимно-однозначного отображения отношение ср также является отображением мно- множества В на А. Отсюда следует, что (а)с?» = ((а) «) ср = а; (Ъ) ср~1ср = (ф) ср) cs = 6 для любых а б А и Ъ 6 В. Таким образом, ев? = Зд, ср"» = Вд и необходимость условий B.12) доказана. Пусть выполняются условия B.12). Докажем, что отношение ср является взаимно-однозначным отображением множества .А на В. Для этого надо показать, что ср служит отображении множества /1 на В, a 'zTl — отображением множества В на А. Пусть для произвольного элемента а б А найдутся элементы Ьь Ь.2 ? В, для которых а'фх и azb2. Тогда Ъ^~1а и, вследствие аъЬ.ъ для ком- композиции ср© выполняется отношение Ь1 (ср») Ъ„. Но в силу B.12) ср 1ср = ов, откуда следует, что bl = Ь2. Таким образом, ср явля- является отображением множества А на В. хАналогпчно можно пока- показать, что отношение ср есть отображение множества В на А и, следовательно, ср является взаимно-однозначным отображением множества А на В. Тем самым доказана необходимость и доста- достаточность условий B.12). Заметим, что, если А = В, отношение ср является взаимно- взаимнооднозначным отображением множества А на себя тогда и только тогда, когда стер = ф хсг: = од. Отображения п связанные с ними понятия широко использу- используются в кибернетике. Так, в теории алгоритмов и теории авто- § 2.3. Функциональные отношения. Отображения Ы матов важную роль играют алфавитные и автоматные отображения [24], устанавливающие соответствия между цепочками входного и выходного алфавитов. В программировании к основьш понятиям адресного языка [128] относится адресное отображение, сопостав- сопоставляющее адресам ячеек памяти ЭВМ хранимую в них информацию. С адресным отображением связана штрих-операция 'а = Ъ, где а — некоторый адрес, Ъ — содержимое адреса а. Таким образом, штрих-операция—это унарная функция, областью определения которой является множество А всех адресов, а областью значе- значений— множество В всех содержимых. Штрих-функция определяет некоторое отображение множества адресов А на множество со- содержимых В, которое называется адресным. При этом каждому адресу соответствует лишь одно содержимое. В то же время об- обратное отображение может быть неоднозначным, т. е. одно содер- содержимое может находиться в нескольких адресах. В этом случае- полным прообразом содержимого является множество всех адресов, в которых оно находится. При абстрактных рассмотрениях на множество Л и В не на- накладывается никаких ограничений, так что штрих-функция может быть определена на произвольном множестве аргументов А и иметь значения в произвольном множестве В. Однако в практических приложениях оба множества ограничены и являются множествами некоторых кодов. В частности, множества А ж В могут пересе- пересекаться, причем результатом штрих-операции может быть снова, адрес. В этом случае повторное применение штрих-операции при- приводит к понятию адреса второго ранга, или фиксатора. Так, если 'а1 = а2 и а2 б А, т. е. а2 в свою очередь является адресом, то- существует такое Ь, что 'а2 =¦• Ъ. Для понятия адреса второго ранга используется следующая символическая запись: 2% = '('ai) = = 'о2 = Ъ. Аналогично вводится понятие адресов высшего ранга. Напри- Например, запись 4а = Ъ означает, что есть адреса аъ аъ as б А и 'а=а1; 'ах = а.,; 'а., = а3; 'аъ = Ь, т. е. *а = 3ai — 2а2 = 'а3 = Ъ. Будем считать Ъ адресом нулевого ранга величины Ъ. Сущест- Существование адресов высшего ранга зависит от заданного адресного отображения. Так, если В1 = 4рВ и множество адресов A1czA является объединением всех прообразов для элементов b б Вг (т. е. ас.4[ при условии, что 'а = b и b e Bt), то А± является мно- множеством адресов второго ранга. Пусть В0<^В — множество содержимых адресов, принадлежа- принадлежащих В1. Тогда существует соответствие между множествами А1 и Во, определяющее операцию двойной штриховки, которая обоз- обозначается 2а = Ь, где а 6 Аи b 6 Во. Аналогично можно выделить и соответствия, определяющие адреса высших рангов. Все они однозначно зависят от исходного- адресного отображения А на В.
52 Глава 2. Отношения. Структуры Техника отображения используется также в формализмах, ориентированных на описание систем программирования при уста- установлении соответствия между синтаксисом и семантикой языков программирования (см. § 6.4, 6.7). § 2.4. Отношения эквивалентности и порядка Рассмотрим свойства бинарных отношений, определенных на не- некотором множестве А. Бинарное отношение р на множестве А называется рефлексив- рефлексивным, если ара для любого а 6 А. Иными словами, отношение р рефлексивно, если для его графика рд выполняется включение 8аЕРл> гДе Зл — диагональное отношение на множестве А. Пусть, например, Ах = {а, Ь, с]. Тогда отношение а с графиком B.13) а, ъ, с, а, а, ь, с, а Ъ с b с а а рефлексивно, в то время как отношение C с графиком а, ъ, а, ъ, а. а Ъ Ъ с с B.14) не рефлексивно. Отношение р на множестве А называется транзитивным, если из аоЪ и Ърс следует аре для любых элементов а, Ь, с 6 А. Иными ¦словами, отношение р транзитивно, если для композиции z = рр выполняется включение тд ЕРд- Транзитпвно, например, отношение Р с графиком B.14), так как композиция имеет график РР = р и, следовательно, выполняется включение (РР)Д ЕР4- ^ т0 же (||)д ЕР4 т0 же время отношение а с графиком B.13), очевидно,'не тран.штпвно, так как (Ь с) g a A . так как (Ь, с) g a Отношение о на множестве А называется симметричным, егли из аоЪ следует Ъра для любых а, Ъ 6 А. Иными словами, отноше- отношение р симметрично, если рд = р, где о— отношение, обратное р. Симметрично, например, отношение я с графиком B.13), в то время как отношение р с графиком B.14) не симметрично. § 2.4. Отношения эквивалентности и порядка 53 Отношение р на множестве А называется антисимметричным, если из арЪ и Ъра следует а = Ъ для любых а, Ъ 6 А. Иными сло- словами, отношение о антисимметрично, если рд {] pj1 cz Зд. Антисим- Антисимметрично, например, отношение р с графиком B.14), тогда как отношение а с графиком B.13), очевидно, не антисимметрично. Если бинарное отношение р удовлетворяет любому из пере- перечисленных четырех свойств, то обратное отношение р-1 обладает этим же свойством. Действительно, если одЕ Рд. т0 °д == ^д^Е Рд1- Далее, из (рр)АЕ Рд следует (р^р^ =(рр)А1Е Рд1- Таким образом, операция обращения (см. § 2.2) сохраняет свойства рефлексив- рефлексивности и транзитивности, а также симметричности и антисиммет- антисимметричности, что непосредственно следует из определения этих свойств. Бинарное отношение р на некотором непустом множестве А, удовлетворяющее свойствам рефлексивности, транзитивности и сим- симметричности, называется отношением эквивалентности. Очевидно, если р—отношение эквивалентности на множестве А, то обратное отношение р также является отношением эквивалентности на данном множестве. Пример 1. Отношением эквивалентности является отношение равенства на некотором числовом множестве и вообще диагональ- диагональное отношение од на любом непустом множестве А. Пример 2. Пусть F (Щ — множество всех слов конечной длины в алфавите 3? = {аи а2, ... , ап). Отношением эквивалент- эквивалентности на множестве F (Щ является отношение = такое, что s21 (где | s длина S! = s2 тогда и только тогда, когда слова s б F (%)) для любых slt s2€^Ci). Пример 3. Отношением эквивалентности на множестве F (Щ является a i ih, отношение ~ >такое> что для любой пары s^ = jr справедливо отношение s4 ~} тогда и только тогда, когда в словах st и Sj совпадают начальные символы: аи = ah. Отношение эквивалентности на множестве А связано с разби- разбиениями этого множества на попарно-непересекающиеся подмно- подмножества (см. § 1.2). Пусть р—некоторое отношение эквивалентности на непустом множестве А. Рассмотрим фактор-множество А о = [Sa (о) | а 6 А). Сечение Sa (p) назовем смежным классом элемента а по отношению р. Покажем, что фактор-множество Ah по отношению эквивалент- эквивалентности р является разбиением множества А на смежные классы: U Sa(?)=A, B.15) причем различные смежные классы не пересекаются. Действи.
54 Глава 2. Отношения. Структуры тельно, отношение р рефлексивно, и поэтому a^Sa(p), откуда следует справедливость равенства B.15). Пусть, далее, Sa (p), Sb (p) — различные смежные классы. До- Допустим, что найдется элемент с б А такой, что с € (Sa (о) [}Sb (p)). Тогда из с 6 Sa (р) следует аре. В то же время из с е Sb (p) сле- следует Ьрс. Но отношение р симметрично и транзитивно, поэтому наряду с аре справедливо срЪ, а значит, и арЪ. Вследствие тран- транзитивности р из apb следует Sa(p)^Sb(p). В то же время из Ъра следует Sb(p)zpSa(p). Таким образом, Sa(p) = Sb(p) и различные смежные классы не пересекаются, т. е. множество Alp всех смежных классов образует разбиение множества А. Итак, каждому отношению эквивалентности на множестве А соответствует разбиение этого множества на смежные классы по данному отношению эквивалентности. Нетрудно показать, что и, наоборот, каждому разбиению R (А) = {Аъ А2, .. . , Ah) множест- множества А соответствует отношение эквивалентности о на А, смежные классы которого совпадают с классами данного разбиения. Иными словами, ааЪ тогда и только тогда, когда элементы а, Ъ принад- принадлежат одному и тому же классу разбиения а, Ъ б А{ (где i=l, 2, ... , к). Очевидно, определенное таким способом отношение а рефлексивно, симметрично и транзитивно, т. е. является отно- отношением эквивалентности. Заметим, что если построить разбиение Alp по некоторому отношению эквивалентности р на множестве А, а затем рассмотреть отношение эквивалентности, соответствующее данному разбиению, то снова получится отношение р. И, наоборот, если по некоторому разбиению R (А) последовательно осуществить переход к соответ- соответствующему отношению эквивалентности р, а затем к определенному им разбиению Alp, то Alp = R (А). Справедлива следующая теорема. Теорема 2.2. Каждому отношению эквивалентности на мно- множестве А соответствует единственное разбиение R (А) данного множества, и, наоборот, любому разбиению множества А одно- однозначно соответствует некоторое отношение эквивалентности на А. Теоремой установлено взаимно-однозначное соответствие между отношениями эквивалентности на множестве А и разбнеппямп данного множества. Так, приведенным выше отношениям экви- эквивалентности на множестве F (Щ (см. примеры 2,3) соответствуют следующие разбпенпя данного множества: эквивалентности = — разбиение F {Щ'щ = {S<j\ щ | s ? F (&))> где 5|Si =— множество всех слов, равных по длине слову s € F (Щ; эквивалентности (~ — разбиение F (Щ'~г) = {5а. (~0) | а; б Щ, где Sa. ( ~) —множество всех слов с начальным символом а{ 6 91 Связь отношений эквивалентности и разбиений множеств можно использовать при определении понятия кардинального числа § 2.4. Отношения эквивалентности и порядка 55 (см. § 1.5), если считать, что два множества эквивалентны тогда и только тогда, когда они равномощны. В этом случае каждому классу эквивалентности соответствует определенная мощность (кар- (кардинальное число), причем некоторому классу разбиения конечных множеств соответствует натуральное число—число элементов в множествах из данного класса. Пусть р—отношение эквивалентности на множестве А; А1р = = [Sa (р) | а б А)—фактор-множество множества А по данному отношению эквивалентности. Отображение множества А на фактор- фактормножество Alp, сопоставляющее каждому эледгенту а б А смежный класс 5а(р), которому принадлежит элемент а, называется естест- естественным отображением множества А на фактор-множество Alp'. Рассмотрим отображение ср множества А на множество В. Покажем, что отображению ср соответствует вполне определенное отношение эквивалентности о на множестве А. Положим, что для элементов а, Ъ б А аЛ тогда и только тогда, когда (а) ср = (Ъ) ср. Сопоставив каждому элементу а' ? В его полный прообраз при отображении ср, получим взаимно-однозначное отображение 6 мно- множества В на фактор-множество А/о, причем композиция срб сов- совпадает с естественным отображением множества А на фактор- фактормножество А/о. Отношения эквивалентности и связанные с ними классы раз- разбиений используются, в частности, при переводе с одного входного языка на другой для выделения семантически равносильных про- программ (см. § 6.5). Бинарное отношение р на некотором множестве А, удовлетво- удовлетворяющее свойствам рефлексивности, транзитивности и антисим- антисимметричности, называется отношением частичного порядка. П р и м е р 4. Отношениями частичного порядка являются отно- отношение <, а также обратное отношение ^, обычно определенные на некотором числовом множестве. Пример 5. Отношением частичного порядка является также диагональное отношение ЬА на любом непустом множестве А — = {а,, а,, . . . , аг\. Пример G. На множестве F (91) всех слов конечной длины в алфавите 21 частичным порядком является отношение < такое, Р(Щ что Si a So тогда и только тогда, когда | sx | < | s21, где sit s2 € F F№) ' Пример 7. Отношением частичного порядка на множестве F (91) является отношение 5Е: такое, что Si^So тогда и только Р(Щ F(9i) тогда, когда слово sL является по деловом слова s2, т. е. s2 = s's^', где su So, s', s" ?F{&). Пример 8. Пусть 3ft (A)—множество всех подмножеств не- некоторого множества А. Отношение включения с: п обратное отно-
56 Глава 2. Отношения. Структуръь шение ^ являются отношениями частичного порядка на множестве Ж (А). Например, отношение с: является отношением частичного порядка на множестве 9K[FCl)] всех языков в алфавите St. Отношение порядка на некотором непустом множестве А сим- символически записывается < или < (если множество А подразу- .мевается): а < Ъ читается «элемент а предшествует элементу bi> (А) или nb следует за а (а, Ъ б А)ь. Равнозначными считаются записи Ь^а и Ъ~^а (если множество А подразумевается). Если для отношения частичного порядка < на множестве А справедливо а < Ъ, причем а ФЪ, то записывают также а < Ъ или Ъ > а. Исходя из отношения <, на множестве /1 можно определить отношение < такое, что а < b тогда и только тогда, когда а < Ъ, а Ф Ъ. Отношение < на множестве А называется отношением строгого порядка, оно удовлетворяет свойству транзитивности (а также сильной антисимметричности), состоящему в том, что apb п Ьра не могут одновременно выполняться ни для каких а, Ъ б А. Отношение < на множестве А, в свою очередь, однозначно определяет связанное с ни.м отношение < на данном множестве. Часто используются также отношения квазипорядка, удовле- удовлетворяющие свойствам рефлексивности и транзитивности. Например, отношением квазипорядка является отношение ?, определенное на множестве формальных языков, в частности языков программиро- программирования, так что языки L и L' находятся в отношении u, Lr.L', тогда и только тогда, когда существует перевод с языка L на язык U (см. § 2.1). Множество А с определенным на нем отношением частичного порядка р называется частично упорядоченным. Так, частично упорядоченными являются множества, рассмотренные в примерах 4—8. Элементы a, b e А такие, что apb или Ьра, называются сравнимыми элементами частично упорядоченного множества А. Заметим, что в частично упорядоченное множество могут входть п несравнимые элементы. Так, в примере 5 (при г > 1) любая пара различных элементов из множества А несравнима. Частично упорядоченное множество, в котором каждая пара элементов сравнима, называется линейно упорядоченным множест- множеством плп цепью. Например, линейно упорядоченными являются множество N всех натуральных чисел, множество V всех действи- действительных чпеел с естественно определенным на этих множествах отношением <. Множества в примерах 5—8 частично (но не лп- нейно) упорядочены. Пусть А'—подмножество множества А, А'^А; о—бинарное отношение, определенное на множестве ^4. Отношение о на .мно- .множестве А естественно пндуцпрует бинарное отношение р на мно- множестве А': если a, b 6 А', та alb тогда п только тогда, когда apb § 2.4. Отношения эквивалентности и порядка 57 в множестве А. Иными словами, рА,= рА[}(А' X А'). Очевидно, если р—отношение эквивалентности (частичного порядка) на множестве А, то Ъ—также отношение эквивалентности (соответ- (соответственно частичного порядка) на множестве А\ Рассмотрим множество Ш (А2) всех бинарных отношений, опре- определенных на некотором множестве А. Пусть <—бинарное отношение на множестве Ж (А2) такое, что для отношений р, о б 9К (А2) р < о тогда и только тогда, когда из apb следует ааЪ (а, Ъ ? А). Иными словами, о < о, если для графиков рд, зд выполняется включение рдЕг13д- Множество 50? (А2) частично упорядочено относительно определенного указанным способом отношения <. Пусть Т (А2) с: Ш (А2) — совокупность всех отношений экви- эквивалентности на множестве А. Определенная выше частичная упо- упорядоченность множества 9К (А2) индуцирует частичную упорядо- упорядоченность множества Т (А2), причем если характеризовать отношения эквивалентности соответствующими им разбиениями множества А, то о < а означает, что разбиение А/о = {Sa (р) ]а ? А) болеэ дробпо, чем разбиение Ala = [Sa (а) | а б А). Точнее, для каждого смежного класса Sa (a) 6 А/а существует разбиение R (Sa (о)) = {Sa- (p) | а' 6 ? Sa C)] ЕЕ -4/р- В этом случае разбиение А/о является подразбие- подразбиением разбиения А/а (см. § 1.2). Частично упорядоченные множества Ах и А.2 называются изо- изоморфными, если существует взаимно-однозначное отображение ср множества А, на множество А2 такое, что а^Ь тогда и только (-4.) тогда, когда (а) ср ^ (Ь) ср, где a, b € At. Отображение ср называ- называется изоморфным отображением множества Ах на множество А,. Частично упорядоченные множества Av Аг называются ин- инверсно изоморфными, если одно из них изоморфно другому, взятому с обратной частичной упорядоченностью. Иными словами, существует взаимпо-однозначное отображение ср множества Ау на множество А„ такое, что а^Ь тогда и только тогда, когда (а) о > > ф) ср. Частично упорядочепиое множество А изоморфно вкла- вкладывается в частично упорядоченное множество А', если А изо- изоморфно подмножеству В^-А', частичный порядок в котором индуцирован частичным порядком множества А'. Возвращаясь к примеру 8, заметим, что любое частично упо- упорядоченное множество А изоморфно вкладывается в некоторое множество Ш(В), причем в качестве последнего может быть вы- выбрано множество 9R (А) всех подмножеств А, частично упорядо- упорядоченное по отношению включения [66]. Покажем, что множество А изоморфно подмножеству U = {Ua | а 6 А) с:® (А), где иа<^А — подмножество всех элементов а' таких, что а' ^.а. Действительно, отображение ср множества А на множество U такое, что (а) ср =
58 Глава 2. Отношения. Структуры = Ua, взаимно-однозначно, так как из Un = Ub (где Ua = (а) гр, Ub = (Ъ) я, a, b б А) следует а б Ub и b Ч Ua. Это в свою очередь означает, что а^Ь и bs^.a, т. е. а = Ъ. В то же время из а^б следует Ua^Ub, так как при любом х^а х^Ь. Наоборот, из Ua<=Ub следует aeUb, и поэтому а^Ь. Таким образом, мно- множество А изоморфно подмножеству U<p_$R(A), следовательно, А изоморфно вкладывается в множество Ш(А). §2.5. Вполне упорядоченные множества. Структуры Пусть А—частично упорядоченное множество; В — некоторое непустое подмножество .множества А, В с: А. Верхней гранью J3c: А в множестве А называется элемент а 6 А такой, что Ь^а для любого b 6 В. Элемент а—наибольший в множестве А, если а — верхняя грань самого множества /1. Соответственно элемент а 6 А называется нижней гранью Вс^А в множестве/1, если а-^b для любого b б В. Элемент а— наименьший в множестве А, если а—¦ нижняя грань самого А. Элемент т ? А называется максимальным в множестве А, если не существует b ? А такого, что т < Ъ. Соответственно элемент т ? А минимальный в множестве А, если не существует b б А такого, что b < т. Очевидно, наибольший элемент множества А является единственным максимальным элементом данного мно- множества; точно так же наименьший элемент множества А—един- А—единственный минимальный элемент в данном множестве. Заметим, что множество А может не иметь наибольшего (наименьшего) элемента и в то же время иметь один или несколько максималь- максимальных (минимальных) элементов. Пример 1. Множество 581 (А) всех подмножеств некоторого непустого множества А (см. § 2.4, приме]) 8) имеет наименьший элемент — множество 0 и наибольший элемент — само мно- множество А. П р и м е р 2. Множество N всех патуральных чисел в его ес- естественной упорядоченности имеет наименьший: элемент (число 1) п не имеет наибольшего элемента. Пример 3. Множество Z всех целых чисел с естественной упорядоченностью не имеет наименьшего, наибольшего, а также минимального и максимального элементов. П р и м е р 4. В непустом множестве А = {аи . . . , аг) (г > 1) с диагональным отношением порядка (см. § 2.4, пример 5) каждый элемент а{ 6 А является одновременно минимальным и максимальным в данно.м множестве. Наибольшего и наименьшего элементов в мно- множестве А нет. Пример 5. В множестве всех непустых цепочек из F (Щ (см. § 2.4, пример 6) минимальной является каждая одноэлемент- § 2.5. Вполне упорядоченные множества. Структуры 59 ная цепочка, в то же время наименьшего, наибольшего и макси- максимального элементов в данном множестве нет. Линейно упорядоченное множество А называется вполне упо- упорядоченным, если каждое непустое подмножество Вс^А имеет наименьший элемент относительно данной упорядоченности. При- Примером упорядоченного множества может служить множество N всех натуральных чисел в их естественной упорядоченности. В то же время множество Z всех целых чисел, также взятое в его естест- естественном порядке, не является вполне упорядоченным, так как любое бесконечное подмножество отрицательных чисел B^Z, очевидно, не имеет наименьшего элемента. Для каждого элемента а 6 А произвольного вполне упорядо- упорядоченного множества А, который не является наибольшим в данном множестве, существует единственный элемент Ъ € А такой, что а-^Ь, причем из а^с следует Ь^с для любого с 6 А. Элемент Ъ в этом случае называется непосредственно следующим за элементом а, элемент а — непосредственно предшествующим элементу Ъ. Для частично упорядоченных множеств справедливы следую- следующие утверждения. Теорема Цермело. Всякое множество можно вполне упорядочить. Теорема Цермело эквивалентна лемме Цорна, применяемой в различных областях общей алгебры. Лемма Цорна. Если в произвольном частично упорядоченном множестве А любая цепь имеет верхнюю (нижнюю) грань, то А имеет максимальный (минимальный) элемент1. Утверждение U относительно элементов некоторого вполне упорядоченного множества А можно доказать, используя транс- фннитиую индукцию, которая является естественным обобщением известного метода математической индукции. Суть этого обобще- обобщения состоит в следующем. Базис. Утверждение U выполняется для наименьшего эле- элемента множества А. Индукционный шаг. Если утверждение U выполняется для любого элемента Ъ < а, то это утверждение справедливо также для элемента а. Пусть выполняются условия базиса и индукционного шага. Тогда можно заключить, что утверждение U истинно для произ- произвольного элемента х? А. Допустим противное: пусть в множестве А найдутся элементы, для которых не выполняется утверждение U, и .Bcz A — совокупность всех таких элементов. Множество А вполне упорядочение, и, следовательно, подмножество ВС-А имеет наимень- наименьший элемент а ? В. Из справедливости базиса следует, что а не является наименьшим элементом в множестве А. Тогда утверждение 1 Теорема Цермело п лемма Цорна равноспльны акспоме выбора, а также теореме Хаусдорфа (см., например, [66]).
60 Глава 2. Отношения. Структуры U выполняется для любого элемента Ъ б А такого, что Ъ < а. Однако по индукционному шагу утверждение U должно выпол- выполняться и для элемента а, что противоречит предположению. Пусть А — частично упорядоченное множество с отношением порядка ^. Отношение ^-1 = ^ (обратное отношению ^) также является отношением частичного порядка на множестве А (см. § 2.4). Элементы множества А по отношению ^ образуют частично упо- упорядоченное множество А*, двойственное множеству А. Очевидно, А** = А. Пусть G — некоторое высказывание о частично упорядоченном множестве А. Если в G всюду заменить знак ^ знаком ^, то получится новое высказывание G* о частично упорядоченном мно- множестве А*. Высказывания G* и G называются двойственными. Например, понятия верхней грани, наибольшего и максимального элементов в множестве А двойственны соответственно понятиям нижней грани, наименьшего и минимального элементов в мно- множестве А*. Теорема 2.3. Пусть U — некоторое утверждение, доказанное для частично упорядоченного множества А. Тогда справедливо и двойственное утверждение U* относительно частично упорядо- упорядоченного множества А*. Действительно, пусть в частично упорядоченном множестве А* выполняются условия утверждения U*. Тогда в двойственном частично упорядоченном множестве А** = А выполняются условия утверждения U** = U, а значит, и заключение утверждения U. Следовательно, в множестве А* выполняется заключение утвержде- утверждения V*. Используя принцип двойственности, для обоснования истин- истинности двойственного утверждения необходимо в доказанном утвер- утверждении заменить двойственными все высказывания и понятия, относящиеся к частичному порядку, не изменяя остальных. Пусть В cz A — непустое подмножество частично упорядочен- упорядоченного множества А. Верхним конусом 5Д множества В называется совокупность всех верхних гранен данного множества, точной верхней гранью Б с: А в множестве А — элемент а 6 ВЛ такой, что as^b для любого b 6 Вх. Двойственным образом определяются понятия нижнего конуса В4 .множества В (совокупность всех ниж- нижних граней BczA) п точной нижней грани множества В (элемент а б ?? такой, что а^Ъ для любого &6-Bv). Точные верхняя п нижняя гранп множества Б с:/1 в частично упорядоченном мно- множестве А обозначаются символами supA_B и inf_4.B соответственно (пли sup В, ml В, если множество А подразумевается). Перечислим некоторые свойства sup В и ml В в частично упо- упорядоченном множестве А. 1. Пусть В = [а, Ъ) <=А, где а < Ъ. Тогда sup В = Ъ, inf В = а. 2. Пусть В, С —непустые подмножества множества А, причем § 2.5. Вполне упорядоченные множества. Структуры 61 В^С. Если существуют sup .В и sup С (inf Б и inf С соответст- соответственно), то sup J3^ sup С (inf В ^ inf С). Пусть В = IJ Вх, где Ба — подмножества частично упо- упо3. рядоченного множества А. Если существуют sup Б и sup Ба (inf Б' и тГБа) для любого а, то sup Б = sup (sup Ba) (inf Z? = = inf {inf Б,]). Действительно, пусть а = sup Б, a=l = sup5a для любого а. Тогда а^-Ъа для любого Ьа б Ва и, следовательно, а~^аа для любого а, т. е. a ? {я*}4- Пусть, далее, а' б [а^. Тогда а'^ аа для любого аи, следовательно, а'^Ъа для всех 6а б Ба. Это озна- означает, что а'~^Ъ для всех Ь 6 Б. Таким образом, а'~^а, т. е. sup В = а = sup {aa] = sup {sup Д,}. Для точных нижних граней утверждение доказывается двойственным образом. 4. Пусть Л' — непустое подмножество частично упорядочен- упорядоченного множества А. Как отмечалось (см. § 2.4), частичный порядок множества А индуцирует частичный порядок в множестве A'czA,- поэтому множество А' также частично упорядочение. Если В<^А' и существует a = sup4i3, гриче.-.г a б Л', то a = su])A,B. Анало- Аналогично из существования а = infA В такого, что а б А', следует а = inf., Б. Обратное утверждение, вообще говоря, неверно. Из существо- существования supA, Б не следует существование supA5. Более того, точные- верхние грани supA В и supA, Б могут существовать и не сов- совпадать. Например, пусть А = {а, Ь, с, d), А' = {а, Ь, с), причем на множестве А задано отношение частичного порядка с графиком B.16). Тогда для подмножества В = [а, Ь} с: A' cz A supA,B — c, в то время как supA5 не существует. Если множество А упорядочить по отношению частичного порядка < с графиком <а^> ^а, при- причем (d, с) 6 <4, то sup4 В = d Ф sup4, В = с. Элементы а, Ъ g А (при а^Ь) определяют в частично упоря- упорядоченном множестве А подмножество [а; Ъ] такое, что х 6 [с; Ъ\ тогда и только тогда, когда а^х^Ь. Подмножество [а; Ъ] <^А называется интервалом частично упорядоченного множества А. Очевидно, каждый интервал содержит определяющие его элементы а, ъ, с, d, а, ь, а, Ь. а Ъ с d с с d d
62 Глава 2. Отношения. Структуры a, b ? [а; Ь] — концы этого интервала. Интервал, состоящий из своих концов [а; Ъ] = {а, Ь), называется простым. Частично упорядоченное множество А может быть задано в виде структурного графа, в котором элементы данного множества изо- изображены точками. Точка а соединяется с точкой Ъ, если [а; Ь] — простой интервал. При этом элемент Ъ располагается выше эле- элемента а (а, Ъ б А). Так, в приведенном выше примере множеству А, частично упорядоченному по отношению ^, соответствует струк- структурный граф, изображенный на рис. 12. Структурный граф этого же множества, частично упорядоченного по отношению < , показан на рис. 13. Структурные графы используются при описании строения множества подалгебр в универсальных алгебрах (см. § 3.3, 3.4) а также в алгебрах Поста и их модификациях, связанных с изу- изучением преобразований на абстрактных регистрах (см. § 4.3, 4.4). Подобные конструкции (деревья вывода) применяются при опи- описании синтаксической структуры правильных цепочек формальных языков (см. гл. 5,6). Частично упорядоченное множество S называется структурой или решеткой, если для любой пары элементов a, b ? S сущест- существуют точная нижняя грань infsja, b) и точная верхняя грань sups(a, b) [6]. Пример 6. Множество N всех натуральных чисел, упорядо- упорядоченное по возрастанию, является структурой. Причем для любой пары чисел a, b ? N, где as?C b, infN [a, b) = a, supN [а, Ь) — Ъ. Пример 7. Пусть С = sL <=¦ s2 <= • • • с: st с: ... — цепь F(%) FCt) Р{Щ Р(Щ в частично упорядоченном множестве F (Щ с отношением порядка с (см. § 2.4, пример 7). Цепь С является структурой, причем для любой пары слов s, s' 6 С таких, что s ^ s', infc{s, s'} = s, SUpc{s, Я'} = 8'. Пример 8. Множество 9Й (А) всех подмножеств некоторого непустого множества А, частично упорядоченное по отношению § 2.5. Вполне упорядоченные множества. Структуры включения с (см. § 2.4, пример 8), является структурой. При- Причем infgjj^) {Av A2] = А1 Л Аг, sups5jj(A) {Аи А2] = Аг[} А2 для лю- любых Аг, А^с^А. В частности, структурами являются множество 9R (А2) всех бинарных отношений на множестве А, а также мно- множество Ш[Р(Щ] всех языков в алфавите %. Понятие структуры может быть определено также с по- помощью системы аксиом, которым должны удовлетворять бинар- бинарные операции V) Л [66]: af\a=a, a\Ja = a, B.17) a\jb = b\Ja, B.18) ( (а\/Ь)\/с = а\/(Ь\/с), B.19) аА(а\/Ь) = а, а\/(аАЪ) = а. B.20) Для произвольной структуры S точные нижнюю и верхнюю грани условимся обозначать mfg (a, b] = a f] b, supg {о, Ь) = а [} Ъ для любых a, b ? S. Покажем, что произвольная структура удов- удовлетворяет приведенным выше аксиомам. Справедливость аксиом B.17), B.18) непосредственно следует из определения точных нижней и верхней граней: infs {а, а) = а, sups {а, а} = а; infg {а, Ь) = infg {b, a), sups {а, b] — supg {b, a). Докажем справедливость аксиомы B.19). Пусть {а[\Ъ) [}с = d, тогда d^.(a[\b) ж d^c, a m d^.a()b следует d^a и d^b. Но яз d^.b и d^c следует, что d^b[]c. Кроме того, d^ar и поэтому d < a f] (b f) с). Значит, (a f] b) f] с < a (~| (b f| с). Аналогично нетрудно показать, что a {]{b f]c) ^ (a fjft) fjc. Таким образом, (a f|b) f|c = a [\(b f\c). Справедливость аксиомы (a[J^)Uc = aLl U(^UC) доказывается двойственным образом. Остается доказать справедливость аксиомы B.20). Пусть a П (a U Щ = q. Тогда q^.a. С другой стороны, вследствие реф- рефлексивности отношения частичного порядка a^a, кроме того, a^.a\Jb. Следовательно, a — нижняя грань элементов а и a\jb. Flo q — точная нижняя грань и поэтому a^q, таким образом, a = q. Справедливость аксиомы a[}{a{]b) = a доказывается двой- двойственным образом. Пусть теперь задано множество S с операциями Л, V > которые удовлетворяют аксиомам B.17)—B.20). Для произвольных эле- элементов a, b 6 S из аАЪ = а следует a\jb = Ъ п наоборот, так что соотношения a\/b = b B.21) одновременно или выполняются или не выполняются в множестве S. Действительно, пусть аАЪ = а. Тогда ayb = (aAb)\jb, откуда в силу аксиом B.18), B.20) a\/b = b\/(bAa) = b. Наоборот, из a\/b = b следует, что aAb= aA(a\jb) = а.
Глава 2. Отношения. Структуры Определим на множестве б1 отношение sj так, что а^Ь тогда и только тогда, когда для элементов a, b a S справедливы соот- соотношения B.21). Очевидно, отношение ^ на множестве является отношением частичного порядка. Действительно, вследствие акси- аксиомы B.17) отношение ^ рефлексивно, a^La. Отношение ^ анти- симдштрично, так как из a^iii^a следует а/\Ъ = ажЪ/\а = = Ъ, но вследствие аксиомы B.18) а/\Ъ = Ъ/\а и поэтому а = Ъ. Наконец, пусть а^Ъ и Ъ^с. Тогда а/\Ь — а, Ь/\с = Ьш, значит, а/\с = (а/\Ь)/\с. Применив аксиому B.19), получим а/\с = = (а/\Ь)/\с — аА(Ь/\с) = а/\Ь = а, откуда а^.с и отношение^ т],'анзитивно. Покажем теперь, что для любых а, Ъ б S а/\Ъ = а [\Ъ и а\/Ъ — = a U Ъ, т. е. а/\Ъ и а\/Ъ являются точными соответственно нижней и верхней гранями элементов а, Ъ в множестве S. Дейст- Действительно, пг{а/\Ъ)/\а=.а/\(Ъ/\а) = а/\(а/\Ъ) = (а/\а)/\Ъ — а/\Ъ следует, что а/\Ь^а. Аналогично a/\b^Lb. Следовательно, а/\Ъ— нижняя грань элементов а, Ъ. Покажем, что a/\b = infs {a, Ь] = = a f] Ъ. Пусть с 6 S — некоторая нижняя грань элементов а, Ъ. Тогда с^а, с^Ъ, т. е. с/\а = с и с/\Ь = с. Но с/\(а/\Ь) = = (с f\a) f\b = с /\Ъ — с и, значит, с^а/\Ь. Двойственным образом можно показать, что ayb = sups [а, Ъ] = а[} Ъ для любых а, Ъ 6 S. Таким образом, справедливо следующее утверждение. Теорема 2.4. Множество S с бинарными операциями /\, V тогда и только тогда является структурой, когда операции Л. V удовлетворяют аксиомам B.17) — B.20). Структуры S и S' называются изоморфными, если существует взаимно-однозначное отображение ср структуры S на структуру <5" такое, что для любых элементов а, Ъ 6 S выполняются равенства (аПЬ)ф = («)<РП(Ь)ф, (аиЬ)Ф=(а)ф1НЬ)ф. B-22) Отображение ср называется изоморфным отображением структуры S на структуру S'. Теорема 2.5. Структуры S и S' тогда и только тогда изо- изоморфны, когда они изоморфны как частично упорядоченные мно- множества. Доказательство. Пусть структуры S и <5" июморфны в смысле прнзеденного выше определения, т. е. для некоторого взаимно-однозначного отображения сг структуры S на S' выпол- выполняются равенства B.22). Если а, Ъ € S, причем а^Ь, то а[\Ъ = а и (а) ф f] (&) ф = (а) ср, откуда следует (а) » ^ F) ср. Учитывая S' взаимную однозначность отображения ср, нетрудно показать, что из (а) о ^ (Ъ) ср следует а^Ъ. Обратно: если структуры S и S' ' S' S изоморфны как частично упорядоченные множества, то они изо- изоморфны в смысле-приведенного выше определения. Покажем, что § 2.5. Вполне упорядоченные множества. Структуры 65 для любых a, b ? S (a f\b) ср = (а) ср f) (b) ф, где » — изоморфное отображение частично упорядоченного множества S на <5" (соотно- (соотношение (a U b) 's = (а) ф11 Ф) Ф доказывается двойственным образом). По определению точной нижней грани (a f] Ъ) ^ а и (а (~| Ь) ^ Ь. s s Тогда (a f) b) ср ^ (а) о п (a f] Ъ) ср ^ F) ср. Далее, для любого эле- S' ' S' .мента с' € 6" такого, что с' ^ (а) ср и с' ^ (Ъ) ср, в силу взаимной S' S' однозначности отображения ср найдется элемент с € S такой, что (с)» = с', причем c^La и c^Lb, но тогда с^.а(]Ь и поэтому s s s с' ^ (a f) Ъ) ф. Таким образом, (а |~] 6) ср = (а) ср П F) ср. S' Частично упорядоченпое множество 6" называется полной струк- структурой, если для любого непустого подмножества Вс5 в мно- множестве S существуют точные нижняя и верхняя грани, которые, как и в структурах, обозначаются inL5= f] a, supQJB= П a. Очевидно, любая полная структура является структурой. Так, пол- полными структурами являются множества Ж (А), ?ЙD2), $ffi[FEt)] (см. пример 8). В то н^е время не любая структура является полной структурой. Так, множество ./V всех натуральных чисел является структурой (см. пример 6) и не является полной структурой, поскольку любое бесконечное подмножество множества N не имеет точной- нижней грани. Точная нижняя грань всего множества S называется нулем полной структуры, 0 = f] а, а точная верхняя agS грань множества S — единицей данной структуры, 1 = (J а- Оче- нндно, элементы 0 и 1 являются соответственно наименьшим и наибольшим элементалш множества S в смысле его частичной упорядоченности. Для 0 и 1 справедливы следующие соотношения: О [\а = 0, 1 Пя = я, UU а = а, 1 |J a = 1. Разумеется, элементы О и 1 (или один из них) могут быть не только в полных струк- структурах (см. пример 2). Линейно упорядоченное множество йд^а!^ ••• ^ ап, являю- являющееся подмножеством некоторого частично упорядоченного мно- множества А с элементами 0 и 1, называется композиционным рядом, если а0 = 0, ап = 1 и все интервалы [ai_b а{] (г = 1, ... , п) простые. Число п называется длиной композиционного ряда. Теорема 2.6. Частично упорядоченное множество А является полной структурой тогда и только тогда, когда в нем есть единичный элемент и для любого непустого подмножества В<^А существует точная нижняя грань тЦ В = f] a. Достаточно показать, что для любого непустого подмножества Вс,4 в множестве А существует точная верхняя rpaHbsupA5 = 3 s-i
66 Глава 2. Отношения. Структуры = U а. Рассмотрим верхний конус ВА, состоящий из всех верхних граней множества В. Очевидно, ВА непусто, так как в него входит единичный элемент, который является верхней гранью любого подмножества. Но по условию теоремы существует элемент Ъ = = Г] а, который и является точной верхней гранью подмножества в<=л. В силу принципа двойственности частично упорядоченное мно- множество А тогда и только тогда является полной структурой, когда в нем есть нулевой элемент и для любого непустого под- подмножества В<^А существует точная верхняя грань supAS = f] a. В аксиомах B.17)—B.20), определяющих структуру S, операции V, Л связаны лишь аксиомой B.20). Однако существуют струк- структуры с более тесной связью операций Л, V- К последним отно- относятся так называемые дистрибутивные структуры, в которых выполняется аксиома дистрибутивности B.23) (a\/(b/\c)) = (a\/b)A(a\/c). Например, дистрибутивными являются структуры Ж (А), $Ю (А2), Ж [F (Щ] (см. пример 8). Дистрибутивная структура S с элементами 0 и 1 называется булевой структурой или булевой алгеброй, если для любого элемента а 6 S существует элемент а б S такой, что а/\а = 0 и а\/а= 1; элемент а называется дополнением элемента а в струк- структуре S. Структура Ж (А) является булевой структурой, так как для любого подмножества В^А существует теоретико-множест- теоретико-множественное дополнение В^А. В частности, булевыми структурами являются множество Ж (А2) всех бинарных отношений на множест- множестве А и множество 5)? [F C1)] всех языков в алфавите 31. ГЛАВА 3 УНИВЕРСАЛЬНЫЕ АЛГЕБРЫ § 3.1. Понятия моделей и универсальных алгебр Пусть А — некоторое непустое множество; (;^, ^2, . . . , ;"s, .. .} — система д-отношений на множестве А (конечная или бесконечная). Каждому п-отношению ;" на множестве А можно сопоставить п-местную логическую функцию (предикат) рп; 4"-> {и, л} так, что р" (а-н, a-h, .. . , uin) = и тогда и только тогда, когда выпол- выполняется «-отношение kn (at,, а\г ain) (и, л — логические зна- значения истины и лжи соответственно; a,,, ais, ... , а,п ? А). Моделью Ма = (A; it) называется система, состоящая из мно- множества А и определенной на данном множестве совокупности предикатов it = (p"s | s = 1, 2, ...} [77]. Множество А называется основным множеством данной модели; предикаты, принадлежа- принадлежащие it, — ее основными или главными предикатами. Последова- Последовательность пъ гс2, ... , rcs, ... называется типом модели Мд, а совокупность it = (p"s| s = 1, 2, ... } — ее сигнатурой. Моделями, например, являются множества с определенными на них преди- предикатами, соответствующими отношениям эквивалентности и частич- частичного порядка (см. § 2.4, 2.5). Модель Ma, = (;li%, it') (Ay — непустое подмножество множест- множества /1; р" 6 it' — предикат на множестве Аъ индуцированный пре- предикатом Ъп ? it) называется подмоделью модели Мд = (A; it). Мно- Множество однотипных моделей, т. е. моделей, типы которых совпадают, образует класс моделей по данному типу. Однотипные модели МА = (A; it) п Мв = (В; it') (it = {р"г | s = = 1,2, it' = (о" s = 1, 2, ]) называются изоморфными, если существует взаимно-однозначное отображение ср множества А на множество В такое, что для любого s = 1, 2, ... предпкат р"' (av аъ ¦ ¦ ¦ ! ^rij) справедлив тогда и только тогда, когда вы- выполняется предпкат о^= ((а,) ср, (й2) ср, ... , (ап$) ср) для произволь- произвольных а1, а.,, ... , ans б А. Отображение ср в этом случае называется изоморфизмом модели Ма на Мв.
68 Глава. 3. Универсальные алгебры Понятие изоморфизма модели позволяет изучать абстрактные свойства предикатов и связанных с ними га-отношений, не зави- зависящие от природы элементов основного множества, на котором эти предикаты и отношения определены. Рассмотрим модель МА = (А; тс), где каждый га-местный пре- дпкат, входящий в тс, соответствует функциональному отношению ф" на множестве А (вообще говоря, частично определенному). С каждым таким отношением ©п связана некоторая частично опре- определенная (п — 1)-местная функция F „ (xv x2, ... , хп_1). Напом- Напомним, что если отношение фп+1 функционально, то для набора элементов мента ui ait, ai2, . i такого, ain ? А существует не что (а,,, аи, ..., ain, ai более одного эле- эле+i) e Ф^, причин n+i К, X, . . . , ain) = ain+i (см. § 2.3). Частично определенная функция F^n+i (xv . . . , хп) называется я-арпой частичной операцией на множестве А. В случае, когда функ- функция F(vn+i(xv у хп) всюду определена, говорят просто об гс-арной операции на множестве А (см. § 1.2). Бинарными (п = 2), напри- например, являются известные арифметические операции над числами (сложение, умножение и др.), а также теоретико-множественные операции (объединение (J . пересечение f], декартово произведение X и др.). Унарная (п = 1) операция F (х) однозначно сопостав- сопоставляет каждому элементу а е А некоторый элемент F (а) 6 А, т. е. является отображением множества А в себя. Унарной, например, является операция логического отрицания ~], а также операция теоретико-множественного дополнения. Часто рассматриваются нульарные (п = 0) операции, каждая из которых фиксирует в ос- основном множестве А некоторый злемент а € А, не зависящий от других элементов из множества А или от их систем. Иными словами, функция F^, реализующая нульарную операцию, тож- тождественна константе F& = а для некоторого а е А. Система Ua = (A\ 2), состоящая из основного множества А и определенной на нем совокупности частичных операций 2 = = {F"s(xb ... , Xns)\ s = 1, 2, ... ), называется частичной упи- с сигнатурой операций версальной алгеброй типа (ns | s = 1, 2, . 2 = {F"s\ s = 1, 2, . . . }. Если каждая из операций, принадлежа- принадлежащих сигнатуре 2, псгоду определена на множестве А, говорят просто об универсальной алгебре Ua =(A; 2). Как п в модели, сигнатура операций 2 в частичной универ- универсальной алгебре может быть конечной или бесконечной. Однотип- Однотипные универсальные алгебры часто рассматриваются как алгебры с одной и той же сигнатурой операций. Пусть UЛ = (А; 2) п Цв = (В) 2) — однотипные алгебры. Алгебра Ua изоморфна ал- алгебре Uв, если существует взаимно-однозначное отображение о J 3.1. Понятия моделей и универсальных алгебр 69 множества А на В такое, что произвольная яг-местная операция F € 2 удовлетворяет соотношению [F(alta2, ... , aj] cp = F ((аг) ф, (а2) ср, ... , (ат) ф) для любого набора элементов (а1У а2, ... , ат) 6 Ат. Отображение ср в этом случае называется изоморфизмом алгебры Ua на алгебру Uв. Понятие изоморфизма универсальных алгебр позволяет изучать абстрактные свойства алгебраических операций, не зависящие от природы элементов основного множества, на котором эти операции определены. Проведенные выше рассуждения показывают, что каждой модели МА = (A; it), где тт = {с|Л | s = 1, 2, ... } — сигна- сигнатура предикатов, связанных с функциональными отношениями, соответствует (вообще говоря, частичная) универсальная алгебра Uа = (А, 2 = [F™& | s = 1, 2, ... )) и, наоборот, каждой частичной универсальной алгебре Ua = (A\ 2) с сигнатурой Q = {-F"s j s = = 1, 2, . . .) соответствует модельМА=(А; к = (cp"«+1 j s = 1,2, ...}), где F"s — функция, связанная с (ге„ + 1)-арным функциональным отношением. Рассмотрим примеры универсальных алгебр. Пример 1. Система (N; {+}), состоящая из основного мно- множества N всех натуральных чисел с единственной бинарной опе- операцией + (сложение чисел), образует универсальную алгебру типа 2 с сигнатурой ( + }• Пример 2. Система (N; {х}), состоящая из основного мно- множества N, на котором определена бинарная операция х (умно- (умножение), образует универсальную алгебру типа 2 с сигнатурой {X}. Пример 3. Система (N; {-К —, X, :}), состоящая из основ- основного множества ./V с определенными на нем бинарными арифме- арифметическими операциями, образует частичную (операции —, : не всюду определены) универсальную алгебру типа B, 2, 2, 2) с сигна- сигнатурой {+, —, X, :}. В примерах 1—3 приведены универсальные алгебры с конеч- конечными сигнатурами. Пример 4. Система (V; { + , —, X, :, f п, У~ \п = 2, 3, ... ... }), состоящая из основного множества V всех действительных чисел с определенными на нем бинарными арифметическими опе- операциями -(-, —, х , : и бесконечным множеством унарных операций (возвышение в п-ю степень) п п i— У (извлечение корня п-й степени), образует частичную (операции: и 2У~ не всюду опре- определены) универсальную алгебру типа B, 2, 2, 2, 1, 1, . ..) с бес- бесконечной сигнатурой. Пусть F (Щ — множество всех цепочек (слов) конечной длины в алфавите 91 = [av a2, ... , ат) (предполагается, что множество F (Щ содержит также пустую цепочку е); Ж (%) — множество
70 Глава 3. Универсальные алгебры всех языков над алфавитом 5t. Напомним, что под языком L над алфавитом 9t понимается некоторое подмножество Lcj?(ij[). Рас- Рассмотрим некоторые операции над цепочками и языками [19]. Конкатенацией или умножением цепочек s1: s2$F(%) называ- называется бинарная операция, которая каждой паре цепочек sv s2 ставит в соответствие новую цепочку s{s2, полученную в результате приписывания справа к цепочке st цепочки s2. Причем пустая цепочка е удовлетворяет соотношению es = se = s C.1) для любого s?F(%). Операция конкатенации ассоциативна, таи что — Si (S2S3/ — C.2) Пример 5. Система (F (Щ; [Щ\), состоящая из основного множества F (91) всех цепочек конечной длины в алфавите Э? с определенной на данном множестве операцией конкатенации Щ, образует универсальную алгебру типа 2 с конечной сигнатурой {и}- Универсальная алгебра с сигнатурой, имеющей одну ассоциа- ассоциативную бинарную операцию, называется полугруппой (см. § 3.6). Каждый язык L представляет собой некоторое подмножество множества F (Щ, ЬсЁ(Щ. Поэтому можно говорить о бинарных операциях U (объединение языков), f] (пересечение языков) и унарной операции ~~| (дополнение языка). Как показывалось в § 2.5, множество Ж (91) является булевой структурой и может быть представлено как универсальная алгебра типа A, 2, 2) с сигнату- сигнатурой П. U. П1- Пусть qv q2, ... , qn — выделенные символы из алфавита 5t = { , ат) (пк^.т). Сопоставим каждому символу дг язык 2 = {аь а2, . ) Li SzF (Ц) (i = 1. 2, произвольный язык. Суперпозицией SnH операция над языками Lv L' = Sn~x г1' " ' ' ' п). Пусть, далее, L g Ж (91) — некоторый . , qn) называется (п + 1)-арная Lnn L, порождающая новый язык L) такай, что s 6 L' тогда и только тогда. . . . , Un I когда в языке L найдется цепочка s ? L, из которой можно по- получить s путем-замены каждого символа q{, входящего в 3, некоторой цепочкой, принадлежащей соответствующему языку Ьг. При.чем qi в jDaeHbix местах в цепочке s можно заменять различными цепочками из Li [23, 70]. Кратко суперпозиция Sn rl г1' п L ооозначается или Sn:1 (если ясно, о каких qb L% и L § 3.1. Понятия моделей и универсальных алгебр 71 идет речь). Для операций суперпозиции выполняются следующие соотношения: C.3) C.4) C.5) C.6) C.7) C-8) \L» ^nfl \L е = е (е — пУстое слово), Sn''rl [ г е = е (г = 0 — пустой язык), \bi I Sn+1 fc.j L] = L (i = 1, 2, ... , n; n = m), Qm = e (L ф e; i = 1, 2, . . . , m), t, • ¦ • . Qn Л = L {L E F vj, . . . , Un I Пусть S = i = 1, 2, , rej — совокупность (91) всех языков над всевозможных суперпозиций на множестве алфавитом St. Пример 6. Система (Ж (9t); S) образует универсальную алгебру с основным множеством Ш CJ-) и конечной сигнатурой S. Пример 7. Универсальной алгеброй является система CRh Et); 61) с основным множеством Шк (%) с Ж (91) всех конечных языков над алфавитом at. Напомним, что язык L c~ F (91) назы- называется конечным, если он состоит из конечного множества цепочек. (Универсальные алгебры (Ж (Щ; S) и <3Rh(&); S), а также не- некоторые их модификации, связанные с расширением сигнатуры операций этих алгебр, более подробно изучены в § 5.5. См. также § 3.2, 3.3, примеры.) Рассмотрим частичную универсальную алгебру Ua = (A; Q) 2 {F^ | 1 2 } s = 1, 2, можно р у Из основных операций сигнатуры 2 = { получить_другие операции над множеством А, используя супер- суперпозицию ~Sn^ (fb /2, . . . , /п; /п) функций /ъ /2, . . . , /„; /п, смысл которой, как обычно, состоит в подстановке функций fv /2, • ¦ • , /п вместо соответствующих аргументов в функцию /" (arlt а:2, . . . , хп). Например, суперпозиция 514 (/t, /2, /3) функций /х (zj) = хх, /, (;г2, аг3) = -т2х3, /3 (а:^ х2) = а;г + х, порождает функцию / (xv хъ х3) =¦ = /з (/i (^i), /2 (*2. ^з)) = < + ^^з- Если /" (^г. • • ¦ > хп) — неко- некоторая функция, определенная на множестве Л, то с помощью супер- суперпозиции "Sn+1 (у,, г/2, . . . , уп; П = fn (уу, г/г, • • • ,Уп) аргументы функции ]п можно переименовать, в частности отождествить или переставить их. Функции, соответствующие суперпозициям операций алгебры UA = (А; Я), называются пронзводнымп операциями данной
72 Глава 3. Универсальные алгебры алгебры. Пусть S = {Sn^ (fv /2, . . . , /п; /п) | п = 1, 2, . . . ) - совокупность всевозможных операций суперпозиции. Рассмотрим универсальные алгебры U а = {A; Q) и Uа = (А; 9.') с основным множеством А п сигнатурами операций соответственно Q и Q'. Алгебра V'a называется производной от алгебры UA, если каждая операция /" 6 2' является производной в алгебре ?/а = = (у4; Q>. Иными словами, алгебра U'a производна от алгебры ?/д, если 2'с[О]„5 Где [Щ~—множество всех функций, порожденных функциями, принадлежащими совокупности R, с помощью операций суперпозиции (множество [Щ~ называется замыканием множества R по операциям суперпозиции). Пример 8. Система (Фд, S) является универсальной алгеб- алгеброй с основным множеством Фа всех операций, определенных на А, и бесконечной сигнатурой S = [Sn+11 п = 1, 2, . . .}. Алгебра (Фа! 3"), очевидно, является частичной универсальной алгеброй, так как операции суперпозиции SnhX(fv ... ,/„",/) не всюду опре- определены. Действительно, суперпозиция S'1*'1 (Д, /2, • • • , /п; /) опре- определена лить в случае, когда функция / гс-арная. Пример 9. Частичную универсальную алгебру (Фа; S) можно свести [78] к универсальной алгебре (Фа; (С, t, А, у, X}) с ВС1°ДУ определенными сигнатурными операциями С, -с, Д, у, Xi которые определяются следующими тождествами: т—1л (А/) (хх, (Vf)(xu (С/) (*i, . . - , г,, хъ х3, . . . , х2, х3, ... , х, х2, х3, ... , х L, Х2, . . . , Zftj., ''m/ / \x2i nZ) = / (^! m+l) = / {ХЪ n_i) = / (g (. где /, g б Фа — произвольные т- и fc-ыестные функции. Если функция / одноместная, то можно положить С/ = т/ = А/ = /. Операции С, t, А позволяют производить всевозможные отождест- отождествления и перестановкп переменных функций /, а операция у — присоединять к функции / любое число фиктивных аргументов. Любая функция / 6 Фд тогда и только тогда представнма в виде суперпозпцпп / = S (/г, ... . /„; gn), где /х, ... , /„, ^"сФа, когда функция / может быть получена из функций jy. f.2. ... , fn, gn с помощью операций "-, -., А, у. Х- Например, ^ И, = А-1 (С Пусть множество А совпадает с множеством Ek = {0, 1, . , Л — 1], состоящим из к чисел (к^ 2). Функции /" (xv x2, § 3.1. Понятия моделей и универсальных алгебр 73 ... , хп), определенные на множестве Eh и принимающие значе- значения из этого множества, называются функциями #-значной логики. При к = 2 функции /п называются булевыми или функциями алгебры логики. Пример 10. Система (Фяь; (С, т, А, у, ^}), состоящая из основного множества Фе^ всех функций А-значной логики с опре- определенной на данном множестве сигнатурой операций {С, т, А, у, X], позволяющих осуществить любую суперпозицию функций из ФЕ/г, является универсальной алгеброй А-значных функций. Универсальная алгебра А-значных функций называется #-знач- ной алгеброй Поста [78, 133]. /г-Значные алгебры Поста, а также их модификации, связанные с видоизменением сигнатуры опера- операций, находят самые разнообразные приложения в различных об- областях кибернетики, в частности в абстрактной теории конечных и бесконечных автоматов, теории алгоритмов и программировании (см. гл. 4). ПуСТЬ 2 = [L] — МНОЖеСТВО ЯЗЫКОВ И T = \ri jn А — МНО- жество трансляторов, где транслятор jj ^» т представляет собой программу в языке L и переводит программу с входного языка L' на выходной язык L". Транслятор г/ т« т можно рассматривать как унарную операцию, областью определения которой является язык L', а областью значений — язык L"'. Так что т(х) = у, где х — программа в языке L'; у — программа в языке L", представ- представляющая собой перевод программы х. В частности, переработав т т транслятор г / та т транслятором г д, г i получим пг ( m \ m Г Г Т\Т'Т"Г\=Г'Т"Т- Иными словами, если транслятор ?п1 является программой в языке Lu который слз'жпт входным языком транслятора т2, то, при- м^енпв /п2 к пг1, получим запись тп1 в выходном языке L2 транс- транслятора т2- Такое преобразование транслятора называется опера- операцией перекодировки. тт пг пг Над трансляторами ^ ?,. L я L. L L естественн0 определя- определяется операция композиции (последовательного применения транс- трансляторов), так что m \y m __ ?п Lb L,, L ^ L.2, L3? L ~ Lv L3, L • В терминах зтказанных операций могут быть формализованы процессы, часто используемые в программировании.
74 Глава 3. Универсальные алгебры Пример 11. Пусть Lly L.2— языки машин соответственно М1: М2. Причем на машине Мг транслятор г г /, осуществляет перевод с языка высокого уровня L на язык этой машины Lv т Т Т транслятор т г г осуществляет перевод с языка L на язык Ь2 и описан на языке высокого уровня L. Тогда, дважды применяя операцию перекодировки, можно получить транслятор с языка L на L2, работающий на машине М2. Так, m I тп \ __ m m f m \ _ m L, Ец, LL \L, L2, L) L, L2, L^' L, L2, Ец \L, L2, LJ L, L2, L2' Смысл приведенного примера состоит в том, что программу трансляции или отдельные ее блоки удобнее писать на языке высокого уровня с последующей перекодировкой на язык рабочей машины. Особенно важное значение это имеет при разработке трансляторов с одного и того же языка на языки разных машин. У таких трансляторов обычно достаточно большая общая часть, реализующая синтаксический анализ входного языка и некоторые другие блоки. Подобные преобразования использовались при конструировании транслятора для машины «Киев», переводящего с адресного языка на язык машины «Днепр» [103]. Пример 12. Пусть Lo— язык некоторой машины М; LU,LX, L2, L3 — упорядоченная последовательность языков, для которых m m m m .существуют трансляторы L^L^L^ L2,L,,L^ ^Л V ТогДа' используя операции перекодировки и композиции для любой пары языков L;, Lj (i > /), можно получить транслятор для машины М, переводящий с языка Lx более высокого уровня на язык Lj более низкого уровня. Так, для того чтобы получить транслятор тп .. г т т , необходимо осуществить перекодировку Ь 1у i/ m I m Lo, L0\Lo, Ll m L2, L1, Lo' Затем, выполнив композицию, получим т / тп = тп LULO,LO L2,L Аналогично m m m I _ L2, Lo, L0\L3, L,, LJ-L3.L2,LO> mm = m L3,L2,L0*L2,L0,L0 L3,L0,L0 и т. g. § 3.1. Понятия моделей и универсальных алгебр 75 Приведенный пример свидетельствует о том, что технология конструирования транслятора с развитого языка программирования, как правило, состоит в выделении иерархии промежуточных уров- уровней языка и разработке фаз трансляции для смежных уровней с последующим сопряжением этих фаз. Пример 13. Пусть заданы языки высокого уровня [Ьг \ i = 1, 2, г) и машины [Mj | / = 1, 2, ... , s} и каждая машина Мj имеет свой язык Rj. Тогда, для того чтобы обеспечить перевод с любого языка Li на язык Rj каждой машины, необходимо по- построить г ¦ s трансляторов. Используя промежуточный язык L, для т которого конструируются трансляторы с заданных языков на язык L и трансляторы г = 1,2, L, Rj, R i = 1 J -м 2, ... , s\ с языка L на языки машин, и применяя затем операции перекодировки и композиции для каждой машины Mj, можно т Т получить транслятор г т> d с произвольного языка L{ на язык Rj данной машины. Введение промежуточного языка позволяет сократить число необходимых трансляторов до г + s. В программировании известны два подхода к выделению промежуточного языка при решении проблемы трансляции. 1. Промежуточный язык может быть ори- ориентирован на класс машин. Такой подход применен при создании языка АЛМО [52]. 2. Промежуточный язык может быть ориен- ориентирован на класс входных языков. В этом случае он представляет собой параметрическую систему, которая включает в себя, ядро, отражающее общие черты класса входных языков, и параметры, отражающие специфику отдельного входного языка из заданного класса (см. гл. 6). Пусть {М) — множество машин, каждая из которых характе- характеризуется лишь своим языком Lm так, что машины Mt и М2 совпадают, если Lmi = LM:. Тогда существуют программы, пре- преобразующие одни машины в другие. Пусть, далее, RM — язык- машины М. Тогда интерпретатор ^ пС языка высокого уровня L, реализованный на машине М, позволяет выполнять на данной машине программы на языке L. Тем самым интерпретатор г ? преобразует машину 717 в новую машину .17' с языком Lm- = L. Такого рода программами являются также эммуляторы, модели- моделирующие математическое обеспечение (МО) одной машины на другой. В частности, для автоматизации процесса разработки современных ЭВМ часто используют рабочую машину Л/15 на которой модели- моделируют систему МО проектируемой машины .17,. Машина Mi в таком
76 Глава 3. Универсальные алгебры случае называется инструментальной, а система, моделирующая математическое обеспечение машины М2, — иммитатором. Интер- Интерпретаторы, эымуляторы и иммитаторы можно рассматривать как операции, определенные на множестве машин и принимающие значения в этом же множестве. Применение аппарата универсальных алгебр для формализации процессов программирования позволяет, абстрагируясь от струк- структуры рассматриваемых объектов (машин, программ, трансляторов и др.), изучать их свойства, соотношения и взаимодействия. § 3.2. Подалгебры. Системы образующих Пусть Uа = (A; Q) — универсальная алгебра (вообще говоря, час- частичная) и AL^A—некоторое непустое подмножество А. Мно- Множество [А^р с: А называется замыканием множества AL в алгебре Ua по «-местной операции .F € 2, если a) A*iSz[Al]f', б) для любых элементов qL, q2, ... , qn ? [А^р таких, что значение F (qv q2, ... ... , qn) определено, F (qv q2, ... , qn) € [AJp, при этом любой элемент из [AL]F порождается в конечном счете из элементов Ах посредством операции F. Если Ах Е А2 (для некоторых подмно- подмножеств Аь А2<^А), то [^IJfEI^If. [[^JfIf = [Al]f (для любых Множество Ах называется замкнутым по «-местной операции F € Q в алгебре Ua, если Ах = [А^\р. Ясно, что множество Ах замкнуто по операции F 6 2 в алгебре Uа тогда и только тогда, когда F (а,, а2, ... , ап) g 4j для любой последовательности эле- элементов at, ... , ап € Ах такой, что значение F (alt ... , ап) опре- определено. Множество [^^^Л называется замыканием множества Аг в алгебре t/д, если [А-Л состопт из всех элементов, которые по- ]юждаются из элементов, принадлежащих Ау, с помощью основных и производных операций алгебры Uа (см. § 3.1). Замыкание [AL] множества Л1 в алгебре Uа может быть представлено следующим образом: [Ах\ = A\\j А\\] ¦ ¦ ¦ [} А?[) ¦ ¦ ¦ , где А° = Alt A\+1 = = U [-4J1 (^ пробегает множество 2 всех основных операций F алгебры Ua, i = 1, 2, . ..). Еслп AL^A2 (для некоторых под- подмножеств Аь Ал<?А), то [^ilEt-4.,]. Очевидно также, что [[AJ] = = [4,]. Множество Ах называется замкнутым в алгебре UA- если Л1 = [41]. Множество AL замкнуто в алгебре UA тогда п только тогда, когда F (а1( а.2, ... , ап) б AL для любой п-местной опера- операции F € 2 и любой последовательности элементов aL, ... , ап б 4г, цля которой значение F (а:, ... , а J определено. § 3.2. Подалгебры. Системы образующих 77 Пусть множество А^А замкнуто в алгебре Uа- Тогда систему Uа, = (Ах\ Q) можно рассматривать как универсальную алгебру. Алгебра Ua, = (AL; Q) называется подалгеброй универсальной алгебры Uа = (А; 2). Примером несобственной подалгебры алгебры Uа = (А; 9) является сама эта алгебра. Заметим, что любая под- подалгебра UA,~(Al; 2) алгебры Ua однозначно определяется соот- соответствующим замкнутым множеством At. Поэтому в дальнейшем вместо «подалгебра Uах = (Ау, 2)» будем писать «подалгебра А^у. Приведем примеры подалгебр универсальных алгебр, рассмот- рассмотренных в § 3.1. Пример 1. Система (N (г); {+}>, где N {r) = {n\n^r)<=.N, является подалгеброй алгебры (N; {+})¦ Пример 2. Система (Np; {х}), где Np = [п \ п ¦ р) <= N — множество всех чисел, кратных р (р — некоторое простое число), является подалгеброй алгебры (N; {х]>. Пример 3. Тривиальной подалгеброй алгебры (F (Щ\ {\Е1}) является система ({е}; {|^}), где е — пустая цепочка над алфа- алфавитом Й. Пример 4. Система (Жк (Щ\ S) является подалгеброй ал- алгебры (Ж {Щ; S). Пример 5. Система (Ро\ (С, х, Д, у. Х}>> гДе ^^Ф,,- множество функций, существенно зависящих лишь от одной пере- переменной, является подалгеброй алгебры (Фд; (С, х, Д, у, )$}). В то же время система (Рх; {С, х, Д, у, Х})« гДе ^*i ~ множество всех А-значных функций, тождественных константам из Еп, явля- является подалгеброй А-значпой алгебры Поста (&Ek', {С, х, Д. у, ^}). Теорема 3.1. Пусть {f/^a|a6/} — совокупность подалгебр алгебры Uа = (^4; 2), где Аа с А —замкнутые множества « алгебре- Uа- Непустое пересечение совокупности \UАа\ & ? 1} подалгебр алгебры Ua также образует подалгебру банной алгебры. Действительно, достаточно показать, что непустое пересечение D = П Аа является замкнутым множеством в алгебрр UА. Для любой n-местной операции F € 2 и произвольной совокупности элементов qL, ... , qn б D такой, что значение F (qu .... qn) опре- определено, ввиду замкнутости множества А, в алгебре Uа (для любого a 6 /) F (qlt ... , q J 6 4а. Следовательно, /^ (q^ ... , qn) ? D для любой n-местной операции i7, принадлежащей 2, и произвольной совокупности элементов qlt ... , qn б D. для которой значение /¦' (9i, ... . 9П) определено. Таким образом, установлена замкну- замкнутость множества D, откуда следует, что система Ud = (D\ Q) является подалгеброй алгебры UА. Еслп под объединением подалгебр Uд, и Uа, понимать под- подалгебру Ua1\ja~ = ([A1[}A.2\; 2), то совокупность всех алгебр алгебры Uа является структурой (см. § 2.5). Изучение структуры
78 Глава 3. Универсальные алгебры подалгебр в универсальных алгебрах тесно связано с понятием системы образующих элементов. Пусть Ua1 = (A1; Q) — некоторая подалгебра универсальной алгебры U а = (A;Q). Система элементов Ecij называется системой образующих или полной системой подалгебры Uа,, если [Е] = = Ах. Если [Е] = А, система Е называется системой образующих алгебры Uа- Теорема 3.2. Пусть Sc^ — некоторое непустое подмножество множества А. Тогда подалгебра U^] является пересечением сово- совокупности {UaJuU} C.9) всех подалгебр алгебры Ua таких, что Eci, для каждого а б/. Действительно, для любого 1^4 совокупность подалгебр C.9), очевидно, непуста, так как, в частности, Уа € {Са„ | а €/}. Ввиду Ес=.Ла для любого ag/ пересечение D = [") Аа непусто е Ecfl. Очевидно, вследствие ?<=[?] подалгебра U^ принадле- принадлежит совокупности C.9), и поэтому D с: [Е]. Вместе с тем из замк- замкнутости множества D (теорема 3.1) следует включение [S]?D, таким образом, U^] = UD. Универсальная алгебра Ua = (A; Q) (в частности, любая ее подалгебра) может иметь конечную систему образующих, тогда алгебра Ua называется конечно-порожденной, и может не иметь таких систем, тогда алгебра Ua называется бесконечно порож- порожденной. Пример 6. Конечно-порожденной является подалгебра (N (г); {+)) (см. пример 1), системой образующих этой подалгебры — ? = [г, г -\- 1, ... , 2г — 1). В качестве системы образующих всей алгебры (iV; {+}) может быть любая система ScjV такая, что i 6 Е- Пример 7. Алгебра (N; {х}) не имеет конечной системы образующих и бесконечно порождена. Действительно, предполо- предположим противное. Пусть S — некоторая конечная система образую- образующих данной алгебры. Тогда для любых р, q 6 Е число р X q, очевидно, не принадлежит множеству PcryV всех простых чисел (как известно, бесконечному) и, следовательно, [Е]=ё.Р, что про- противоречит полноте системы Е. Пример 8. Системой образующих алгебры (F (Щ; {[^)> может служить всякая система S такая, что ?с= Е, где Е = {е, а{\ а{ б 91, i = 1, 2, ... , т) — множество всех однобуквенных слов (включая пустое) над алфавитом Й. Пример 9. Системой образующих подалгебры (Щ(Щ; S) (см. пример 4) является система Е = E[j (Lb L2), где Z,x = [a^.,] — язык над алфавитом Э[, состоящий из одного слова аха2; Ь2 = § 3.2. Подалгебры. Системы образующих 79 = {аъ а2] — язык над алфавитом %, являющийся объединением двух различных символов из 31. Пример 10. В двузначной алгебре Поста (Фя2; {С, т, Д, у, ^)) системами образующих являются известные полные наборы функций ?1={х, х\/у, хАу), Е2 = {1, хфг/, х/\у) и др. Теорема 3.3. Пусть Ua = (A;Q) — конечно-порожденная ал- алгебра. Тогда в любой системе образующих Е алгебры Ua можно выделить конечную подсистему S'cE, которая также порождает алгебру U'д. Действительно, алгебра Ua конечно-порожденная. Это озна- означает, что существует конечная система элементов ?0 = \jjx. .. . ... , qT)S.A такая, что [Ео] = А. Пусть Е = [tb t2, ...}E^ — произвольная система образующих алгебры Ua- Так как [S] = А, для каждого элемента at? А можно указать суперпозицию St основных операций сигнатуры Q такую, что аг = St (ti^, tit, ... .. . , tir), где <{. 6 S при любом / = 1, 2, ... , к. Следовательно, существуют суперпозиции Sb S2, ... , Sr операций сигнатуры Q такие, что <?i = Si (tn, tn, .. . , ii/i,), = O% qT = ST(tri, tr2, .. . , trhr), C.10) где t, j б S (/ = 1, 2, . .. , k{; i = 1, 2, . .. , г). Объединим эле- элементы системы S, к которым применяются суперпозиции Si, . . . ... , ST (см. C.10)): E'=(U [<u, <{2, ¦•• .4}) 5 2. Вследствие U [ полноты системы Ео = [qx, ... , qr) и справедливости соотношений C.10) полученная конечная подсистема E'aS также является системой образующих алгебры Ua- Теорема доказана. При изучении системы образующих универсальных алгебр п их подалгебр важное значение имеет установление эффективные критериев, позволяющих определить, является ли некоторая фикси- фиксированная система элементов системой образующих данной алгебрь (соответственно подалгебры). Сформулированная проблема назы- называется проблемой полноты для данной алгебры (соответственнс подалгебры), а ее решенпе может быть связано с изучением таг называемых максимальных подалгебр. Пусть Ua = (A\ 2)-—произвольная универсальная алгебр* (в частности, это может быть подалгебра некоторой уннверсально1 алгебры). Собственная подалгебра Ayi<^A называется максималь ной подалгеброй относительно алгебры Ua, если не существуе- собственной подалгебры А' а А, для которой выполнялось бь строгое включение .4ма А'. Очевидно, подалгебра АУ1 тогда i только тогда максимальна относительно UA, когда присоединена
80 Глава 3. Универсальные алгебры любого элемента q 6 4\,4М к подалгебре Аы приводит к соотно- соотношению [Лми <?] = ^4- Примером максимальной подалгебры отно- относительно алгебры (N; {-\-}) является замкнутое множество NB) = = B, 3, . . .}. Подалгебра <Ж{; {Sn+11 п = 1, 2, ... , т}). где ^ = = SKft E1)\{а{}, ui б %, максимальна относительно подалгебры (SKft(9l); [S^1 | га = 1, 2, ... , т}) (см. пример 9). Подалгебра A' cz А универсальной алгебры Ua — (A; й) может быть расширена до подалгебры AMczA, максимальной относи- относительно Uа, если Л'с= Аи. Для конечно-порожденных алгебр спра- справедлива следующая теорема Неймана [61]. Теорема 3.4. Всякая подалгебра A' cz А конечно-порожденной алгебры Uа может быть расширена до некоторой подалгебры А", максимальной относительно Ua- Доказательство. Пусть 2 = [qu q2, ... , qr)—система образующих алгебры Ua- Рассмотрим множество S всех собст- собственных подалгебр алгебры Ua, включающих А'. Очевидно, S Ф 0, поскольку А' 6 S. Выберем в множестве S, частично упорядочен- упорядоченном по отношению включения, произвольную цепь С: Ах cz A2 cz cz •. • As cz .. • Пусть А = U As. Если А = А, то 2 cz А. Тогда s=l для каждого элемента qi € 2 в цепи С найдется подалгебра Ai такая, что qi е Аг. Ввиду конечности системы 2 в цепи С можно указать такой номер г0, что At^Ar<i, и, следовательно, q^^ Аг при любом i = 1, 2, ... , г, т. е. 2с:ЛГо и АГо= А. Но это пго- тиворечит утверждению, что АГо б S — собственная подалгебра алгебры Uа- Таким образом, ^4cz^4, так что А — верхняя грань произвольной цепи С из множества S и вследствие леммы Цорна (см. § 2.5) множество S имеет подалгебру Ам, которая является максимальной подалгеброй относительно алгебры Ua- Теорема доказана. Подобно теоремам Поста [133, 134, 155], установленным для конечно-порожденных замкнутых классов в многозначных логиках, для конечно-порожденных алгебр справедлива следующая теорема. Теорема 3.5 (критерий Поста). Пусть М — множество ссех подалгебр, максимальных относительно конечно-порожденной ал- алгебры Uа- Система 2 cz А тогда и только тогда является системой образующих алгебры UA, когда для каждой подалгебры /Iм б М в системе 2 найдется по крайней мере один элемент, не при- принадлежащий данной подалгебре. Необходимость следует из замкнутости множеств Лм g Л/, а также из строгого включения ^McZi4. Достаточность. Пусть 2 cz A — система элементов такая, что для каждой максимальной подалгебры Лм 6 М в спстеме 2 су- существует qh g" .4м. Покажем, что 2 — система образующих алгебры .-1. Предположим, что система 2 неполная. Тогда [2] ф А и вследствие § 3.3. Структура подалгебр универсальной алгебры 8t конечной порожденности алгебры А по доказанной выше тео- теореме 3.4 подалгебру [2] cz А можно расширить до некоторой под- подалгебры AfeM, максимальной относительно алгебры А. В то же время по условию система 2 содержит элемент qs такой, что- qs~?А*1, а это противоречит включению Ее:А4. Следовательно, предположение о том, что [2] ф А, неверно и система 2 порождает алгебру А. Теорема доказана. При проектировании автоматов (в частности, ЭВМ) систему исходных элементов необходимо выбрать так, чтобы с их помощью можно было реализовать любой автомат данного класса (предпо- (предполагается, естественно, что любой элемент исходной системы име- имеется в неограниченном количестве экземпляров). Точно так же при создании алгоритмического языка, ориентированного на не- некоторый класс алгоритмов, необходимо учитывать, что с помощью основных операторов данного языка должен записываться любой из алгоритмов данного класса. § 3.3. Структура подалгебр универсальной алгебры Одной из важных проблем универсальных алгебр является изуче- изучение структуры их подалгебр. Особый интерес представляют во- вопросы, связанные с построением структурного графа подалгебр данной универсальной алгебры (см. § 2.5). Структурный граф подалгебр универсальной алгебры представляет собой граф, верши- вершинами которого являются подалгебры; вершина А\ соединяется с вершиной Aj дугой или отрезком, если подалгебра Aj макси- максимальна относительно подалгебры А^ при этом вершина Аг распо- располагается выше вершины Aj. Примером подобного исследования служит работа [155] (см. также [134]), посвященная построению структурного графа подалгебр (диаграммы включений функцио- функционально замкнутых классов) в двузначной алгебре Поста — алгебре логики. Е. Посту удалось полностью построить структурный граф подалгебр алгебры логики. В частности, им показано, что каждая подалгебра алгебры логики имеет конечную систему обра- образующих и множество всех подалгебр счетно. Множество всех подалгебр А-значных алгебр Поста (А^З) является множеством мощности континуума. Алгебры, .множества подалгебр которых являются множествами мощности не менее континуума, называются алгебрами континуального типа. С алгебрами континуального типа часто связано существование бесконечно порожденных подал- подалгебр, имеющих счетный базис [139]. Система образующих Ис.4 универсальной алгебры UA = (A; 2) называется базисом данной алгебры, если [2\а{] Ф А для каждого элемента а; 6 2. Пнымп словами, система элементов 2
82 Глава 3. Универсальные алгебры составляет базис алгебры Uа, если [Е] = А и для любого эле- элемента ai e 2 справедливо [Е/а{] "э а{. Пример 1. Каждая система Ё такая, что S э 1, является системой образующих алгебры (iV; {+}). В то же время алгебра (N; (+)) имеет единственный базис S = {1}. Пример 2. Система Е = {аь е | ai б 31] является базисом в ал- алгебре (F(%); {&}). Пример 3. Система функций Е = {^, х\/у) и подобные ей являются базисом в алгебре логики. Приведенные примеры относятся к алгебрам с конечным ба- базисом. Можно также привести примеры алгебр с бесконечным базисом. Пример 4. Алгебра(iV; { X }) бесконечно порождена (см. §3.2, пример 7). Нетрудно видеть, что множество Р всех простых чисел представляет собой бесконечный базис данной алгебры. Действи- Действительно, любое число п ? N представимо в виде п = р^'Р^2 . ¦ . р^, где ръ р2, ... , ph € Р и, следовательно, Р — система образующих алгебры (N; {х}). В то же время ни одно из простых чисел нельзя представить как произведение степеней других простых чисел. Таким образом, множество Р образует бесконечный базис алгебры (./V; { X}). Из теоремы 3.3 (§ 3.2) вытекает непосредственно следующая теорема. Теорема 3.6, Всякая конечно-порожденная алгебра имеет ко- конечный базис. Действительно, пусть С/д = (A; Q) — конечно-порожденная универсальная алгебра. Тогда в произвольной системе образующих Е алгебры V' А вследствие теоремы 3.3 можно выделить конечную подсистему ?' с: Е, которая также является системой образующих данной алгебры. Если система S' не содержит ни одного элемента git б Е' такого, что q-h € lE'\giJ, то Е' образует базис алгебры U а- В противном случае система Е" = ?'\{7i, является системой обра- образующих алгебры Uа- Далее, если система Е" не содержит ни одного элемента qi2 6 S" такого, что qi2 6 [Е"\д;„], то Е" — базис алгебры Uа- В противном случае перейдем к системе Е/7/ = ?"\<7,-г. Ввиду конечности системы Е' этот процесс завершится построе- построением базиса алгебры Ua- Теорема доказана. Можно привести примеры универсальных алгебр, и в част- частности подалгебр, не имеющих базиса. В любую систему образую- образующих алгебры без базиса входят элементы, исключение которых не нарушает полноты данной системы. Пример 5. Не имеет базиса алгебра (Л"; {©}) с основным множеством N всех натуральных чисел и определенной на данном множестве унарной операцией © такой, что 1© = 1 и для любого п € Лг\1 «© = п—1. Очевидно, что любой начальный отрезок {1,2, ... , п\ образует подалгебру данной алгебры. В то же время § 3.3. Структура подалгебр универсальной алгебры 83 любое бесконечное подмножество N' а N является системой обра- образующих данной алгебры. Причем в любой такой системе всегда найдется по крайней мере один (а следовательно, и бесконечно много) элемент q ? N' такой, что [N'\q] Э q. Таким образом, алгебра (N; {©}) не имеет базиса. Следствие. Любая алгебра, не имеющая базиса, бесконечно порождена. Пусть, далее, цепь подалгебр алгебры А С: Ах : A, i C.11) такая, что А = \J At; С удовлетворяет условию плотности, если для любой подалгебры А' с: А найдется номер п, для которого Л' г- А Теорема 3.7. Если це?гь С плотна и для каждого i найдется конечная система Есу14+1\4{ такая, что At cz [Е{], то алгебра А не имеет базиса. Очевидно, что А не имеет конечного базиса Е, так как в про- противном случае вследствие монотонного возрастания последователь- последовательности C.11) найдется п такое, что Ес4п, и поэтому Ап = А, что противоречит бесконечности последовательности C.11). Пусть Е — бесконечный базис алгебры А. Выделим в Е некоторую бес- бесконечную подсистему Е' с=Е. Очевидно, что [S'] ф А, так как Е' — собственное подмножество базиса Е. Вследствие плотности цепи С можно указать такое п, что [?'] а Ап. По условию для Ап най- найдется конечная система элементов Епс Ап+1 такая, что [?n]EBv4n. Но Е- ¦ полная система и, следовательно, в L можно выделить конечную подсистему S" с: Е такую, что [Е"]1эЕп. Тогда из [En] ^> An, [E"] zd E' и из бесконечности множества Е' следует, что найдется по крайней мере один элемент qi g E такой, что qi g" E", причем (ji 6 [?"], а это противоречит предположению, что Е — ба- базис алгебры. Теорема доказана. Как показывает следующая теорема, универсальная алгебра является алгеброй континуального типа, если она имеет хотя бы одну подалгебру с бесконечным базисом. Теорема 3.3. Пусть алгебра UА = (А; 2) имеет подалгебру Ua, с бесконечным счетным базисом. Тогда мощность множества всех подалгебр алгебры Uа не меньше континуальной. Действительно, пусть S = {ql: q.,, ... . qs, . . .) — бесконечный счетный базис подалгебры Ua, алгебры UA. Пусть, далее, Е' cz ^ - — произвольное подмножество элементов базиса. Рассмотрим подалгебру [Е'], порожденную системой Е'. По определению базиса для любого элемента а{ € (Е\Е') справедливо а4ё"[Е']. Таким образом, различные подсистемы Е', S" cz E определяют различные подалгебры [I'] и [2"). Следовательно, мощность множества всех
84 Глава 3. У ниве реальные алгебры подалгебр алгебры U а не меньше мощности множества всех под- подмножеств счетной совокупности 2. Но множество всех подмножеств счетного множества континуально (см. § 1.4). Теорема доказана. Таким образом, всякая алгебра, имеющая хотя бы одну под- подалгебру со счетным базисом, является алгеброй континуального типа. К последним, в частности, относятся fc-значные алгебры Поста (/с^З), а также некоторые их модификации, связанные с преобразованием на регистрах (см. § 4.3). Следствие. Алгебрами континуального типа являются алгебра (Щк{Щ; {Sn+1 | п = 1, 2, ... , т\) всех конечных языков и алгебра <ЭД(Й); {iSn+1\п = 1, 2, ... , т]) всех языков над алфавитом 31 = = {аъ а2, . . . , ал]. Действительно, выделим в алфавите Й элемент а{ б Й и рас- рассмотрим множество {Lp\pzP} всех одноэлементных языков Lp = = {s = aiai ... а{}, где | s | = р; р 6 Р — некоторое простое число. Очевидно, что замыкание совокупности Е = {Lp \ p g P) образует подалгебру, изоморфную алгебре (TV; (х}>, которая, как было показано выше (см. пример 4), имеет бесконечный базис. Следо- Следовательно, алгебра ЭД/{(Й), а значит, и алгебра Ж(Й) являются алгебрами континуального типа. При изучении структуры подалгебр важно установить критерии бесконечной порожденное™, а также существования' базиса уни- универсальных алгебр. Эти вопросы для некоторых классов универ- универсальных алгебр решены в работе [119]. Универсальная алгебра UA = (A;Q) называется плотней, если любая собственная под- подалгебра А'а А может быть расширена до некоторой подалгебры, максимальной относительно Vл, либо если при А = \] Ах после- г довательность А1 d • • • с: А{ cz • • • образует цепь, удовлетворяю- удовлетворяющую условию плотности (т. е. для всякой подалгебры A' cz A найдется номер п такой, что А'срАп). Теорема 3.9. Пусть плотная алгебра А' имеет базис. Тогда любая ее собственная подалгебра Uа может быть расширена до некоторой подалгебры, максимальной относительно Uа- Из данной теоремы следует, в частности, теорема 3.4 (§ 3.2). Кроме того, для плотной алгебры Uа справедливы следствия. Следствие 1. Алгебра UA не имеет базиса, если существует по крайней мере одна собственная подалгебра А'а А, не допу- допускающая расширения до подалгебры, максимальной относи- относительно U а- Следствие 2. Алгебра Uа с бесконечным базисом имеет беско- бесконечную совокупность максимальных подалгебр. Следствие вытекает пз того, что для любого q 6 2, где 2 — бесконечный базис алгебры Uа-, множество 12\д] может быть расширено до некоторой подалгебры, максимальной относи- относительно U а- § 3.3. Структура подалгебр универсальной алгебры 85 Для плотных алгебр с базисом справедлив критерий Поста (теорема 3.5). Следствие 3. Система На А тогда и только тогда является системой образующих алгебры ?/д, имеющей базис, когда для каждой подалгебры Аы 6 М в системе S найдется по крайней мере один элемент, не принадлежащий подалгебре АЬ!(М — множество всех максимальных подалгебр алгебры С/д). Для плотных алгебр с базисом справедлив следующий кри- критерий конечной порожденности. Теорема 3.10. Пусть Uа — плотная алгебра с базисом. Ал- Алгебра Uа имеет конечный базис тогда и только тогда, когда для множества М = \AV \ i 6 /} всех подалгебр, максимальных отно- относительно U а, существует конечное разбиение R (/) = AЬ 12, ... . . . , /б} такое, что <9ля любого /• = 1,2, ... , к П А? Ф 0, C.12) где 4м = А\АМ. Необходимость. Пусть UA — алгебра с конечным базисом S = = (<7i) <?2> • ¦ • > Qk}- Покажем, что тогда для множества М сущест- существует конечное разбиение R (/), для которого выполняется соот- соотношение C.12). Для каждого элемента qT 6 S рассмотрим множество М{qT) = {A*s \ST = i, 2, .. .] всех подалгебр, максимальных отно- относительно Uа и таких, что qr^ А^г (г = 1, 2, ... , к). Так как Е — система образующих алгебры Ua, to [}M(qr) = М. Кроме того, г=1 (g)^M(g2)j B противном случае множество S\<?o является системой образующих алгебры С/д, а это противоречит предпо- предположению, что S — базис данной алгебры. На этом же основании (M{q1)[}M{qi))=&M{q3), ... , ( U M(qs))=?M(qh). Построим еле- l ( U s=l дующие классы подалгебр, максимальных относительно Uа- М2 = [А? | ц М3 = К | i3 = М (д,)\Л/ (?1), U л (Д Mh={A?k\ihGlh}=M(q,.) Пз этого построения вытекает, что Л/,- f] Л/j- = 0 при 1Ф) (при h любых г, / = 1, 2, ... , к). Кроме того, AI = U Мг Следовательно, существует конечное разбиение R (/) — {/i, /2, ... , /),], для ко- которого выполняется соотношение C.12).
86 Глава 3. Универсальные алгебры Достаточность. Пусть для множества М существует конечное разбиение R (/) = {1\, /2, ¦ . . , Ik), для которого выполняется соотношение C.12). Тогда алгебра ?/д имеет конечный базис. Действительно, для совокупности МТ = {Af \ir g Ir) существует по крайней мере одпн элемент qr~$ Af при любом iT 6 /г (г = 1, k 2, . .. , к). В силу соотношения М = (J Мт, а также теоремы 3.9 Г=1 (следствие 3) система 2 = [qu q2, ... , gh] является системой образующих алгебры С/д. Теорема доказана. Обратная теорема устанавливает критерий бесконечной порож- денности для плотных алгебр. Изучение структуры подалгебр в алгебрах континуального типа связано с серьезными трудностями, первым этапом в преодолении которых является построение верхнего и нижнего фрагментов структурного графа подалгебр — поверхности алгебры и ее осно- основания соответственно. Подалгебра А алгебры UB = (В; S) называется достижимой сверху в структурном графе подалгебр алгебры Ub, если сущест- существует по крайней мере одна монотонно убывающая последователь- последовательность конечно-порожденных подалгебр ^гэ А2^э • • • такая, что А = [)Аг, где А1 = Б (совпадает со всей алгеброй), и при каждом i i = 1, 2, ... подалгебра Аг максимальна относительно ^i_i, либо Аг = р Аа. Множество всех достижимых сверху конечно-порож- денных подалгебр алгебры Ub называется поверхностью этой алгебры. Двойственным образом определяются подалгебра, достижимая снизу, и основание алгебры Us- Подалгебра А называется дости- достижимой снизу в структурном графе подалгебр алгебры UB, если существует монотонно возрастающая последовательность конечно- порожденных подалгебр Al aAn cz • • • такая, что А= U Аь где i Al — один из минимальных элементов структуры подалгебр ал- алгебры Us (см. § 2.5), п при каждом i = 1, 2, ... подалгебра А{ максимальна относительно Ai+1, либо Ai = U Ла. Множество всех достпжимых снизу конечно-порожденных подалгебр алгебры С/в называется основанием данной алгебры. Если каждая подалгебра Ub конечно-порожденная, то поверх- поверхность данной алгебры совпадает с ее основанием и полностью представляет структурный граф данной алгебры. Так, поверх- поверхность (основание) Двузначной алгебры Поста совпадает со всем структурным графом (дпаграммои включений) подалгебр данной алгебры. Если алгебра Ub имеет бесконечно порожденные под- подалгебры, построение поверхности (основания) данной алгебры § 3.4. Функции алгебры логики 87 позволяет изучить ограничивающие эту поверхность (основание) бесконечно порожденные подалгебры. Пример 6. Рассмотрим структуру подалгебр, входящих в подалгебру (99 — всех одноместных функций и констант дву- двузначной алгебры Поста. Поверхность подалгебры О9 является частью всей поверхности рассматриваемой алгебры и содержит конечное число (9) подалгебр: 0e = @, х), 03 = @), L/g = |U, Jl, Xu 05 = A, x), 0, = {1}, = (О, 1}, Каждая из перечисленных подалгебр, очевидно, конечно-порожден- конечно-порожденная. Поэтому поверхность подалгебры 09 совпадает с ее осно- основанием и полностью представляет структурный граф под- о ц алгебр, входящих в 09 (рис. 14). I Пример 7. Алгебра (N; {©]) бесконечно порождена I (см. пример 5) и, следовательно, не имеет поверхности. I .. Основание этой алгебры представляет собой структурный граф, показанный на рис. 15. Структура подалгебры данной алгебры имеет един- единственный минимальный эле- элемент — подалгебру TVi = {1}. Каждый начальный отрезок Nm = {1,2,... , т) образует подалгебру алгебры (TV; {©)), причем подалгебра Nm мак- дг симальна относительно под- подалгебры Лг,п+1 при любом т = 1, 2, ... Вся алгебра I oN3 О, Рис. 14. о N, Рнс. 15. (N; {©}) = О N{ достижима снизу и является единственной бесконечно порожденной несобст- несобственной подалгеброй. § 3.4. Функции алгебры логики В настоящем параграфе рассмотрены элементы теории булевых функций плп функций алгебры логики, используемые при про- проектировании ЭВМ и программировании (см. гл. 4). Рассмотрим всюду определенные булевы функции, т. е. функции, принимающие значение 1 плп 0 на каждом пз своих двоичных наборов (см. § 2.3). Поскольку каждая переменная может прини- принимать лишь два значения, любая булева функция имеет конечнук область определения.
Глава 3. Универсальные алгебры Область определения м-местной булевой функции состоит из 2П наборов значений переменных. Конечность области определения и области значения произвольной булевой функции позволяет задавать функцию с помощью таблиц истинности. Двоичные наборы значений переменных записываются как некоторые целые числа в двоичной системе счисления. Набор а = (ai, а2, ... , an) отож- отождествляется с записью числа ах ¦ 2"-1 + а2 • 2"~2 + • • • + an_x ¦ 2 + ап. Это число называется номером соответствующего набора. Так, для четырехместной булевой функции номером набора 0101 явля- является число 0 • 23 + 1 • 22 + 0 • 2 + 1 = 5. Номера наборов тг-ыестной булевой функции изменяются от нуля до 2П — 1. Расположив наборы в столбец в порядке роста их но- номеров и указав значения функции на каждом наборе, получим таблицу пстиппости булевой функции (табл. 1). Булевыми функциями яв- Таблица 1 ляются логические операции: дизъюнкция V, конъюнкция Л (или О), отрицание — (см. § 1.2). К другим известным булевым функциям относятся импликация х1—>-х2, эквива- эквивалентность хг = х2, сложение (по mod 2)^! 0^, обратная импликация xt ч— х2, прямая антиимпликация х1 ¦/¦>- х2, об- обратная антиимпликация хх -ф 2, стрелка Пирса хг | х2. Эти функции „X.. 00 00 00 00 li • • xn-ixn ,.. 00 ... 01 ... 10 ... 11 .'.'. il / @, 0, .. / @, 0, .. /@, 0, .. /@, 0, .. • , o, • , o, ., 1, . , 1, .'Л • V 0} 1} 0) 1) 1) ч/ х2, штрих Шеффера определены в табл. 2. X 0 j X ( 0 0 0 1 1 0 1 0 1 и" 0 о 0 1 н н 0 1 1 1 н t 1 1 о 1 г; III 1 0 0 1 н 0 ч" 0 1 1 0 >г 1 0 1 1 к н" 0 0 1 0 Та б '1- 0 1 0 0 л п ц а 2 а ¦< 1 1 1 0 н ¦< 1 0 0 0 В связи с тем что на каждом наборе булева функция может принимать одно из двух значений A пли 0), независимо от зна- значений, которые она принимает на остальных наборах, существуют 2-л различных «-местных булевых функций. § 3.4. Функции алгебры логики 89 Заметим, что к м-местным булевым функциям принадлежат функции / {хъ х2, ... , хп), существенно не зависящие от некото- некоторых переменных. Следовательно, всякая функция f {xv x2, ... , xh) включается в число функций f (хъ х2, ... , хп), где п>к. Так, константы, которые естественно считать нульместными булевыми функциями, можно рассматривать как функции одноместные, дву- двуместные и т. д. С ростом числа переменных быстро увеличива- увеличивается число зависящих от них булевых функций. Таблицы истинности булевых функций с ростом числа аргу- аргументов становятся громоздкими и неудобными. Более удобный аналитический способ задания булевых функций основан на рас- рассмотрении алгебры Фд2 с операцией суперпозиции над множест- множеством булевых функций—-двузначной алгебры Поста (см. § 3.1, пример 10). Зафиксировав в качестве системы образующих алгебры ФЕ, булевый набор операций (Vi •) —)> произвольную булеву функцию можно представить как суперпозицию этих булевых операций. Нетрудно убедиться в том, что операции V > • i — удовлетворяют всем аксиомам булевой алгебры (см. § 2.5, а также § 1.2). Одной из интересных систем образующих алгебры ФЕг явля- является набор Жегалкина @, •, 1). Операции 0, • ассоциативны и коммутативны, кроме того, для 0 выполняются следующие соотношения: x-(y@z) = x.y®x.z, C.13) z02 = O, C.14) z0O=z. C.15) Для указанных наборов операций разработаны канонические формы представлений булевых функций. Зафиксируем перечень переменных X = [хь х2, ... , хп]. Конъюнкция переменных из набора X. или их отрицании, т. е. конъюнкция вида хи • xi2 • ... ... • xt , где х{. = | ^ (/=1, 2, . . . , к), называется элементарной, h 3 | Х{. если в ней каждая буква встречается не более одного раза. К эле- элементарным конъюнкциям относятся также выражения, состоящие и,ч одной буквы (с отрицанием пли без отрицания), — одноместные элементарные конъюнкции. Константу 1 можно рассматривать как нульместную элементарную конъюнкцию. Так, элементарными конъюнкциями являются 1. хъ хх ¦ х,, х2 • х3, а выражения 2j • x.z. xx ¦ х2 ¦ хх, хх ¦ X} по определению ими не являются. ?1-Местная элементарная конъюнкция, включающая все пере- переменные пз набора X, называется констптуэнтон 1. Нетрудно ви- видеть, что число всех (различных) конституэнт 1 для фиксирован- фиксированного набора пз п переменных равно 2".
90 Глава 3. Универсальные алгебры Дизъюнкция S-элеыентарных конъюнкций 11г, называется дизъюнктивной нормальной формой (д. н. ф.). Д. н. ф., каждый дизъюнктивный член которой является конституэнтой 1, называется совершенной дизъюнктивной нормальной формой (с. д. н. ф). При этом не исключается случай одноместной дизъюнк- дизъюнкции (д. н. ф. совпадает с некоторой иг). Нульместная дизъюнкция принимается тождественно равной нулю. Двойственным образом (см. § 2.5), заменяя в приведенных определениях нули единицами и наоборот, дизъюнкции — конъюнк- конъюнкциями и наоборот, определяем понятия элементарной дизъюнкции, конституэнты 0, конъюнктивной нормальной формы (к. н. ф.), совершенной конъюнктивной нормальной формы (с. к. н. ф.). Теорема 3.11. Всякая булева функция f (х1: хг, ¦¦¦ , хп) == 0 может быть однозначно представила в совершенной дизъюнктив- дизъюнктивной нормальной форме. Доказательство. Пусть задана некоторая функция f (хи хг, ... , хп) ф 0. Каждому двоичному набору а = (аъ а2, ... , ап) соответствует единственная конституэнта 1 Х\ • х2 • ... • хп, обра- обращающаяся на этом наборе в единицу. Действительно, такая кон- конституэнта определяется следующим образом: I хг, если ai = 1, Х'1 ~ I хг, если аг = 0 (г = 1,2, ... , п). Все остальные конституэнты 1 на данном наборе обращаются в нуль. Например, для функции, зависящей лишь от перемен- переменных хъ х2, х3, набору @, 1, 0) соответствует конституэнта 1 — ag, а набору A, 1, 0) — конституэнта 1— ЗД^з- Образуя дизъюнкцию конституэнт 1, соответствующих всем наборам, на которых функция / обращается в единицу, получаем с. д. н. ф., равную данной функции. Причем функция / одно- однозначно определяет соответствующую с. д. н. ф., которую вследствие этой однозначности принято называть с. д. н. функции /. Теорема доказана. Ввиду того что Х'Х — 0, справедливо такое следствие. Следствие. Любая функция может быть представлена в виде суперпозиции булевых операций. Пример. Построим с. д. н. ф. функции f(x,y,z), заданной таблицей истинности (табл. 3). Конституэнты 1, соответствующие наборам, на которых данная функция обращается в единицу, имеют вид xyz, xyz, xyz, xyz. Таким образом, / (х, у, z) = xyzyxylyxyzyxyz. C.16) Заметим, что произвольная функция может быть представлена в классе д. н. ф. различными способами. Так, для приведенного § 3.4. Функции алгебры логики 91 X 0 0 0 0 1 1 1 1 и 0 0 1 1 0 0 1 1 Таб г 0 1 0 1 0 1 0 1 лица 3 / (X, У, 2) 0 0 0 1 0 1 1 1 выше примера наряду с равенством C.16) выполняется также равенство f{x,y,z) = xy\jxz\jyz. C.17) Поэтому в результате применения теории булевых функций при синтезе комбинационных схем возникла про- проблема нахождения минимальной по числу букв д. н. ф. для произвольной булевой функции (проблема миними- минимизации) [24,49, 112, 133]. В^силу принципа двойственности все результаты, относящиеся к пред- представлению булевых функций в классе д. н. ф., переносятся на к. н. ф. Пусть функция }фО представлена с. д. н. ф. где Кг — конституэнты 1, соответствующие наборам, на которых / принимает значение 1 (j = 1, 2, ... , г). Используя соотношения можно устранить в C.18) все отрицания и дизъюнкции. Раскрывая затем с помощью C.13), C.14) скобки и выполняя приведение подобных членов, получаем представление функции / в базисе Жегалкина с помощью полинома Жегалкина. Таким образом, справедлива следующая теорема. Теорема 3.12. Каждая булева функция может быть представ- представлена в форме полиноха Жегалкина. Более подробно различные формы представления булевых функ- функций рассматриваются в работе [24]. Системы образующих алгебры Ф_Ег называются функционально полными системами [133, 134]. В частности, функционально пол- полными являются рассмотренные выше булева система операций и базис Жегалкпна. Заметим, что система (\Л •, —1 не является базисом в ал- алгебре Фе2- Действительно, ввиду того что х\/у = ху, ху = х\/у, C.20) C.21) из булевой системы операций можно исключить дизъюнкции пли конъюнкции так, что системы (V, —] и (•, —} также будут функционально полными. Таким образом, алгебра Ф?„ конечно-порожденная и на осно- основании теоремы 3.5 (§ 3.2) для нее справедлив критерий Поста,
92 Глава 3. Универсальные алгебры обеспечивающий (в терминах максимальных подалгебр) необхо- необходимые и достаточные условия, при которых произвольная система S с Og, является системой образующих данной алгебры. Множество всех максимальных подалгебр (предполных замк- замкнутых классов) алгебры логики впервые было описано Е. Постом [155] (см. также [134]). Рассмотрим эти подалгебры и основную идею доказательства теоремы Поста о полноте. Булевой функцией, сохраняющей константу 0, называется функция f (хъ х2, ... , хп) такая, что / @, 0, ... , 0) = 0. Напри- Например, сохраняют константу 0 дизъюнкция и конъюнкция, а отри- отрицание и импликация не сохраняют ее (см. табл. 2). Булевой функцией, сохраняющей константу 1, называется функция f {хъ х2, ... , хп) такая, что /A, 1, ... , 1) = 1. Сохра- Сохраняют константу 1, например, конъюнкция, дизъюнкция, тогда как отрицание и сумма (по mod 2) не сохраняют ее (см. табл. 2). Функция /(#1, х2,_. . . , хп) называется самодвойственной, если f (хъ х2, ... , хп) = f (хи х2, ... , хп). Иными словами, самодвой- самодвойственная функция / на противоположных наборах (не совпадаю- совпадающих по каждой компоненте) принимает противоположные значения. Примерами самодвойственной функции являются отрицание (все остальные функции, заданные табл. 2, не самодвойственны) и функция f(x,y,z) (см. табл. 3). Введем отношение частичного порядка в множестве всех на- наборов, на которых определена n-местная функция / {хъ х2, ¦ ¦ ¦ . . . , хп). Положим 0с< 1. Тогда для наборов S = (аи а2, . . . , ап) и р = (Ьъ Ь2, ... , Ьп) а с< р, если аг О< Ь{ при любом ?=1,2, ... . . . , п. Например, A, 0, 0)О<A, 0, 1). Монотонной булевой функцией называется функция / (xlt х2, ... , хп) такая, что для любых наборов значений переменных а ир\ где аО<~р,/(а) О</ф) (под/(а) понимается / (аь а2, ... , ап)). Монотонны, например, дизъюнкция, конъюнкция, тогда как от- отрицание п сумма (по mod 2) немонотонны. Линейной булевой функцией называется функция / {хъ х2, ... ... , хп), представимая полиномом Жегалкина первой степени, т. е. принимающая такой вид: / (хъ х2, . . . , хп) = а0 0 а0 0 ф • ¦ • ф апхп, х, ф • ¦ • где а;—коэффициенты, равные нулю плп едпнпце (г = 0, 1, ... ... , п). Например, отрицание и сумма (по mod 2) линейны, а конъ- конъюнкция и дизъюнкция (см. C.19)) нелинейны. Нетрудно убедиться, что указанные классы булевых функций замкнуты относительно суперпозиции п, следовательно, образуют подалгебры алгебры Фе„ максимальные относительно ФЕ,, п алгебра логики tie имеет других максимальных подалгебр. Справедли- Справедливость этого утверждения следует из теоремы Поста 1133]. § 3.4. Функции алгебры логики 93 Теорема 3.13 (Критерий функциональной полноты). Система функционально полна тогда и только тогда, когда содержит 1) хотя бы одну функцию, не сохраняющую константу 0, 2) хотя бы одну функцию, не сохраняющую константу 1, 3) хотя бы одну несамодвойственную функцию, 4) хотя бы одну немонотонную функцию, 5) хотя бы одну нелинейную функцию. Необходимость следует из того, что каждый из классов в пяти перечисленных условиях образует собственную подалгебру ал- алгебры Фе2. Доказательство достаточности состоит в сведении системы, удовлетворяющей условиям теоремы, к некоторой функционально полной системе (например, [\J, —} или {•, —]). Использовав условия 1—3 теоремы, построим из выбранных функций константы 1 и 0. Пусть f^)(x1, х2, . . . , хп) б S — функ- функция, не сохраняющая константу 1. Отождествив все переменные функции /@', получим , если/<°>@,0, ... ,0) = 1, /@)(()) о, .... 0) = 0. При h (х) = 0, использовав функцию /P'gS, не сохраняющую константу 0, получим константу 1. Если h{x) = x, выберем не^ самодвойственную функцию /<с) (хъ х2, . . . , хт) б 2. Тогда найдется пара противоположных наборов а = (аъ а2, ... , ат) и а' = (аь а2, ... , ат) таких, что /?> E) = fCo (?'). Разобьем переменные функции /«=> на две группы: к 1-й отнесем все xt, для которых значения ai в наборе а равны нулю, ко 2-й — все остальные переменные. Подставив в /<с> вместо каждой пере- переменной 1-й группы функцию h(x) = х, а вместо переменной 2-й группы — переменную х, получим одну из констант /<с) (х, ... ... ,x) — t, где t g @, 1]. Другую константу можно получить, используя функцию, не сохраняющую t. Далее, выбрав немонотонную функцию /(т) {хъ х2, ... , хГ) 6 S> можно построить отрицание. Действительно, в силу немонотон- немонотонности для функции /<т) найдется пара наборов а = (аъ а.,, . . . ... , аг) п р = {Ьъ Ь2, ... ,&,) таких, что а <Хр, причем/(а) >о/(Р). Проверяя значения функции / на промежуточных наборах -f (их конечное число), где а^Т^^' можно выделить пару соседних наборов 5! = (oi, а\, ... , а[._1;, 0, a\i+i), . . . , а\) и а, = (а\, а\, ..¦_, a^i-i), 1, а(\-1.1), ... , а].) таких, что а С< ix c< аг21 Р> ПР1Г" чем /(m)(a0)o/(m) (а2). Подставив в функцию /('"' вместо перемен- переменных Xj, для которых а) = 0, константу 0, а вместо переменных х$, для которых а) = 1, — константу 1, при любых / Ф i, и, отождествив
94 Глава 3. Универсальные алгебры переменную Xj = x, получим /(m)(ai> al> •-• > а)-и х, а)+и ... ... , а\) = х. Наконец, выберем нелинейную функцию /(л> {хъ .. . ... , xs) € S, представленную полиномом Жегалкина, и выделим в ней нелинейный одночлен Р, наименьший по длине. Подставив в функцию /<л' вместо всех переменных, не входящих в Р, константу О и отождествив часть переменных одночлена из Р с переменной х, а остальные — с переменной у, получим функцию g (х, у) = ху(?) 0аг@&1/фс. Ввиду наличия отрицания можно считать, что е = 0. Если а = Ъ, то на основании C.19) ;VJ/. если а = Ъ = 1, #, если а = 6 = 0. С помощью построенной ранее функции х исходную систему S удалось свести к функционально полной системе (Vi —] илп Рассмотрим случай а фЪ. Пусть для определенности а = О, 6=1. Тогда g (x, у) = ал/ ф i/ и, перейдя к суперпозиции g (x, у) = = ху®у= (х©1)у($у= ху($у($)у = ху, сведем систему 2 также к функционально полной системе {•,¦—]. Теорема доказана. Следствие (ослабленная теорема о функциональной полноте) [24]. Для полноты системы булевых функций, включающей константы ¦О и 1, необходимо и достаточно, чтобы эта система содержала: 1) хотя бы одну немонотонную функцию, 2) хотя бы одну нелинейную функцию. В частности, из доказанной теоремы следует, что алгебра Ф^2 имеет базисы, состоящие из одной функции. Примерами таких базисов служат штрих Шеффера и стрелка Пирса (см. табл. 2). Как подчеркивалось в § 3.3, удалось не только описать мно- множество всех максимальных подалгебр алгебры логики, но и по- построить поверхность, которая включает все подалгебры данной алгебры [134]. Результаты этого параграфа попользуются в гл. 4 при изуче- изучении тождественных преобразований в системе алгоритмических алгебр (§ 4.2), а также при установлении критериев полноты для модифицированных алгебр Поста, связанных с многорегистровыми операторами (§ 4.3, 4.4). § 3.5. Изолированные множества. Конгруэнции Пусть Ua = (A; Q)— некоторая универсальная алгебра. Предпо- Предполагается, что любая операция w € « существенна по всем своим аргументам. Функция / (хъ х2, . . . , хп) существенна по перемен- переменной xit если найдется пара наборов, а = {цъ . . . , д;_ь д;, q^x, . . . . . . , qn), а' = (qlt . . . , g;_i, qi д;_ь . . . , qn), для которых / E) ф § 3.5. Изолированные множества. Конгруэнции 95 Множество В называется изолированным относительно мно- множества С в алгебре Uа {В, С си А), если В cz С> причем для любых д-местной операции F ? Q и системы элементов qlt q2, ... , qn ? С F (gi, q2, ... , qn) S В лишь тогда, когда qu q.2, ... , qn? В. Иными словами, для любой системы элементов gb q2, ... , qn e С, среди которых найдется по крайней мере один q^B, произвольная «-местная операция F б Q удовлетворяет соотношению F (qu q2, ... ... , qn)~? В [8,36]. При этом множество В, вообще говоря, не- незамкнуто, т. е. результат операции, примененной к некоторым элементам, входящим в В, может не принадлежать данному мно- множеству. Изолированность множества В относительно С в алгебре Uа обозначим через В О С. Множество 0 будем считать изоли- рованным относительно любого множества во всякой алгебре. Условимся также, что В<\В для любого Bci. Если В<\А, т. о. множество В изолировано относительно основного множества А в алгебре Ua, to множество В называется изолированным в ал- алгебре U а- Пример 1. В алгебре (TV; {-)-}) любой начальный отрезок Nm = A, 2, ... , т) изолирован относительно отрезка Nn—{1, 2, ... , п) при т ^ п. Аналогичное утверждение справедливо также в алгебре (N; {х}). Пример 2. В алгебре F (Щ = (F (91); {^}) (см. § 3.1, при- пример 5) множество (е) изолировано относительно любого множества M<^F (Щ. Кроме того, Mh О М( при (k^l), где МТ — множество всех слов над алфавитом Й, длина которых не больше г, Мт = = {s [ s 6 F Ct) и | s | ^ /•]. Операцией квазпсуперпозпцни, Ln[Tu г2' ""' ' п , назьг- \JU1, L/2, ... , -b/^' вается /г-арная суперпозиция б г.1' 2' ' ' ' ' n L у которой язык L фиксирован (см. § 3.1). Квазисуперпозиция L (qlt ... , qn) существенна по всем своим аргументам тогда и только тогда, когда для любого символа q{ в языке L найдется по крайней мере одно слово х g L такое, что х — х q{x", где х\ х" б / (Щ (i = 1, 2, ... , н). Пример 3. Пусть 5= V' <7i. Л и ... ,LJ совокупность (вообще говоря, бесконечная) всевозможных сущест- существенных квазисуперпозиций. Рассмотрим универсальную алгебру CR (Щ; S) с основным множеством Ш(Щ = Шг(91)\Це] 0) и сиг- сигнатурой операций S. Множество SRhCt) d5K (Э() всех конечных языков изолировано в данной алгебре. Действительно, любая
Глава 3. Универсальные алгебры «вазисуперпозиция L (чъ " ' ' *п 1 е ?, примененная к языкам Ьъ L2, ... , ?„ € Ж (91), среди которых есть по крайней мере один бесконечный язык, снова порождает бесконечный язык. Из определения изолированного множества1 следует, что если В О А, то дополнение ~~}В до основного множества А образует (UA) подалгебру алгебры UA. Относительная изолированность удовле- удовлетворяет свойству транзитивности: если В < С и С <\ D, то В <\ D, ША) (С/А) (и а) и антисимметричности: если 5 <] С ж С <\ В, то С = В. Таким Wa) (С/а) ¦образом, бинарное отношение <] является отношением частичного (С/д) порядка, а множество Ж (А) всех подмножеств множества А — частично упорядоченным множеством по отношению <] (см. § 2.4). (У) Пусть В, С, Dcz А, причем В <\С. Тогда (С/А) (B[\D)<\{C[\D). (С/А) C.22) Пусть [7а. = (Л; Q') — универсальная алгебра с основным множест- множеством А и сигнатурой операций Q'czQ. Тогда из 5<] С следует (иА) Я< С. uA) Для изолированных множеств справедливо следующее утвер- утверждение. Теорема 3.14. Пусть {Аа} — совокупность множеств таких, что Аа О В. Тогда пересечение D = f) Aa также изолировано относи- (С/А) тельно множества В в алгебре UА. Действительно, допустим, что D не изолировано относительно В в алгебре UА. Это означает, что для некоторой n-арной операции F 6 2 найдутся элементы дъ q2, ... , gn € В такие, что F (qlt д2, ... ... , gn)?D, причем (по крайней мере один) gi~?D. Тогда для элемента gi можно отыскать множество АТ б {Аа} такое, что д{? Ат. Но F (дъ q2, ... , дп) 6 Ап что противоречит изолированности множества Ат относительно В в алгебре UА. Если множество А1 является подалгеброй алгебры UA, причем AL <] В, то множество Ах называется подалгеброй, нзолпрован- А) ной относительно JB в алгебре Uа- Иными словами, множество Аг является подалгеброй, изолированной относительно В в ал- 1 Связь между понятиями «изолированное множество» и «идеал» уста- установлена в работе [10]. § 3.5. Изолированные множества. Конгрувщии 97 р^А, если А1аВ, причем для любых га-местной операции F б S и системы элементов дъ q2, ... , дп? В F (дъ дг, ... , qn) б Ах тогда и только тогда, когда \дъ д2, ... , дп) 6 Аг. Следствие. Пусть {Аа} — совокупность подалгебр алгебры VА таких, что Аа <] В. Тогда непустое пересечение D = |~| Аа образует (с/а) подалгебру алгебры UA, причем D <]В. (UA) Понятие изолированного множества используется при изуче- изучении некоторых свойств алгебры UA и структуры ее подалгебр. Теорема 3.15. Пусть U'A—некоторая подалгебра универсаль- универсальной алгебры UА (в частности, в роли С/д, может выступать и вся алгебра UA), В — множество, изолированное относительно UAl в алгебре UА, В <] А1. Тогда любая система образующих S под- (С/А) алгебры UAl содержит подсистему ?' = S [}В такую, что [S']p5. Действительно, пусть [Е']^5. Тогда найдется элемент q g В такой, что gg"[S']. Но вследствие изолированности множества В относительно подалгебры V'а, элемент q не порождается с помощью элементов подмножества (A1\B)czA1. Значит, [S]^g, что про- противоречит полноте системы S. Теорема доказана. Следствие 1. Любая универсальная алгебра UА, имеющая изо- изолированную бесконечно порожденную подалгебру UAi, бесконечно порождена. Действительно, по доказанной теореме любая система образую- образующих S алгебры UA содержит бесконечную подсистему ?' = S [") А1 такую, что [?'] = Лх. Следствие 2. Алгебра UA, имеющая бесконечное множество изолированных подалгебр, бесконечно порождена. Пусть \Аа | а 6 /}—бесконечная совокупность изолированных подалгебр алгебры UA, Аа <] А (при любом а 6 /). Тогда произ- (С/л> вольная система образующих ? алгебры UA для каждой подал- подалгебры Аа (а € I) содержит подсистему ?а = ? |") Аа такую, что [?а] = Аа. Отсюда следует бесконечность системы ?, так как ко- конечная система не может иметь бесконечной совокупности под- подсистем. Пусть Uа — некоторая универсальная алгебра, В — подалгебра, изолированная в UА, В <\ А, С= ~~\В. WA) Теорема 3.16. Алгебра UA может быть представлена в виде прямой суммы подалгебр В и С, где С = ~~| В — дополнение мно- множества В до основного множества А, так что А = B\J С и В[)С=0- 2. Множество Мс = С [] М, где М а В, тогда и только тогда образует подалгебру алгебры VA, когда таковой является мно- множество М. 4 8-330
98 Глава 3. Универсальные алгебры Пусть М[, М'г — подалгебры алгебры С/д, причем М\аМ\ {Ми М2аВ). 3. Подалгебра М\ максимальна относительно подалгебры М\ тогда и только тогда, когда М-^ максимальна относительно М2. Справедливость условий этой теоремы непосредственно следует из определения изолированности. Множество всех подалгебр алгебры (Уд можно разбить на три класса. 1. Класс Ра — все подалгебры, каждая из которых включается в подалгебру В. 2. Класс Рр— все подалгебры, каждая из которых включается в подалгебру С. 3. Класс Р7— все подалгебры такие, что Р{ б Р7 тогда и только тогда, когда B[\Pi = B', С[}Рг = С, где В' е Ра, С' е Pp. Следо- Следовательно, подалгебра Pi является прямой суммой подалгебр С ж В', причем подалгебра В' изолирована относительно Р; (см. § 1-2). Таким образом, чтобы изучить структуру подалгебр Uд, в част- частности структуру подалгебр из класса Pv необходимо выяснить структуру подалгебр, входящих в классы Ра и Pp. Проиллюстрируем изложенный выше метод на примере пост- построения поверхности подалгебры О9 (см. § 3.3, пример 6). Сущест- Существует одна подалгебра 04, изолированная относительно (99 в алгебре Ф.е21 Oi <i Os. Поэтому подалгебры, входящие в (99, разделяются подалгебры, входящие в изолированную под- под| (94; на три группы: Ра = {Оъ (94} алгебру (94; Рр = [О2, О3, (?,}— подалгебры, входящие в | 4; p.f = [O3i Ой, Os} — подалгебры смешанного типа, каждая из которых является суммой подалгебр из Ра и Р$. Подалгебра Oi имеет лишь одну тривиальную максимальную подалгебру O1ciOi. Отсюда следует, что подалгебра О8 = О7 [} Ох максимальна для (99. Другой подалгеброй, максимальной для О9. является подалгебра Oi. Подалгебра О7 = ~j Oi имеет две триви- тривиальные максимальные подалгебры: О2, О3. Следовательно, для Os максимальны подалгебры Оъ, Оа, О7; для Оъ — подалгебры Ох. О.,; для Оа — подалгебры Оъ О3. Перейдем к рассмотрению понятий гомоморфизма и конгруэн- конгруэнции в универсальных алгебрах. Эти понятия играют важную | иль как в алгебре, так и в теории формальных языков. Пусть задано отображение ср множества А в В, где А, В — основные множества в однотипных универсальных алгебрах U_\ = = (A; Q), Ub = (B; S) соответственно. Отображение ср называется гомоморфным отображением алгебры UA в алгебру UB, если для § 3.5. Изолированные множества. Конгруэнции 99 любых элементов аъ а2, • • • ^ о,п? А и произвольной д-арной опе- операции F € И выполняется соотношение [F(ai. аг, ... , ап)} ф = F [(aj ф, (а2) Ф, ... , (ап)ср], C.23) где (a-i) ср = Ьг 6 В (? = 1,2, ... , п). Если при этом отображение ср взаимно-однозначтю, то ср — изоморфное отображение алгебры С/д в алгебру Ub', в случае, когда ср —• отображение множества А на множество В (т. е. для каждого Ъ 6 В найдется хотя бы один элемент а б А, для которого (а) ср = Ъ), говорят о гомоморфизме (соответственно изоморфизме) алгебры С/д на алгебру Ub- Алгебра Ub называется гомоморфным (изоморфным) образом алгебры UA при отображении ср. Если ср — гомоморфное отображение алгебры UA в алгебру UB и В'с^В — образ множества А при отображении ср, В' = [b\b = = (а) ср} для любого а б А, то UBr образует подалгебру алгебры UB> и является гомоморфным образом алгебры С/д. Пусть ср — гомоморфизм алгебры Uа в алгебру UB, а ср — го- гомоморфизм алгебры Ub в алгебру Uq. Тогда композиция срф отоб- отображений ср и <1> является гомоморфизмом алгебры UA в алгебру Uq- Действительно, композиция срф является отображением множества А в множество С (см. § 2.3). Использовав соотношение C.23), получим [F (аъ аг, . . . , ап)} срф = ([F {аъ я2, . . . , ап)] ф) i> = ... , [(ап)ср]ф) = ^[(а1)фф, (а.3)фф, ... , (ап)срф]. Пусть на основном множестве А алгебры UA = (A; Q) опре- определено м-отношение р". Отношение рп называется стабильный! в алгебре (Уд, если для произвольной m-местной операции F 6 °.2 и любой последовательности m-мерных наборов (не обязательно различных) «1 = (аи, а12, . . . , а1т), а2 = (а21, «22. • ¦ • , а2т)> такой, что F(ai) = bi и pn(ava2j, ... , ап}) (где ai}, Ъ{ 6 А для любых / = 1,2, ... , т; ? = 1, 2, ... , ?i), выполняется соотно- соотношение pn(&i, 62- • - ¦ , ^п)- Бинарное отношение р называется конгруэнцией в алгебре {.4; Q), если о стабильно в данной алгебре п является эквива- эквивалентностью на основном множестве А (см. § 2.4). Прпмер 4. Конгруэнцией в алгебре (N; {+)) и <7V; (>'}) является отношение равенства =. Действительно, = —отношение г-квивалентности на множестве yV (см. § 2.4, пример 1). Если 4"
100 Глава 3. Универсальные алгебры а = а',Ь — Ь', где a,a',b, b'zN, то а + Ь = а' + &', а >; 6 = = а' X 6', т. е. отношение стабильно в рассматриваемых алгебрах. Пример 5. Конгруэнциями в алгебре (.F(9t); (g.)) являются отношения эквивалентности =, — (см. § 2.4, примеры 2, 3). Пример 6. Пусть Ua = (-4; 2) — универсальная алгебра, имеющая изолированную подалгебру Б<]Л. Тогда множество С = ~] Z? также является подалгеброй алгебры (Уд. Определим на множестве А бинарное отношение 2 так, что а?6 тогда и только тогда, когда a, b ? В, либо a, b ? С. С отношением 2 связано раз- разбиение Й(.А) = {5, С], и поэтому 2— отношение эквивалентности на множестве А (см. § 2.4). Кроме того, для произвольной т- местной операции F € 2 и любых наборов элементов 5 = (а1т а2, . . . . . . , am),JL' = {а[, а2, . . . , а„) таких, что а^а{ (? = 1,2, ... , т), F (a) SF(a'). Действительно, если сц 6 В для любого г = 1, 2, ... . . . , те, то по определению отношения 2 из а{^а{ следует, что а{ б В для каждого г =1,2, ... , т. Но 5—подалгебра алгеб- алгебры UА, и поэтому F(a), F(ai') € В. Следовательно, F(a)Si?(a'). Пусть теперь в наборе 5 = {аъ а2, . . . , ат) найдется хотя бы один улемент ah? С. Тогда из акЪа'к следует a'h^C. На основании изолированности подалгебры В F(a), F(a')fC. Таким образом, и в этом случае ^(а)Е(а'). Следовательно, отношение эквива- эквивалентности 2 стабильно в алгебре ?/д и является конгруэнцией в данной алгебре. Существует тесная связь между конгруэнциями и гомомор- гомоморфизмами в универсальных алгебрах [66]. Пусть р—некоторая конгруэнция в универсальной алгебре UA = (A;Q). Рассмотрим фактор-множество А/р = [Sa | а б А) и естественное отображение ср, сопоставляющее каждому элементу a б Л соответствующий ему смежный класс Sa (о) (см. § 2.4). Каждой m-местной операции F б 2 поставим в соответствие т-местную операцию F, определенную на фактор-множестве А/р следующим образом: F (Sai, Sa,, . ¦ ¦ , ^am) = Sa, где а = F (au a2, ... , am) для любых аъ a2, ... , am ? А. Вследствие стабильности отношения р операция F определена однозначно. Ввиду произвольности выбора операдий F 6 2 можно рассмат- рассматривать новую универсальную алгебру ?/д/? = (.А/р; Я), где Q = = {7"'|^;У}, однотипную алгебре С7д. Алгебра С/д/р называется фактор-алгеброй универсальной алгебры й'А по конгруэнции р. При этом отображение ср является естественным гомоморфизмом алгебры Uа на фактор-алгебру С/д/р. Например, конгруэнции ? в алгебре V'А (см. пример 6) соответствует однотипная фактор- алгебра 1/д/? = (Л/S; 2') с основным множеством .4'Е = {В, С) ц сигнатурой операций Q' = [F\F 6 2], где двузначная т-местная § 3.6. Полугруппы. Многоосновные алгебры 101 операция F определяется на /тг-мерных наборах смежных классов В, С так, что F (В, В, . . . , В) = В ж яа любом наборе, содер- содержащем хотя бы один элемент С, операция F принимает значение С. Проведенные рассуждения показывают, что любой конгруэн- конгруэнции р в алгебре С/д соответствует естественный гомоморфизм ср алгебры Uа на фактор-алгебру UA/e. С другой стороны, произ- произвольному гомоморфизму ф алгебры UA на однотипную алгебру UB соответствует конгруэнция р в алгебре С/д, для которой сущест- существует изоморфизм т алгебры UB на фактор-алгебру UA/e такой, что фт = ср (ср — естественный гомоморфизм UA на ОА/9 (рис. 16)). Это утверждение известно под названием тео- теоремы о гомоморфизмах ([66], гл. III,§ 1.8). Конструкции, связанные с гомомор- гомоморфизмами, часто используются при опи- описании синтаксиса и семантики формаль- формальных языков [71], в частности языков про- программирования (см. § 6.7). § 3.6. Полугруппы. Многоосновные алгебры п UA/p- Рассмотрим универсальную алгебру UA= рио. 16. = (А; 2). Пусть Sl и S2 — суперпозиции операций системы 2, Si, S2 e [2]s (см. § 3.1), причем хъ хг, ... , ... , хп — переменные, каждая из которых входит хотя бы в одну из суперпозиций Si, S2. Выражение Si = S2 называется тождеством алгебры V'А, если суперпозиции Si и S2 принимают одно и то же значение для любого набора а = аи аъ ... , ап значений переменных хъ хг, ... ... , хп в основном множестве А. В этом случае говорят, что тождество б1! = 6*2 выполняется в алгебре UA. В гл. 4 (§. 4.2) подробно изучаются тождества, которые выполняются в системах алгоритмических алгебр, составляющих основу прикладной теории алгоритмов. Пусть Т= {S« = S?|i= 1,2, ... ,m} C.24) является системой тождеств, левые п правые части которых — суперпозиции операций сигнатуры 2. Примитивным классом илп многообразием [77] К (Т) = {(А^; 2) | а б /} называется множество всех однотипных универсальных алгебр UAa — (Аа; 2), в каждой из которых выполняются тождества, принадлежащие системе Т C.24). Теорема C.17). Любой примитивный класс К (Т) вместе с любой своей алгеброй Gда б К (Т) содержит все подалгебры и гомоморф- гомоморфные образы данной алгебры [66].
102 Глава 3. Универсальные алгебры § 3.6. Полугруппы. Многоосновные алгебры 103 Действительно, если тождество, принадлежащее системе Т, выполняется в алгебре UAa?K(T), то оно выполняется, в част- частности, и для элементов любой подалгебры данной алгебры. Пусть, далее, «р — произвольный гомоморфизм алгебры Ua€ К (Т) на одно- однотипную алгебру Uв = (В; Q). Рассмотрим произвольный набор Р = (Ьъ Ь2, ... , bnh) (где Ь| 6 В, ? = 1,2, ... , nh) значений пере- переменных хъ хъ ... , xnh, входящих в некоторое тождество S* = S* системы ГA ^ к ^ тп). Алгебра UB является гомоморфным образом алгебры UА при гомоморфизме ф, следовательно, найдется набор а = (аъ а2, ... , аПк) значений переменных хъ х2, ... , хщ такой, что (в{) ф = Ьи сц $А (i = 1, 2, ... , nh). Но UA 6 К (Г), следова- следовательно, S\ (a) = Sh2 (а), где S) (а) — значение суперпозиции Sh.^на наборе а (/ = 1, 2). Отсюда по определению гомоморфизма 51(Р) = = ISi(a)] Ф = [<5а («I Ф = ^2ф). Таким образом, ввиду произволь- произвольности набора р тождество Si = ?2 выполняется в алгебре UB при любом к = 1, 2, ... , пг и UB $К(Т). Теорема доказана. Множество всех однотипных универсальных алгебр можно рассматривать как примитивный класс с пустой системой тождеств, в частности как класс К{0) ~{(Аа; {о})} всех универсальных алгебр, сигнатура операций которых состоит из единственной бинарной операции х о у. Каждая алгебра, входящая в класс К @), называется группоидом. Группоид, основной операцией которого является умножение, называется мультипликативным, в отличие от аддитивного группоида, в котором основная операция сложе- сложение, х + у. Подклассами класса К@) являются примитивные классы K(Ti), К(Тг), К(Т3) с системами тождеств Группоиды, принадлежащие классу К B\), называются идемпо- тентнымп, группоиды класса К (Г2) — коммутативными или абе- левыми, а группоиды класса К (Т9) — полугруппами. Примитивными являются класс K(Ti\J Т3) = K(Ti) f\K (Т3), содержащий все идемпотентные полутруппы, и класс К (Г21) ^з) = = К{Т2)[\К{Т3), состоящий из всех коммутативных полугрупп. Пусть Па = {А; (о}> — мультипликативная полугруппа. Эле- Элемент е 6 А называется правой единицей полугруппы Пд, если ае = а для любого а 6 А, левой единицей, если еа = а для любого a g А, и двусторонней единицей (или просто единицей), если еа = ае=а для любого а 6 А. В случае аддитивной полугруппы аналогично определяется левый, правый и двусторонний нули. Если полугруппа Пд = (А; {о}) имеет хотя бы одну левую еди- единицу ех и хотя бы одну правую единицу е2, то она имеет един- единственную двустороннюю единицу е, причем ег = е2 = е. Действи- Действительно, е^ = ех и е^ч = е2, следовательно, ех = е2 — единственная двусторонняя единица полугруппы Пд. Подалгебры некоторой полугруппы Пд называются подполугруппами данной полугруппы. Часто рассматриваются полугруппы с выделенной, или глав- главной, единицей е. Примитивный класс таких полугрупп К' (Т3) == = {(Аа; 2) | а 6 /'} определяется как совокупность всех полугрупп с сигнатурой операций Q = (о, е), где е — унарная операция, фиксирующая единицу полугруппы. Полугруппы, принадлежащие классу К' (Т3), называются моноидами. Очевидно, моноид и любая его подалгебра являются полугруппами с единицей. В то же время полугруппа с единицей может иметь полутруппы, не содер- содержащие единиц. Пример 1. Алгебра (N; {X}) является мультипликативной полугруппой с единицей. Очевидно, рассматриваемая полугруппа имеет подполугруппы без единиц, например Nr = {п \ п > г) для некоторого натурального г. Аналогично аддитивной полугруппой с нулем является алгебра ({0, 1,2, ... }; {+}). Пример 2. Алгебра (F(Щ; {№}) с основным множеством F (Щ всех слов в алфавите 9t и операцией конкатенации ?3 (см. § 3.1, пример 5) образует полугруппу с единицей е (е — пустое слово). Полугруппа F (Щ называется свободной полугруппой над ал- алфавитом 91 или (кратко) свободной полугруппой. Пример 3. Алгебра (ЗЯ(Л); {[}}), где Ж (А) — множество всех подмножеств непустого множества А, образует полугруппу, единицей в которой является множество А. Алгебра (9К(Л); (fl)) относится к коммутативным полугруппам, причем полугруппа ($51 (А); {[}}) идемпотентна. Пример 4. Некоммутативной полугруппой с единицей явля- является алгебра RA = (В (А); {^}) с основным множеством В (А) всех бинарных отношений на множестве А и операцией композиции отношений X. Единицей этой полугруппы служит диагональное отношение А а (см. § 2.2). Одной из важных подполугрупп полугруппы Дд является полу- полугруппа Sa= (S(А); (х)) с основным множеством S(А) всех отображений множества А в себя. Отображения множества А в себя часто называют преобразованиями или операторами на множест- множестве А (см. гл. 4). Любой оператор Р 6 S (А) на множестве А = «= {аъ а2, ... , ап, . . . } может быть задан в виде подстановки = 1аъ а2, . . . , ап, {(а,) Р, (о,) Р, ... , (ап) Р, . где (ап) Р — результат применения оператора Р к элементу ап 6 А (га = 1, 2, ... ). Поэтому полугруппа Sa называется симметри-
104 Глава 3. Универсальные алгебры ческой полугруппой подстановок. Эта полугруппа играет важную роль в теории полугрупп. В частности, справедливо следующее утверждение. Теорема 3.18. Произвольная полугруппа Пл = (Л; {о}) изо- изоморфна некоторой подполугруппе симметрической полугруппы (S (А); {х}). Иначе говоря. Пд изоморфно вложима в полугруппу S (А), причем А, еслиЛ.А — полугруппа с единицей, A U е в противном случае. 4 = ?<')<¦ е с А, еое = е и аОе = еОа = а для любого а ? А. Доказательство. Допустим вначале, что ПА — полугруппа с единицей е. Каждому элементу а 6 А поставим в соответствие оператор PatS(A), заданный подстановкой ап а, а2 О a, ... - = А. Для а„ С где [е, аъ а2, ... , ап. ... ] = А. Для различных элементов а, а' ? А а = еоа^еоа'=а', поэтому указанное соответствие вза- взаимно-однозначно. Более того, (х) Ра;>' = хо(аоа') = {xOa)Qa = = ((х) Ра) Ра- для любого хЧ А. Таким образом. РаОа- = Ра >: Ра', следовательно, в рассматриваемом случае полугруппа Па изоморфно вложима в симметрическую полугруппу 5л- Если ГЦ—полу- ГЦ—полугруппа без единицы, то, присоединяя к множеству А единицу е, нетрудно перейти к полугруппе И^ = (А\ {о}) с единицей е, для которой На — подполугруппа. Но согласно доказанному выше полу- полугруппа IIj изоморфно вложима в симметрическую полугруппу S (А). Отсюда следует, что подполугруппа 1Ц также изоморфно вложима в S (А). Теорема доказана. Пусть К (Т) = у () {( Й)|а 6/] — примитивный класс универ- универсальных алгебр с сигнатурой операций 2 = (о, —1} (где хоу — бинарная полугрупповая операция, х~г —унарная операция взятия обратного элемента) и системой тождеств iO(!/Oz)=(iOl/)Oz, C.25) JT1 О О/О *) = * = (* с?/) OJT1. C-26) Каждая универсальная алгебра, входящая в примитивный класс КТ(Т), называется группой. В каждой группе существует одно- однозначно определенный единичный элемент е. для которого спра- справедливо тождество хе = ех = х. Таким образом, всякая группа является полугруппой с еди- единицей. Элемент у~г называется обратным элементу у, а тождество C 26) — законом обращения. Заметим, что в группе каждое m § 3.6. Полугруппы. Многоосновные алгебры 105 уравнений ах = b, ya = b имеет единственное решение х = а '/; и у = Ъа~1 соответственно. Пример 5. Группой является аддитивная полугруппа 'Z: (-J-, —1)} с нулем, где Z — множество всех полых чисел а = ~а для любого а € Z. Пример 6. Группой является полугруппа S(A)czS(A) всех влаимио-однозначных отображений множества .4 в себя (см. § 2.3). называемых также обратимыми операторами. Не останавливаясь более подробно на теории групп, которой посвящена фундаментальная работа А. Г. Куроша [67], заметим лишь, что для групп справедлив аналог теоремы 3.18, состоящий в том, что каждая груша изоморфна некоторой группе обратимых операторов. Связь теории групп с обратимыми операторами опре- определяет важность этой теории, а также ее более раннее развитие по сравнению с теорией полугрупп. В последнее иремя наблюдается все возрастающий интерес к общей теории no/iyi руин [74], в част- частности в связи с использованием ее в теории формальных языков. Пусть Ид = (А; \г }) — некоторая мультипликативная полу- полугруппа. Элемент а ? А называется неразложимым в полугруппе ]1.4, если не существует элементов Ь. с € А (отличных от единицы е, когда Ид — полугруппа с единицей) таких, что а = be. Очевидно, любая система образующих I- полугруппы Ил содержит все не- неразложимые элементы данной полугруппы. Если при этом при- придется система образующих И полугруппы Ил- состоящая лн:нг- из неразложимых элементов, то 1 — еднистнепный базис данной полугруппы. Пример 7. Система {<2;U е| а,-? 31], состоящая из всех нераз- неразложимых элементов свободной полугруппы F (%), является един- единственным базисом данной полугруппы (см. § 3.3. пример 2). Пример 8. Множество Р всех простых чисел является един- единственным базисом, состоящим нз всех неразложимых элементов полугруппы '.V; ( ¦ ]¦) (см. § 3.3, пример 4). И теории iK'.'iyi pyun. как и в теории формальных языков, нажнут роль играют гпободныи полугруппы (см. пример 2). В качестве алфавита свободной полугруппы выберем никоторую спетому образующих -^-4 полугруппы Пл- Каждому слову ?i<j-> ... ... qri F (-) соответствует элемент а ¦'-. А такой, что ql •(/.,. ... ... ¦ qT= а. Элемент а называется значением слова q^., . . . qr в полугруппе Пл. Для некоторого элемента aiA в свободной полугруппе /'"(-) обычно существует несколько слов: sr = qr.qr:
106 Глава 3. Универсальные алгебры (д^. 6 2), значением каждого из которых является данный элемент. Это означает, что в полугруппе Пл выполняется равенство про- произведений называемое соотношением в полугруппе Па относительно системы 2 или просто соотношением в ГЦ, если ясно, о какой Е идет речь. Таким образом, соотношением в полугруппе Па является пара слов свободной полугруппы F (S), имеющих в Па одно и то же значение. Рассмотрим такое бинарное отношение тс в свободной полу- полугруппе FB), что sks' тогда и только тогда, когда слова s, s'€ 6/"B) принимают в полугруппе TLA одно и то же значение, т. е. справедливо соотношение s = s'. Отношение л рефлексивно, сим- симметрично и транзитивно; это означает, что к—-отношение экви- эквивалентности на множестве FB). Более того, тс— конгруэнция и можно рассматривать фактор-полугруппу (FB)/tc; {•}) с основным множеством = {?a[a6 4}, C.28) где BaaF(T-)— смежный класс по конгруэнции тс, состоящий иа всех слов, принимающих в полугруппе Па значение а, и опера- операцией умножения классов Ва • 5Ь ¦= Ва.ь. Из каждого класса Ва (• ?.FB)/tc выберем по одному слову иа?Ва— представителю дан- данного класса. Совокупность \иа \ а с А] называется множеством ка- канонических форм элементов полугруппы Па- Очевидно, каждый элемент а 6 А имеет единственную каноническую форму иа. Если при этом по каноническим формам иа, иь легко построить кано- каноническую форму иа.ъ (т. е. можно говорить об умножении кано- канонических форм), то полугруппа Па полностью представляется связанной с ней полугруппой канонических форм. Пример 9. Рассмотрим мультипликативную полугруппу (N; {х}), базисом которой является множество Р всех простых чисел (см. пример 8, а также § 3.2, пример 7, и § 3.3, пример 4). Построим фактор-полугруппу (F(P)/iz; •) свободной полугруппы F (Р) по конгруэнции -, где F (Р)/ъ — [Вп\ n^N) —фактор-мно- —фактор-множество, каждый элемент класса Вп в котором содержит все слова свободной полугруппы F(P), являющиеся разложениями числа п на простые множители. Канонической формой ип g Bn любого числа пб N будем считать слово вида рав § 3.6. Полугруппы. Многоосновные алгебры 107 такое, что р«< • р*> • . . . ¦ рч = п, где 1 < рх < р2 < • • • < pft (рь p2i • • • , Рп € ?*)• Хорошо известен удобный способ умножения чисел, заданных разложениями на простые множители, который определяет операцию умножения на множестве {ип | /г € N) всех канонических форм. Таким образом, полугруппу (N; {х}) можно представить с помощью построенной выше полугруппы канонических форм. С каноническими формами элементов полугруппы тесно связано понятие совокупности определяющих соотношений. Пусть С = = \уа = wa | а € /) — совокупность соотношений в полугруппе Па относительно системы образующих 2. Слово w выводимо из слова и с помощью системы С, у -| w, где у, u>gFB), если существует (С) цепочка v = s0, s±, ... , sh = w C.29) слов Si 6 F B) (i »= 0, 1, ... , ft) (при ft = 0 слово w графически совпадает с v, w = у), в которой слово Si можно представить в виде Si = r\zr\, где rj, r^F(S), так что в системе С найдется соотношение va = wa, для которого либо ъ = va — и тогда siTl = «= r^rj, либо z = iva — и тогда si+1 = r\var\ для любого i = 0, 1, ... , /с— 1. Иными словами, для того чтобы из олова si по- получить слово si+i, достаточно в s4 выделить подслово z, которое является левой или правой частью некоторого соотношения из С, и заменить его другой частью этого соотношения. Цепочка C.29) называется выводом слова w из и. Отношение —| на множестве F (Л) рефлексивно. Кроме того, (С) если v —| w, то, произведя вывод в обратном порядке, получим (С) w —[ v, следовательно, отношение —| симметрично. Отношение —i (С) (С) (С) транзитивно: если у -| w и w -| и, то v —| и. Таким обраэом, от- (С) (С) (С) во:пение —[ является отношением эквивалентности на множестве (С) F B). Очевидно, если v -\ w, то слова v. w 6 F (Ъ) принимают в по- (С) лугруппе Па одно и то же значение. Значит, v = w является следствием соотношений системы С в полугруппе Па и фактор- фактормножество F B)/—| образует подразбиение разбиения FB)/-. Совокупность С соотношений относительно ? в полугруппе П.4 называется определяющей совокупностью, если любое соотноше- соотношение v — W относительно 2 является следствием из С. Определяю- Определяющей совокупностью соотношений относительно S в полугруппе Пд является, например, множество всех соотношений относительно 1. Если в качестве системы образующих И выбрано основное мно- множество А полугруппы Па, то определяющая совокупность соот-
108 З./Ун Глава 3. /Универсальные алгебры, ношений относительно А может быть построена по таблице умноже- умножения в данной полугруппе. Пусть С — совокупность соотношений относительно ? в полу- полугруппе Па и для элементов а б А данной полугруппы определены канонические формы иа 6 Ва, где Ва — смежный класс из фактор- фактормножества F (?)'¦*. Теорема 3.19. Совокупность С является определяющей, если следствием из С будет любое соотношение v = иа для любого v б Ва(а? А). Иначе говоря, С — определяющая совокупность соот- соотношений, если с ее помощью всякое слово w 6 F (?) можно привести к канонической форме. Действительно, выберем произвольное соотношение v — iv от- относительно Е в полугруппе Па. По определению слова t>€F(?), w e F (?) принимают в Па одно и то же значение а, следовательно, v, w € Ва и им соответствует одна каноническая форма иа б Ва. По предположению соотношения v — иа и w = ua являются след- следствиями совокупности С, т. е. и -¦[ иа и w — | иа. Но в силу сим- (С) (С) метричности и транзитивности отношения —| из w —| иа следует (С) (С) иа -\ w, а из v -1 иа и иа -\ w следует v -| w. Таким образом, соот- (С) (С) (С) (С) ношение v = w является следствием совокупности соотношений С. Теорема доказана. Заметим, что с помощью совокупности определяющих соотно- соотношений можно задавать полугруппу Пл с точностью до изомор- изоморфизма. Однако при таком способе задания могут возникать труд- трудности, связанные с алгоритмической неразрешимостью проблемы тождеств в некоторых ассоциативных исчислениях [74]. К теории ассоциативных исчислений относятся порождающие грамматики формальных языков, которым посвящена гл. 5. Важными естественными обобщениями понятия универсальной алгебры являются многоосновные алгебры пли алг ебры со схемами операторов, предложенные П. Хпггинсом (см. [71]). Многоосновпая алгебра представляет собой систему ($02; 2), состоящую из семейства основных множеств $02 = {Аг | а 6 /} и сиг- сигнатуры операций 2, определенных на семействе С02 следую- следующим образом: каждой /i-местной операции F € 2 одпо- О - . "п. \) значно сопоставлен кортеж (аъ . . . , ап; аг> — схема данной операции, так что F является отображением декартова («' ап; "г) произведения Aai X Аа, X • • • X А,п в множество А1г, где o.j, ar^I (/ = 1.2, ... , п). Таким образом, в многоосновных алгебрах вместо одного основного множества используется семейство Ш основных множеств, а операции F € Q являются /г-местнымп функ- (<ч ап: аг) § 3.6. Полугруппы. Многоосновные алгебры 109 циями F (хъ . . . , хп), аргументы которых xq (q — 1, 2, ... , п) определены на множествах Аа f. Ж соответственно, сама же функ- функция F принимает значения из множества АЛг 6 Ж. Причем каждая нульарная операция F 6 S фиксирует в множестве Аат 6 Ж неко- некоторый элемент (константу) а 6 Апт. Элементами многоосновной алгебры (Ж; S) являются элементы ее основных множеств Аа (а 6 /). Если семейство Ж состоит из одной компоненты Ж = {А}, то алгебра универсальна, (А; 2). На многоосновные алгебры распространяются рассмотренные в данной главе определения и конструкции теории универсальных алгебр. Пусть Ш = {Ах | а 6 /} и W = {Д, | а 6 /} — семейства множеств. Семейство Ж' включается в семейство Ж ($01'с: $01), если Ва а Аа для любого а б/. При включении Ж'сгЖ семейство Ж' назы- называется подсемейством семейства Ш. Можно говорить также о тео- теоретико-множественных операциях над семействами, которые сво- сводятся к одноименным покомпонентным операциям. Например, } Подсемейство $8}' с: SR называется подалгеброй алгебры (Ж; 2), если Ж' замкнуто относительно всех операций данной алгебры. Подсемейство Ж' с: $81, для которого [$02'] = $81, называется системой образующих алгебры ($02; 2). Однотипными называются много- многоосновные алгебры ($02; 2) и ($02'; 2) с одной и той же сигнатурой операций 2 и семействами основных множеств $02 = {АЛ \ а € /) и $02' == {Ва | а 6 /} соответственно. Отображением алгебры ($02; 2) в однотипную алгебру ($02'; 2) называется семейство отображений ср = {сра | а € /} таких, что ср^ есть отображение множества Аа € $02 в множество Ва 6 $02'. Отобра- Отображение ф алгебры ($02; 2) в однотипную алгебру ($02'; 2) называется гомоморфизмом, если любая /г-местная операция F € 2 (*1 аП. аг) для любых элементов а1 б Ач, ... , ап 6 Аап удовлетворяет ра- равенству [ F (аъ ... , ап)\ ср = F ((а)х ср, (а2) ср, ... ,(ап)а). () Здесь (а) ср = (а) фа при a g Аа для любого а б/. Если каждое отображение фо(а€^) взаимно-однозначно, то ф — изоморфизм алгебры ($02; 2} в ($02'; 2). Пусть Х= (Х31 а 6/} — некоторое семейство множеств. Сво- Свободной многоосновной алгеброй S = ({Sa | a 6 /); 2), порожден- порожденной семейством X, называется алгебра, элементы которой — слова в алфавите {F/F 6 Q[) X), причем по индукции: а) однобуквенными словами алгебры 6" являются элементы множеств Ха a S, (для любого а 6 I) п только они, б) если sx ? iSBl, s21 S*,, ... , sn ^ SZji —
no Глава 3./^Универсальные алгебры элементы алгебры 6", то для любой n-местной операции F б 2 со схемой (а.ъ . . . , ап; аг) слово Fs^s, ... sni S^r— также элемент а'1гебры iS". Семейство X называется системой свободных обра- образующих алгебры 6". Многоосновная алгебра (Ж; 9) с выделенной основной ком- компонентой 40f 1 называется порождающей. Важным примером порождающей многоосновной алгебры является система алгорит- алгоритмических алгебр [26] (см. гл. 4). Порождающие многоосновные алгебры находят приложения при описании синтаксиса и семан- семантики языков программирования [71] (см. § 6.7). Часть ШИПЫ вторая шии 1
ГЛАВА 4 СИСТЕМЫ АЛГОРИТМИЧЕСКИХ АЛГЕБР § 4.1. Понятие системы алгоритмических алгебр Современные ЭВМ представляют собой сложные комплексы уст- устройств, снабженные развитыми системами математического обеспе- обеспечения, которые включают языки программирования и трансляторы с этих языков, операционные системы, диспетчеры, мониторы, различного рода обслуживающие программы, а также системы стан- стандартных и типовых подпрограмм. Все ати средства могут быть реализованы как программным, так и схемным способом. Процесс- разработки систем математического обеспечения, как и проекти- проектирования самих ЭВМ, чрезвычайно сложный и трудоемкий. Состав и способы разработки систем математического обеспечения сущест- существенно связаны со структурой данной машины и должны быть готовы к моменту ее выпуска. Поэтому систему математического, обеспечения ЭВМ следует разрабатывать одновременно с ее про- проектированием. В связи с этим актуальной проблемой современной вычислительной техники является автоматизация разработки систем математического обеспечения и проектирования ЭВМ как единого процесса. Ее решение требует развития новых теоретических направлений в кибернетике, в частности прикладной теории алго-. ритмов. Одним из основных источников задач прикладной теории алгоритмов является проблема оптимального перевода с одного языка на другой, которая может быть сформулирована следующим образом: существуют два алгоритмических языка и некоторый алгоритм, написанный на одном из них; требуется найти опти- оптимальную по заданным критериям реализацию этого алгоритма на другом языке. В программировании обычно первым является неко- некоторый язык программирования, ориентированный на тот пли пней круг задач, а вторым — внутренний язык машины, на которой решаются данные задачи. Таким образом, речь идет о трансляции с языка программирования на машинный язык с одновременно!! оптимизацией выходной программы. В то же время исходным может быть алгоритм работы некоторого устройства ЭВМ, запи-.
114 Глава 4. Системы алгоритмических алгебр д У X В Рис. 17. санный на предназначенном для этой цели алгоритмическом языке, а язык, на который транслируется данный алгоритм, — это язык схем. Тогда задача состоит в получении оптимальной схемы, реа- реализующей алгоритм работы данного устройства или некоторой его части. Процесс решения таких задач на практике делится на промежуточные этапы, на каждом из которых выполняется некоторая частичная оптимизация исходного алгоритма. Каждому из этих этапов соответствует свой промежуточный язык, причем перевод с одного промежуточного языка на другой должен осуществ- осуществляться достаточно просто. Тогда оптимизацию можно проводить с по- помощью эквивалентных преобразований алгоритма, полученного на данном утате с учетом его последую- последующей трансляции на язык очередного этапа. Такой подход был выработан при решении задач автоматизации проекти- проектирования ЭВМ и может быть перенесен на задачи, связанные с реализацией в схемном или программном виде средств математического обеспечения ЭВМ [32, 34]. Для выполнения тонких и глубоких эквивалентных преобразований алгоритмов необходимо построить алгебру алгоритмов, которая позволила бы производить эквивалентные преобразования столь же простым и естественным способом, каким они выполняются в обычной алгебре или анализе. Подобный алгебраический аппарат, предна- предназначенный для решения задач, связанных с автоматизацией проек- проектирования ЭВМ и программирования, был предложен В. М. Глуш- ковым [26]. Рассматриваемые нами построения эквивалентных преобразо- преобразований микропрограмм носят общий характер и могут быть рас- распространены на случай произвольных программ и алгоритмов. Приемы формальных преобразований микропрограмм делятся на два класса. Первый класс составляют преобразования, изменяющие лишь форму записи микропрограмм, последовательность выдачи микроопераций в операционное устройство при этом не изменяется. Ко второму классу относятся более глубокие преобразования, изменяющие как форму записи микропрограмм, так и выдаваемые этими микропрограммами последовательности микроопераций. К основным понятиям рассматриваемой теории относится абст- абстрактная модель ЭВМ, которая представляет собой композицию двух автоматов: операционного и управляющего. Поэтому функ- функционирование каждой ЭВМ в промежутках между обращениями за новой командой может быть описано в виде взаимодействия этих автоматов (рис. 17). Управляющий автомат А получает от операционного автомата В сигналы х, представляющие собой кортежи (а1, а2, ... , О зна- значений различных элементарных логических условий, определен- § 4.1. Понятие системы алгоритмических алгебр 115 ных па операционном устройстве. Выходные сигналы у управляю- управляющего автомата А отождествляются с микрооперациями: выходной сигнал у осуществляет микрооперацию у в операционном уст- устройстве В. Состояния управляющего автомата отождествляются с командами реализуемых этим автоматом микропрограмм. Управляющий автомат А обычно представляет собой конечный автомат Мили [24] с относительно небольшим числом состояний (от нескольких сотен до нескольких десятков тысяч). Операцион- Операционный автомат В является автоматом Мура, состояния которого для микропрограмм интерпретируются как содержимое регистров (или ячеек оперативной памяти, если управляющий автомат реа- реализует программу ЭВМ). Множество М состояний автомата В называют информацион- информационным. В отличие от автомата А операционный автомат В имеет огромное число состояний (один 40-разрядный регистр имеет свыше триллиона состояний). Поэтому автомат В естественно считать бесконечным, причем состояния его задаются с помощью беско- бесконечных (в одну или в обе стороны) абстрактных регистров (пре- (преобразования на бесконечных абстрактных регистрах рассматри- рассматриваются более подробно в § 4.3, 4.4). Представив систему микропрограмм в виде автомата, можно применить к ней различные преобразования, используемые в абст- абстрактной теории автоматов [24]. Весьма полезным преобразованием является, в частности, минимизация автомата, позволяющая в ряде случаев существенно уменьшить объем памяти, необходимый для хранения микропрограмм. Рассмотрим, далее, простейшие преобразования, относящиеся ко второму классу преобразований микропрограмм. Соотношения микроопераций ръ ... ,рп,ги ... , гт вида рхр2 . .. рп = г,г2 ... . . . гт позволяют заменять одни последовательности микроопе- микроопераций другими на так называемых линейных участках микро- микропрограмм (при преобразовании программ на соответствующих участках одна последовательность команд заменяется другой). Линейным называется такой участок микропрохрамм, в котором каждая микрооперация передает управление следующей (перехо- (переходов, как условных, так и безусловных, нет). При этом в ряде случаев можно вводить несколько уровней управления или из- изменять разбиение на уровни, произведенное ранее. Как пример рассмотрим преобразование линейного участка микропрограммы операционного устройства, состоящего из одного бесконечного в обе стороны абстрактного двоичного регистра. Будем считать, что все разряды кода, установленного на регистре, начиная с нулевого и выше, представляют целую часть соответ- соответствующего (двоичного) числа, а отрицательные разряды — его дробную часть. Обозначим через р микрооперацию прибавления единицы к содержимому регистра, а через г — микрооперацию
N6 Глава 4. Системы алгоритмических алгебр сдвига на один разряд в сторону младших разрядов. Из определе- определения указанных операций легко выводится следующее соотношение: р*г = гр. D.1) Действительно, оператор р2 в левой части этого соотношения преобразует код х, установленный на регистре, в код х-\-2. Последующее применение операции сдвига г переводит этот код в код -к-(а: + 2). Аналогичные преобразования операций в правой части соотношения D.1) переводят код х в код -уХ-\-1. Так как эти коды равны, то справедливость соотношения D.1) доказана. Для рассмотрения более общего случая необходим такой ап- аппарат, который позволил бы представить микропрограмму (или программу) в виде формулы в некоторой алгебре и применить обычные алгебраические методы преобразования этих формул. Для достижения указанной цели каждому операционному авто- автомату В поставим в соответствие две алгебры: алгебру операторов 91в и алгебру условий %>В- Операторами из %в будут любые одно- однозначные (в общем случае лишь частично определенные) преобра- преобразования информационного множества М (состояний автомата В). К операторам относятся, в частности, все микрооперации, опре- определенные на операционном автомате В. Условимся обозначать микрооперации строчными, а операторы (если они не являются микрооперациями рассматриваемого операционного автомата) — прописными буквами латинского алфавита. Условиями из ЭЗв будем называть отображения (в общем случае частично определенные) множества М в двухэлементное мно- множество {1, 0}. К условиям из ЭЗв относятся все элементарные логические условия, значения которых являются выходными сигналами операционного автомата В. Элементарные и неэлемен- неэлементарные условия будем обозначать строчными греческими буквами. Для операторов из %в помимо обычной операции умножения (последовательного применения операторов) введем еще два типа операций: так называемые а-дизъюнкцию и а-итерацшо операторов. Эти операции определяются для каждого условия а 6 %>в- а-Дизъюнкция операторов Р и Q — будем обозначать ее через (P\/Q) — представляет собой новый оператор R, определяемый а следующим образом. Для произвольного состояния т ? М R (т) = — Р (т), если условие а истинно на состоянии т (a(m)=i). и R(m) = Q(m), если условие а (те) = 0. Если а. (т) не определено, то неопределенным считается также и R(?n). Более наглядно: а-днзъюнкцпя (P\/Q) представляет собой кусочно-заданный опе- а ратор, равный Р там, где условие а истинно, и Q — там, где оно ложно. § 4.1. Понятие системы алгоритмических алгебр 117 Результат а-итерацип оператора Р — будем обозначать его через \Р) — представляет собой новый оператор S, определяемый а следующим образом. Для любого состояния т 6 М оператор S (т) равняется первому из элементов ряда т, Р (т), Р2 (т), Р3 (т), . . . , для которого выполняется условие а в предположении, что для всех предшествующих элементов это условие определено. Если такого элемента нет, то значение S (т) не определено. Выполнение оператора а-итерации [Р] заключается в проверке условия а н а применении оператора Р до тех пор, пока это условие остается ложным. Если в результате очередной проверки условия а полу- получено значение 1, то определение значения этого оператора закан- заканчивается. Если условие после очередной проверки окажется не- неопределенным, то неопределенным будет и значение оператора. Для условий из ЭЗв вводятся обычные операции дизъюнкции, конъюнкции и отрицания, при этом, однако, условия могут быть не определенными. Конъюнкция аДР Двух условий считается истинной, если оба условия аир истинны, ложной — если хотя бы одно из них ложно, и не определенной — во всех остальных случаях. Дизъюнкция «VP считается истинной, если хотя бы одно из условий а или р истинно, ложной — если оба они ложны, и не определенной — во всех остальных случаях. Условие а естественно считать неопределенным тогда и только тогда, когда условие а не определено. Кроме этих операций определяется операция левого умноже- умножения условий на операторы. Если а — условие, a P- оператор, то произведение Ра представляет собой новое условие р, про- проверка которого эквивалентна проверке условия а после выполнения оператора Р. Для любого состояния т^М р(?ге) = а (Р (т)). Иско- Искомую пару алгебр (%в\ %>в) можно построить теперь следующим образом. Прежде всего в состав алгебры 31-в включаются (в качестве образующих элементов) все микрооперации автомата В, а в состав алгебры S5B — все определенные на множестве М элементарные логические условия. К построенным таким образом множествам 91 в п аЗв операторов и условий применяются введенные выше операции. При этом возникают, вообще говоря, новые операторы и условия, которые вместе с уже имеющимися составляют мно- множества 2tB п ^5 • К этим множествам снова применяется ука- указанный способ образования новых операторов и условий. Объединив все построенные множества Э1В1) и 85$¦ получим искомые алгебры &в и %в- Для любого а. 6 Э5В а-дпзъюнкции и а-птерацип операторов из 91в содержатся в %в. Аналогично все произведения Ра для любых операторов Р ? ZlB содержатся в S5B. Легко видеть также, что любой оператор S ^ %в может быть выражен с помощью введен-
118 Глава 4. Системы алгоритмических алгебр ны.х выше операций в алгебрах 21 в и ®в через образующие эле- элементы этих алгебр, которыми являются микрооперации и элемен- элементарные логические условия автомата В. Система B1в; ®в), состоящая из пары алгебр:, алгебры опера- операторов 31в и алгебры условий ?5В, называется системой алгоритми- алгоритмических (микропрограммных) алгебр. Из определения порождающей многоосновной алгебры (см. § 3.6) вытекает следующее утвер- утверждение. Теорема 4.1. Система алгоритмических алгебр С&в; %>в) явля- является порождающей миогоосновной алгеброй с выделенной в качестве основной компоненты алгеброй операторов 31д. Представление любого оператора из алгебры %в через обра- образующие элементы системы (9tB; S5B) называется регулярной микро- микропрограммой этого оператора. Нетрудно понять, что в общем случае оператор может быть представлен не одной, а многими регулярными микропрограм- микропрограммами, поскольку в алгебре 31в, как и в алгебре ?5в, существуют различные соотношения ее элементов, например соотношение D.1). Используя ту или иную систему определяющих соотношений алгебр %в и S5Bl можно осуществлять формальные преобразования регулярных микропрограмм в принципе таким же способом, каким преобразуются выражения в обычной алгебре (см. с. 123—125). Остановимся теперь на вопросе о степени общности регуляр- регулярных микропрограмм. Зафиксировав какую-нибудь систему ? мик- микроопераций и элементарных логических условий автомата В, рас- рассмотрим как регулярные, так и обычные микропрограммы, по- построенные с помощью системы Е. На первый взгляд обычные микропрограммы отличаются большей степенью общности по сравнению с регулярными. В самом деле, в обычных микропрограммах допускаются произвольные условные переходы, а в регулярных все условные переходы зада- задаются операциями а-дизъюнкции и а-итерации. Как следует из определения этих операций, условный переход в представляемых ими выражениях осуществляется лишь в одном направлении — вперед. Скачки назад возможны только в одном случае: от конца итерационных скобок к их началу. Причем все такие скачки выполняются вполне однозначно в зависимости от условия, по которому производится итерация. Тем не менее, несмотря на меньшую общность записи регулярных микропрограмм, оказы- оказывается, что опп представляют тот же класс операторов, что и обычные микропрограммы. Справедливо следующее утверждение. Теорема 4.2. Любая микропрограмма может быть представ- представлена в регулярной форме. Существует алгоритм для преобразо- преобразования произвольных микропрограмм в регулярную форму. Для доказательства этого утверждения рассмотрим произволь- произвольную микропрограмму в системе ? микроопераций п элементарных § 4.1. Понятие системы алгоритмических алгебр 119 логических условий. Как отмечалось выше, эту микропрограмму можно представить в виде конечного автомата. Вводя в случае необходимости дополнительные состояния (в которых не совер- совершаются никакие преобразования над множеством М), все переходы в этом автомате можно выполнять после проверки не более одного условия в каждом состоянии. Пусть, например, заданы два условия: а и |3. В состоянии i проводится проверка этих условий, и в зависимости от их зна- значений осуществляется переход в четыре разных состояния. Комбинации @, 0), @, 1), A, 0) и A, 1) переводят автомат соответственно в состояния г\, i2, i3, it, выдавая при этом микрокоманды ръ р2, ря, р4. Вводятся дополнительные состоя- состояния V и i". В состоянии i проверяется лишь условие а, и если оно ложно (равно нулю), то осуществляется пере- переход в состояние V, а если истинно — в состояние i". Во время этих пере- переходов выдается микрокоманда е тожде- тождественного преобразования. В состоя- состояниях V и i" проверяется условие |3 и осуществляются переходы в состояния i1 и i2 (из состояния г") или в состояния i3 и ?4 (из состояния i"). Во время этих переходов выдаются соответствующие микрокоманды р1, р2, р3, р±- Предположим, что рассматриваемый нами автомат не имеет циклов. В таком случае микропрограмма записывается в регуляр- Рис. 18. Рно. 19. Рис. 20. ной форме. Все разветвленпя в микропрограмме представляются при этом а-дизъюнкциями. Пусть, например, автомат имеет вид, представленный на рис. 18. Состояние 1 соответствует первой команде микропрограммы, а состояние 7 — последней. Эта микро- микропрограмма записывается в регулярной форме iV'Pi)V'PtPs))- При наличии циклов воспользуемся идеей Мак-Картп: сведем этот случай к уже известному. Разрежем все циклы, введя в каждом разрезе новое состояние (рис. 19, 20). В каждом автомате (с раз-
120 Глава 4. Системы алгоритмических алгебр резанными или неразрезанными циклами) можно определить усло- условие 04j, при котором автомат, начиная движение из i-го состояния, рано или поздно достигает состояния /. Обозначим через S\j опе- оператор (последовательность микрокоманд), выдаваемый автоматом при переходе от i-го состояния в /-е. Этот оператор может, разу- разумеется, оказаться и неопределенным (в случае недостижимости /-го состояния из i-го). Будем считать, что ау и Su определяются для случая, когда соответствующий цикл разрезан (см. рис. 20). Обозначим через а/,- и Si) условие и оператор для случая склеен- склеенного цикла (см. рис. 19). Остальные циклы сохраняются в преж- прежнем состоянии (они могут быть как разрезанными, так и нераз- неразрезанными). Непосредственно из определений условий ai;-, ay и операторов Si), Si'j получаем следующие соотношения: V {Snp} O-nj), "nj "tip} Snj). D.2) D.3) Оба эти соотношения отражают тот факт, что после склеивания цикла появляется дополнительная возможность достижения /'-го состояния: нужно дойти (в автомате пока еще с разрезанным, циклом) от г'-го состояния до р-то; затем, пользуясь склеиваниеу, перескочить в п-е состояние, пройти какое-то число раз по цикл у (т. е. в случае разрезанного цикла от п-то состояния до р-то) и из п-то состояния перейти в /-е. Теперь можно предложить следующий алгоритм регуляризации любой микропрограммы. На первом шаге алгоритма представляем заданную микропрограмму в виде автомата. На втором сводим все переходы в автомате к раздвоениям в результате проверки в каж- каждом состоянии не более чем одного условия. На третьем разрезаем все цпклы. На четвертом строим описанным выше методом регу- регулярную микропрограмму для оператора Sir, представляемого по- полученным автоматом без циклов A — начальное, г — конечное состояния этого автомата). На пятом шаге, используя соотношения D.2) и D.3), одпн за другим восстанавливаем все разрезанные циклы. Выражение для оператора Sir после восстановления всех циклов п является искомым регулярным представлением исходной микропрограммы. Регулярность отого представления вытекает из регулярности выражения для оператора Sw в случае разрезанных циклов и регулярности правых частей соотношений D.2) и D.3). Оппсанный алгоритм регуляризации микропрограмм, хотя и прост в обосновании, часто приводит к очень длинным выкладкам. В практическом отношении.более удобен алгоритм [26], в котором используется регулярность событий, представпмых в автомате [24[. § 4.1. Понятие системы алгоритмических алгебр 121 Перейдем к рассмотрению формальных преобразований регуляр- регулярных микропрограмм. Среди определяющих соотношений построен- построенных выше алгебр (операторов и условий) существуют тождествен- тождественные, справедливые для любых операторов и условий, и конкретные (индивидуальные), справедливые лишь для некоторых операторов и условий. Примерами тождественных соотношений могут служить соотношения {Р}= { Р2}(е\/Р), D.4) { a v Pa = (е\/Р){Р*}, D.5) где ]J. = { P2} a, P — произвольный оператор, а — произвольное a v Pa логическое условие, е — тождественный оператор, осуществляющий тождественное отображение множества М. Справедливость соот- соотношений D.4) и D.5) вытекает непосредственно из определений операций a-днзъюнкции, а-итерации и умножения условия на оператор. Далее, пусть Р, Q, R — операторы, a — условие, причем вы- выполняются соотношения PR = RQ и Да = а. Тогда, как легко видеть, выполняется соотношение {P}R = R{Q}, D.6) a a так как {Р} представляет собой для каждого конкретного эле- a мента преобразуемого множества некоторую степень Р: [Р] = a = Рп (п — 0, 1, ... ). Из соотношения же PR = RQ следует, оче- очевидно, соотношение PnR = RQn. Кроме того, так как оператор R не изменяет условия а, то из последнего равенства следует, что для фиксированного п R{Q) = RQn= PnR = {P}R. а а Для нахождения конкретных соотношений необходимо фикси- фиксировать некоторый операционный автомат В и соответствующую систему микроопераций и элементарных логических условий. Пусть в качестве В выбран операционный автомат, состоящий из ft-дво- ичных бесконечных в обе стороны регистров. Будем считать, что разряды с неотрицательными номерами содержат целую, а с от- отрицательными — дробную часть соответствующих двопчных кодов. Зафиксируем также следующий набор микроопераций и элемен- элементарных логических условий автомата В: е — тождественное преобразование; s;. — прибавление содержимого i-ro регистра к /-му (код на г-м регистре при этом не изменяется);
122 Глава 4. Системы алгоритмических алгебр рг — прибавление единицы к содержимому i-го регистра; 1{ — сдвиг на один разряд в сторону старших разрядов на г-м регистре; гг—сдвиг на один разряд в сторону младших разрядов на г-м регистре; о* — очистка (установка нулевого кода) г-го регистра; оц — условие равенства нулю содержимого г-го регистра; Pi — условие равенства нулю содержимого всех разрядов с не- неположительными номерами (включая нулевой разряд) на г-м ре- регистр е. Кроме того, обозначим через аГ обратное преобразование любого взаимно-однозначного преобразования х. Например, pj" означает вычитание единицы из содержимого i-го регистра. Ясно также, l1 1 1 И что гг = операций, ношений: др рр Ясно акже, 1 и 1г = rj1. Исходя из определения введенных микро- микролегко установить справедливость следующих соот- соот'A, = *?Л' si/i = rAp I.s2. = s..l., 3 V 4 3' risij = **/-}' ) D-7) l}P\ = Pilv riPi =р\п, riPT1 = PT^i- D-8) що{ = oj. D.9) Здесь x{—любое преобразование на г-м регистре. Кроме того, выполняются соотношения коммутативности преобразований на непересекающихся множествах регистров. Например, s12p3 = p3Si2, riP^ = P7lri п т. д. Примерами соотношений в алгебре условий являются соотно- соотношения =4VPi= Pi- =чДР; = ai-\ D 10) Более сложный характер носит соотношение, справедливое для любых целочисленных кодов на г-м регистре: где х, у—любые операторы, не изменяющие содержимого г-го § 4.1. Понятие системы алгоритмических алгебр 123 регистра. Справедливость соотношения D.11) легко установить, если заметить, что Р^ представляет собой условие, при котором содержимое г-го регистра является целым четным числом. Опера- Оператор в левой части этого соотношения переводит, как легко видеть, любое целое число п на г-м регистре в нуль (если п четное) и единицу (если п нечетное). Таким образом, выполнение условия at после преобразования означает, что первоначальное число, хранив- хранившееся на регистре, было четным. Для иллюстрации формальных преобразований с помощью вы- выписанных соотношений рассмотрим микропрограмму умножения целых неотрицательных двоичных чисел х и z, установленных соответственно на первом и третьем регистрах, такую, что резуль- результат хг запоминается на втором регистре. Более точно, оператор Q умножения должен перевести три указанных регистра из состоя- состояния (х, у, z) в состояние @, xz, 0). Используя определение умно- умножения как последовательного сложения, приходим к следующей регулярной микропрограмме оператора Q: Q = о2 { D.12) Эта микропрограмма осуществляет последовательное сложение первого сомножителя 0 -f- х + х -\- •¦• с самим собой, одновременно вычитая каждый раз единицу из второго сомножителя до тех пор, пока последний не обратится в нуль. Легко видеть, что число ./V микроопераций, выполняемых этой микропрограммой, зависит от величины второго сомножителя z и определяется формулой N = = 2z + 3. При больших z микропрограмма будет, разумеется, чрезвычайно медленной. Применяя к микропрограмме D.12) соотношение D.9) и соот- соотношения коммутативности преобразований на разных регистрах, приводим ее к виду Q = о2 1 С помощью соотношений коммутативности и соотношений D.5) и D.11) микропрограмму можно привести к виду Q = о2 ( eX/Siop^1) { slop-2} Z^gOiOg. Применяя соотношения D.6)—D.8), D.10) и соотношения комму- коммутативности, получаем Q = о, ( eysup-1) 11гъ { s^p-1} о^. В результате выполненных преобразований чпсло повторений опе- оператора s^p^1 внутри цикла уменьшается вдвое (точнее, изменя-
124 Глава 4. Системы алгоритмических алгебр ется от п к у )• Повторяя указанные преобразования к раз, приводим микропрограмму к виду h Q = o2(( e\Zsnp-1) V3) { sup-1} ого3. Рз aa Таким образом, мы получили новый цикл с оператором (eVsiaP7X) ^i/V При k>log2n второй цикл исчезает (сводится к тождественному оператору). Это неравенство выполняется (т. е. второй оператор исчезает), очевидно, при условии сц, где z = 3. В результате получаем окончательную запись для преобразованной микропрограммы: Q = °2 { (е V SiaPP) V3} 0^3. D.13) a P Нетрудно видеть, что в таком виде микропрограмма описывает известный алгоритм позиционного умножения двоичных чисел, обычно применяющийся в ЭВМ с параллельными арифметическими устройствами. При перемножении больших чисел микропрограмма в виде D.13) значительно аффективнее исходной микропрограммы D.12). Рассмотренный пример иллюстрирует методику формальных преобразований микропрограмм. Аналогично можно было бы выпол- выполнить и другие преобразования, например преобразование микро- микропрограммы деления. Из вида, основанного на определении деления (как последовательного вычитания делителя из делимого), ее можно преобразовать к виду, обычно используемому в ЭВМ. Подобные глубокие преобразования являются, как правило, наиболее эффективным средством оптимизации микропрограмм, однако их реализация в каждом конкретном случае может ока- оказаться сложной. Вместе с тем в принципе менее эффективные преобразования линейных участков микропрограмм (описанные выше) просты в применении и сравнительно легко поддаются автоматизации. В результате их общий вклад в оптимизацию микропрограмм на практике оказывается весьма значительным. Метод, положенный в основу доказательства теоремы 2, дает возможность регулярпзовать, т. е. представить в соответствующей системе алгоритмических алгебр, произвольный алгоритм, и в част- частности любую микропрограмму или программу вычислительной машины. В этом состоит его фундаментальное значение в при- прикладной теории алгоритмов. Дальнейшее изучение абстрактной автоматной модели ЭВМ привело к созданию теории дискретных преобразователен [35, 53, 72], которая находит важные приложения в практике программирования. Анализ основных конструкций, входящих в сигнатуру операций алгоритмических алгебр, -под- § 4.2. Тождественные соотношения в системе алгоритмических алгебр 125 тверждает их полное соответствие концепции структурного про- программирования [41]. Таким образом, в отличие от традиционной теории схем программ [45, 47, 65, 136] системы алгоритмических алгебр представляют собой теорию схем структурированных алго- алгоритмов и программ. В работах [116, 117, 121] в аппарат алгоритмических алгебр введены средства параллелизма и техники фильтров, которые могут быть использованы в качестве гибкого механизма управле- управления процессом вычислений. На основе предложенного подхода нами разработана (см. § 4.2) методика формальных преобразований выражений алгоритмических алгебр к каноническим формам по аналогии с теорией д. н. ф. (к. н. ф.) [24, 49]. Полученные резуль- результаты находят применение при изучении проблемы аксиоматиза- аксиоматизации алгоритмических алгебр [58,121] (см. также обзор [37]). Средства параллелизма позволяют ориентировать теорию алгоритмических алгебр на приложения, связанные с формализацией параллельных вычислений [63, 84] и решением других важных задач, возникаю- возникающих с развитием систем математического обеспечения многопро- многопроцессорных вычислительных комплексов [44, 62, 82, 92]. § 4.2. Тождественные соотношения в спстеме алгоритмических алгебр Как отмечалось в § 4.1, сигнатура операций системы алгорит- алгоритмических алгебр (9tB; 53в> содержит такие традиционно програм- программистские средства, как условный переход (а-дизътонкция), цикл (а-нтерация), средства для составления сложных логических усло- условий (операции над алгеброй условий) и др. Поэтому изучение алгебраических свойств операции в алгоритмических алгебрах и разработка для них техники тождественных преобразований пред- представляют значительный интерес в связи с вопросами оптимизации программ по заданным критериям. В данном параграфе предла- предлагается некоторое расширение сигнатуры операций системы BtB; Я5в), не нарушающее программистской ориептащш аппарата алго- алгоритмических алгебр. Приводятся тождественные соотношения, отражающие свойства операций системы (ЭДв! Я5В), и рассматри- рассматриваются канонические формы представлений для условий из 55в, аналогичные каноническим формам (д. н. ф., к. н. ф.) алгебры логики (см. § 3.4). Методическая близость предлагаемого подхода к решению одноименных проблем в алгебре логики позволяет надеяться на его естественность и удобство в применении. Пусть М = {nii [ I s /} — информационное множество состояний операционного автомата В: X = {aL, а,, ... . in] и Y = [Аг. А*, . . . ... , Ат) — совокупности элементарных соответственно условий
126 Глава 4. Системы алгоритмических алгебр и операторов, Р, Q, R t 91в — произвольные операторы, а, E, f g 6 33В — произвольные условия. Дополним сигнатуру алгоритмических алгебр операциями дизъюнкции P[]Q, параллельного применения операторов Р, Q и фильтрации, порождающей операторы-фильтры, а _ $ Е, если а = 1, 1-1 I iV, в противном случае, где Е — тождественный, N — неопределенный операторы. Опера- Операция дизъюнкции Р[\ Q определена лишь в случае, когда операторы Р и Q функционируют однозначно в согласованном вычислитель- вычислительном процессе. Более точно дизъюнкция P\]Q определена в состо- состоянии т t М, если операторы Р и Q выдают в этом состоянии одну и ту же последовательность элементарных операторов, у =¦ = AitAi2 . . . Aik, либо на некотором промежуточном этапе (при на- наличии одной и той же истории вычислений, А^А^ . . . A^r, I ^ ^ г ^ к) один из операторов прекращает функционировать, а другой выдает последовательность у. Операция дизъюнкции ассоциативна и коммутативна: Дизъюнкция также удовлетворяет следующим тождествам: )R= PRUQR, Операция умножения Р ¦ Q (последовательное применение операторов Р и Q) ассоциативна, и некоммутативна, причем выполняются тождества Р ¦ Е = Е ¦ Р = Р, Р -N = N ¦ P = N. Следовательно, операторы Е и N играют роль констант в ал- алгебре 91В. Операторы-фильтры а в зависимости от значений условий я осуществляют управление процессом вычислений, представлен- представленным соответствующим регулярным выражением. Иными словами, фильтр а обращается в тождественный оператор Е, не нарушая работы алгоритма, если условие а истинно в данном состоянии. Если в указанном состоянии а=?^1, фильтр а обращаетсн в N, обрывая соответствующую ветвь вычислений. § 4.2. Тождественные соотношения в системе алгоритмических алгебр 127 Для фильтров выполняются следующие тождества: D.14) D.15) Из D.14), D.15), учитывая коммутативность конъюнкции и дизъюнкции, следует Обобщенные булевы операции Vi Л, — (см. § 4.1) могут быть заданы таблицей истинности (табл. 4); здесь и далее предпола- предполагается, что на множестве Е3 = @, |х, 1} логических значений усло- условий алгебры 93 введено отношение порядка < так, что 0 < |х < 1, где 0 — значение лжи, [г — неопределенности, 1 — истины. Далее 8нак конъюнкции Л часто опускается. Таблица 4 ал,3 0 н- 1 0 0 0 0 V- 0 н- 1 0 н- 1 0 (J- 1 0 0 н- 1 V- IJL н- 1 1 1 1 а 0 н- 1 а 1 н- 0 Следовательно, они удовлетворяют всем законам булевой алгебры (см. § 2.5, а также § 1.2), кроме закона исключенного третьего а\/Ъ. = 1 и закона противоречия аДа = 0- Это означает, в част- частности, что любое выражение трехзначной логики Фв„ постро енное с помощью указанных операций из элементарных логических усло- условий аг, а2, ... , ап, может быть преобразовано к д. н. ф. или к. н. ф. (см. § 3.4). Пусть теперь Ui\fU2\/ ¦ ¦ • \/Uh — произвольная д. н. ф. трех- трехзначной логики, где U{ = а;,а;, ... а, (аи = 1}\, ] = i, 2, ... .,. , r{; i = 1, 2, . . . , к). Тогда справедливо такое соотношение: V Ui= U ~°-и*и ¦•• К.- D-16) il il i
128 Глава 4. Системы алгоритмических алгебр Используя фильтры и дизъюнкцию операторов, можно представить а-дпзъюнкцшо в виде Q. D.17) Такое представление, учитывая D.16), позволяет разложить а- дизъюнкцию по элементарным фильтрам. Пример 1. Пусть задана а-дизъюпкция (P\JQ), где а = = {o-i\J a-i) {ax\J az)\J а.г. Применяя правило де Моргана, преобра- преобразуем условие а: ~аъ = (aiV «2V ai V аз) а2 = = (а^\/а1аз) а2- а2) Используя законы дистрибутивности, идемпотентности и правила поглощения, получаема = а{а2\/ (x-Ji.^ = аха2. Наконец, вследствие D.17) справедливо соотношение (P\/Q)a.1isPU Дизъюнкция и фильтры позволяют сформулировать соотноше- соотношения для a-итерации. Предварительно заметим, что из определения a-итерации следует справедливость тождеств D.18) D.19) Кроме того, для a-птерации выполняется совокупность соотно- соотношений {Р} = {(aP)"} U Ъ.Р {(a?)"} U • • • U (а {(аР)п) D 20) при любом ге=1, 2, ... . Действительно, пусть в некотором состоянии т{М а-итерацпя (Р) выполняется так, что а стано- вптся истинным после применения оператора Р к раз. Тогда в силу D.18) левая часть тождества D.20) выдает последователь- последовательность (aP)h. Если при делении числа к на п получается остаток г, то все ветви правой части равенства D.20) обращаются в N, кроме {аРу {(аР)"}, которая выдает ту же последовательность операторов. § 4.2. Тождественные соотношения в системе алгоритмических алгебр 129 Справедливо также соотношение, предложенное в работе [50] при рассмотрении системы алгоритмических алгебр с некомму- некоммутативной алгеброй условий: P{QP}= { PQ}P. а (Ра) D.21) Из этого тождества в результате подстановки вместо операторов Q последовательности Рп~г следует справедливость соотношения р [рп] = { рп] р при любых п= 1, 2, ... . (Предполагается, что a (Pa) при п=\ Р(°) = Е). При изучении проблемы тождеств в системе алгоритмических алгебр (9tB; ЯЗВ) представляет интерес соотношение {{Р) P = *l)*{P}{{P) ' $ p ( D.22) Суть тождества D.22) состоит в том, что в отличие от D.19) в нем за знак итерации можно выносить (при определенных ус- условиях) не только весь оператор., стоящий в итерации, но и его часть. С помощью фильтров и дизъюнкции операторов можно анали- анализировать a-итерации по сложным условиям. Например, справед- справедливо тождество Р}. D.23) Действительно, пусть левая часть тождества D.23) определена в некотором состоянии т е М и выдает последовательность опе- операторов Рк. Это означает, что г-кратное применение оператора Р к состоянию т @ ^ i < к) оставляет условия а и E ложными, тогда как последовательность Ph по крайней мере одно из них обращает в истину. В соответствии с этим правая часть тождества D.23) выдает ту же последовательность по крайней мере по одной из своих ветвей. Если, например, а = 1, а $фа, то первая ветв1. выдает последовательность Рк, а вторая ветвь становится неопре- неопределенной. Из тождества D.23) в силу { Р} = N для любых р 6 33В п Р ? %в следует { Р} = (РР). Это позволяет в итерационных (a v (J.3) а '—' условиях исключать дизъюнктивные члены, имеющие в качестве сомножителя константу неопределенности а. Анализ итерации { Р) указывает на необходимость введения юполнптельных средств, позволяющих прерывать итерации по одному из условии, например по я, для проверки другого, если условие а принимает значение и-. Заметим, что система операций (Л, V^ —} функционально неполная, так как из приведенных ,, 8-330
130 Глава 4. Системы алгоритмических алгебр выше таблиц истинности следует, что каждая из этих операций сохраняет константу ji. Поэтому далее в качестве основных опе- операций алгебры условий 33В рассматриваются булевы операции, р1 0'1 > ^1\ а1'1' (табл. 5). Операции аа^\ а = 0, и., 1 удовле- удовледополненные тремя унарными операциями1: а0'1 > Таблица 5 a 0 н- 1 «0A) 1 0 0 0 1 0 ПA> 0 0 1 творяют следующим соотношениям: Таким образом, операция отрицания является производной от операций Vi Ai a0'1'. Заметим, что операции а0'1) не нарушают программистской ориен- ориентации аппарата алгоритмических алгебр, связанной с выполнением условных пе- переходов и циклов, ввиду справедливости тождеств К производным операциям алгебры относятся также унарные операции а0*0) = а0'1', а11'0) = а^1), а1'0' = а1'1). На множестве Е2 = {0, 1} операции Д, у,—совпадают с соответствующими операциями двузначной логики. В то же время унарные операции аа(с) (а = 0, р., 1; с = 0, 1) на множестве Е2 обращаются в а или а либо вырождаются в булевы константы 0, 1. Отсюда следует, что на множестве Ре, условий, принимающих значения из Е2, выполняются все известные тождества двузначной алгебры Буля. Введение в алгебру ЯЗд унарных операций аа<с> позволяет ана- анализировать а-итерации по сложным условиям, и в частности по конъюнкции: D.24) E0@) }} а. Попадая в одну из ветвей правой части, например в первую, применяем оператор Р до тех пор, пока условие а не станет истин- истинным при р = 1 пли р = и.. Если a = 1, р = ji, данная ветвь обра- обратится в N. Одновременно вторая ветвь либо выдаст ту же после- последовательность операторов, что и первая, либо обратится в Л". В алгебре условий 55^ выполняется аналог законов исключен- исключенного третьего и противоречия а0A) 0. 1 Б. Л. Трахтенбротом замечено, что операции aa(J) определяются пре- предикатом а = а, где а = 0, р. 1. § 4.2. Тождественные соотношения в системе алгоритмических алгебр 131 Операции aa<c> могут быть опущены на элементарные условия с помощью следующей совокупности тождеств: D.25) где 0 = 1, [* = [*, Г= 0. Применение четного числа операций вида ( )с<°) к условию <ха(с'> не изменяет этого условия, а нечетное число таких операций переводит его в аа(с^. Справедливы также соот- соотношения ас@) = аи.A)уасA)) асA, = аи.@) . ас"@) 1 i D.zb) а|х@) _ асA)уасA)) aji(l) = ас@) . ас@)_ J Унарные операции aa<c) могут быть внесены в дизъюнкции (конъ- (конъюнкции) на основании тождеств (a (a V (ac"(c) V ^ (c» V f D-27) 1 Операция 4a левого умножения условия на оператор удов- удовлетворяет следующим тождествам: Аи. = fi, iVa = [a, 4a = D.28) Заметим, что с\/ Ас = с, с (Ас) = с, где с — const, Л —- всюду опре- определенный оператор. Справедливы также тождества Аа = АА (Аа)\/ D.29) где АА — характеристическое условие, истинное, если оператор А определен в данном состоянии, и ложное в противном случае: D.30) D.31) 5*
132 Глава 4. Системы алгоритмических алгебр С помощью определенных выше тождеств D.24)—D.31) можно доказать справедливость соотношений А • 1 = = АА\/ АА(А-1) = А (Аа)аМ = АА D.32) D.33) D.34) Как и в алгебре логики, доказательство этих тождеств может быть проведено с помощью непосредственного вычисления значений истинности их левых и правых частей в зависимости от истин- истинности значений переменных и характеристических функций, из которых они составлены. Кроме того, допускаются преобразования выражений, основанные на доказанных тождествах. Например, если в тождестве D.34) определен оператор А, левая часть тож- тождества принимает то же значение, что и первый дизъюнктивный член в его правой части, тогда как АА, а значит, и второй член дизъюнкции в этом случае обращается в нуль. В то же время, если оператор А не определен в данном состоянии, то левая и правая части тождества совпадают с условием ([i)a(c). Следова- Следовательно, тождество D.34) справедливо. Пусть / (аь а2, ... , ап; Аъ А2, . . . , Ат) — логическая функ- функция, составленная из элементарных условий X = [аъ ... , ап}и пе- переменных операторов Аъ . . . , Ат с помощью операций алгебры 33В. Тождества D.25), D.27), D.28), D.34) позволяют опустить унарные операции непосредственно на элементарные условия. Функция /<~> (о^, ... , an; Аъ . . . , Ат) инверсна к функции /(ax, a2, ... , а„; Аъ ... ,_Ат), если /'"'(аь а2, ... , ап; Аъ ... • • • 1 Ат) = / (аь а2, ... , ап; Аъ . . . , Ат). Условие, входящее в а-итерацию некоторого оператора или в фильтр, называется операторным. Функция /* (аь ... , ап; Аъ ... , Ат) двойственна к функции /(<*!, . . . , an; Аъ . . . , Ат), если она может быть получена из функции / в результате замены 1) каждого операторного условия, входящего в /, соответствующим инверсным условием; 2) каждого вхождения операции V в неоператорные условия функции / операцией Д, и наоборот; 3) каждого вхождения символа 1 в не- неоператорные условия функции / символом 0, и наоборот; 4) каждого вхождения характеристических условий АЛ в неоператорные условия, входящие в /, условиями AjA (i = 1, 2, ... , т), и на- наоборот. Примером двойственных выражений в алгебре 33 в может служить любая из пар тождеств D.26), D.27). Теорема 4.3 (принцип двойственности). Пусть f=g(a1, ... . оп- .J,, ... ,Ат) D.35) § 4.2. Тождественные соотношения в системе алгоритмических алгебр 133 является произвольным тождеством алгебры 35д, составленным из элементарных условий ai, ... , an и переменных операторов Alt . .. . .. , Ат. Тогда выражение /* = g* (ai. ¦ ¦ ¦ , о-п; Аъ . . . , Ат) также является тождеством алгебры ЯЗд. Доказательство. Ввиду справедливости тождества D.35) при любых значениях элементарных условий аъ . . . , an в ре- результате подстановки вместо условия ai отрицания at для каждого i = 1, 2, ... , д получаем новое тождество = ?(аь . .. , ап; Аъ ... , Ат) D.36) в алгебре Ъв. Инвертируя левую и правую части тождества D.36), получаем Используя правила де Моргана, закон двойного отрицания, а также тождества D.25), D.28), опускаем знак отрицания на элементар- элементарные неоператорные условия. В результате получаем тождество /* = g* (о-ъ ..., о.п; Аъ . .. , Ат), двойственное тождеству D.35). Теорема доказана. Аналогично теории д. н. ф. (к. н. ф., см. § 3.4) булевой алгебры введем основные понятия и определения, связанные с каноничес- каноническими нормальными формами в алгебре ?5g. Предварительно рас- рассмотрим формы представлений функций в алгебре ФЕз — алгебре трехзначной логики с логическими операциями V. Л, а^1' (а = = 0, [X, 1)._ Пусть X = {alt a2, . . . , о.п} — элементарные условия. Конъюнк- Конъюнкция Vi = kiiuau ... air {r^n), где k{ = 1, [x, ati = a°<^ (a = 0, p., 1), называется элементарной, если символы a{. 6 X, входящие в Vi, попарно-различны. Константу 1 также будем считать эле- элементарной конъюнкцией, рассматривая конъюнкцию пустого мно- множества букв. Элементарная дизъюнкция W\ определяется двой- двойственным образом как дизъюнкция конечного множества попарно- различных условий, принадлежащих набору X с навешенными на них унарными операциями: Wi = ti\/*il\/ ••• VSir, где г ^ п, t\ = 0, р.. По определению константа 0 рассматривается как элементарная дизъюнкция пустого множества букв. Дизъюнкция конечного числа попарно-различных и не погло- поглощающих друг друга элементарных конъюнкций называется
134 Глава 4. Системы алгоритмических алгебр дизъюнктивной нормальной формой (д. н. ф.) в алгебре ЪВ- Двойственным образом определяется конъюнктивная нормальная форма (к. н. ф.). Элементарная конъюнкция включающая в себя все буквы из набора X, называется консти- конституантой 1. Каждому набору s{ = (a{i, ait, . . . , ain) значений пере- переменных, входящих в X, соответствует конституэнта 1: причем разным наборам sx, s2 соответствуют разные конституэн- конституэнты 1: K(si), К (s.2). Число всех наборов значений переменных, входящих в X, составляет Зп, следовательно, и число всех кон- конституэнт 1, соответствующих указанным наборам, также равно Зп. Заметим, что всякая конституэнта 1, AT (s) = a^Oa^O . . . a^nf1), принимает значение единицы лишь на соответствующем наборе s = (ах, ... , ап), обращшсь в нуль на всех остальных наборах. Пусть / (аъ а2, ... , ап) фО — некоторая функция трехзначной логики, все переменные которой, как и сама функция /, прини- принимают значения из множества Еэ = @, а, 1}. Рассмотрим произ- произвольный набор s = (аъ аг, . . . , ап) значений переменных аь . . ., an. Пусть [/]-— значение функции / на набора s. Справедливо сле- следующее равенство: i=0 D.37) Действительно, на произвольном наборе s= (аь ... , ап) ра- равенство D.37) имеет вид Ввиду произвольности выбора s равенство D.37) доказано. По- Поскольку нулевые члены дизъюнкции можно опустить, равенство D.37) может быть преобразовано: /(я1. ... , ап) = D1(f)\/ii.D2(f), D.38) где Di (Do) — дизъюнкция всех конституэнт 1. соответствующих наборам, на которых функция / принимает значение единицы (соответственно и). Правая часть равенства D.38) называется со- совершенной д. н. ф. (с. д. н. ф.) функции /. Если f (<хъ ... , я„) = = Dl (/), то функция / представлена простой с. д. н. ф. Из при- § 4.2. Тождественные соотношения в системе алгоритмических алгебр 135 веденного построения следует единственность представления функ- функции / в совершенной д. н. ф. Таким образом, справедлива следующая теорема. Теорема 4.4. Всякая функция f фО трехзначной логики Фе, однозначно представима совершенной д. н. ф. Из теоремы 4.4 следует, в частности, полнота системы операций (Vi Ai а3'1'} в трехзначной логике Фе,- Теорема 4.4 указывает на способ, по которому может быть построена с. д. н. ф. произ- произвольной функции / ф 0, заданной таблицей истинности. Для этого достаточно построить все конституэнты 1, соответствующие набо- наборам, на которых функция / обращается в единицу, и все кон- конституэнты 1, соответствующие наборам, на которых функция / принимает значение ji, после чего нетрудно получить с. д. н. ф. D.38) данной функции. Заметим, что произвольная д. н. ф. функции / (аъ ... , ап) = = ^iV^zV • • • V^h также может быть преобразована в с. д. н. ф. данной функции. Для этого достаточно каждую элементарную конъюнкцию V{ заменить равным ей выражением где ai_, aia, ... , air — переменные из набора X = {аъ ... , an), не входящие в Fj. Раскрыв затем скобки, получим с. д. н. ф. функции /. Рассмотрим нормальные формы представлений в алгоритми- алгоритмической алгебре условий ЪВ- Пусть jF(a1? . . . , an; Аъ ... , Ат) — произвольная формула (условие) алгебры Я5В, составленная из элементарных условий Х= {<*!, . . . , an} и переменных операторов G— {Аъ . . . , Ат). Расширенной элементарной конъюнкцией или г-конъюнкцией называется выражение где Vi — произвольная элементарная конъюнкция алгебры Фа, со- составленная из условий, принадлежащих набору X, и константы Ач = {1, [i}; F{i, . . . , Fift — элементарные конъюнкции алгебры ФЕз, составленные из условий, принадлежащих набору X; Д{ — булева элементарная конъюнкция, составленная пз характеристических условий, принадлежащих набору А = {АхД, AtA, . . . , АпА) (причем характеристические функции л{;-Д, /=1,2, ... , к, либо отсут- отсутствуют в конъюнкции Д,, либо входят в Д, без знака отрицания); Д,, ... , Aik — попарно-различные операторы, принадлежащие набору G.
136 Глава 4. Системы алгоритмических алгебр Под расширенной д. н. ф., или r-д. н. ф., W в алгебре 33 в понимается дизъюнкция конечного числа попарно-различных и не поглощающих друг друга /--конъюнкций: где R{, Rj — /•-конъюнкции с коэффициентом /с = 1. Лемма 4.1. Произвольная формула F (аь ... , ап; 4Ь ... , Лт) алгебры Я5в с помощью тождеств D.24)—D.31) может быть пре- преобразована в эквивалентную г-д. н. ф. Wp. Алгоритм приведения произвольной формулы F алгебры 33В к /--д. н. ф. И^ состоит в следующем. 1. Используя правила де Моргана, а также тождества D.25), D.27), D.28), D.34), опускаем символы унарных операций алгебры 55в на элементарные условия ах, ... , ап. 2. На основании тождеств D.26), а также тождества D.25) исключаем вхождения операций отрицания и аа@) над элемен- элементарными условиями аъ ... , ап. 3. С помощью первого дистрибутивного закона и тождества D.31) раскрываем скобки. 4. Используя коммутативность конъюнкции в каждом дизъ- дизъюнктивном члене, группируем условия вида (Ааг) (Аа2) . . . (Ааг) с последующим выносом оператора А за знак конъюнкции (см. тождество D.30)). 5. Группируем характеристические условия, входящие в каждый дизъюнктивный член, с помощью тождеств алгебры Буля, а также тождеств D.28), D.29), D.32), D.33) и преобразуем выделенные группы в элементарные конъюнкции Д{. 6. На основании правил идемпотентности и тождеств для констант упрощаем полученное выражение. 7. Используя тождества D.32), исключаем вхождения условий вида АО и раскрываем скобки, если они появляются. 8. Учитывая коммутативность условий, идемпотентность конъ- конъюнкции и справедливость тождеств для констант, преобразуем каждый дизъюнктивный член полученного выражения в г-конъ- гонкцшо. 9. Применяя правила поглощения, а также учитывая идем- идемпотентность дизъюнкции и справедливость тождеств для констант, преобразуем полученное выражение в r-д. н. ф. WF. Лемма доказана. Пример 2 Преобразуем в /--д. н. ф. выражение а2, Аъ 42) = (at(°»V^@)HA .42a°<»>. § 4.2. Тождественные соотношения в системе алгоритмических алгебр 137 Для этого на основании D.27) раскрываем скобки и, используя D.25), упрощаем FK а2; Аъ Aa) = af > • а^ ¦ д.Д (Axa.f > V А&Ю)) Ааа\М. На основании правила де Моргана, а также тождества D.28) получаем Затем, используя D.26), а также учитывая D.31) и раскрывая скобки, получаем Наконец, в силу D.30) выносим оператор Ах так, что Полученное выражение и является /--д. н. ф. искомой формулы. Пусть, далее, s = {аъ а.2< . . . , ап), q = {qi,Jl-i, ¦ ¦ ¦ , 9m) —на- —наборы значений соответственно элементарных X = [аи . . . , an} и, характеристических А = [аА> аА> ••• > АтД} условий. Конъюнкция где K(~s, q) = A," ' = A.А, если g( = 1, AjA, если qi = 0 (i = 1, 2, . . . , m), называется обобщенной конституэнтой 1, соответствующей паре наборов (s, q). Любая обобщенная конституэнта 1, K(s, q), принимает зна- значение единицы лишь на соответствующей паре наборов (s, q), об- обращаясь в нуль при любых других значениях условий, входящих в ж, Д. Число всех обобщенных конституэнт 1 составляет (Зп • 2т). Пусть ilt io, ... , ih (к ^ т) — номера всех компонент набора Ч~(Яи 9-2. ••• ! Ят) таких, что qii = qi2= ... =g.ft_i_ Под полной г-конъюньц1гей, соответствующей наборам (s, q, s^, , ,, . . . , sik), понимается выражение Д (s, g, su, . . . , sih) = ^ (s, g) [4{Д (s8l)I Л ... A[AihK(~sih)},
138 Глава 4. Системы алгоритмических алгебр где К (su), К (sit), ... , К (sih) — конституэнты 1, соответствующие наборам su, sia, ... , sift значений условий, входящих в X (к = ^~ч ^ = A, и.}). Заметим, что полная г-конъюнкция R (s, g, sit, . . . , sift) принимает значение к лишь на соответствующей системе наборов (s, q, sti, . . . , sift), обращаясь в нуль на любой другой системе. Полной r-д. н. ф. W называется дизъюнкция конечного числа попарно-различных и не поглощающих друг друга полных г-конъ- юнкций: Й>= у RiR Существует алгоритм приведения произвольной r-д. н. ф. W = V R.V\>.(V Rt) s=i (=1 ^~ч к полной r-д.н.ф. W. Для этого каждую г-конъюнкцию D.39) входящую в D.39), необходимо преобразовать следующим образом. 1. Используя правила алгебры Буля, преобразуем булеву элементарную конъюнкцию А5 в с. д. н. ф., состоящую из кон- конституэнт 1, соответствующих наборам значений характеристических условий, входящих в А. 2. Раскрываем скобки по первому дистрибутивному закону и применяем правила идемпотентности и поглощения. 3. На основании тождества D.33) преобразуем каждую из полученных г-конъюнкций в r-конъюнкцию вида Я, = D.40) где 1Ъ U, ... , 1Г — номера всех компонент набора q= (qlf ... . . . , qm) таких, что qh = qu= ¦•• = qh = 1. 4. Каждую элементарную конъюнкцию F/, Vi1} Vt,, . . . , Vtr, входящую в R[ D.40), преобразуем в простые с. д. н. ф., исполь- используя преобразования алгебры ФЕ,- Раскрывая скобки согласно первому дистрибутивному закону и тождеству D.31), выполняя допустимые упрощения после пере- перегруппировки полных r-конъюнкций и вынося за скобки коэффи- циент а, получаем полную r-д. н. ф. W. Таким образом, в силу леммы 4.1 и приведенного алгоритма каждая формула (условие) § 4.2. Тождественные соотношения в системе алгоритмических алгебр 139 F(аъ ... , ап; Аъ . . . , Ат) алгебры %>в может быть преобра- преобразована в эквивалентную полную г-д. н. ф. ^ч wF = D.41) называемую полной r-д. н. ф. условия F. Выражение DF = \/ Ri называется истинной частью полной i=i r-д. н. ф. \VF D.41). Покажем единственность такого представ- ления. Пусть- WF nW'F — различные полные /--д. н. ф. условия F. Тогда найдется по крайней мере одна полная г-конъюнкция Д <~s, q, 5,„ ... ,sik) = 1сК (s, q) [АгК (sLl)] Л Л И. Д &,)] Л ••• MAikK (sih)h —^ входящая в одну из указанных полных /--д. н. ф. (например, в WF) и не входящая в другую. Присваивая соответствующим условиям,. входящим в WF и W'f, указанные для них значения в наборах s, q, sit, . . . , s{ , замечаем, что WP принимает значение к{{, р,}, ^ч a WF в данном случае обращается в нуль. Но это противоречит первоначальному предположению о том, что WP и WF являются полными г-д. н. ф. одного и того же условия F. Таким образом, справедливо следующее утверждение. Теорема 4.5. Произвольная формула F(аъ . . . , ап; Аи ... . . . , Ат) алгебры Ъв однозначно представима в полной r-д. н. ф. Пример 3. Преобразуем r-д. н. ф., полученную в примере 2, в полную г-д. н. ф.: F(alt а2; Аи А,) = а^а^^АА^а^ • А Для образования обобщенных конституэнт 1, используя тождество АА\/аА = 1 и раскрывая скобки, вводим в каждую г-конъюнк- цшо характеристическое условие а,А9: a'f > • а'С'л.А (а2А\/AlA) Ага\^ ¦ ¦ .а,А V o.f >AlAAlA
140 Глава 4. Системы алгоритмических алгебр Для полученных обобщенных конституэнт вводим обозначения u1 = a1J(V1)A1AA.A, А2=а?A)а2A)А1Дл,А. Кроме того, пусть кх = = ajf'la^1), k2 = aJOa^1). Тогда на основании D.32), исключая во втором и четвертом дизъюнктивных членах вхождения условия Л2а°.A) и вынося константы и. за скобки, получаем 1 \/ к1А2к.2А2а°{{) V ,a UhA 1Ati \/ ^Л^з). Применяя обобщенный закон исключенного третьего (a1'1' \/a°A)V \/а^A>= 1), вводим в условия ^gi0!1) фиктивную переменную а2: 0A), 1A). ,0A) 1A), Наконец, раскрывая скобки (учитывая D.31)), получаем kiA-JiyAJt^y k-^A-Ji-^AJcsM k-^A-Jt-^AJii \J к\Агк2А2к2 V V k-^AJc^AJc^ k-iA-JiiAJi^ ji {k2A-Jtx\/ k2AJt2), где a^'a"'1' = k3, aj^'a^'1' = kt. Полученное выражение является полной г-д. н. ф. условия F (аг, a2; Аъ А2). Остановимся кратко на одной из важ- важных проблем, связанных с формальными преобразованиями в алгебре ЯЗВ, — про- проблеме минимизации в классе г-д. н. ф., состоящем в нахождении минимальной (по числу букв) г-д. н. ф. некоторого условия. Предварительно введем опера- операцию импликации а—у$ условий а, |5, заданную таблицей истинности (табл. 6). Импликация может быть представлена в алгебре Фе3 в виде Таблица 6 d-+p 0 • и- 1 0 1 0 0 V- 1 1 0 1 1 1 1 Введем понятие пмпликанты и простой импликанты в алгебре условий ФЕз. Пусть F(ab . . . , сг.„; Аъ . . . , Ат) и G(alt ... , an; Аъ . . . , Ат) ? ЯЗВ — выражения, составленные из элементарных условий аь . . . , ап и переменных операторов Аи .... /lm. Условие F (аъ . . . , ап\ Аъ . . . , Ат) называется пмпликантой условия G (ai, • • • , а„; Л^ . . . , Ат), если выполняется тождество F(ab . . . , an; Аъ . . . , 4m)^-G(ai. . . . , an; Ль . . . . Ат) = 1. Иными словами, при любой интерпретации / (присвоении кон- конкретных значений условиям аъ ... , an п операторам Аъ . . . ... , Ат) [Л/^[<?];, где [jF]7, IG]: — значения условий соответ- соответственно F ж G при интерпретации /. Если г-конъюнкция R — пмпликанта условия F, причем никакая собственная часть конъ- § 4.8. Полугруппы периодически определенных преобразований 141 юнкции R (полученная в результате отбрасывания хотя бы одного условия, входящего в В) уже не является импликантой условия F, то R называют простой импликантой условия F. Дизъюнкция всех простых импликант условия F называется сокращенной r-д. н. ф- данного условия. Теорема 4.6. Каждое условие F алгебры 5зв однозначно пред- ставимо сокращенной r-д. н. ф. данного условия. Доказательство этой теоремы строится аналогично доказатель- доказательству результата о сокращенных д. н. ф. булевых функций [24]. Как и при минимизации д. н. ф. булевых функций, процесс на- нахождения минимальной г-д. н. ф. некоторого условия состоит из двух этапов. На первом этапе строится сокращенная г-д. н. ф. данного условия. Для этого можно применить, например, аналог алгоритма Квайна, используя операции неполного склеивания: о. АА = a\Ja AA\/a aA, а также операцию поглощения a|5\/a = а. На втором этапе в ре- результате исключения «лишних» простых импликант из сокращен- сокращенной г-д. н. ф. условия F строятся все тупиковые r-д. н. ф. данного условия. Теория г-к. н. ф. в алгебре Ьв, как и в алгебре Буля, строится двойственным способом. § 4.3. Полугруппы периодически определенных преобразований Одним из важных вопросов, касающихся применения аппарата алгоритмических алгебр к задачам автоматизации проектирования ЭВМ и программирования, является выбор структуры состояний операционного автомата В, которые образуют информационное множество М данного автомата. На множестве М определяются элементарные операторы и логические условия, составляющие систему образующих в алгоритмических алгебрах (Э1В, азв), свя- связанных с операционным автоматом В (см. § 4.1). При этом не всякий оператор (логическое условие) на множестве М может быть выбран в качестве элементарного. Определение структуры состоявий информационного множества М и совокупности допустимых элементарных операторов и логи- логических условий связано с понятием абстрактного регистра. Абст- Абстрактный регистр — это устройство для хранения слова в некотором конечном алфавите 91. Каждая буква запоминаемого слова хра- хранится в некотором (абстрактном) элементе, называемом разрядом данного регистра. Разряды нумеруются последовательно целыми числами. Числа, соответствующие разрядам регистра, образуют отрезок целых чисел [т, п], называемый нумерующим отрезком данного регистра (т <1 п). Если обе границы этого отрезка конечны,
142 Глава 4. Системы алгоритмических алгебр то конечен и сам регистр (число его элементов в этом случае равно п—т + 1). При этом т-й разряд регистра называется его младшим, а п-й — старшим разрядами. Не исключен также случай, когда одно или оба из пары чисел (т, п) бесконечны (т = —оо, м=+оо). При этом слова, запоминаемые на регистре, также бесконечны. Ограничимся, однако, лишь такими бесконечными словами, у которых почти все буквы (все, кроме конечного числа букв) одинаковы. Абстрактный регистр полностью определяется заданием своего алфавита 91 и нумерующего отрезка [т, п]. Для превращения абстрактного регистра в физический необходимо дополнительно задать структуру его разрядов и кодирование букв алфавита 91. Структура разряда (предполагаем ее одинаковой для всех разрядов данного регистра) определяется числом состояний элементарных запоминающих ячеек, из которых строится этот разряд. Обычно в современных ЦВМ используются двоичные элементы. Поэтому зададим структуру разряда абстрактного регистра числом р со- составляющих его двоичных элементов. Соответствующий разряд при этом называется р-битовым разрядом. Кодирование букв алфавита 91 при р-битовых разрядах задается взаимно-однозначным отображением этого алфавита в множество кортежей длины р, составленных из нулей и единиц. Для возможности такого коди- кодирования число р должно выбираться так, чтобы 2Р было не меньше числа букв в алфавите 2t. Многорегистровый операционный автомат В определяется за- заданием некоторого конечного множества абстрактных регистров с определенными на них элементарными операторами и логичес- логическими условиями. При этом у каждого регистра в общем случае может быть свой алфавит 5t. Запоминанием на регистрах слов в соответствующих алфавитах определяется состояние операци- операционного автомата В. Каждый элементарный оператор задает не- некоторое отображение множества М состояний данного автомата в себя, а всякое элементарное логическое условие определяет отображение множества М в двухэлементное множество {и, л}. Однако не всякое отображение М в себя задает элементарный оператор. Необходимым (и достаточным) условием для этого явля- является условие простоты реализации отображения М в себя. То же относится и к элементарным логическим условиям. Если состояние автомата В представить в виде упорядоченной последовательности слов qx, q2, ... , <?&, хранящихся соответст- соответственно на регистрах 1, 2, . . . , к, то любое отображение / мно- множества М в себя может быть задано в виде совокупности функций fij(. . . а;,, . . , ait, . . . , aih, . . .). Функция fu определяет зна- значение /-го разряда г-го регистра данного автомата. Аргументами втой функции в общем случае служат все буквы комбинированного § 4.8. Полугруппы периодически определенных преобразований 143 слова I = qxqt ... qk. Простыми естественно считать те из функ- функций fu, которые фактически зависят лишь от относительно не- небольшого числа своих аргументов. Заметим, что существует принципиальная возможность постро- построения достаточно простых схем для реализации семейства функций и в том случае, когда каждая следующая функция фактически зависит от все большего и большего числа аргументов. Класси- Классическим примером такого рода является обыкновенный параллель- параллельный двоичный сумматор. Для каждого разряда сумматора опре- определяющая значение этого разряда булева функция зависит от трех переменных (значений соответствующих разрядов слагаемых и переноса из предыдущего разряда). Перенос же хотя в каждом очередном разряде и определяется простой схемой, зависит фак- фактически от всех предыдущих разрядов слагаемых. Параллельный двоичный сумматор представляет собой лишь частный пример так называемых каскадных схем, в котором схема каждого разряда относительно проста. В совокупности, однако, последовательность каскадов может быть достаточно сложной функцией. Современная технология дает возможность резко снизить сто- стоимость изготовления сложных схем, если они составлены из одно- однородных элементарных блоков. В связи с этим особый интерес представляют каскадные схемы, у которых все каскады (за исклю- исключением, может быть, нескольких начальных и конечных) одинаковы. С однородными структурами связано понятие периодически опре- определенного преобразования, предложенного В. М. Глушковым [18]. Пусть X = {. . . , х+1, х0, х_ъ • • ¦} — бесконечный абстрактный регистр с нумерующим отрезком ( + <», —оо); а{ — содержимое элемента xi до и после преобразования. Преобразование на регистре называется периодически определенным, если существует такая функция /(xit, xis, ... , Tin), что при всех i= ••-, —2, —1, О, 1,2, ... Функция / называется порождающей функцией данного преоб- преобразования. Понятие периодически определенного преобразования естест- естественно переносится на случай конечного регистра. При этом следует найти значения тех переменных xik+i, для которых значения индекса ih -f / выходят за пределы рассматриваемого регистра. Наиболее просто эта задача решается добавлением к регистру (фиктивных) разрядов с постоянным запоминанием. При преобра- преобразованиях содержимое этих разрядов не изменяется, но может быть использовано в порождающих функциях. Периодически определенное преобразование может быть задано с помощью некоторого целого числа /с — коэффициента данного
144 Глава 4. Системы алгоритмических алгебр преобразования и порождающей функции / (т1; т2, ... , тг), которая существенно зависит от своих крайних аргументов ть тг, тогда как внутренние переменные Tj A < I < г) могут быть как сущест- существенными, так и фиктивными [8]. Заданное таким образом преоб- преобразование Fk-jr переводит регистр X из состояния а = (. . . , аь а0, а_!, . . . ) в состояние [j = (. . . , Plt C0, Р_ь . . . ), где р\ = = I (ai+kt O-i+h+V • • ¦ ' ai+k+r— l)i °° "^ l ^ —OO. Периодически определенные преобразования на регистре X называют однорегистровьши операторами. Примером однорегист- рового оператора является сдвиг Ск . ^ на регистре X, где коэф- коэффициент кг указывает направление и число, на которое сдвигаются элементы регистра (при сдвиге вправо кх > 0, при сдвиге влево кх < 0), a Z°(t) = t. В двузначном случае, т. е. при булевом ре- регистре X, если / (т) = т, а коэффициент кг = 0, однорегистровый оператор /о;/ реализует инверсию на регистре X. Однорегистро- выми операторами являются оператор 0 — очистка регистра X и оператор Т — установка регистра X в единичное состояние ai = = (. . . , 1, 1, ... ). Первый задается порождающей функцией / = 0, а второй — /=1. Пусть X — двоичный регистр и FjVjT—однорегистровый опе- оператор на X, заданный коэффициентом к и порождающей булевой функцией / (tj, т2, ... , тг). Теорема 4.7. Каждому однорегистровому оператору Fh-jT одно- однозначно соответствуют коэффициент к и функция / (тх, т2, . . . , тг), задающие данный оператор. Действительно, пусть заданы операторы Fhx-jr и Gkl-gs. Если Fhl.fr = Gh,;ei, D.43) то &j = к2 и /(ть т2, . . . , тг) = g(j!, т2, ... , xs). Допустим, что к\фк2. Тогда найдется состояние а 6 М регистра X, для которого Fki,fr(a)^Gk!.8,(a). D.44) Для' определенности предположим, что А": < к2. Функция /(ть -2, ... . ~г) существенно зависит от переменной z±. Это означает, что найдется набор q2, q3, ... , qr значений переменных т,, -3- ¦ ¦ • . . ._, тг такой, что /@. q2, q3, ... , qT)=?f{i, q,_, q3, . . . , qr). Тог- Тогда a ? M регистра Х выберем так, что Но ввиду того что i + &i < i + к2, состояние ai+4 элемента .ri+h можно выбрать так, что ft,. ?2. ?з. • • • . 1г)?=ё(а1- 4.3. Полугруппы периодически определенных преобразований Отсюда следует справедливость неравенства D.44), что противо- противоречит D.43). Таким образом, кх = к2. Аналогично доказывается равенство функций / (тъ ... , тг) = g(?i, т2, ... , ts). Композиция, или произведение, т. е. последовательное при- применение двух однорегистровых операторов, также является одно- регистровым оператором. Пусть Fki.fr и Gk!-gs — однорегистровые операторы. Fki]frx XGk2;gs — их композиция Hh-h ¦ Коэффициент к и функцию h следует определить. Для этого рассмотрим суперпозицию функций / (tj, т2, ... , тг) и g (т1; т2, . . . , ts), заданную равенством X b т2, , Tr+S_i) =/(g(xb т2, . . . , xs), l • • • , ^(ТГ, tr+l, • • • , "Cr+S—i)) = fc(ti, x2, . . . , xr+s_i). , т3, D.45) Пусть m-^-Q и n^^r-fs — 1 — индексы соответственно первой слева и последней переменной, от которых существенно зависит функция Ъ. Тогда к = кх + к2 + Дн, где Ан = т^ t = n^ — m%,. а функция h(xb т.2, . . . , тп—mJ) получается из функции Я(хъ. т2, . . . , Tr^s—i) в результате отбрасывания всех фиктивных пере- переменных tj, для которых / < ?п~ или / > п~. Число Ан называется дефзктом композиции Hk-^t, а функция h — композицией функ- функций /, g. Естественно, операция композиции ассоциативна. Таким- образом, множество всех однорегистровых операторов образует полугруппу (см. § 3.6). Полугруппой является также алгебра Ф булевых функций, порождающих однорегистровые операторы на двоичном регистре X. Основное множество этой полугруппы состоит из функций, сущест- существенно зависящих от первого и последнего аргументов с операцией композиции функций, определенной выше. В полугруппе П зададим бинарное отношение о следующим, образом: операторы Fk,-jT и Gh,-,gs находятся в отношении р: Fhs./rpGk^gs тогда п только тогда, когда найдется сдвиг Ch.;° такой, что Fk^fr = Git.-, gs X Cj, !>. Очевидно, что отношение о является отношением эквивалентности. Более того, о — конгруэнция (см. § 3.5). Таким образом, справедлива следующая теорема. Теорема 4.8. Фактор-полугруппа П'р полу группы II по конгру- конгруэнции р изоморфна полугруппе Ф булевых функций. На основании теоремы 4.8 пзученпе операторных алгебр, по- порожденных полугруппой П, в значительной степени можно свести к рассмотрению модифицированных алгебр логпкп, спгнатуры операций которых содержат операцию (/ X g), определяемую соот- соотношением D.45).
146 Глава 4. Системы алгоритмических алгебр Прежде всего возникает вопрос, существует ли конечная система образующих в полугруппе Ф. Рассмотрим некоторые важные подполугруппы полугруппы Ф [8]. Состояние а. = (. . . а+1, а0, а_ь • • •) регистра X называется периодическим, если a.i+n = at при любом i (—оо < j< +00), где п — натуральное число, назы- называемое периодом состояния а. Множество всех периодических состояний с периодом п обозначим Шп. Очевидно, для произволь- произвольного однорегистрового оператора Fk- /г 6 П, Fk. fT (а) € Ж„ при любом Рассмотрим множество Фп функций таких, что / (т0, ть ... ... , т,) Е Фп тогда и только тогда, когда оператор Fk-jr 6 П осу- осуществляет взаимно-однозначное отображение множества SUn на себя при любом коэффициенте к (достаточно, чтобы это отображение осуществлялось при каком-нибудь одном к). Множества Фп (п = = 1,2, . . .) являются подполугруппами полугруппы Ф (см. § 3.5). Лемма 4.2. Полугруппы Фп (п=1, 2, . . .) являются изоли- изолированными подполугруппами полугруппы Ф. Покажем, что если по крайней мере одна из функций /, g € Ф не принадлежит подполугруппе Фп, т. е. осуществляет не взаимно- взаимнооднозначное отображение Шп в себя, то и композиция h = / X g не принадлежит Фп. При этом возможны два случая. 1. / 6 Ф„. Тогда #{ГФП. Это означает, что для оператора Gk2-,gs € П найдется пара состояний а, Р 6 Шп такая, что G)i2-:gs(a) = = G/e2;?<i(f3). Но оператор Fh.jr € П осуществляет взаимно-однознач- взаимно-однозначное отображение множества Шп на себя, и, следовательно, найдутся ¦состояния а', р' 6 ®!1п, для которых Fki-fr(a') = а и F/4;/r(P') = Р- Тогда для композиции Hh. ht = Fk . fT X Gh . * выполняется равенство Hh:hl(°-') = Hh-,hl(fi') откуда следует, что h = (/ Х?)?Ф„. 2. /(ГФП. Тогда для оператора Fh T найдется пара состояний а, Р 6 Ж„ таких, что Fh,r(a) = F. . л-(Р), откуда следует, что = Hh где fe,- f x и поэтому h = (/ X Справедливо следующее утверждение [8]. Теорема 4.9. Полугруппа Ф не имеет конечных систем обра- образующих. Доказательство. Достаточно показать, что подполугруппы, входящие в множество {Ф„} (п = 1, 2, . . .), различны. Для всякой подполугруппы Ф,1+й (к =1,2, ... ) найдется функция /f ф„ такая, что /~?Фп+к- Действительно, рассмотрим функцию / /_ _ \ _ { то> если т0 = тп, tj = -.п^.ъ ... , Tfe = тп+к1 "' ''' ' ' ' ' "n+k I 0 во всех остальных случаях. Очевидно, / (т0> ti, ... , тп^) ? Фп, так как FQ. fn+h (a) = ~а для § 4.3. Полугруппы периодически определенных преобразований 147 любого состояния а 6 ?0?п, и потому оператор FQ. n+k, а значит и любой оператор Fft. ^п+ь. является взаимно-однозначным отобра- отображением множества Жп на себя. Однако /(х0, тъ ... , TnJ.fe) J Фп п+к, так как для оператора F0;fn+h F0;fn+k{a°) = Fo. /n+h<P°) = а0, где o° = (... , 0, ...,0, 0, ... ,0, ...), p» = (..., 1,0, ... , 0, ... n+fe . .. , 1,0, ... , 0, 1, 0, ... , 0, ... , 1, 0, ... , 0, . ..)€3R« n-i-h n+h Таким образом, существует бесконечная совокупность {Фп} (п = = 1,2, . . .) изолированных подполугрупп полугруппы Ф. Но ал- алгебра с бесконечной совокупностью изолированных подалгебр не содержит конечных систем образующих (см. § 3.5, теорему 3.15, следствие 2). Теорема доказана. Следствие. Полугруппа П однорегистровых операторов не имеет конечных систем образующих. Следствие справедливо в силу изоморфизма полугруппы Ф с фактор-полугруппой П/Ф (см. теорему 4.8). Можно рассматривать также многорегистровые операторы [131]. Пусть {Zs|s = l, 2, ... } — счетная совокупность бесконечных в обе стороны регистров, где Xs = (. . . , х\, xs0, xs_1} • • • ), причем х\ принимает значения из множества Eh = @, 1, ... , к—1) (—оо < i < -\- оо). Как и ранее, под состоянием регистра Xs пони- понимается бесконечная в обе стороны последовательность из элемен- элементов множества Eh:ois = (... , asv as0, as_v . . .), где tx| — состоя- состояние (значение) j-го элемента регистра. Рассмотрим последователь- последовательность целых чисел к\, . . ¦ , кт и функцию /с-значноп алгебры Поста (см. § 3.1, пример 10) / (т^, .. . , т^; т^, . . . , т^; . . . ; т™, . . . .. . , ъ™т), где (т*, т^), . . . , (т™, -zfm) — пары нефиктивных аргу- аргументов. Преобразование F*i km; / (x1, • • • , хт) называется мно- многорегистровым оператором на регистрах X1, . . . , Хт, если новое состояние р" = (. . . , Р", р", Р-1, • . . ) регистра Хп определяется по формуле on ¦( /_1 Л ~1 ai+kTi D.46) где \p? | j — 1, 2, ... , m] — состояния регистров Xj, къ .... A:m — коэффициенты оператора Fki hmW; а / (х\, ... , т^)—порож- т^)—порождающая функция данного оператора, причем верхний индекс ее аргумента указывает номер регистра, к которому он отнесен. (Следует заметить, что, в частности, п 6 A, ... , т), т. е. регистр
148 Глава 4. Системы алгоритмичесних алгебр Хп является одним из регистров X1, . . . , Хт). Очевидно, одно- регистровые операторы являются частным случаем многорегист- многорегистровых. Примерами многорегистровых операторов являются опе- операторы Л X1 % Vs о, о; 0, о, л Фо, о, где /1(xi,^) = xiAx?, /2(Tj,Tj) = TiVc;, /з(^^2)=^0^-реа- лизующие известные поразрядные логические операции — конъ- конъюнкцию, дизъюнкцию, сумму (mod 2). В терминах введенных операторов можно представить сложение и другие арифметические операции машины (см. § 4.5). В качестве примера приведем микро- микропрограмму операции S' (X1, X2) — сложения содержимых регистров X1, X2 с хранением результата на регистре Xх, написанную на адресном языке [128]: Ml: ... Здесь [6s] — логическое условие, истинное, когда регистр X, находится в нулевом состоянии ajj = (. .. , 0,0, . . .), и ложное в противном случае. Оператор РЩМ1 означает переход на метку Ml, если условие 0 истинно, и — пустой оператор в противном случае. Регулярное представление данной микропрограммы в системе алгоритмических алгебр, образующими которых служат приведен- приведенные операторы и условия, имеет вид 1 (A"', X2j = {©?_ 0. h (X\ _,, _1; и (Х\ Х2)}\, где U — дизъюнкция операторов (см. § 4.2), ! — оператор останова. Арифметические операции умножения, вычитания, деления реализуются с помощью сложения и операторов сдвига C{t i' и инверсии /*. -. Как и в случае с однорегистровым оператором, можно ввести ассоциативную операцию композпцип многорегистровых операторов и рассмотреть соответствующую полугруппу Им- На полугруппе Пм задаем бинарное отношение р так. что два оператора F, G находятся в отношении р, если существует после- последовательность сдвигов, переводящая один оператор в другой. Отношение о является конгруэнцией, так что справедлив следую- следующий аналог теоремы 4.8. Теорема 4.10. Фактор-полугруппа Щ/'р изоморфна полугруппе порождающих функций многорегистровых операторов. § 4.3. Полугруппы периодически определенных преобразозаний 149 Многорегистровые операторы описывают лишь микрооперации с независимыми сколь угодно далекими друг от друга разрядами (в случае бесконечных регистров). Известно, что даже в машинах с традиционной структурой широко используются некоторые микрооперации, не удовлетворяющие этому условию. К ним от- относятся микрооперации прибавления единицы к коду на двоичном регистре (двоичный счетчик) и сложения (параллельного) двух чисел. Для описания такого рода микроопераций понятие перио- периодически определенного преобразования необходимо расширить с помощью так называемых вспомогательных переменных. Для каждого разряда основного регистра со значением а4 добавляется некоторое конечное число вспомогательных переменных .z!1', xi2\ ... . . . , ж'.п). В общем случае алфавиты, которым принадлежат зна- значения соответствующих вспомогательных переменных, могут быть различными (эти значения существуют только в момент выполне- выполнения микрэопзраций в качестве сигналов в некоторых точках соот- соответствующих схем). Обозначим через ai и Pj значения i-то разряда рассматривае- рассматриваемого основного регистра соответственно до и после выполнения преобразования. Тогда периодически определенное преобразование с п вспомогательными переменными на этом регистре может быть задано системой п -\- 1 соотношений: (и) A) rt,+b • • • i aiq+i> xiq-\- Jl) 4 +{ 1ОA)+1 { .; ... ; a i JU .)¦ Эти соотношения, для того чтобы из них дейсгвитлтьнл можно было пайти значения вспомогательных переменных, должны удов- удовлетворять некоторым дополнительным условиям. В некоторых (на- (начальных) разрядах значения вспомогательных переменных должны быть заданы. Простейшее из таких условий при ограниченности слева нумерующего отрезка регистра состоит в том. что все индексы вида ilk следует считать отрицательными. При ограни- ограниченности нумерующего отрезка справа все эти индексы доста- достаточно считать положительными. В первом случае в качестве на-
150 Глава 4. Системы алгоритмических алгебр чального выбирается самый младший разряд регистра, во втором — самый старший. Если необходимо, к началу добавляется еще некоторое количрство фиктивных разрядов. Одним из наиболее распространенных преобразований такого рода является пересчет на регистре. В случае двоичного беско- бесконечного влево регистра X со значениями переменных 0 и 1 пере- пересчет может быть задан с помощью булевых уравнений где значение вспомогательной переменной р{ есть не что иное, как перенос в г-й разряд регистра из (г—1)-го разряда. Если X = {. . . х3х2х{\, то для осуществления пересчета необходимо по- положить p1=l. Дополнения регистра фиктивными разрядами при таком способе введения вспомогательной переменной не требуется. Периодически определенные преобразования с вспомогатель- вспомогательными переменными на регистре могут быть распространены на многорегистровые операторы. Примером является сложение целых чисел, расположенных в младших разрядах бесконечных влево регистров X1, X2 с хранением результата на регистре Хг. Пусть а1, р2 — состояние регистров X1, Хг, a -j-2 — результат преобразо- преобразования на регистре X2. Тогда сложение может быть задано сле- следующей системой уравнений: Pi = A-i • Pi-i® «UPi-i© Pi-iA-i (* = 1, 2, • • .)• Предполагается, что начальное значение переноса рх равно нулю. § 4.4. Модифицированные алгебры Поста Модифицированная алгебра Поста, соответствующая полугруппе П одпорегистровых операторов, может быть получена из /с-значной алгебры Поста (см. § 3.1, пример 10) в результате замены операции X бинарной операцией X — композиции функций, которая опре- определяется равенством (/ X g) (хъ х2, . . . , a-n+m_1) = / (gfa, х2, ¦ . . , хп), 4 4 g(x2,x3, ... , хп, ?„+!), ... , g{xm,xm+v ... . хт^п__г)), где /, g — произвольные т- и и-местные функции из Фе,{- По определению полагаем (/ X g) {хъ х2. . . , хт) = / (g (xj. g (х2), . . . .... g(xm)) для случая, когда g — одноместная функция из <&?ft. Обозначим полученную таким образом модифицированную ал- алгебру Ф°Ек. § 4.4. Модифицированные алгебры Поста 151 Кроме операции X алгебра Фяй содержит также все унарные операции С, т, А, V /с-значной алгебры Поста, которые позволяют выполнять отождествление и перестановку аргументов функции /, а также приписывание фиктивных аргументов. Заметим, что схемная интерпретация перечисленных унарных операций в применении к преобразованиям, описанным в § 4.3, отличается простотой, так как связана лишь с пересоединеннем и переименованием элементов регистра. Нетрудно видеть, что /с-значная алгебра Поста Фд;4 и моди- модифицированная алгебра ФЕи представляют собой однотипные алгеб- алгебраические системы (см. § 3.1). Каждая из этих алгебр содержит четыре унарных и одну бинарную операции. Однако алгебры ФЕк и Фей не эквивалентны, тогда как каждая операция алгебры Ф^, производна в алгебре Ф^. Обратное ут- утверждение неверно. Можно утверждать, что система операций алгебры Ф0Ек слабее системы операций алгебры ФЕк в том смысле, что произвольная функция / /с-значной логики, построенная в алгебре ФЕк из функций /i, /2, • • • , /s, может быть получена и в алгебре ФЕк из тех же функций, но не наоборот. Отсюда следует, в частности, что если 9К является подалгеброй алгебры ФЕк (функционально-замкнутым классом /с-значной логики [133]), то 9Й образует подалгебру алгебры Ф^. Например, рассмотренные в § 3.4 подалгебры монотонных, самодвойственных, линейных функций и функций, сохраняющих константы, являются также подалгебрами алгебры Ф^. В дальней- дальнейшем будем обозначать ее Ф°. Вместе с тем, если Е = {/j, /2, ... ... , /,} — система образующих алгебры ФЯ/11 то Е является также системой образующих алгебры ФЕк- Рассмотрим далее бинарную операцию [X], определяемую сле- следующим равенством: g) g(xn ... , х2п), ... , ^(a;(m_i)n4-i, a;(m_i)n_|_2, ••• , хтп)). Полагаем (/ g g) (хъ х2, ... , xm) = f(g(x1), g (х2), ... , g{xm)), если g — одноместная функция. Операция [xj производна в ал- алгебре ФЕ^. Действительно, пусть /, g € Фе.;—произвольные т- и «-местные функции. Используя операцию у (см. § 3.1) и при- присоединяя к функции / (т—1)(и—1) фиктивных переменных, с помощью операций ; и т осуществляем перестановку переменных так, что в результате получаем функцию /' (xi, х2, . . . , ?(m—i)n-fi)
152 Глаза 4. Системы алгоритмических алгебр Применяя операцию X, получаем (/' X g) (хъ х2, . . . , хтп) = f(g (xlt х2, ... , хп), g (хп+и , • • • , Х2п), . . . , g (X(m—i)n+i) ^(m—i)n+2, • • • , Хтп) == = (f № g) (Xl> Х2, ..., Xmn). Далее рассматривается алгебра Ф° булевых функций [ИЗ], являющаяся модификацией двузначной алгебры Поста (алгебры логики). Многие из полученных результатов могут быть распро- распространены на /с-зпачную алгебру. Теорема 4Л1. Алгебра Ф° является алгеброй с конечной си- системой образующих. Доказательство. Покажем, что система функций {ху; хфу; Z0J/0201} D.49) является системой образующих алгебры Ф°. Пусть /to, ... , aj = "i0© ¦•¦фил0а„ D.50) является произвольной булевой функцией, представленной поли- полиномом Жегалкина l-ж степени (см. §3.4). Это означает, что в D.50) содержится по крайней мере одно слагаемое щ = а-ч, • Xi2 • ... • Х{1 длины I и не содержится слагаемых большей длины. Прежде всего покажем, что с помощью функций хфу, ? 0 J/ 0 z 0 1 может быть построена любая линейная функция, в частности функция (хъ х2, ... , xh) = х10 х2 0 xh 0 а0. Действительно, с помощью функций хфу na;0;/0z01 может быть построена любая линейная функция, существенно зависящая от четного числа переменных. Но (*©?/© 20 1H 0/0201*01HB0^0;; 01H1 = =*®z®tf, D.51) а с помощью функций a;0z0y и ?02/0z01 может быть по- построена любая линейная функция, существенно зависящая от не- нечетного числа переменных. Используя ху, нетрудно найти функцию 6 (хъ х.2, . . . , xi) = хх • х2 • . .. • Ji. Применяя j^ к функциям ф и 6, получаем /' {Хъ Хо, ... , ХМ) = ф F (хи Х2, ... , Xi), 6 (Xi+i, . . . , X2l), . . . ... , Ь (а.-(л_1,(+1, . . . , х,а)) = хх ¦ х2 ¦ ... • аг; Э 0a-(+iZ(+2 ••• x2iQ) ••• QXfh-w+iXih^iA.? . .. хм^ао. D.52) Отождествляя в формуле D.52) соответствующие переменные, находим полином Жегалкина функции f {хи х2, ... . хп). Теорема доказана. § 4.4. Модифицированные алгебры Поста 153 Пример. Используя систему D.49), строим функцию j (Xi, x2, . . . , хв) — ХхХ2хъ i^y u-ix3xe t^p x3xb t^y x4x6 vi7 ^e vP x • Применяя операцию Щ к функциям a;0j/-0z (см. D.51)) и хф <?' У % z Ф !¦' получаем /г (а^, а;2, ... , xs) = a:i 0 х2 0 • •. 0 х0 0 1. Отождествляя а;б = а;7 = хв = а"8, находим С помощью операций конъюнкции и композиции строим функцию 4 (хх, х2, х3) = (хуХ2) {х%х3) = ххх2хг, и, наконец, применяя [X; к функ- функциям о и <Ь, получаем h' (хъ х2, . . . , х1ъ) = ф (ф (a:i, а;2, а;3), ф (хг, х-„, хв), . . . , Ф (а;13, ¦^-14, ¦''is)) == ^^г^з vP ^^¦б^б vP ^7^8^9 мЗ ¦''Ю'^и^г чЗ ^1з^и^1ъ УЗ ^ • Отождествляя в полученном выражении переменные, находим функцию f(xb х2, ... , хй). Рассмотрим некоторые важные классы булевых функций [134]: класс С4 всех а-функщш, т. е. / (хъ ... , хп) € С4 тогда и только тогда, когда / (х, х, ... , х) = х; класс Ср всех C-функций, т. е. / (хъ ... , хп) е Cj тогда и только тогда, когда / (х, х, ... , х) = 1; класс Ст всех ^-функций, т. е. / (а^, ... , яп) 6 Ст тогда и только тогда, когда f (х, х, ... , х) = 0; класс С- всех о функций, т. е. / (хъ х2, ¦ ¦ ¦ , хп) е С- тогда и только тогда, когда / (х, х, ... , я) = х. Примерами tx-функции служат конъюнкция и дизъюнкция; E-функций — импликация и отношение эквивалентности; •(¦-функ- •(¦-функции— сумма по mod 2 и обратная антиимпликация; 8-функции — отрицание, штрих Шеффера, стрелка Пирса (см. § 3.4, табл. 2). Нетрудно видеть, что классы С4, Ср, Ст являются подалгебрами алгебры Ф°. Действительно, любая суперпозиция а-функцип также является а-функцией, так что С4 = С2{]С3 образует подалгебру алгебры логики, а значит, и подалгебру Ф°, где С2, С3 — классы функций, сохраняющих константы соответственно 1 и 0 (см. § 3 4J. Дгкажем. что класс С? образует подалгебру алгебры Ф° (для класса С1 доказательство пр.^водптся аналогично). Класс С$ замкнут по операциям отождествления, перестановки и добавления (фиктивных) аргументов, поэтому остается показать, чт) если функции / (хъ . . . , хт) п §(хъ . . . , хп) принадлежат С$, то их композиция Ь,(хъ ... , xmJ_n_1) также принадлежит клас- классу Съ. Но это очевидно, так как h (х, ... , х) = f (g (х, . . . ,x),g(x, ... ,х), ... , g (x, . . . , х)) = = /A,1, ... , 1) = 1. - Здесь п далее для подалгебр алгебры Ф°, которые являются замк- замкнутыми классами алгебры логики, сохранены обозначения Поста [134].
154 Глава 4. Системы алгоритмических алгебр Пусть С~ = С4 U C-, aCa = CtUCv Очевидно, / {хъ ... , хп) е С~ тогда и только тогда, когда полином Жегалкина функции / со- содержит нечетное число отличных от констант слагаемых, и f (хъ ... . . . , хп) 6 Са тогда и только тогда, когда полином Жегалкина функции / содержит четное чиело отличных от констант слагаемых. Таким образом, алгебра Ф° является прямой суммой множеств С~ и Са (см. § 1.2), т. е. Фй = С~[}Са, причем С~[)Са= 0. Лемма 4.3. Класс Са образует подалгебру алгебры Ф°. Действительно, класс Са замкнут по операциям отождествления, перестановки и добавления (фиктивных) аргументов. Пусть функции f (хъ ... . хт) и g(xx, . . . , хп) принадлежат Са. Тогда их ком- композиция к(хъ х2, ... , хт+п_1) также принадлежит классу Са, так как h(x, х, ... , х) = f(g(x, ... , х), ... , g(x, . . . , х)) = = f(a, а, ... , а), где а = g(x, ... , х). Лемма доказана. Теорема 4.12. Класс С~ образует изолированную подалгебру алгебры Ф°. Доказательство. Покажем сначала, что класс С~. является подалгеброй алгебры Ф°. Очевидно, что класс С~ замкнут по опе- операциям отождествления, перестановки и добавления (фиктивных) аргументов. Пусть / (хъ . .. , хт), g (хг хп) е С~. Композиция Н(хъ ... , хт+п_1) функций / и g также принад- принадлежит классу С~. Действительно, если g (х, . . . , х) = х, то h (х, х, ... ,x) = f(g(x, ... , х), g(x, ... , х), ... . . . , g(x, . . . , х)) = f(x, . . . , х) = хфа0, где а0 — свободный член в полиноме Жегалкина функции /. Если g(x, х, ... , х) = х, то h(х, х, ... ,x) = f(g(x, ... , х), g (х, ... , х), . ... ... , g (х, ... , х)) = f (х, х, ... , х) = х + а0, так как полином Жегалкина функции / содержит нечетное число отличных от констант слагаемых. Перейдем к доказательству изолированности подалгебры С~. Поскольку Ф° является прямой суммой множеств Са и С~ и класс Са образует подалгебру алгебры Ф°, достаточно рассмотреть сле- следующие два случая: a) f(Xl, ... , xm)iCa; g{xi, ... , хп) € С~. тогда для компо- композиции Л(.гь ... , хт+п_1) функцпй fug справедливо равенство h(x, ... ,x) = f(g{x, ... , х), ... , g (x, ... , х)) = с0, § 4.4. Модифицированные алгебры Поста 155 где а0 — свободный член полинома / (хъ . . . , хт), откуда следует, что h (хъ . . . , хт+п_1) принадлежит алгебре Са; б) / {хъ ... ,xm)iC~;g (хъ ... , хп)е Са, тогда h(x, ... , х) = = /(с, ... , а), где а = g(x, ... , х), откуда следует, что и в этом случае композиция h (хъ . . . , хт+п_1) функций / и g принадле- принадлежит подалгебре Са. Теорема доказана. Следствие 1. Всякая система образующих алгебры Ф° содер- содержит подсистему, которая является системой образующих ал- алгебры С~. Элемент, порождающий всю алгебру 3t, называется универсаль- универсальным в этой алгебре. Следствие 2. Не существует функций, универсальных в ал- алгебре Ф°. Пусть Жа=Са U Ж, где Ж си С~ — некоторое множество функций. Следствие 3. Класс Ша является подалгеброй алгебры Ф° тогда и только тогда, когда Ш также образует подалгебру алгебры Ф°. Следствие 4. Класс Ша образует максимальную подалгебру алгебры Ф° тогда и только тогда, когда Ж является максимальной подалгеброй алгебры С~. Перейдем к установлению критерия функциональной полноты в алгебре Ф°. Рассмотрим классы булевых функций С\ = Са[] U С4, D'l3 = Са{] Dг, где D3 — подалгебра самодвойственных функ- функций алгебры логики (см. § 3.4). Лемма 4.4. Класс С4 образует подалгебру алгебры Ф°. Лемма 4.5. Класс Daz образует подалгебру алгебры Ф°. Справедливость лемм 2 и 3 очевидна, так как классы С4 и D3 являются подалгебрами алгебры Ф° и, кроме того, С4, D3czC~ (см. теорему 4.12, следствие 3). Напомним, что функция /* (хь х2, ... , хп) = 1 (хъ х2, ... , хп) называется двойственной функции / (хг, х2, ... , хп)\ если /* (хи х2, ... , хп) = f (хъ х2, ... , хп), то функция / самодвойственна (см. § 3.4). Пусть Ж — некоторое множество булевых функций. Множестве Ж* всех функций, двойственных функциям из Ш, называется двонственньш мнижеству Ж. Если Ж* = Ж, то множество Ж на- называется самодвойственным. Пусть Л'/4 = С4 П-^'А) гДе ^i — подалгебра монотонных функций алгебры логики (см. § 3.4). Поскольку С4 и Мх являются под- подалгебрами алгебры Ф°, класс Л/4 всех монотонных а-функцпй — также подалгебра алгебры Ф°. Введем класс Мъ такой, что / (хх, хъ ... , хп) 6 М-о тогда и только тогда, когда одна из функции f (хг. . . . , хп). / (xlt .... хп) принадлежит классу МА. Нетрудно убедиться в том, что класс Л/4,
156 Глава 4. Системы алгоритмических алгебр а значит и Мъ, образуют самодвойственное множество М* = Mir М* = МЪ. Пусть М% = Са[) Мь, тогда справедливо такое утверждение. Лемма 4.6. Класс М\ образует подалгебру алгебры Ф°. Доказательство. На основании включения M-oczC~ до- достаточно показать, что класс Мь образует подалгебру алгебры Ф°. Очевидно, что класс М-о замкнут по операциям отождествления, перестановки и добавления (фиктивных) аргументов. Пусть функ- функции f {хи . . . , хт) и g (хь ... , хп) принадлежат Мь. Покажем, что их композиция h (хъ . . . , хт+п_г) = хъ (хт, х т+1, принадлежит классу Мъ. Возможны два случая: а) g(xu . . . , хп) 6М4, тогда Ь(хъ . . . , хт+п_1) 6 Мь, так как класс МА образует подалгебру алгебры Ф°; б) g(x\, . . . , хп) J Мъ тогда согласно определению класса Мь S (хъ ¦ ¦ ¦ . хп) = Si (хъ • ¦ • , хп), где g! (хи ... , хп) б М4. Отсюда следует, что h (хи . . . , a;m+ft_1) = / (f ]. (хъ . . . , хп), ... ,g1 (хт, . .. ••• ) хт+п— l)) = /* (gl (xl, ¦¦• ) хп)> ••• > el (хт> ••• i xm+n—1))> где /* — функция, двойственная /. Таким сбразом, ввиду само- самодвойственности и замкнутости класса М5 относительно отрицания рассматриваемый случай сведен к предыдущему. Лемма доказана. Рассмотрим класс С~, который получается в результате при- присоединения к классу С~ булевых констант. Лемма 4.7. Класс С~ образует подалгебру алгебры Ф°. Справедливость леммы следует из теоремы 4.12, а также из равенства композиции произвольной функции с константой одной из констант. Справедлива теорема, устанавливающая критерий функцио- функциональной полноты (см. § 3.2) в алгебре Ф°. Из нее следует гги- сание Есех максимальных подалгебр алгебры Ф°, которыми яеля- ются подалгебры С°, Da3, Маь, С~. Теорема 4.13. Для того чтобы система функций /ь /2. ... , /s являлась системой образующих в алгебре Ф°, необходимо и доста- достаточно, ••тобы в этой системе содержалась по крайней мере одна функция, 1) не принадлежащая С°, 2) не принадлежащая D%, 3) не принадлежащая М°а, 4) не принадлежащая С~. § 4.4. Модифицированные алгебры Поста 157 Доказательство. Необходимость следует из лемм 4.4—4.7. Достаточность. Пусть и(хъх2, ... ,*„,)?С?, D.53) 12{хъх2, ... ,xn^Dl, D.54) fs(xb x.z, .. . ,Xn,)JMl, D.55) x)^C D.56) D.57)- /4 \ХЪ Х%1 • • • > Используя D.53), построим отрицание Выбираем функцию f2(xlt х2, . . . , xn2)jD^. В силу D.57) f2(x, ... , х) = х, D.58) так как в противном случае этим свойством обладала бы функция п(хь X2i ¦ • ¦ 1 xn2)i которая также не принадлежала бы классу Dg. Так как функция /2 (хь х2, ... , хП2) несамодвойственна, можно указать пару противоположных наборов Ъ. = (аъ а2, ... , а„2) и а' = (аь а2, . . . , аП2) таких, что /2 (а) = /2(а') = С. Разбиваем пере- переменные, ст которых зависит функция /2, на две группы. К первой группе относим все переменные xi такие, что а{ = 0, ко вторсй -— все переменные хг такие, что ах = 1 (i = 1, 2, ... , п2). На осно- основании D.58) заключаем, что каждая из этих групп непустая. Отождествляя все переменные первой группы с переменной х, а второй — с у, получаем функцию р (т ,л _ { х • V' если С = °. // ^9^ *г{х'У)-\х\/у, если С = 1. D-5У) Таким образом, используя функцию /2 (х1: х2, ... , хПг) и учи- учитывая равенство D.57), можно построить и конъюнкцию, и дизъ- дизъюнкцию: x\Jy = [(x Xii/)Xi]=| и ху = \{х X {x\Jy)) X х] =x\jy, D.60) с помощью которых нетрудно найти функцию Ср (СС^ * ь^о 5 * * * * Я У — Д/^Д-о^з ^/ ^ 5 б V 7 8 9' \ ' / В результате соответствующих отождествлений аргументов функ- функции у получаем ъ> хз) == /л r>o\ Далее, выбираем функцию f3(xlt х2, ... , xns)~€ M?. В силу D.57) f3(x,x, ... ,х) = х, D.63>
158 Глава 4. Системы алгоритмических алгебр так как в противном случае этим свойством обладала бы функция 7з (хъ хъ . . ¦ , хПз), которая также не принадлежала бы классу М?; функция /3 (хь х2, ... , хПз) существенно зависит не менее чем от трех переменных, так как в противном случае она принадлежала бы классу М\ (все сх-функции от двух аргументов монотонны, ¦см. § 3.4, табл. 2). Вследствие немонотонности функции f3(xlf х2, ... , %3) найдется пара соседних наборов а = (аъ а2, ... , аг_ъ 0, аг+ъ . . . , ап,), таких, что / E) = 1 > 0 = / (C). Разбиваем переменные, от которых зависит функция /3, на три группы. К первой группе относим переменную а^, ко второй — те из оставшихся переменных, для которых a.j = 0, к третьей — все переменные Xj такие, что а;-= 1 •(/= 1, 2, ... , i—1, ? + 1, ... ,п3). На основании D.63) /3@, О, ... , 0) = 0, а /3A, 1, ... , 1) = 1 и поэтому каждая группа переменных непустая. Отождествляя переменную первой группы •с переменной хх, все переменные второй группы с переменной х2 и все переменные третьей группы с переменной х3, находим функ- функцию F3 (хь х2, х3) такую, что F3 A, 1, 1) = 1, F3 (I, 0, 1) = 0, F3 @, 0, 1) = 1, F3@, 0, 0) = 0; применяя операцию ^ к функциям F3 (хъ х2, х3) и cp(?i, х2, ... , х8, х9) (см. D.61)) и отождествляя аргументы аналогично D.62), можно получить следующую супер- суперпозицию функций: ^з (^1 О^ь ^21 х3), ty-i{Xi, х2, х3), ijK (хг, х2, х3)) = Xi 0 х2 уЗ х3. D.Ь4) В справедливости этого равенства нетрудно убедиться, построив таблицы истинности для его левой и правой частей. Применив к построенной функции ^ф^гф^з отрицание, получим Наконец, выбираем функцию /4 (хъ х2, ... , xnj g C~. Возможны два случая. В первом случае f,(x,x, ... ,*) = 0. D.66) Так как /4(а;ь х„_, . . . , xUi) = const, найдется набор а = (аъ а,. ... . . . , ап>) такой, что /4(а) = 1. Разбиваем переменные, от которых -зависит' функция /4, на две группы. К первой группе относим все переменные х-г такие, что ai = 0, ко второй — все остальные переменные функции /4. В силу равенства D.66) каждая из групп непустая. Отождествляя Есе переменные первой группы с я, а все переменные второй — с у. получаем функцию V (г 7Л_/ ЖФ если /4(а') = 0, § 4.4. Модифицированные алгебры Поста 159 где а' — набор, противоположный набору а. Используя построен- построенные ранее дизъюнкцию и композицию, получаем h(x,y,z) = xy\/yz, D.67) откуда после отождествления переменных х и z F(x, у) = D.68) Во втором случае fi(x, х, ... , х) = 1. Выполняя построение, двойственное описанному в первом случае, получаем функцию ?02/01, и в результате применения отрицания Таким образом, функция яфг/ построена. Исходная система функций сведена к системе \ху, ?0г/, a;0j/0z01}, которая согласно теореме 4.11 является системой образующих в алгебре Ф°. Теорема доказана. Следствие 1. Всякая подалгебра алгебры Ф° (кроме всей ал- алгебры Ф°) содержится по крайней мере в одном из классов С%у Па Ма Г~ и3, ж&, и~. Следствие 2. В алгебре Ф° существует только четыре макси- максимальные подалгебры: С\, D\, M\, С\. Следствие 3. Для того чтобы система функций flt /2, ... , /s являлась системой образующих алгебры С~, необходимо и доста- достаточно, чтобы она содержала по крайней мере одну функцию, 1) не принадлежащую классу С4, 2) не принадлежащую классу D3> 3) не принадлежащую классу Мъ. Действительно, из доказательства теоремы 4.13 следует, что,_ используя функции /i?C4, /г?Дэ! /з?^51 можно построить си- систему {ху, х® г/фг01), которая порождает любую функцию, принадлежащую подалгебре С~. Этот факт можно доказать по аналогии с доказательством теоремы 4.11, если учесть, что каждая функция / 6 С~ предетавима полиномом Жегалкина, содержащим нечетное число слагаемых, отличных от константы. Следствие 4. В алгебре С~ существует только три максималь- максимальные подалгебры: С4, Мъ, D3. Таким образом, алгебра Ф° имеет четыре максимальные под- подалгебры, в отличие от алгебры логики, имеющей пять макси- максимальных алгебр (см. § 3.4). В_работах [114,115] подробно изучена структура подалгебры алгебры Ф°. В частности, удалось установить, что в алгебру Ф0 входят бесконечно порожденные подалгебры, в том числе под- подалгебры с бесконечным базисом. Отсюда следует, что все под- подалгебры алгебры Ф° являются подалгебрами континуальной мощ- мощности (см. § 3.3, теорема 3.8). Это означает, что алгебра Ф°, как
160 Глава 4. Системы алгоритмических алгебр и/b-значные алгебры Поста (при к~^ 3), является алгеброй конти- континуального типа, в отличие от алгебры логики, которая имеет •счетное множество подалгебр [134]. Однако, несмотря на трудности, связанные с континуумом подалгебр, построена поверхность ал- алгебры Ф° (см. § 3.3); она содержит свыше 200 типов подалгебр — все типы подалгебр алгебры логики D3). Изучены также неко- некоторые классы бесконечно порожденных подалгебр, окаймляющих ловерхность (пограничные и предельные подалгебры [115]). Заме- Заметим, что методика построения поверхности алгебры Ф° основана :на существовании изолированной подалгебры С~ (см. § 3.5). Рассмотрим модифицированную алгебру Поста, связанную с по- полугруппой Пм многорегистровых операторов [131]. Как отмечалось в § 4.3 (теорема 4.10), изучение свойств полугруппы Пм в зна- значительной степени сводится к изучению множества Фм &-значных •функций с выделенными группами аргументов, причем верхний индекс означает номер регистра, к которому относится соответ- соответствующая группа аргументов. Пусть функции f(y\, у\, ... , у1^, . . . ; ynv упг, . . . , ifij и ?(у\, у\, . . . , у\\ . . . ; у™, у™, ... , y™J принадлежат множест- множеству Фм- Под композицией функций / и g будем понимать бинар- бинарную операцию X, определенную равенством (/ X g) (xv х2, ... , a:r.t+!i_1; ... ; хх, xi, ... , жг.1+!т_1; „m+l ~m-t-l ~m+l. . „m+n—1 „m+n—1 _.m+n—1\ = / \S {p'v xv • • • i Щ^ • • • ! ^i i гj i • ¦ • ) ^(„j)' S (^г1 ^s' • • ¦ rl . . ~m rm Tm \ -. /„1 rl rm+l. rm+n—1 „m+n—1 „m+n—1\ Композиция функций D.70) связана с композицией многорегист- многорегистровых операторов (§ 4.3). Функция g подставляется (со сдвигом ¦в нумерации переменных) вместэ каждого аргумента функции /, отнесенного к первой группе. В частности, если функции / и g •состоят лишь из одной группы аргументов, то композиция функ- функций соответствует случаю однорегистровых операторов D 48). По аналогии с &-значньши алгебрами Поста (см. § 3.1, при- пример 10) введем совокупность унарных операций тппа С, т, Д, у, ¦позволяющих отождествлять и переставлять аргументы в каждой труппе, а также переставлять, соединять и добавлять (фиктивные) ¦различные группы переменных. Схемная интерпретация унарных операций состоит в склеивании, перестановке и перенумерации регистров, а также в пересоединении и перенумерации элементов в каждом регистре. Реализация этих унарных операций проста: § 4.4. Модифицированные алгебры Поста 161 кроме того, они не нарушают логической структуры схемы, «на- «навешенной» на регистры. Построенную алгебру обозначим Фм(&) и назовем расширен- расширенной модификацией алгебры Поста. Очевидно, алгебра Ф°, связан- связанная с однорегистровыми операторами, является подалгеброй ал- алгебры ФмB). Отсюда следует, что примененные выше основные свойства структуры подалгебры ф° могут быть перенесены на алгебру ФмB). В частности, алгебра ФмB), как и алгебра Ф°, содержит бесконечно порожденные подалгебры и множество всех подалгебр алгебры ФмB) является множеством континуальной мощности. Установим критерий функциональной полноты в алгебре Фм{к). Предварительно заметим, что, как и в случае алгебры Ф°, каждой подалгебре R /с-значной алгебры Поста соответствует в алгебре Фм(к) подалгебра Л', состоящая из функций / б R с отмеченными группами аргументов. Например, подалгебре Мх всех монотонных функций алгебры логики (см. § 3.4) соответствует подалгебра M'v состоящая из' монотонных функций с отмеченными группами аргументов. Пусть / (х\, х\, ... , х*; ... ; ж™, ж™, ... , ж"п) — про- произвольная функция алгебры Фм(^)- Проекцией функции / назы- называется функция //Г1 Г2 ТП\_1/Т1 „1. Г2 Г2. „п ГП\ Так, если / (х\, х\, х\, х\, аф = x\x\\Jx\x\\Jх\х\ — булева функция, принадлежащая ФмB), то ее проекцией является функция }{х\; ^) = 4^2V^V^=^V^- На множестве Есех проекций в алгебре Фм(&) любая операция /с-значной алгебры П.;ста (см. § 3.1, пример 10) производна. Сле- Следовательно, в алгебре Фм(^) выполнима произвольная суперпо- суперпозиция проекций. Рассмотрим множество R всех функций / б Фм (к) таких, что / 6 R тогда п только тогда, когда / g R', где R' с=Фд/(/с) соответ- соответствует некоторой подалгебре R А;-значноп алгебры Поста. Так, если в качестве R выбрать множество М1 всех монотонных бз^ле- вых функцпй, то множество Мг составят все такие функции из ФмB), проекции которых принадлежат подалгебре М^. За- мзтпм, что прп этом функции пз Мх не обязательно будут моно- монотонными. Например, функция f (x\, x\; xf) = x\x\\Jxl немонотонна, так как / @, 1; 0) = 1, а /A, 1; 0) = 0; в тоже время f? Мъ поскольку проекция f (x\; x\) = х\ б Mi. 6 8-330
162 Глава 4. Системы алгоритмических алгебр Лемма 4.8. Множество R образует подалгебру алгебры Фм(к). Действительно, множество R замкнуто относительно всевоз- всевозможных отождествлений, перестановок и добавлений (фиктивных) групп аргументов, а также соответствующих преобразований в каждой из групп, так как все эти операции, очевидно, не вы- выводят из множества проекций R'. В то же время любая композиция h функций из R им8ет проекцию h, которая является супер- суперпозицией проекций из R', так что h е R'', и поэтому h ? R. Лемма доказана. Пусть R — подалгебра /b-значной алгебры Поста с базисом и [Rq q € 1} — множество всех максимальных подалгебр относитель- относительно R. Тогда в силу теоремы 3.9 (следствие 3) для подалгебры R ^\ справедлив критерий Поста. Рассмотрим множество zq = Rq f) R' при любом q?l. Согласно доказанной лемме множества г,сй' являются подалгебрами алгебры Фм(Щ- Теорема 4.14. Система функций Ec=i?' порождает подалгебру R' алгебры Фм(к) тогда и только тогда, когда для каждой из под- подалгебр zq (q б /) а системе Е найдется по крайней мере одна функ- функция, не принадлежащая данной подалгебре. Доказательство. Необходимость очевидна. Для доказа- доказательства достаточности выберем подсистему ИосЦ такую, что § 4.5. Реализация регулярных схем адресных программ... 163 при любом q € /}. D.71) Для каждой из функций fq 6 ?0, отождествив аргументы в отме- отмеченных группах, построим проекцию fq. Причем в силу D.71) fqJRq (при любом q е /). Пусть / (х\, х\, . . . , х\\ ... ; з™, х™, ... ... , ж™ ) — произвольная функция, принадлежащая подалгебре R' алгебры Фы(к). Проекции {fq\q?l} порождают любую проекцию в подалгебре R', а значит, и функцию f(rl.r2. • Т*,Ч +tm\ (к!Т\ Разбив D.72) с помощью унарных операций алгебры Фм(к) на соответствующие группы аргументов, получим Г1 Г1 х!' -С2» ¦ - • > > • • • ' Х1 ' Теорема доказана. Следствие 1. Система функций S с= Фм B) порождает алгебру Фм B) тогда и только тогда, когда для каждой из подалгебр Ьъ -^ ^^ч ^~ч ^^ч Мъ D3, Co, C3 cz Фм B) (Z-! — множество всех линейных функций, '¦ | Mi — все монотонные функции, D3 — все самодвойственные функ- , ' ции, C2(CS) — все функции, сохраняющие константу 1@)) в си- ;<. стеме Е найдется по крайней мере одна функция, не принадле- j..j жащая данной подалгебре. !¦;! Следствие справедливо в силу теоремы 3.13 (см. § 3.4). Ч Следствие 2. Если система функций {/ (уъ ... , yni)\ i = 1, ч 2, . . . , т\ полна в /с-значной алгебре Поста, то система (Д (z*; •• х];, . . . ; хр\ i = 1, 2, ... , т] порождает алгебру Фм{Щ- Полученные результаты могут быть использованы при анализе ¦ и синтезе линейных программ, реализующих многорегистровые периодически определенные операторы. § 4.5. Реализация регулярных схем адресных программ i в однородных структурах | В данном параграфе намечается подход к использованию аппарата алгоритмических алгебр для описания средств языков програм- программирования. С этой целью выбирается подходящая система обра- образующих (элементарные операторы и условия), в терминах которой удобно описывать операторные и логические средства конкретного ! языка. Такое погружение языка программирования в систему ''> алгоритмических алгебр позволяет представлять его программы ' в виде регулярных схем, и, следовательно, используя технику эквивалентных преобразований (см. § 4.1, 4.2), можно оптимизи- оптимизировать исходные программы по тем или иным критериям. Примером может служить погружение адресного языка, являющегося про- f цедурно ориентированным языком программирования. Этот язык широко применяется для решения целого ряда задач, и в част- частности для описания алгоритмов трансляции [128] (см. также § 6.1). В системе алгоритмических алгебр операторные и логические средства выбранного языка описываются в терминах многорегист- многорегистровых операторов (см. § 4.3, 4.4), которые являются однородными структурами. Известны также работы по проектированию схем , ЭВМ, связанных с применением в качестве элементной базы вычислительных сред (ВС) с однородной структурой [43, 69, 81]. Поэтому представляет интерес разработка методов реализации многорегистровых операторов в ВС. В частности, с пх помощью можно перейтп к проблеме настройки ВС на режим трансляции с заданного языка программирования на язык операционного устройства, реализованного в этой среде. Пусть М—информационное множество над совокзгднсстью бесконечных в обе стороны абстрактных регистров {.Xs | s = 1, 2, ...} (см. § 4.3). При решении конкретных задач на каждом регистре может быть выделен конечный участок (активная зона), который 6*
164 Глава 4. Системы алгоритмических алгебр § 4.5. Реализация регулярных схем адресных программ... 165 используется в данном алгоритмическом процессе. Иными словами, под абстрактным регистром понимается как регистр некоторого операционного устройства, так и ячейка (или псследовательнссть ячеек) оперативной памяти. Поэтому можно говорить об адресе или имени регистра, его содержимом и пр. Рассмотрим систему алгоритмических алгебр, порождаемую следующим базисом. Базисные операторы. 1. Операторы ввода п вывода; указываются номера регистров, участвующих в операциях ввода и вывода. 2. Оператор штрих-операции (выборки содержимого регистра по адресу регистра) задает отображение А ->М, где А — множество адресов, М — множество содержимых этих адресов; суперпозиция (многократное применение) штрих-операции, когда содержимым адреса является другой адрес, приводит к использованию адресов высших рангов. 3. Поразрядные операторы инверсии /s и конъюнкции Л^ „ (см. § 4.3); поразрядная конъюнкция применяется к содержимым регистров Xй, Х° с хранением результата в регистре Xs. 4. Оператор сдвига С{ (к— коэффициент сдвига) (см. § 4.3). 5. Оператор останова «!» (прекращение алгоритмического про- процесса). Предполагается, что к порождающим функциям многорегист- многорегистровых операторов применимы все операции алгебры ФЕк (см. § 4.4). Базисные условия. 1. as = 0 — условие равенства нулю содержимого регистра Xs. 2. as > 0 — условие равенства нулю знакового разряда ре- регистра Xs. Предполагается, что при переработке числовой информации используются спаренные регистры: бесконечный регистр и одно- однобитовый регистр знака. В систему образующих операторной алгебры вводятся также следующие операторы, порожденные базисом. 1. Тождественный оператор; ¦'и, v — поразрядная сумма по mod 2; \/su „—поразрядная дизъюнкция (верхний индекс указы- указывает номер результирующего регистра, нижние — номера регист- регистров, к которым применяется поразрядная операция; если верхнего индекса нет, результирующим регистром является Х°). В алгебре многорегистровых операторов набор базисных опера- операторов (инверсия и поразрядная конъюнкция) полный (теорема 4.14, следствие 2). Однако при необходимости базисные операторы можно дополнить поразрядными операторами эквивалентности, имплпкацип и др. Для осуществления преобразований в /с-пчной системе счисления в базисе необходимо заменить операторы ин- инверсии и поразрядной конъюнкции их обобщениями на /с-значный случай /s, (min)s , которые задаются порождающими функциями I(q) = k—l — q, min(?i, q2) (q, qt, q2 <E Eh = @, 1, ... ,k—t\). Для реализации арифметических операторов вводятся также опе- операторы (+modk)suv, (тах)^щ и П^в с порождающей функцией ? 9г = 0 при 1 при Тогда регулярное представление оператора сложения в /с-ичной системе счисления имеет вид v (а«=0) Таким образом, приведенное регулярное представление оператора сложения в /с-ичной системе счисления является итерацией по условию равенства нулю содержимого регистра Xй. Пусть а" = = (. . . , а", ... ), ри = (. . . , Р{> ... ) — содержимые регистров соответственно Xй и Х° (—оо< ?<-)-оо). Тогда на каждом шаге итерации параллельно выполняются поразрядное сложение (по mod к) с храпением результата на регистре Х° и формирование переноса на регистре Xй с последующим сдвигом влево. Для формирования переноса на регистре Xй вначале производится инверсия, а затем поразрядно применяется операция ?" щ, пере- переводящая i-й разряд регистра Xй в нуль, если к—1 — а"> C|, и в единицу в противном случае. Данное регулярное представление является обобщением на к- значный случай микропрограммы сложения целых чисел в двоичной системе счисления (см. § 4.3). Другие арифметические операторы в /с-ичноп системе счисления реализуются с помощью сложения, инверсий и сдвигов. Допускается применение групповых операций сложения и умножения. Заметим, что перечисленные операторы могут выполняться над регистрами, адреса которых являются содержимым указанных в них регистров. Используя арифмети- арифметические операторы, условия, входящие в базис, и операцию левого умножения условия на оператор, можно получить отношения <, 2. Операторы типа засылки, ссущестнляющие засылку содер- содержимого одного регистра в другой. Если содержимым регистров являются адреса, то засылка нссит сложный характер (предва- (предварительно выполняются Есе штрих-операции). К этой группе опе- операторов относятся также очпетка (обращение в нуль) ьсего регистра или его части, установление регистра (пли его части) в состо- состояние «1» и др.
166 Глава 4. Системы алгоритмических алгебр 3. Операторы перехода по содержимому регистра, которое является именем другого оператора, перехода по ключу, когда бсуществляется упорядоченная проверка группы условий для определения последующего оператора. Операторы подобного рода могут быть легко реализованы с помощью а-дизъюнкции. 4. Оператор выдгления, фиксирующий конечный участок на данном регистре. 5. Оператор пересылки, осуществляющий пересылку конечных участков с одного регистра на другой. 6. Оператор пропуска скобок, использующийся при анализе синтаксической структуры выражения, помещенного в регистр для пропуска некоторых подвыражений в указанном направлении просмотра. 7.. Оператор частичного сдвига, осуществляющий сдвиг влево (вправо) на к символов части регистра, начиная с л-го разряда. В работе [59] приводятся регулярные представления в терми- терминах базисных операторов ж условий для всех операторов, входящих в систему образующих алгоритмических алгебр, а также регуляр- регулярные схемы некоторых алгоритмов, иллюстрирующие возможности применения алгоритмических алгебр. Основные из приведенных выше операторов были запрограммированы по составленным для них регулярным схемам. Перейдем к реализации многорегистровых операторов в ВС. Несколько обобщая подход, намеченный в работе [56], рас- рассмотрим абстрактную модель ВС, состоящую из двух двумерных щршлельных плат, площадь каждой пз которых не ограничена (оохоо). Нижнюю плату А0 назовем информационной, а верхнюю А1 — вспомогательной. Для ориентации в выбранной модели ВС введем координатные оси: горизонтальную v и вертикальную и. Координаты элемента ВС, находящегося на пересечении коорди- координатных осей (начало координат): v, и (О, 0). Указанные платы Аг, г = @, 1}, состоят из элементов arv ц, каждый из которых соединен с пятью соседними элементами. Два элемента а?'Гц и af счи- считаются соседними, если 1) v1 = у2 ± 1, их = щ, г' = г", 2) vi = у2, их = и2 + 1, г' = г", 3) Vx = v2, их = Щ, г' = г" ф 1. Предполагается, что базие элемента описанной модели ВС функ- функционально и соединительно полный. Следовательно, далее каждая плата рассматривается как решетка, в узлах которой расположены элементы ВС. Направление передачи информации между этими олементами указывается стрелками. При этом предполагается т^кже, что выполнена необходимая настройка элементов ВС. Пусть задан многорегистровый оператор F\i:k ftri: F^ r> rn (кратко Fs) над регистрами X1, X2, ... , Xn и требуется настроить § 4.5. Реализация регулярных схем адресных программ.. 167 предложенную модель ВС на схему, реализующую этот оператор (s — номер регистра, в который засылается результат оператора Fs)f причем предполагается, что s е {1, 2, ... , п}\ / (%\, т\, ... , г^; ; х™, tn, . . . , т™ ) — порождающая функция данного оператора. Решение этой задачи состоит в выполнении следующих основных этапов: реализации регистров, трассировки необходимых связей) реализации порождающей функции /г" "" Гп (кратко /), задающей оператор Fs. Представим оператор F* в виде композиции операторов: F* =< = С\ X • • • X С1п X F*f. Это представление оператора Fs означает, что при его реализации следует осуществить предварительно на регистрах X1, X2, . .. , X" все необходимые сдвиги, а затем выполнить оператор Fsf. Очевидно, что с помощью сдвига C+i(C-i) в результате композиций можно1 получить сдвиг с любым положи- положительным (отрицательным) коэффициентом. Следовательно, выполне- выполнение оператора сдвига С{$ сводится к реализации оператора C+i при kj > 0 или оператора С3—\ при kj < 0. Для выполнения этих опе- операторов в ВС (построенной из элементов потенциального типа) выбирается два регистра: основной X3 и вспомогательный Х|. Эле- Элементы ВС, расположенные между этими регистрами, настраиваются на схему, реализующую оператор сдвига C+i или Ci-i- При этом необходимо, чтобы в-ЭВМ (далее называемой устройством управ- управления) вырабатывались основные управляющие сигналы: Уп (Ул) и Ур. Процедуру выполнения сдвига на регистре Xj можно опи- описать следующим образом: синхронно с управляющим сигналом. Уд (Ул) содержимое регистра Xj со сдвигом на один разряд вправо (влево) пересылается на регистр Х(, а затем синхронно с управ- управляющим сигналом Ур содержимое регистра Х{ пересылается на регистр X*. После выполнения описанной процедуры kj раз регистр X* будет переведен в новое состояние, соответствующее результату выполнения оператора С{-. Заметим, что если kj = 0 и результат выполнения оператора Fs определен на регистре Xj (т. е. / = s), то и в этом случае (для выполнения условия устойчивости функционирования проекти- проектируемой схемы) необходимо реализовать вспомогательный регистр Х[. Вначале значение функции / (предположим, что синхронно с уп- управляющим сигналом У) засылается в регистр Xi, а затем пере- пересылается с управляющим сигналом Ур на регистр Хк Следовательно, элементы ВС, расположенные между этими регистрами, настраи- настраиваются на схему, реализующую оператор пересылки. Разобьем условно ВС по обе стороны оси и на равные верти- вертикальные слои ?/(— оо < i < оо), состоящие из двух полос Щ, г =»
168 Глава 4. Системы алгоритмических алгебр — {О, 1]. При этом предполагается, что левая грань полосы ВТ0 прэходит по сси и (у = 0). Заметим, что оптимальный выбор ширины полссы В\ зависит от параметров п, Лпах ('"max = max (гъ гг, . . . , гп)) оператора Fs и от формы представления порождаю- порождающей функции /. Обозначим ширину каждой полосы В\ через Ъ и предположим, что эта ширина достаточна для размещения схемы, реализующей ?-й разряд данного оператора (Fs). Далее, выделим горизонтальный слой S' шириной R. При пересечении слоев 5/ со слоем S' образуются параллелепипеды, верхними и нижними грпнями которых являются прямоугольники соответственно R\ и R]. Ширина прямоугольника R\ (полосы S') зависит от числа различных аргументов функции /. Обозначим вершины прямоугольников щ и Щ соответственно через е\, е\, е\, е\ и еъ е2, е3, е±. Пусть vix, ue, (vSl, ие„) — координаты левой верхней (нижней) вершины прямоугольника R[ (рис. 21). 1. Реализация регистров (предполагается, что описанный ниже метод размещения в ВС схемы, реализующей ?-й разряд опера- оператора Fs, применяется для построения схемы в (i + 1)-м слое). Регистры Xj и Х{ (/ = 1,2, . . ., п) реализуются на плате А° по прямым, уравнения которых имеют вид и = и? = const и и =и\ = •= const. Причем каждой полосе В°- ставятся в соответствие эле- элементы Х{ и Х{ регистров Xj и Х{. Расположение регистров X1, Х\, X2, Х\, . .. , X, Xi' на плате А" следующее: выше прямой и = щ1=- const — регистры X'1 и Х\1; при этом предполагается, что uh > и{\ а и?1 < и}1+{, Где /^ = 1, 2, ... ,щ_ (щ — \ , если п — четное число, в противном случае пг ниже прямой и = = щ, = const — регистры Xn'+l, Z?I+1, . . . , Хщ+п\ Хп^+п> (щ = = п — Пх); при этом предполагается, что и{2 > и'', a u't+i < и'* (/¦2 = П\ + 1. 14 + 2, ... ,щ + л2). В качестве примера на рис. 21 приведена структурная интер- интерпретация схемы, реализующей оператор Fs при п = 4, rmax = 2 (кг = к2 = к3 = ki = 0). Предполагается, что результат выполнения данного оператора определен на регистре X2, так что элементы ЕС, расположенные между регистрами X2 и Х\, настроены на схему, реализующую оператор пересылки. 2. Трассировка необходимых связей. Прямоугольник R\ раз- разбивается на два (правый п левый) прямоугольника. В прямоуголь- прямоугольнике Я) (на рис. 21 вершины прямоугольника R\ обозначены через е[, ei, el, е'2, а прямоугольника Ri — через еъ еъ, е6, е2) осуществля- осуществляется трассировка каналов (см. контурные линии), по которым § 4.5. Реализация регулярных схем адресных программ..-. 169 поступают сигналы, соответствующие значениям аргументов т^' (/ = = 1, 2, ... , п; а при / = const v = 0, 1,2, . . . , г,) функции /. Например, по каналам конфигураций 2->-2->-2 в прямоугольник щ поступают сигналы, соответствующие значениям переменных х\, ъье&*&с/,///л; ""'^ ?ZS$Sf5?$&66&5$?6&64 ХЯЖ&ЖК'.К'Л'ЛХ'Я^р, 4-6 Pnc. 21. TJJ, ... , т", т.е. единичным состояниям элементов х], х\, . . . , а;™, и снимающиеся с выходных полюсов элементов ВС, на которых реализованы элементы х\, х\, . . . , х ". По каналам конфигураций 3->-3->3 п 4->-4->4 из прямоугольника Щ+1 в прямоугольник R\ поступают сигналы, соответствующие значениям переменных г^ (при / = const vi = 1, 2, ... , rj) функции /. Эти сигналы снпма1 ются с выходных полюсов элементов ВС, расположенных на левой грани прямоугольника R\+v
170 Глава 4. Системы алгоритмических алгебр 3. Реализация порождающей функции /, задающей оператор Fs. В прямоугольнике Щ строится схема, реализующая функцию / в соответствии с ее формой представления. Значение этой функ- функции снимается с выходных полюсов элементов ВС, расположенных по прямым и = Uit -f I = const или и = щ2 — 1 = const соответ- соответственно, в зависимости от того, над или под прямоугольником Щ расположен регистр Xs. По каналу конфигурации 5->-5 на вход элемента х{ регистра Х{ поступает сигнал, соответствующий зна- значению функции /. На рис. 21 указаны также каналы 1 —>- 1, по которым осущест- осуществляется прием исходной информации в регистры X1, X2, ... , Хп и выдача их содержимого в машину. Так как предполагается, что вводимая в регистр X* (Х{) информация поступает на нулевой вход его элементов, то необходимо, чтобы этот регистр предвари- предварительно был установлен в нулевое состояние, например управляю- управляющий сигналом Уо(Уй, i), вырабатываемым в машине. Канал, по которому проходит сигнал У$ (Уо, i)., трассируется на плате А0 (А1) (на рис. 21 обозначен цифрами 6->-6 G->7)). Таким образом, схему, реализующую оператор Fs, будем счи- считать построенной в данной модели ВС. Заметим, что реализация многорегистровых периодически опре- определенных преобразований с вспомогательными переменными (см. § 4.3) может быть сведена к реализации многорегистровых опе- операторов. Значения вспомогательных переменных f1' Т2> ¦ • • > Т™ Ё&рабатываются в момент выполнения операций в качестве сигналов в некоторых точках соответствующих схем, и поэтому для их хранения не требуются специальные регистры. Обозначим такого рода операторы через Fs(m) (s — номер регистра, в который за- засылается результат рассматриваемого преобразования). Тогда опе- оператор Fs (m) может быть реализован следующими многорегистро- многорегистровыми операторами: i\, 4 ... f k\,... U l t,m um ш ''l • ft2 ' - ' % • - 4 D.73) где U — операция параллельного выполнения многорегистровых операторов F[i ,, ,, П = 0,1, 2, . . . , т) с коэффициентами kj, "i1 Я2 'у Ti соответствующими /-м регистрам (/= 1, 2, ... , п), и порождаю- порождающими функциями fi(T[,tlv ... , Tl_v Tls, П+1, ... , Щ Ц* ~ Ыг ^2, ¦ • • , t'i) — группа переменных, относящихся к /-му ос- основному регистру; если ; = s, то Tj = (ti, tj, . 4'T^' § 4.5^Реализация регулярных схем адресных программ. 171 . .. , fT, .. . ; тГ, тГ> • • • > frO ~~ группа переменных s-го регистра и значения вспомогательных переменных. Преобразованиэ на элемен- элементах регистров Xs задается операторами F-'-Jq^ ft{0)) _ _ ft@) __ kio). u (кратко F^) с помощью операторов F^\ . .. , F^; соответственно определяются значения вспомогательных переменных f1,f2i • • • , Tm> Многорегистровые операторы с вспомогательными переменными обычно определяются на конечных (или бесконечных в одну сто- сторону) регистрах. Однако для обеспечения возможности и одно- однозначности определения результата выполнения оператора F* (гп) необходимо, во-первых, в некоторых начальных разрядах заранее задать значения вспомогательных переменных и, во-вторых, вы- выполнить условия согласования (см. § 4.3). Если оператор Fs (m) представлен выражением D.73), эти согласования можно выразить следующим образом: при выполнении вычислений справа нрлзво необходимо, чтобы к\ > 0, а слева направо-— к[ < 0 и-| к\ \ — г[ > 0. К микрооперациям, описываемым с помощью многорегистровых операторов в виде Fs (m), относится, например, микрооперация сложения двух положительных целых чисел (см. § 4.3). В заключение заметим, что так как оператор Fs (m) может быть задан с помощью многорегистровых операторов, то реализующую его схему можно построить по предложенному выше алгоритму реализации. Концепция периодически определенного преобразования допус- допускает дальнейшее обобщение его на случай n-мерных абстрактных регистров [158, 37]. При этом результаты, пслученные в теории модифицированных алгебр Поста (§ 4.3, 4.4), оказываются спра- справедливыми для периодически определенных преобразований на n-мерных регистрах и близких к ним однородных автоматных структурах (сотообразные структуры, итеративные сети, однородные среды и др.). Аппарат периодически определенных преобразований применяется при решении задач проектирования логических струк- структур ЭВМ, связанных с теорией структур данных и организацией синхронных параллельных процессов для высокопроизводитель- высокопроизводительных средств вычислительной техники [32, 33, 145].
ГЛАВА 5 ФОРМАЛЬНЫЕ И ГРАМ ЫКИ ТИКИ § 5.1. Представление языков с помощью грамматик Любой формальный язык представляет собой множество цепочек в некотором конечном алфавите1. К формальным языкам относятся, в частности, искусственные языки для общения человека с маши- машиной— языки программирования (см. гл. 6). Для задания описания формального языка необходимо, во-первых, указать алфавит, т. е. совокупность объектов, называемых символами (или буквами), каждый из которых можно воспроизводить в неограниченном количестве экземпляров (подобно обычным печатным буквам или цифрам), и, во-вторых, задать формальную грамматику языка, т. е. перечислить правила, по которым из символов строятся их по- последовательности, принадлежащие определяемому языку, — пра- правильные цепочки. Заметим, что каждый символ алфавита рассматривается как неделимый в том смысле, что при построении цепочек никогда не используются его графические элементы (части символа) и всякая последовательность символов однозначно представляет некоторую цепочку. Практически это требование достигается, например, путем установления пробела (промежутка стандартной длины) между символами, который превышает длину любого из проме- промежутков, встречающихся внутри символов алфавита. Правила формальной грамматики можно рассматривать как продукции (правила вывода) — элементарные операции, которые, будучи применены в определенной последовательности к исходной цепочке (аксиоме), порождают лишь правильные цепочки. Сама последовательность правил, использованных в процессе порожде- порождения некоторой цепочки, является ее выводом. Определенный таким образом язык представляет собой формальную систему. Извест- 1 В лингвистике вместо термина «алфавит» употребляется термин «сло- «словарь», так как элементы, пз которых он составлен, представляют собой слова, плп, точнее, словоформы. В то же время цепочка над словарем рас- рассматривается как словосочетание плп предлсженпе [22]. § 5.l\ Представление языков с помощью грамматик 173 ными примерами формальных систем служат логические исчисления (исчисление высказываний, исчисление предикатов), коюрые по- подробно изучаются в соответствующих разделах математической логики [54, 60, 86]. По способу задания правильных цепочек формальные грамма- грамматики разделяются на порождающие и распознающие. К порож- порождающим относятся грамматики, по которым можно построить любую правильную цепочку с указанием ее структуры и нельзя построить ни одной неправильной цепочки. Распознающая грамматика — это грамматика, позволяющая установить, правильна ли произвольно выбранная цепочка и, если она правильна, выяснить ее строение. Формальные грамматики широко применяются в лингвистике, и программировании в связи с изучением естественных языков и языков программирования. В настоящей главе излагаются основные сведения о порождающих грамматиках. Автоматные структуры над внутренней памятью, ориентированные на процесс распозна- распознавания, рассматриваются в гл. 6. Понятие порождающей грамматики впервые было предложено Хомским [109, 110]. Порождающей грамматикой или, кратко, грамматикой назы- называется упорядоченная четверка G = Et, FH, о, Р), где 5t = [аъ а2, ... , ат} — основной терминальный алфавит; FH — конечный вспомогательный (нетерминальный) алфавит, символы которого сбозначаются строчными греческими буквами; о ? VH — начальный (нетерминальный) символ; Р = {щ ->- у41 i — 1, 2, ... , Щ — конеч- конечная система подстановок, левые и правые част-и которых суть цепочки иь vt? F (у), где F (v) — свободная полугруппа над объе- объединенным алфавитом V = Et U FH); символ -> внешний и не при- принадлежит к алфавиту V. Иными словами, символы основного алфавита Ш являются элементарными единицами определяемого языка; символы алфавита VH — метапеременные, использующиеся при выводе правильных цепочек (в естественных языках такими метапеременными являются грамматические классы: существительное, глагол и др.); а — метапеременная аксиома, из которой выводятся все правильные цепочки (в естественных языках аксиоме соответствует граммати- грамматический класс «предложение»); Р — схема грамматики, состоящая пз продукций (правила вывода — грамматические правила опре- определяемого языка). Например, порождающей грамматикой является грамматика Go = ({а, Ь, с}, {о, т), о, Ро), имеющая систему правил с —>- пап, о—>- С, а—>- х1:, аса->- Ь.
174 Глава 5. Формальные явыки и грамм/тики Определение языка L (G), заданного порождающей граммати- грамматикой G, связано с понятием выводимости. / Пусть х.у— цепочки, принадлежащие свободной /полугруп- /полугруппе F(V). Цепочка у непосредственно выводима из' цепочки х в грамматике G, х=*у (или просто х=?у, когда G подразумевается), с если в схеме Р данной грамматики найдется продукция u-+v такая, что х — ххих2, у = х-рхг, где хъ х2 6 F (V). Иными словами, цепочка у получается в результате применения к цепочке х про- продукции u^-v ? Р, т. е. замены в цепочке х выделенного вхождения левой части и данной продукции ее правой частью v. Например, в грамматике Go Ъас =#•Ъххс, acaba=?bba и т. д. Цепочка у называется выводимой из цепочки х в грамматике « # G,x=*y (или просто х=?у, когда G подразумевается), если це- о почки х, у совпадают или существует последовательность цепочек z0, zb ... , zh такая, что zo = x, zh = у и при любом i (l^i^ik) zi_1=?zi. Последовательность цепочек W = (z0, z1; ... , zh) назы- называется выводом цепочки у из цепочки х в грамматике G. Напри- Например, в грамматике Go о =»¦ aba, причем последовательность (а, ааа, ааааа, aacaa, aba) является выводом цепочки aba из цепочки а. Заметим, что на каждом шаге вывода можно выбрать любую из продукций, применимых в данный момент. Это означает: по- порядок применения продукций в грамматике произволен и любую продукцию разрешается применять после какой угодно. Необходимо лишь, чтобы данная продукция была применимой на очередном шаге вывода. Этим понятие порождающей грамматики существенно отличается от понятия нормального алгоритма, в котором под- подстановки носят характер предписаний и строго выполняются в заранее указанной последовательности [80]. * Вывод х=*у называется полным, если у ? F (Щ (т. е. цепочка у о состоит из терминальных символов). Любой полный вывод завер- завершается применением продукций, правые части которых представ- представляют собой терминальные цепочки. Такие продукции в дальнейшем будем называть заключительными продукциями данной грам- грамматики. Если х=^у и у ~? F (Щ, причем в системе Р не существует правил, применимых к цепочке у, то вывод цепочки у из цепочки х в грамматике G называется тупиковым. Например, приведенный выше вывод цепочки aba пз цепочкп о в грамматике Go — полный, продукции а^ус и аса—^-Ь — заключительные продукции грам- грамматики Go, (з, ааа, ааааа, аа~~аа) — тупиковый вывод цепочки aaiiaa из цепочки о в грамматике Go. § 5.1лПредставление языков с помощью грамматик 175 Рассмотрим теперь способ, которым порождающая грамматика G = (9t, Т^, о, Р) определяет соответствующий ей язык. Цепочка х 6 F (Щ называется правильной, если существует по крайней мере один полный вывод цепочки из аксиомы а в грамматике G. Иными словами, цепочка х правильная, если 1) х 6 F (Щ (цепочка х состоит * из терминальных символов); 2) о =*¦ х (существует вывод цепочки а; о из аксиомы о). Множество всех правильных цепочек в грамматике G образует язык L (G), порожденный грамматикой G. Например, грамматика GQ порождает язык L(Go) = [anban[] апсап| п, т = 0, 1, 2, . . .). Таким образом, каждой грамматике G = (91, FH, о, Р) однозначно соответствует язык L (G), порожденный данной грамматикой. Однако это соответствие не взаимно-однозначно. Один и тот же язык может порождаться различными грамматиками. Это позволяет ввести отношение эквивалентности на множестве грамматик. Грам- Грамматики G и G' называются эквивалентными (G~G'), если L(G).= = L((?') (т. е. грамматики G iff' порождают один и тот же язык). Например, грамматика G1==((a, b, с), (о), о, Рх), схема которой имеет вид порождает язык b(Gx), который совпадает с языком L(G0), и, следовательно, Go— Gv В классах эквивалентных грамматик (порождающих один и тот же язык) естественно выделять нормальные формы — грамматики, продукции которых удовлетворяют некоторым ограничениям. В частности, справедлива такая теорема Теорема 5.1. Для каждой порождающей грамматики G = (9t, FH, о, Р) существует такая эквивалентная ей грамматика G' = = (9t, Fh, о, Р'), левая часть каждой продукции которой не содержит символов алфавита 9?. Действительно, пусть G= (9t, FH, с, Р) — произвольная порож- порождающая грамматика. Каждому терминальному символу a i 9t со- сопоставим дополнительный нетерминальный символ a' "g FH так, чтобы различным символам алфавита 9t соответствовали различные нетерминальные символы. Пусть 9i' = {а' | а € 9t) — полученное множество дополнительных нетерминальных символов, Построим грамматику G' = (91, F^, о, Р'), где F^ = VH{] 9Г. Схема Р' строится по продукциям грамматики G: в каждой продукции схемы Р все
176 Глава 5. Формальные языки и грамматики терминальные символы заменяются соответствующими йетерми- нальными; кроме того, в систему Р' включаются продукции вида а'-^уа для каждого а € 31, которые являются заключительными продукциями грамматики G'. Из этого псстроения/бледует, что левая часть каждой продукции схемы Р' не содержит символов основного алфавита %. / Докажем эквивалентность грамматик G и G'. Пусть х = аиаи ... ... alr? L(G) и W = (о, zj, ... , zft), x = zk, — некоторый полный вывод цепочки х в грамматике G. Тогда по данному выводу не- нетрудно построить полный вывод W цепочки х в грамматике G'. Для этого достаточно на г-м шаге вывода W использовать про- продукцию Р[ б Р', соответствующую продукции Рг грамматики G, примененной на г-м шаге вывода W (i = 1, 2, ... , к). В результате получим вывод W" ¦= (с, z[, z2, . . . , z'h), где zk = « . . . а[т. Применив заключительные продукции грамматики G', получим полный вывод W цепочки х в грамматике G'. Следовательно, L(G)S(G')- Пусть теперь х = аиаи ... air e L (G') и W = (a, zb ... , zh), х = zk,—некоторый полный вывод цепочки х в грамматике G'. Поскольку символы основного алфавита не входят в левые части продукций грамматики G', вывод W может быть перестроен так, чтобы применение продукций а' —>¦ а использовалось лишь в самом конце, после применения всех остальных продукций грамматики G' ¦ Перестроенный таким образом вывод W может быть разбит на две части: первая, W", не содержит применений заключительных продукций и завершается цепочкой х' = а'иа[2 . . . а^, а вторая состоит из последовательного применения заключительных про- продукций грамматики G', переводящих цепочку х' в цепочку х. Удалив все штрихи в первой части W", получим вывод цепочки х в грамматике G так, что L(G)^L(G'). Следовательно, L(G) — L(G') и грамматики G и G' эквива- эквивалентны. Грамматику G' назовем нормальной формой, порождаю- порождающей грамматику G. Такое представление порождающих грамматик используется при доказательстве некоторых теорем в § 5.2. Пример 1. Рассмотрим порождающую грамматику с терми- терминальным алфавитом 3ti = {ах, ¦ ¦ ¦ , ат, Ь), схема которой имеет вид где г, / = 1, 2, ... , т. По теореме 5.1 нормальная форма данной грамматики имеет вид § 5.\. Представление языков с помощью грамматик 177 где г, / = 1, 2, ... , т. Приведенная грамматика порождает язык [xbx \ для любого непустого слова х 6 F (Щ), где 9t = (ах, . . . , ат). Действительно, выберем произвольную цепочку a-ifiu ¦ ¦ ¦ а1кЪаиаи ¦¦¦ aih E.1) в данном языке. Тогда выводом этой цепочки является последо- последовательность (о, od)iftaife, o(b^_iaift_i(bifta1ft1 . . . , оФ{1а{1-Ф{гаь ... ty • • • 1 ач ¦ ¦ ¦ aibPai, • • • aik)- Применив заключительные продукции а.1^-аь $-+Ь, получим полный вывод цепочки E.1). Можно показать, что приведенная грамматика порождает цепочки только данного языка. Пример 2. Рассмотрим порождающую грамматику с терми- терминальным алфавитом {а, Ь, с), нетерминалами {с, а, |3, аъ рх} и схемой :о р3: I Pi- Эта грамматика порождает язык [апЪпсп\ п= 1, 2, . . .}. Например, цепочка а?Ь2с2 в данной грамматике имеет вывод, на каждом шаге которого последовательно применяются продукции рь р2, р3, р4) Ры Рв: Рь, Р-,, р7: (с, a^sa, j^xP а-хо-ФЬсс, aaxbbcc, aabbcc). Заменив в продукциях р2, р3, р6 все вхождения символа с сим- символом а, получим грамматику, порождающую язык: {anbnan \ п = = 1,2, ...}.
178 Глава 5. Формальные языки и грамматики § 5.2. Система составляющих, не- Грамматики Наряду с описанием языка L{G), порожденного грамматикой G, важное значение имеет описание строения (синтаксической струк- структуры) цепочек данного языка. Описание синтаксической струк- структуры цепочки обычно тесно связано с выводом данной цепочки в грамматике G. В естественных языках для выяснения синтак- синтаксической структуры предложения проводят его грамматический анализ. В языках программирования для этой цели создаются специальные алгоритмы синтаксического анализа и контроля про- программ, которые используются при разработке трансляторов, при решении задач машинного перевода и других важных проблем (см. гл. 6). Описание синтаксической структуры правильных цепо- цепочек обычно связывают с понятием системы составляющих. Пусть х= aixai2 . . . aih — некоторая цепочка. Для подцепочки у = ajfij, ... а-р выполняется вхождение (у, г) в цепочку х, если air = ajo air+1 = ah, . . . , %+p_1 = %, где 1 < г, г + р — 1 < к. В частности, если у — символ (однобуквенная цепочка), говорят о вхождении символа у в цепочку х. Например, для х — аЪаЪс, у = ab справедливы вхождения (у, 1), (у, 3) цепочки у в х, а также вхождения (а, 1), (Ь, 4), (с, 5) символов а, Ь, с соответственно в цепочку х. Пусть у ¦¦ a,j z = atg — подцепочки це- цепочки х, для которых выполняются вхождения (у, г) и (z, s). Вхождения (у, г) и (z, s) перекрываются, если r^s^> + р—'1 или s^r^s-j-g — 1. Если r^s^r + p — 1 и цепочка z явля- является подцепочкой цепочки у, говорят, что вхождение (у, г) покры- покрывает вхождение (z, s) (иными словами, вхождение (z, s) вложено в (у, г)). Так, если х = ababc, у = ab, z = abc, вхождения (у, 3) и (z, 3) перекрываются, причем (у, 3) вложено в (г, 3), а вхожде- вхождения (у, 1) и (у, 3) не перекрываются. Рассмотрим множество @(z) вхождений всех подцепочек в це- цепочку х, причем (ж, 1) б @(ж), где (ж, 1) — вхождение цепэчки х самой в себя. Система Ccz<S(x) называется системой составляю- составляющих цепочки х, если выполняются следующие условия: 1) С со- содержит вхождение (х, 1), а также вхождения всех символов, из которых состоит цепочка х; 2) из любых вхождений а, |3 е С либо одно вложено в другое, либо вхождения а, |3 не перекрываются. Вхождения, принадлежащие системе С, называются составляю- составляющими цепочки х, а вхождения символов — атомными составляю- составляющими данной цепочки. Из условия 1 следует, что различные системы составляющих цепочки х содержат одно и то же мно- множество ее атомных составляющих. Например, система С = {(а, 1), (Ь, 2), (а, 3), (Ь, 4), (с, 5), (ab, 1), (ab, 3), (ababc, 1)} является системой § 5.%. Система составляющих. нс-Грамматики 179 составляющих цепочки х = ababc; система, содержащая все атом- атомные составляющие цепочки х и вхождение (х, 1), очевидно, явля- является системой составляющих произвольной цепочки х. С описанием синтаксической структуры цепочек в терминах их составляющих тесно связан важный класс порождающих грамма- грамматик — грамматик непосредственно составляющих (нс-грамматик), т. е. грамматик G= Et, FH, о, Р), продукции которых имеют вид Щ^щ-*-щщъ, где щ, и2 — произвольные цепочки из свободной полугруппы F (v) над алфавитом V = Щ, (J FH, z — непустая цепочка из этой же полугруппы, а ф е VH — некоторый нетерминальный символ. Цепочки щ и щ иногда называют соответственно левым и правым контекстами данной продукции. Язык L (G), порожден- порожденный нс-грамматикой G, называется нс-языком. Пример 1. Любой конечный язык Ьг = [хъ ж2, ... , xk), где х{ A < i < < к) — непустое слово конечной длины в алфавите % = {аъ а2, ... .. . , ат), является нс-языком с порождающей нс-грамматикой &i = (&> {°}i о, Рх), схема которой имеет вид Пример 2. Универсальный язык L2, состоящий из всех не- непустых цепочек конечной длины в алфавите & = {аъ а2, ... , ат}г является нс-языком с порождающей нс-грамматикой G2 = (9t, (a), о, Р2), схема которой имеет вид при всех i = 1, 2, ... , /п. Пример 3. Язык L3 = {anba* | ге = 0, 1,2, ...} (предполага- (предполагается, что z° = е для любой цепочки z € ^ (у)) является нс-языком с порождающей нс-грамматикой G3 = ({а, Ь], {о}, о, Р3), схема ко- которой имеет вид о —> аза, Пример 4. Язык L4 = [anbn \п=1,2, .. .} является нс-язы- нс-языком с порождающей нс-грамматикой G4= ({а, Ь}, {о}, о, Р4), схема которой имеет вид a-^-aab,
180 Глава 5. Формальные языки и грамматики Пример 5. Пусть х = аиа1г ... aik — произвольное непустое слово в алфавите 5t = {аъ а2, ... , ат), х~г = а{иаХ(к_^ . .yauait — зеркальное отражение слова х. Язык Ьъ — {хх~г | для любого не- непустого слова х € F (Щ) является нс-языком с порождающей нс- грамматикой G5 = Et, {о}, о, Рь), имеющей схему прж всех ?=1,2, ... , т. Пример 6. Язык L6={xbx\ для любого непустого слова xtF(%)}, где 5t = {аь а2, ... , ат) (см. § 5.1, пример 1), явля- является нс-языком с порождающей нс-грамматикой G6, схема которой имеет вид Рз : /г, при любых ?,/=1,2, ... , т. Построим вывод в данной грам- грамматике цепочки ахафахаг 6 L6. Вначале, дважды применяя продук- продукции вида pi, получаем (о, о(|J<*2, ctyio-ityza-z) ¦ Используя р3 — р5, выводим цепочку а^г^2а\Щ- Затем, используя р2, переходим к це- цепочке pj>i<]Jai'a2: Дважды применяя последовательность продукций Ре — Р8> получаем цепочку aia2pa1a2. Наконец, используя заклю- заключительные продукции р9, р10, выводим исходную цепочку агафахаг. Пример 7. С помощью нс-грамматик описывается синтаксис ряда современных языков программирования, и в частности син- синтаксис АЛГОЛа-60. нс-Грамматика АЛГОЛ имеет около 150 металингвистических правил, записанных в так называемой нор- нормальной форме Бэкуса (БНФ), применяемой для описания многих языков программирования. Проиллюстрируем этот метод на опи- описании множества L идентификаторов АЛГОЛа: (идентификатор) ::=(буква)|(идентификатор) (буква}| (идентификатор) (цифра). Идентпфпкаторы представляют собой последовательности, со- состоящие из букв латинского алфавита и цифр 0,1, ... , 9 п н пи- пинающиеся с некоторой буквы. Идентификаторы используются для обозначения различных объектов языков программирования: пере- переменных, массивов, процедур и др. § 5.2. Система составляющих. нс-Грамматики 181 Язык L, является нс-языком с порождающей нс-грамматикой <?7 = ({А, В, С, . .. , х, у, z, 0, 1, .. . , 9}, (а, р, т}, а, Р7), схема й которой имеет вид a—> ар, а-э-а-f, а—> ¦Р, р- т- т- т- о, -9. Заметим, что класс нс-грамматик является собственным под- подмножеством множества всех порождающих грамматик, так как доказано, что не для всякой порождающей грамматики существует эквивалентная ей нс-грамматика (см., например, [20, 21]). Существует естественная связь между выводом произвольной цепочки в нс-грамматике G — Et, FH, a, P) и системой составляю- составляющих данной цепочки. Пусть W = (a, zx, ... , zn_v х) E.2) есть полный вывод цепочки х 6 F (Щ грамматики G. При любом 1 ^ i ^ n цепочки zu zi+1 могут быть представлены в виде где т{:щ4{и1^>-и{у{щ — продукция грамматики G, примененная на ?-м шаге вывода. Пусть, далее, q^ = | viui |—длина подцепочки v^u^ входящей в цепочку z4. Тогда каждому выводу E.2) можно сопоставить по- последовательность ([дъ mj, [q2, m2], . . . , [qn_v w№_1|), т. е. способ проведения вывода E.2). Например, полному выводу (с, ааа, a2aa2, a3oa3, а?Ъаъ) E-3) в ранее рассмотренной грамматике G3 (см. пример 3) соответствует способ проведения вывода ([0, mj, [I, m2], [2, т3], [3, тй], где mi :а^-ат (? = 1, 2, 3), m4: a-^-b. Заметим, что некоторому выводу в грамматике может соответ- соответствовать несколько способов его проведения. Так, началу вывода в грамматике G, в систему правил которой входпт правило т:а —»- аа, можно сопоставить два способа проведения вывода: ([0, т], [0, т]) и ([0, т], [1, т\). E.5)
182 Глава 5. Формальные языки и грамматики Каждому способу проведения вывода однозначно соответствует дерево вывода, которое в лингвистике называется деревом'состав- деревом'составляющих или деревом синтаксического анализа. Вершины этого дерева помечаются символами, входящими в цепочки, порождаемые процессом вывода, корень дерева (его начальная вершина) — акси- аксиомой а. Из каждой вершины, помеченной нетерминальным символом, вместо которого на очередном шаге вывода (при соответствующих контекстах) ЕСтав- ляется некоторая цепочка, направленные дуги ведут к вершинам, помеченным сим- символами вставляемой цепочки. Например, . а выводу E.3) однозначно соответствует де- дерево вывода, изображенное на рис. 22; способам проведения выводов, начала ко- . а торых совпадают с E.4), соответствуют де- деревья, имеющие один из следующих верх- верхних фрагментов (рис. 23). Рассмотрим некоторые понятия, связан- связанные с деревьями выводов. Будем говорить, что вершина q' является непосредственным продолжением вершины q в некотором де- дереве вывода Т, если стрелка из q направ- направлена к вершине q'. Вершина q' является продолжением вершины q, если существует последовательность вершин qi, q%, ... , qn таких, что qi = q, qn— Я' и вершина qi+1 — непосредственное продол- продолжение вершины qi при любом j = 1, 2, ...,#—> 1. Последователь- Последовательность 11 = 9!, bi • ¦ • > ?п> удовлетворяющая приведенному усло- 6Ь Рпс. 22. Хо... Рпс. 24. вшо, называется путем в дереве вывода Т, ведущим из q в q'. Вершина q называется максимальной, если не существует верши- вершины, являющейся продолжением q. Иными словами, из максималь- максимальной вершины не выходит ни одна стрелка. В дереве вывода, соот- соответствующем спссобу проведения некоторого полного вывода каждая максимальная вершина помечается терминальным симво- символом (см. рис. 22, вершины а, Ъ). Пусть Т — некоторое дерево вывода п у = хг ... хп — цепочка, вставляемая на некотором шаге вывода (при соответствующих контекстах) вместо нетерминального символа <Ь. Перенумеруем § 5.2. Система составляющих. нс-Грамматики 183 дуги, выходящие из соответствующей вершины, помеченной сим- символом Ф, в соответствии с вхождениями символов хЛ (l^i^n) в подставлязмую цепочку у (рис. 24). Например, дерево вывода, изображенное на рис. 22, пссле перенумерации дуг имеет вид, представленный на рис. 25. Перенумерация дуг в дереве вывода Т, а также понятие продолжения позволяют упорядочить вершины дерева Т. А именно: для вершин q, q' справедливо отношение q—%q', если выполняется одно из следующих условий: а) вер- вершины q и q' совпадают; б) вершина q' является продолжением вершины q; в) если qQqi . . . qrq и quq[ . . . • ¦ • Ч'Л' — ПУТИ в дереве Т, ведущие от кор- корня q0 к вершинам q и q' соответственно, причем к— наибольший индекс такой, что вершины д{ и q\ совпадают (qi = q[ при любом i == 1, 2, . . . , к), то nk+1^. n'h+i, где nh+i (nk+1) — номер дуги, ведущий к вершине gh+i(a^+1). Отношение —5 является частичным по- порядком на множестве всех вершин дерева Т. Более того, для любой пары несовпадаю- несовпадающих вершин g, q' дерева Т справедливо отношение q-^q' либо q' —? q, и, следова- следовательно, отношение —3 образует линейный порядок на множестве в*сех вершин де- дерева Т (см. § 2.4). Если дерево Т соответствует способу проведения некоторого полного вывода в нс-грамматике G, то пометки при упорядоченной последователь- последовательности всех максимальных вершин составляют правильную цепочку же L(G), порожденную данным выводом. Для произвольной вер- вершины q дерева Т обозначим через Sq упорядоченное множество максимальных взрпшн данного дерева, являющихся продолже- продолжением вершины q. Если q — максимальная вершина дерева Т, то Sq = {q}. Пометки при вершинах, входящих S Рлс. 25. в S составляют терминальную цепочку хд такую, что множеству Sq однозначно соответствует вхождение (xq, ?)в цепочку х, порожденную данным выводом. Совокупность Ст= [xq, t], где q пробегает множество всех вер- вершин дерева Т, образует систему составляющих цепсчкп х. Дейст- Действительно, в систему Ст входят все атомные составляющие цепочки х, которые являются вхождениями пометок при максимальных вер- вершинах дерева Т. Система Ст содержит также вхождение (х, 1), которое соответствует множеству CQo, где qQ — корень дерева Г, помеченный аксиомой о. Следовательно, система Ст удовлетворяет условию 1 в определении системы составляющих. Кроме того, для произвольных вершин q и q' дерева Т либо q' является про-
184 Глава 5. Формальные языки и грамматики должением q и тогда Sq- cz Sq, либо q является продолжением q' и тогда Sq cz Sq>, либо множества Sq и Sq- не пересекаются, так как ни в одну вершину дерева не может входить более одной дуги. Следовательно, система Ст удовлетворяет условию 2 в опре- определении системы составляющих. Система Ст называется системой составляющих цепочки х, ассоциированной с деревом вывода Т. Таким образом, справедливо следующее утверждение. Теорема 5.2. Для произвольной нс-грамматики G по дереву вывода Т, соответствующему способу проведения некоторого пол- полного вывода цепочки х б L (G), можно построить систему состав- составляющих Ст, ассоциированную с деревом Т. Например, дереву вывода, изображенному на рис. 25, соответ- соответствует система составляющих {(а3Ъа3, 1), (a2ba2, 2), (aba, 3), (b, 4), (а, 1), (а, 2), (а,3), (а, 5), (а, 6), (а, 7)). Заметим, что в системе составляющих, ассоциированной с неко- некоторым деревом вывода, каждой неатомной (возможно и некоторым атомным) составляющей соответствует синтаксический тип — не- нетерминальный символ, являющийся пометкой при вершине, от которой происходит данная составляющая. Так, в нашем примере каждой неатомной составляющей (a3ba3, 1), (a2ba2, 2), (aba, 3), а также атомной составляющей (Ь, 4) соответствует синтаксический тип а. Обращаясь вновь к определению нс-грамматик, заметим, что требование непустоты цепочки, вставляемой вместо нетерминаль- нетерминального символа в продукции нс-грамматик, весьма существенно. Снятие этого ограничения приводит к понятию обобщенной нс- грамматики, или, кратко, онс-грамматикн. Справедлива следующая теорема. Теорема 5.3. По произвольной порождающей грамматике G — = (9t) Уш а, Р) может быть построена эквивалентная ей онс- грамматика. Подробное доказательство этой теоремы приведено в работе [20]. Основная его идея состоит в следующем. По теореме 5.1 грамма- грамматика G может быть представлена в нормальной форме G' = (%, FH, a, Р'). Далее по грамматике G' строится эквивалентная ей онс- грамматика G*. Для этого из Р' выбирается произвольная про- продукция y{-+z, где г/{€^A7н), zf е F(V^[j Щ. Возможны три вида продукций. 1. |г/;| = 0. Тогда у% = е — пустое слово. Продукциям такого впда в грамматике G* соответствует совокупность продукций {tb. для любого ф 6 E.6) § 5.2. Система составляющих. нс-Грамматики 185 которая позволяет вставлять цепочку Zj после (или впереди) лю- любого нетерминального символа из Ун- 2. |у4| = 1. Продукции yi-yzi входят в схему грамматики G* без всяких изменений. 3. У4 = «|»1ф« ... фг('->1)- В грамматике G* эквивалентное преобразование осуществля- осуществляется упорядоченной совокупностью продукций ... фг- . . . d)r- ) Фг, ¦*i т J. - < E.7) где z\, i\, ¦Zi, ^H — новые нетерминальные символы, причем для различных продукций вида 3 эти символы различны: т* Ф i{ (при 1ф]). Объединение совокупностей продукций E.6) и E.7), соответ- соответствующих всем продукциям вида 1 и 3 грамматики G, а также продукций вида 2 образует схему Р* в грамматике G*. Из вида продукций схемы Р* следует, что G* является онс-грамматикой. Кроме того, каждому полному выводу W цепочки х? L(G) соот- соответствует полный вывод этой же цепочки в грамматике G*, в ко- котором преобразования, соответствующие применениям продукций вида 1 или 3, осуществляются с помощью применения продукций из совокупности E.6) или E.7) соответственно. Наоборот, любой правильный вывод в грамматике G* можно перестроить так, что продукции, входящие в какую-либо совокупность E.7), будут при- применяться одна за другой в нужном порядке. Тогда соответствую- соответствующую часть вывода можно заменить применением некоторой про- продукции в грамматике G' вида 3, а продукции, входящие в сово- совокупность E.6), — соответствующими продукциями грамматики G' впда 1. Таким образом, каждому правильному выводу цепочки х в грамматике G* соответствует правильный вывод этой же цепочки в грамматике G' и G* <x> G'. Но G со G', следовательно, G* си G. Теоре.ма доказана. Итак, требование непустоты цепочки, вставляемой вместо не- нетерминального символа в продукциях нс-грамматикп, весьма
186 Глава 5. Формальные языки и грамматики существенно, следовательно, продукция у{ ¦ нс-грамматики удовлетворяет условию схемы некоторой E.8) Грамматики, продукции которых удовлетворяют этому условию, называются неукорачивающими. В частности, неукорачивающей является любая нс-грамматика. Справедлива также следующая теорема, дающая некоторое пред- представление о широте понятия нс-грамматики. Теорема 5.4. Для произвольной неукорачивающгй грамматики G — Et, Ун, а, Р) существует эквивалентная нс-грамматика. Как и при доказательстве теоремы E.3), вначале переходим от грамматики G к эквивалентной ей грамматике G' (теорема 5.1). Затем строим совокупности продукций, равносильные продукциям уг->гг грамматики G. При | у{ | ^ 1 построение аналогично по- построению при доказательстве теоремы 5.3. При | уг I > 1 сущест- существенно используется основное свойство E.8), которому по определе- определению удовлетворяют продукции любой неукорачивающей грам- грамматики. Пусть уЛ = фхфа ... фг; zt = о^ ... os, где г < s, yt € F (Уд). 2{€^E(и^н)- Тогда продукции ф^ ... ^-уа^ . ., os равно- равносильна упорядоченная совокупность продукций Ф1Ф2 ЧЬ Фг» E.9) где tJ, ... , т* — новые нетерминальные символы. Построенные таким образом совокупности продукций, равнссильные продук- продукциям грамматики G', образуют схему некоторой нс-грамыатики G*. В сстальном доказательство аналогично доказательству теоремы 5.3. Следствие. Языки [апЪпсп\ п = 1, 2, . . .) и {anbnan\n= 1, 2, . . .) являются нс-языкамл. Действительно, каждый пз этих языков порождается неукора- неукорачивающей грамматикой (см. § 5.1, пример 2). Заметим, что языки, порожденные неукорачпвающими пли нс- грамматпками, являются рекурсивными множествами, т. е. сущест- существует распознающий алгоритм, позволяющий для любого языка L (G), порожденного неукорачивающей грамматикой, установить, § 5.3. Контекстно-свободные языки 187 является ли произвольная терминальная цепочка правильной (# б 6 L(G)). Суть этого алгоритма заключается в следующем. Пусть G = (&, FH, о, Р) — неукорачивающая грамматика и х — произвольная цепочка длины п в алфавите &. При этом учиты- учитывается, что цепочки в процессе вывода не укорачиваются. Каждый шаг алгоритма состоит в построении некоторого полного вывода в грамматике G с последующей проверкой, завершается ли данный вывод цепочкой х. Если существует вывод, заканчивающийся цепочкой х, то, очевидно, x^L(G). В противном случае цепочка а; неправильна. При этом рассматриваются лишь бесповторные выводы (не содержащие двух совпадающих цепочек), так как исключение всякой петли части вывода, заключенной между парой совпадающих цепочек, не влияет на начальную и конечную цепочки данного вывода. Ввиду того что грамматика G неукорачивающая, длины цепочек, получающихся в процессе вывода, не уменьшаются. Отсюда следует, что существует лишь конечное число выводов, завершающихся цепочками, длины которых не превышают п (длина цепочки х). Можно показать, что число различных таких выводов заведомо не превышает (рп+2)\, где р — число элементов, входящих в ^[}Vn [22]. Таким образом, описанный алгоритм эффективно (не более чем за (рп+2I шагов) распознает, принадлежит ли цепочка х длины п языку L(G). § 5.3. Контекстно-свободные языки В предыдущем параграфе рассматривался важный класс порожда- порождающих грамматик, нс-грамматик. Продукции нс-грамматик позво- позволяют вставлять некоторую непустую цепочку в объединенном алфавите V = 9t U Ун вместо некоторого нетерминального символа при вполне определенных для данной продукции контекстах. В частности, можно рассматривать нс-грамматики, все продукции которых содержат пустые контексты. Такиз грамматики называ- называются контекстно-свободными или кс-грамматиками. Более точно: грамматика G = Et, Ун, о, Р) называется контекстно-свободной, если каждое правило системы Р имеет вид ф->г, где t!> 6 Т7Н, ъ — непустая цепочка2 над алфавитом У = 3HJ VH. Язык L(G), порожденный некоторой кс-грамматикоп G, на- называется кс-языком. Так, приведенные в примерах 1—5, 7 § 5.2 грамматики и соответствующие им языки являются соответственно кс-грамматиками п кс-языками. 2 Обычно в кс-грамматпках допускаются продукции с пустой правой частью, однако, как показано далее, это не прпводпт к существенному рас- расширению класса порождаемых языков.
188 Глава о. Формальные языки и грамматики Из определения кс-грамматики (кс-языка) следует, что любая кс-грамматика (кс-язык) есть нс-грамматика (нс-язык), тогда как обратное утверждение уже неверно. Известны примеры нс-языков, которые не порождаются кс-грамматиками. К таким нс-языкам, в частности, относится язык L6 (см. § 5.2, пример 6). Следовательно, класс нс-грамматик существенно шире класса кс-грамматик, т. е. множество кс-языков является собственньш подмножеством мно- множества нс-языков. На множество кс-грамматик можно распространить некоторые введенные в § 5.2 понятия, связанные с нс-грамматиками (способ проведения вывода, дерево вывода, система составляющих, ассо- ассоциированная с данным деревом вывода, и др.). В частности, при доказательстве теорем в теории кс-грамматик бывает удобно рас- рассматривать выводы с фиксированными способами проведения (левый и правый выводы). Пусть G = (%, Ун, а, Р)— произвольная кс-грамматика. Левым выводом цепочки х ? L(G) в грамматике G называется вывод W = (о, zb ... , zn_b х) со способом проведения (l9i. Pi], №ъРг], • • • , [?n-i, Ai E.10) E.11) где Pi: 6-у у — правило грамматики G, примененное на г-м шаге к цепочке z{ = и$у{, причем подцепочка и{ терминальна (и{ е F (Щ, I ЩI = 9i) ПРН любом i = l,2, ... , п— 1. Иными словами, на каждом шаге левого вывода продукции р{ применяется к самому левому нетерминальному символу цепочки z-x(i = 1, 2, ... , п— 1). Аналогично на каждом шаге правого вывода продукция р{ при- применяется к самому правому нетерминальному символу цепочки г4, т. е. для способа проведения E.11) правого вывода zi = м{<|>у{, где (Ь 6 Ун — левая часть правила р-х и v{ 6^(91). Очевидно, каждому полному выводу некоторой цепочки х в кс- грамматике соответствует единственный левый (правый) вывод этой же цепочкп. Например, пусть дана кс-грамматика где . = ({a, b), {о, ф), а, Р), 3—>-о(Ь, E.12) Р = ¦ a, > 6. Тогда выводы (а, об, а<!>, d'b'b, a>b<b<b, abb'b, abbb, аЪЪЪ), (о, об, odiij), o'itbJ), G*b<bb, aijbb, abbb, abbb) E.13) E.14) § 5.3. Контекстно-свободные языки 189 являются соответственно левым и правым выводами цепочки abbb в грамматике Gx. Каждый полный вывод цепочки х ? F (Щ в кс-грамматике G = — Eti Vn, a, P) в результате некоторой перестановки правил, ис- использованных при проведении данного вывода, может быть преоб- преобразован в левый (правый) вывод данной цепочки, так, что левый (правый) вывод является канонической формой проведения выводов в кс-грамматике G. Например, вывод (а, оф, офф, о&ф, ofritb, abb'b, abb'b, abbb) после изменения порядка применения продукций может быть преобразован в левый (правый) вывод цепочки abbb в грам- грамматике G\. Заметим, что выводам, переводящимся друг в друга в результате некоторой перестановки в применении правил вывода, соатветствует одно и то же дерево вывода. Грамматика G называется определенной, если каждая правиль- правильная цепочка х ? L(G) имеет единственный левый вывод, и неопре- неопределенной— в противном случае. При решении задач автоматизации программирования лажную роль играет свойство определенности грамматики. В случае, когда кс-грамматика G нз определена, т. е. для правильной цепочки x?L(G) существуют различные левые (правые) выводы, возникает проблема: какой вывод следует рас- рассматривать, чтобы правильно обработать данную цепочку. Поэтому понятия определенности и неопределенности относятся к основным понятиям теории кс-языков и хорошо изучены [19]. Остановимся на требовании о непустоте правых частей про- продукций кс-грамматики. Это требование позволяет рассматривать кс-грамматики как частный случай нс-грамматик, в которых не- непустота правых частей продукции имеет весьма существенное зна- значение (теорема 5.3). Выясним, какую роль играет требование непустоты правых частей продукций в кс-грамматиках. Обобщенной кс-грамматикой или оке-грамматикой называется грамматика G = C1, Ун, о, Р) такая, в которой каждая продукция схемы Р имеет вид <h~>-z, где 0; б Ун; z — произвольная цепочка над алфавитом У = 51U Ун. Теорема 5.5. Для произвольной окс-грамматики G = (&, Ун, а, Р) может быть построена кс-грамматика G' = (&, Ун, °, Р') такая, что L(G') = L(G)\e, причем, если e^L(G), то L(G) = = L(G'); в этом случае грамматики, G и G' эквивалентны. Доказательство. Пусть G = (&, Ун, о, Р) — произвольная окс-грамматика. Выполним индуктивное построение множества Мс7„ так, что 0; 6 М, если в системе Р есть правило ф->е. Далее, если 6Ь Ф2, ... , <bk б М и в систему Р входит продукция 'Ь —у tb1(b2 . . . Ль, то ф б М. Ввиду конечности алфавита Ун и системы продукций Р множество М может быть построено за конечное число шагов. Продукции, попользованные прн построении мно- множества М, назовем продукциями с исчезающей правой частью. Затем каждой продукции р? Р, имеющей вид р: tb->z," где z не-
190 Глава 5. Формальные языки и грамматики пусто, поставим в соответствие систему s (р) всех продукций вида ф ->¦ z', где цепочка z' фе получена из 2 в результате исключения некоторой (возможно, пустой) совокупности символов из М. На- Например, пусть Gi = ((о, Ь), (о, <]>!, фя, ф8], о, -Pi), E.15) где 1 = : <Ь2 По схеме Рг строим множество Мх. Очевидно, а, ф3 6 Мь Кроме того, из продукции pi следует, что ^еМъ а из продукции р3 — что (р! 6 Mi. Таким образом, Мх = (а, фь ф2, Ф3] и р2, р3, Р4> Ръ — продукции с исчезающей правой частью. Продукции р± соответ- соответствует совокупность p12: о ->• а продукциям р3 и p4— совокупности S(P3) = Ра ¦ фа з. фз> • а. Рассмотрим кс-грамматику G' = Et, Ун, о, Р'), где Р' = U S (р) v для всех продукций р ? Р с непустой правой частью. В приведен- приведенном выше примере оке-грамматике G± соответствует кс-грамматикд G[ = {%, Ун, о, рр, где Р[ = S (Pl) U S (p3) U 5 (р4). Покажем, что языки L (G) и L(G') совпадают с точностью до пустого слова. Действительно, применение каждой продукции р' б S (р) такой, что р' g P, можно заменить применением продукции р и некоторой последовательности продукций с исчезающей правой частью. На- Например, применение продукции pi2: а->а6 грамматики G[ можно заменить в грамматике Gi фрагментам вывода (з, аоЪ, ад). Следо- Следовательно, справедливо заключение L(G')^L (G). Покажем теперь справедливость включения (L(G)\e)<^L (С). Выберем произвольную непустую цепочку x^L(G). Пусть W = *= (zoi zi> • • • i zn) ~~ левый вывод цепочки х = zn в окстрамма- § 5.3. Контекстно-свободные языки 191 тике G; Т — дерево, соответствующее выводу W (см. § 5.2). До- Достаточно предположить, что на некоторых шагах вывода W при- применяются продукции вида ф-*в, E.16) в противном случае W является полным выводом в грамматике G' и x$L(G'). Последовательно исключая применения продукций вида E.16), можно преобразовать W в вывод W цепочки х в грам- грамматике С Действительно, пусть в выводе W продукция вида E.16) впервые применяется на i-ы шаге A ^ i ^ п) к вхождению (<j>, g) символа d> в депочку г{_х = у^Уъ где | г/1 = q — 1. Так как цепочка х непустая, то, очевидно, 1ф\ и по крайней мере на одном из шагов, пред- предшествующих i-му, применяется продукция x->z E.17) такая, что |z|>l, в противном случае z{ = х = е. Тогда можно указать наибольший номер пг < i такой, что на m-м шаге в выводе W будет применяться продукция рт вида E.17), pm:%->uty'v. При этом zm = y'uty'vW и в дереве Т есть путь П из вершины, по- помеченной ((j/, q'), в вершину (ф, q), где (ф', q') — вхождение выде- выделенного символа <j/ в цепочку zm; (ф, q) — вхождение ф в цепочку Zj. Пусть последовательность нетерминальных символов, которыми помечены вершины пути П, имеет вид f = ф0. ф1. ••• 5фг=Ф- E-18) Так как тп — максимальный номер, то из каждой вершины ф/ (/ = 0, 1, . . . , г —• 1) выходит точно одна стрелка и каждому такому переходу соответствует применение правила E-19) на rrij-ы шаге вывода W, m<m;-<i. Учитывая применение про- продукции Ф—*-е на г-м шаге вывода W, заключаем, что продукции E.16) относятся к продукциям с исчезающей правой частью и все симеолы, входящие в последовательность E.18), принадлежат мно- множеству М. Это означает, в частности, что в совокупность про- продукций S(pm)^P' входит продукция p'm:x-+uv. Перестроим теперь вывод W следующим образом: на m-м шаге вместо продукции рт применим продукцию р'т и устраним после- последующие m^-е (/ = 0, 1, ... , г) шаги вывода, связанные с преоб- преобразованием исчезнувшего символа Ф', а также ?-й шаг вывода W. Очевидно, подобная перестройка не повлияет на выводимость конеч- конечной цепочки х б L (G), в то же время число применений продукций E.16) уменьшится на единпцу по сравнению с выводом W. Про- Продолжив описанный процесс, преобразуем вывод W цепочки х оке-
192 Глава 5. Формальные языки и грамматики грамматики G в вывод W этой же цепочки, на каждом шаге которого применяются продукции схемы р' так, что применение продукций вида E.16) полностью исключено. Таким образом, вывод W цепочки х является выводом в кс- грамматике G' и x$L(G'). Из произвольности выбора непустой цепочки х б L (G) следует справедливость включения (L (G)\e) с ^L(G'). Теорема доказана. На основании доказанной теоремы всякую окс-грамматику G = = (91, Ун, °, Р) можно преобразовать в эквивалентную окс-грам- окс-грамматику G = Et, FH, о, Р) такую, в которой для любого нетерми- нетерминального символа ф g (FH\°) схема Р не содержит продукций видя ф->е и аксиома 5 не входит в правые части продукций. Действительно, для грамматики G существует кс-грамматика G' = E1, FH, а, Р'), удовлетворяющая условиям теоремы 5.5. Грам- Грамматика G строится по кс-грамматике G' следующим образом. В качестве аксиомы выбирается новый нетерминальный символ с"(Г7н так, что V = Va\J~a. Для системы продукций Р выполняется включение Р'сгР. Кроме того, для каждой продукции вида_a->z из Р' в систему Р включается продукция o->z. Система Р со- содержит также продукцию о-*-е, если eeL(G). Заметим, что аксиома о не входит в правые части продукций системы Р. Отсюда, ввиду отсутствия в схеме Р продукций вида ф->е для любого нетерминального ф=?^=с, следует, что цепочки z=?e, порожденные при произвольном выводе грамматики G, не укорачиваются. Поэтому грамматика G называется неукорачивающей формой грамматики G. Так, неукорачивающей формой окс-граыматики Gi (см. E.15)), использованной при доказательстве теоремы 5.5, является окс- грамматика Gi= (К Щ, [т, о, фъ ф2, ф3}, т, i\), E.20) !73> схема которой Pi имеет вид рп: о->азЬ, Pi'i '¦ * -> аз&, р12:а->а&, р|2:т->а&, Р31 Р32 Рзз Ра Pi-2 Следствие. Любая скс-грамматпка G = (9t, FH, ". Р) может быть преобразована в эквивалентную ей окс-грамматпку G. являющуюся неукорачивающей формой грамматики G. Из теоремы 5.5 следует, что отказ от требованпя непустоты правых частей продукций в кс-грамматиках, в отличпе от § б.З. Контекстно-свободные языки 193 нс-грамматик, не приводит к существенному расширению класса порождаемых языков. Поэтому понятия оке- и кс-грамматик часто не различаются. В дальнейшем под кс-грамматикой понимается произвольная окс-грамматика, представленная в неукорачивающей форме. В схеме Р грамматики G = Et, FH, о, Р) можно исключить все продукции вида Ф^, E.21) где ф, х ? FH. Для этого достаточно построить всевозможные выводы вида фД-х. E.22) 5 В силу конечности алфавита VK и схемы Р, а также неукорачи- ваемости цепочек при выводе в грамматике G построение всех выводов вида E.22) осуществляется за конечное число шагов. * Затем для каждого из выводов ф=^-х и любой продукции x -z схемы Р, правая часть которой г не принадлежит Vu (если такие продукции существуют), к схеме Р присоединяется новая про- продукция ф->-2, после чего все продукции вида E.21) могут быть устранены. Полученная таким образом грамматика G = B1, Va, a,1?) эквивалентна грамматике G и не содержит правил вида E.21). В качестве примера построим грамматику Glt эквивалентную грамматике G\ (см. E.20)). По схеме Pi построим все выводы вида E.22) в грамматике &х: Для вывода фх =» ф2 и продукции p4l g Px образуем продукцию So = {ф1-э-°фз)> Для вывода ф!=^о и продукций р1Ъ р12 — совокуп- совокупность продукций 5i = | 'х а и, наконец, для вывода фа =»¦ о ф2- и продукций ри, р1а — совокупность продукций 52 Затем, прпсоедЕгнив к схеме Рх совокупность продукций 1?0 U Sj\j _a с последующим исключением продукций р3г, Рзз, Р*2, Р431 получим схедгу Рх грамматики ь ф2, фз 7 s-ззо E.23)
194 Глава б. Формальные языки и грамматики кс-Грамматика G = (&, FH, о, Р) существенно зависит от не- нетерминального символа ф ^ FH$ если выполняются следующие условия: 1) существует по крайней мере одна цепочка z = wbv, выво- * димая из аксиомы а, а=э- z; в 2) существует хотя бы одна терминальная цепочка х б F (Щ, * выводимая из d>, ф=Фа;. о В силу конечности алфавита FH и схемы Р для любого <j> б FH можно установить, существенно ли зависит грамматика G = (ЭД, FH, о, Р) от символа <j> б FH. Очевидно, любая продукция грам- грамматики G, содержащая хотя бы один фиктивный символ <j> 6 FH (от которого грамматика G существенно не зависит), может быть исключена из системы Р, а все фиктивные нетерминальные сим- символы — из алфавита FH. кс-Грамматика G={%, FH, о, Р), существенно^зависящая от каждого нетерминального символа, входящего в FH, называется приведенной. Из изложенных выше рассуждений следует, что приведенная грамматика G0 удовлетворяет следующим условиям: 1) приведенная грамматика неукорачивающая; 2) аксиома 3 не входит в правые части продукций; 3) в схему грамматики не входят продукции вида E.21). Так, в грамматике Gx (см. E.23)) символы фь ф2 не удовле- удовлетворяют первому, а ф3 — обоим условиям существенной зависи- зависимости. Поэтому символы фх, ф2> Фз фиктивные и грамматике G\ эквивалентна приведенная грамматика G\ — ({a, b), (х, a), х, PJ), схема которой имеет вид aab, Таким образом, справедлива следующая теорема. Теорема 5.6. Для произвольной кс-грамматики G = Bt, FH, о, Р) существует эквивалентная ей приведенная кс-грамматика G0 => = (&, F0, о, Р°), г9е F"^^h — нетерминальный алфавит, получен- полученный us Vn в результате исключения всех фиктивных нетерми- нетерминальных символов грамматики G; Р°^Р — система всех продукций грамматики G, не содержащих фиктивных символов. Эта теорема позволяет рассматривать, не нарушая общности, только приведенные кс-грамматики. § 5iS. Контекстно-свободные языки 195 По порождающей кс-грамматике G «= (&, FH, a, P) может быть построена система уравнений, задающая тот же язык L(G) [95]. Пусть Уя ={(])!, <j>2> ••• ' Фп)» гДе ^1 = ° — аксиома грамма- грамматики G. Каждому нетерминальному символу Ф4 g FH поставим в соответствие уравнение <j>{:: = /t (фь . . . , фп), где /4 (фь . . . , фЛ) * = ziiUzi2U ••• U ztft. — выражение, состоящее из всех правых частей продукций вида (jjj-^z^. € Р (J = 1, 2, ... , /с{). Тогда грам- грамматике G будет сопоставлена система уравнений г/о = {ф4:: = /i (q»i, фа, ... , <|>„)|*=. 1,2, ... , л}. F.24) Например, грамматике G3 (см. § 5.2, пример 3) соответствует си- система Ugs, состоящая из единственного уравнения UG,= {°:: = aoa{Jb}, E.25) а грамматике G'% = ({а, Ь), (о, <j>], а, Р2), схема которой имеет вид -01}), ¦а, (b ->a, соответствует система, состоящая из двух уравнении E.26) Рассмотрим процесс порождения языка L (G) по системе урав- уравнений E.24), соответствующей грамматике G. Пусть О = @, ... ¦ ¦¦ 10) — нулевой набор значений переменных фь ... , фп, в котором <jjj = 0. На таком нулевом наборе функции /t (фь .. . . .. , фп), являющиеся правыми частями уравнений системы E.24), принимают значения а? = /{@, ... ,0) при каждом i = 1, 2, ... ... , п. Совокупность этих значений обозначим через а0 = (aj, . .. .. . , а?) и рассмотрим значения а{ = /х (а0), ... , а.\ = fn (a0) функций /{(<j>i, ... , Фп) на наборе ao:a1= (aj, ... , a^). Рекур- Рекурсивно продолжив процесс порождения, получим ak = (а?, . . . , а^), где a^=/iEft-1) = /i(a^-1, ... , а^1) при любом к = 1, 2, ... Обозначим через а" дшожество |J aj при любом i = 1, 2, ... , га. „ fe=o Набор а~ = (а~, . . . , а~) называется решением системы урав- уравнений E.24), а каждая компонента а"—языком, соответствую- соответствующим переменной 6{ (или'языком типа АЛГОЛ [19]). 7*
196 Глава 5. Формальные языки и грамматики Язык а", соответствующий аксиоме <j>! = а, называется языком, порожденным системой уравнений E.24). Можно показать, что язык а™, порожденный системой уравнений E.24), совпадает с языком L(G), порожденным соответствующей грамматикой G, т. е. а™ = L(G) [95]. Кроме того, набор а" = (а", . . . , а~) явля- является минимальным решением системы уравнений E.24), так что если L = (Ьъ L2, .. . , Ln) — произвольное решение системы урав- уравнений E.24), то <z" c=L{ при любом i = 1, 2, . . .., п. Действительно, a-iczLi (? = 1,2, ... , п). Рассуждая индуктивно, в результате применения описанной выше рекурсии получим a." czL{. Таким образом, справедлива следующая теорема. Теорема 5.7. Язык L тогда и только тогда контекстно-сво- контекстно-свободный, когда существует система уравнений E.24), имеющая минимальное решение а°° = (а^°, а~, ... , а~) и такая, что а" = L. Проиллюстрируем процесс порождения языка по заданной си- системе уравнений на приведенных выше примерах. Построим язык, порожденный системой E.25) и состоящий из одного уравнения о: = / (о) = aaa[j Ъ. Тогда o.o = f@) = a0a\Jb= 0{jb=b, a1 = f (a0) = a (a°)a[jb = aba [} Ъ, a2=/(ai) = a(a1)aUb = = a (aba \j b) a \j b — aabaa \j aba (J b, a3 = / (a2) = a (a2) a [j b = a3ba3 [j a2ba2 [} aba [j b и т. д. Таким образом, a~ = L(G3) = {anban\ n — 0, 1, 2, . . .} (см. § 5.2, пример 3). Язык а", порожденный системой уравнений E.26), строится следующим образом: а0 = (а°, а°), где а° = f1 @, 0) = 0 U a (J Ъ = = а[)Ь, а°=/2@, 0) = /в(а*, a*) = alN при любом к = 0, 1, 2, . . . ; а1 = (aj, а*), где а\ = h(a°v а°) = а?а« U «U Ъ = [а\] Ъ) • • {а\]Ъ)\}а\]Ъ = аа\]аЪ\]Ъа\}ЪЪ\]а\}Ъ; если к = 2, то а2 = (а*, а*), где a21 = f1(a1val) = a]al\ja[jb = al(a[jb)Ua[jb и т.д. Таким образом, язык а™, порожденный системой уравнений E.26), представляет собой универсальный язык над алфавитом [а, Ь), содержащий все непустые цепочки в данном алфавите (см. § 5.2, пример 2). Как отмечалось выше, существуют нс-языки, не являющиеся контекстно-свободными языками. При решении этой проблемы теории кс-языков важную роль играет установление критериев, с помощью которых можно выяснить, является ли данный язык кс-языком. Необходимое условие, которому удовлетворяет любой кс-язык, устанавливается следующей теоремой [19]. § 5.3. Контекстно-свободные языки 197 ..I Теорема 5.8. Для любого бесконечного кс-языка L существует1 натуральная константа р такая, что каждое слово z^L, длина которого больше р, молено представить в виде ъ = Zjiiwvz^, где | uwv \^р, по крайней мере одна из подцепочек и, v непуста и при любом натуральном п z1unwvnz2i L (п= 1, 2, .. .). Основная идея доказательства данной теоремы состоит в сле- следующем. Пусть L(G°) — произвольный кс-язык, заданный приве- приведенной кс-градгаатикой G0 = (&, FH, a, P), и г — число различных символов в нетерминальном алфавите FH. Рассмотрим множество D всех деревьев вывода, построенных с помощью продукций схемы Р и таких, что Т g D тогда и только тогда, когда корень дерева Т помечен некоторым нетерминальным символом из Vu, причем длина каждого пути в дерове Т не превышает г + 1. Очевидно, мно- множество D конечно. В качестве константы р выберем длину наи- наибольшей из цепочек, порожденных деревьями выводов из D. Пусть теперь z 6 L (G0) — произвольная цепочка языка, длина которой больше р, | z | > р. В силу выбора константы р цепочку z порождает дерево вывода Т, имеющее по крайней мере один путь, длина' которого больше г + 1. Из всех путей дерева Т, обладающих этим. свойством, выберем максимальный по длине: П = (дъ д2, . . . , qs), где q-i — корень дерева Т, помеченный аксиомой о грамматики G0; qs — максимальная вершина дерева Т, помеченная символом основ- основного алфавита &. Рассмотрим конечный участок П' пути П, имеющий длину г + 1, П' = (9з_г, qs_T+v ... ,qs). В силу приведенности грам- грамматики G0 аксиома о не входит в правые части продукций схемы Р, поэтому любая нетерминальная пометка при вершине q. на участке П' отлична от a, s — r</^s — 1. Это означает, что среди вершин участка П' найдутся по крайней мере две — q. и q. — с одинаковой пэметкой ф € FH, причем вершина q. — продолжение вершины q{. Пусть Тг и Tj — поддеревья дерева Т, имеющие в качестве корней указанные вершины и содержащие Есе вершины, являющиеся продолжением вершин соответственно q.,q- в дереве Т. Так как вершина q. служит продолжением qr-ж вершины, дерево Т'¦ явля- является поддеревом дерева Ти причем если z', w 6 F (Щ — цепочки, порожденные деревьями Tit Tj соответственно, то z' = uwv. Из при- приведенности грамматики Go следует, что хотя бы одна из цепочек и, v непустая, кроме того, z' является подцепочкой цепочкп z, так что z = z\uwvz%. Заметим, что длина любого пути в дереве Т^ не превышает г + 1, в противном случае путь П не был бы мак- максимальным в дереве Т. Это означает, что 2^ € D, и поэтому цепочка ъ' = uwv имеет длину | z' | ^
198 Глава 5. Формальные языки и грамматика Покажем, что при любом п = 1, 2, .. . zn = zxunwvnz2 ? z (G°). Рассмотрим дерево вывода Т1,, полученное из дерева Т\ исключе- исключением всех вершин дерева Ts (отличных от q}), а также всех дуг, ~ * ведущих в эти вершины. Дерево Ti соответствует выводу Вставим в дерево Т п — 1 экземпляр дерева Г{ так, чтобы корень очередного дерева Ti был склеен с той вершиной в предшествую- предшествующем дереве Th которая помечена выделенным вхождением символа ф. Построенное дерево (рис. 26) соответствует выводу а =»¦ z-iUnwvnzi в грамматике G0. Теорема доказана. Рис. 26. Следствие. Нс-язык L6 = {xbx \ x е F (Щ), где & = {ах, а2, ... ... , ап}, ге>1 (см. § 5.2, пример 6), не является кс-языком. Действительно, предположим противное. Пусть La — кс-язык. Тогда в силу доказанной теоремы существует константа р такая, что каждую цепочку z 6 Le, где | z | > р, можно представить в виде z = z-iiiwvzz, причем | uwv \^p, uv Ф е и при любом п zxunwvnZo, € Le. E.27) В качестве z выберем цепочку a\a^ba^af ? Ls. Очевидно, подцепочка uwv должна быть выбрана так, чтобы символ Ъ входил в», в про- противном случае соотношение E.27) не выполняется в силу опреде- определения языка L6. Но так как | uwv | < р, цепочка uwv входит в a^bd^. Отсюда следует, что и в этом случае соотношение E.27) не вы- выполняется. Таким образом, L6 не является кс-языком. Аналогично можно показать, что нс-языки {anbncn \ п = 1, 2, .. .) и {anbnan\n= 1, 2, .. .] (см, § 5.1, пример 2; § 5.2, теорему 5.4 и следствие) не являются контекстно-свободными языками [19]. § 5.4. Линейные п автоматные грамматики Рассмотрим некоторые важные подклассы класса кс-грамматик. Продукция Л->-2 называется линейной, если z — некоторая терминальная цепочка, z ? F (Щ, либо z = w:v, где и, v ? F (Щ; тЬ t € FH. Иными словами, правые части линейных продукций либо являются терминальными цепочками, либо содержат лишь один нетерминальный символ. § 3.4. Линейные и автоматные грамматики 199 Продукция ф—>-z называется праволинейной (леволинейной)т если z ? F (Щ либо z = их (z = ш), т. е. если единственный не- нетерминал т входит в правые части праволинейных (леволинейных) продукций, то он всегда крайний справа (слева). Грамматика G = ($, FH, °, Р), схема которой содержит только- либо линейные, либо праволинейные, либо леволинейные продук- продукции, называется соответственно линейной, праволинейной, лево- линейной. Аналогично язык L(G) называется линейным, право- линейным, леволинейным, если грамматика G относится к соот- соответствующему классу грамматик. Из приведенных определений следует справедливость включений SnES, ?л!Е?, гДе S, Sn, Вл — множества соответственно всех линейных, праволинейных, леволинейных языков. Так, линейны грамматики и соответствующие им языки в примерах 1-—5 § 5.2, праволинейны грамматики и языки в примерах 1,2 § 5.2. Заметим, что приведенные определения линейных и праволи- праволинейных (леволинейных) грамматик отличаются от общеизвестных тем, что в правых частях продукций допускаются произвольные терминальные цепочки (и, v g F (Щ), а не символы основного алфа- алфавита &, как обычно. Однако такое обобщение не приводит к су- существенному расширению соответствующих классов языков. Справедливо следующее утверждение. Теорема 5.9. Каждой праволинейной грамматике соответст- соответствует эквивалентная ей леволинейная грамматика и наоборот, т. е. Sn = Sn. Действительно, праволинейной грамматике со схемой а (Ь, ф -а, Ъ E.28) эквивалентна леволинейная грамматика со схемой а — а — ¦э- у<Ьа, у6Ь, ><Ьа, Ф Ф Ф так как каждая из приведенных грамматик порождает универсаль- универсальный язык над алфавитом 3t = {а, Ь). Точно так же праволинейной грамматике со схемой а<Ь, ас-, -с-^Ьт, E.29)
200 Глава 5. Формальные языки и грамматики эквивалентна леволинеиная грамматика со схемой ф фа, т—ухЪ, х-+ас х—уЬпс, ф —у а, E.30) так как каждая из этих грамматик порождает язык {ancbm \ п, т — = 1,2, . . .]. В этих примерах грамматики представлены в при- приведенной форме (см. § 5.3). Существует общий мзтод построзния по приведенной форме праволинеинои грамматики ?=(91, FH, о, Р) эквивалентной ей леволинейной грамматики G' = B1, Fh, а , Р') и наоборот. Поясним суть этого метода на примере праволинеинои грамматики со схемой E.29). В качестве аксиомы грамматики G' выберем новый нетер- нетерминала' e"FH. Нетерминальный алфавит V'u грамматики G' содержит символ а', а также все нетерминальные символы алфавита FH, кроме аксиомы a, Vu = (FH\o) U °'- Построим леволинейную грамматику G' = ({а, Ъ, с], (a', ф, х], а', Р'), эквивалентную грамматике со схемой E.29). Схему Р' левосторонней грамматики G' строим по схеме Р. Первоначально в Р выделяем все заключительные продукции вида а—у и, каждой из которых соответствует продукция а'^уиаР' (где и € F (Щ). Затем каждой заключительной продукции вида i-yu^P, где ? Ф- а, сопоставляем леволинейную продукцию а'-*¦ -yku^P'. В грамматике со схемой E.29) есть лишь одна заклю- заключительная продукция х^уЬ, которой соответствует леволинеиная продукция о' ->¦ хЪ 6 Р' ¦ Пусть Fx = {? | ? ф а] с FH — множество всех нетерминальных символов (отличных от аксиомы а), состав- составляющих левые части заключительных продукций грамматики G. Выберем совокупность продукций {A-*-u^\ для всех t?Vi}<=p> E-31) 1де u^^F(Щ. В данном примере Fi={x], так что к выделенным продукциям относятся а^уасх, ty-yacx, x-+bz. Если среди ука- указанных продукций есть продукции вида в-^-и^, то в грамматике G' пм соответствуют заключительные продукции ?—уи-^. Остальным продукциям вида А —*- и-? (где А Ф а) сопоставим леволинейные продукции, имеющие вид \ ->- Aux € Р'. Продукции а^-асх сопоста- сопоставим продукцию х^уас^Р', заключительную в грамматике (?', а продукциям ф ->- acz и т -у Ъх — леволинейные продукции х-+Ыс и х-^ухЪ схемы Р'. Далее образуем множество F2={A|Ag"FiU (J а] с FH всех нетерминальных символов (отличных от аксиомы о п не входящих в V±), составляющих левые части продукций E.31), выделим совокупность продукций {р-+и2 А | для всех A^F2}S^)> где и2 6 F (Щ, и выполним для нее построение, аналогичное пре- предыдущему, т. е. каждой продукции вида о—yiuA сопоставим за- заключительную продукцию А —у ы2 € Р', а каждой продукции р —у и2к § 5.4. Линейные и автоматные грамматики 20f (где рфа) — леволинейную продукцию А->-рцгб Р' и т. д. В дан- данном примере Fa = (ф) и продукциям а^-аЬ, ф = аф в грамматике G' соответствует заключительная продукция ф—yd и продукция ф —*- фа. В силу конечности множества FH и приведенности грам- грамматики G этот процесс завершится на конечном шаге построения схемы Р' леволинейной грамматики G'. Схема грамматики G', построенной с помощью изложенного метода, имеет вид E.30). Таким образом, используя схему Р грамматики G, удается построить леволинейную грамматику G', причем каждому левосто- левостороннему выводу цепочки х 6 L (G) соответствует правосторонний вывод этой же цепочки в грамматике G' и наоборот. Следова- Следовательно, L(G) = L(G'). Теорема доказана. Теперь достаточно рассмотреть лишь праволинейные грамма- грамматики, так как их основные свойства легко переносятся на мно- множество леволинейных грамматик. Пусть G = Et, FH, о, Р) — некоторая праволинейная грамматика с терминальным алфавитом й = [аъ . .. , ап). Применяя к грам- грамматике G приемы, изложенные в § 5.3, исключаем продукции вида ф-»-е и ф-*-т. Полученная в результате такого преобразо- преобразования грамматика G* порождает (с точностью до пустого слова ё) тот же язык, что и грамматики G :L(G*) = L(G)\{e). Затем каждой продукции ф{->- Ц{Т{ е ?>, Где щ = аиаи ... aife 6 F (Щ, можно сопоставить, вводя множество V (i) = (ф{, ф4з, . . . , ф{ } дополнительных нетерминалов ф{ g"FH (г = 1, 2, ... , к—1), ее? вокупность продукций E.32) *—а Совокупность продукций, соответствующая заключительной про- продукции вида ф?-»-ц{) может быть получена из E.32), если заме- заменить продукцию 6ift_i-^aiftxi продукцией ф^-э-a^. Предпола- Предполагается, что в различных продукциях схемы Р множества допол- дополнительных нетерминалов не пересекаются: F (i) f) F (/) = 0 при 1ф). Очевидно, грамматика Ga = Et, FH, a, P), FH= FH U (UV(i)), i схема которой получена в результате объединения продукций, входя- входящих в Р (L), Р= у Р (i), эквивалентна исходной грамматике G. Грамматика Ga, каждая продукция которой имеет вид 6->-z, где z = \ \, (а 6 й, х б FH), называется автоматной или грамма-
202 Глава 5. Формальные языки и грамматики тикой с конечным числом состояний [110]. Так, автоматны грам- грамматики в примерах 1, 2 § 5.2. Рассмотренные выше грамматики со схемами E.29), E.30), очевидно, не автоматны. Им эквивалентна, однако, автоматная грамматика со схемой ф. -аф, сх, ¦Ъ. E.33) Таким образом, из приведенных выше рассуждений следует, что для любой праволинейной грамматики G найдется автоматная грамматика Ga, порождающая (с точностью до пустого слова е) тот же язык, что и грамматика G: L (Ga) = L (G)\{e). Существует тесная связь между автоматными грамматиками и конечными автоматами [100] (чем и объясняется термин «авто- «автоматная грамматика»). С каждой автоматной грамматикой Ga = Et, VB, а, Р) ассоциирован конечный автомат А = Et, S, а, ф, Г), где 3t — входной алфавит автомата А, совпадающий с терминальным алфавитом грамматики Ga\ S = Ун U (ф} (ф ? ^н) — множество со- состояний; а и ф соответственно начальное и заключительное состо- состояния; Г — граф переходов, определяющий функционирование автомата. Каждому нетерминалу Ф € FH грамматики Ga соответствует вершина графа Г, помеченная символом ф; в графе есть еще одна вершина, помеченная символом заключительного состояния ср. Един- Единственному начальному состоянию а автомата А соответствует вер- вершина, помеченная аксиомой а. Далее, для каждой незаключительной продукции ф ->- ax проводится ребро, помеченное терминальным символом а б 5t, из вершины ф в вершину т; для каждой заклю- заключительной продукции ф —> а проводится ребро а из вершины ф в вершину ф. Автомат функционирует следующим образом: на вход последовательно (слева направо) подаются символы цепочки х = а^а^ .. . aik? F (Щ. Движение по графу начинается с вершины о, что сбот'ветствует начальному состоянию автомата А, в котором он воспринимает символ air Затем осуществляется переход из вершины а по любому из ребер a{l к некоторой вершине фь после чего автомат воспринимает очередной символ аг„ и т.д. Если на некотором шаге осуществляется переход в вершину ф, у которой отсутствует ребро с пометкой, соответствующей очередному символу на входе, то автомат останавливается безрезультатно (аналог тупи- тупикового вывода в грамматике). В противном случае входная цепочка х б F (Щ переведет автомат А из начального состояния а в некоторое состояние х б S. Путь в графе Г, соответствующий такому переходу, называется путем пз вершины сг в вершину х, несущим цепочку х. Цепочка х § 5.4. Линейные и автоматные грамматики 203 воспринимается автоматом А, если для нее в графе Г существует по крайней мере один путь из начальной вершины а в заключитель- заключительную вершину ф, несущий данную цепочку. Множество всех цепо- цепочек, воспринимаемых автоматов А, образует язык L (А), пред- ставимый данным автоматом. Очевидно, цепочка х воспринимается автоматом А тогда и только тогда, когда она выводима в соответствующей автоматной грамматике Ga так, что L(A)= L(Ga). Например, универсальный язык над алфавитом 31 = (а, Ь), порожденный приведенной выше грамматикой со схемой E.28), представим автоматом с графом, приведенным на рис. 27, а язык, порожденный грамматикой со схемой E.33), представим автоматом с графом переходов, приве- приведенным на рис. 28. Детерминированным автоматом называется автомат Ая — Et, S, о, й, Г) с множеством заключительных состояний Q^S, удовле- удовлетворяющий следующим условиям: Рис. 27. Рис. 28. 1) из каждой вершины графа Г может исходить не более одного ребра, помеченного символом а б 31 (условие однозначности); 2) из каждой вершины графа Г исходит ребро, помеченное символом а, для любого а б 31 (условие полной определенности); 3) каждая вершина ф графа Г достижима из начальной вер- вершины а, т. е. существует хотя бы один путь, связывающий вер- вершины а и ф (условие связности). Из условий 1 и 2 следует, в частности, что произвольная цепочка х 6 F (Щ переводит автомат А^ из начального состояния а в некоторое состояние ф 6 5, причем в графе Г существует лишь один путь из а в ф, несущий данную цепочку. Цепочка воспри- воспринимается автоматом An, если она переводит автомат из начального состояния а в одно из заключительных состояний, принадлежащих множеству Й. Множество всех цепочек, воспринимаемых авто- автоматом AR, образует язык L (Ая), представимый данным автоматом. Такие языки называются регулярными языками или событиями [24]. Если множество й пусто, то автомат AR по определению пред- представляет пустой язык. Приведенные выше примеры автоматов с графами переходов (см. рис. 27 и 28), очевидно, недетерминированы. Так, граф, пред- представленный на рис. 27, не удовлетворяет условию однозначности (из вершины ф псходят два ребра, помеченных одним и тем же символом а); граф, представленный на рис. 28, не удовлетворяет ни условию однозначности (из вершины т исходят два ребра,
204 Глава 5. Формальные языки и грамматики помеченных символом Ъ), ни условию полной определенности (отсут- (отсутствуют ребра с пометками Ъ и с, исходящие из вершины о). Тем не менее автомату с графом, приведенным на рис. 27, эквивалентен детерминированный автомат3 с заключительной вершиной Ф и гра- графом переходов, представленным на рис. 29. Автомату с графом, представлен- ным на рис. 28, эквивалентен детер- /\ a ( \1 минированный автомат с заключитель- { ) t 'A ^ К ной вершиной т и графом переходов, ^—' ^N—) приведенным на рис. 30 (а — тупи- тупиковое состояние). Следовательно, язы- языки, представимые указанными авто- автоматами (см. рис. 27 и 28), регулярны, Примером регулярного языка яв- является также язык {an\n=i,2, ...}U(bm|m = l,2, ...} E.34) над алфавитом 9t = [а, Ъ}, состоящий из любых цепочек символов а и лю- любых цепочек символов Ь. Этот язык представим детерминированным авто- автоматом с множеством заключитель- заключительных состояний {ф, г], граф переходов которого представлен на рис. 31. Известно [100], что каждому не- недетерминированному конечному авто- автомату А эквивалентен некоторый де- детерминированный автомат Лд (воз- (возможно, с большим числом состоя- состояний), более того, существует алго- алгоритм процесса детерминизации — по- построения по автомату А эквивалент- эквивалентного ему детерминированного авто- автомата Ая. Таким образом, несмотря на то что автомат А, ассоциирован- ассоциированный с грамматикой Ga, вообще говоря, недетерминированный, су- существует эквивалентный ему детерминированный автомат Ая. Из приведенных выше рассуждений следует такая теорема4. ? Автоматы эквдвалентны, если они представляют один н тот же язык. * Здесь и далее рассматриваются регулярные языки без пустого слова. Аналогичные результаты получены п в случае, когда е ? L. В частности, язык L порождается приведенной грамматикой, схема которой содержит наряду с автоматными продукциями продукцию а ->- е (а — аксиома грам- грамматики), ^тот язык представим соответствующпм детерминированным авто- автоматом, начальное состояние которого принадлежит множеств}' его заклю- яптельных состояний Q. Рис. 30. Рис. 31. § 5.4. Линейные и автоматные грамматики 205 Теорема 5.10. Множество всех языков, порожденных автомат- автоматными грамматиками, совпадает с множеством © всех регулярных языков, представимых конечными детерминированными автомата- автоматами. Множество © образует собственное подмножество множества всех кс-языков, более того, © — собственное подмножество множе- множества всех линейных языков. Действительно, рассмотрим язык an\n = 1, 2, . . .}, E.35) порожденный линейной грамматикой со схемой z-^-aza. о-+с. Покажем, что не существует автоматной грамматики, порождающей данный язык. Предположим противное. Пусть Ga = ({а, с], VH, о, Р) — не- некоторая автоматная грамматика, порождающая язык L E.35). Допустим, что г — число символов, входящих в нетерминальный алфавит Vn данной грамматики. Выберем цепочку х = атсат z L, где т>г. Тогда для любого вывода цепочки х в грамматике Ga можно указать нетерминал Ф б VH, встречающийся в даппом выводе дважды: X4^ak+su>Uamcam, E.30) где к + s < т. Это означает, что в грамматике Ga из символа <Ь * * ' выводимы цепочки ф =э-asi> и ф =э- am~(к+^сат. Устранив в выводе E.30) продукции, примененные на выделенном фрагменте, получим вывод а =»• а <Ь =»• am~scam g L в грамматике Ga. Следовательно, L{Ga)^=L, что противоречит первоначальному предположению. Таким образом, язык L нерегулярный и справедлива следующая теорема. Теорема 5.11. Множество © всех регулярных языков является собственным подмножеством множества всех линейных языков. Примером нерегулярного языка служит множество всех непустых цепочек в алфавите Э[ = [аъ а2, ... , ат], длины которых являются точными квадратами [24]. Нетрудно показать, что множество © всех регулярных языков над алфавитом 9t замкнуто относительно теоретико-множественных операции (J , |~], ~| (см. § 3.1, пример 5). Действительно, пусть Ьъ ?2 S ® — регулярные языки, порож- порожденные автоматными грамматиками соответственно G° = (9t, Т7^, с^. Рх) и G° = (9t, F|, o2, P2) с непересекающимися нетерминальными алфавитами У^|~]У^= 0. Построим автоматную грамматику G° = = (Qt, Ун) °| ^)> где с — дополнительный нетерминал, не входящий в J'hU ^h' Vn = *7hU Vl^ (a); P содержит все продукции, входящие в PjU Р,, а также продукции с-*-а1 п a-vo2. Очевидно, язык L (G°)
206 Глава 5. Формальные языки и грамматики регулярен, L (Ga) = Ьг\j L2, так что согласно теореме E.10) объе- объединение регулярных языков также регулярно. Пусть L ? © — произвольный регулярный язык. Рассмотрим язык ~1 L — F (Щ\Ь — дополнение языка L до свободной полу- полугруппы F(%). Покажем, что язык ~\L также регулярен. По опре- определению из регулярности языка L следует существование авто- автомата Ая = (9t, S, о, S, Г), представляющего данный язык Ь(АЯ) = L. Тогда автомат Ва = (9t, S, о, Q, Г), где Q = <S\S, также детерми- детерминирован. Следовательно, для любой цепочки х ? L в графе Г су- существует единственный путь, несущий данную цепочку из началь- начальной вершины о в некоторую вершину фей. Но тогда Ф"g"Й и поэтому x^L(BK). С другой стороны, любая цепочка у ? ~] L не воспринимается автоматом Ая. Это означает, что в графе Г найдется единственный путь, несущий цепочку у из о в некоторую вершину Tg'S. Но тогда т € S и поэтому у^Ь(Вя). Отсюда следует, что язык ~\ L представим детерминированным автоматом Вя, L (Вя) = = ~\L. Таким образом, язык ~\L регулярен и множество ©замк- ©замкнуто относительно операции дополнения. Замкнутость множества © относительно объединения и допол- дополнения влечет за собой замкнутость данного множества относительно пересечения, так как L1p|L2 = ~\ (  Ь± [} ~\ L2). Таким образом, справедлива следующая теорема. Теорема 5.12. Множество © всех регулярных языков с опре- определенными на нем теоретико-множественными операциями ~], (J , Г) образует булеву алгебру. В гл. 3 (§ 3.1, пример 5) рассматривалась полугруппа F(Щ с операцией конкатенации (соединения) слов. Операция конкате- конкатенации позволяет ввести такие важные операции над языками, как умножение языков и итерация [19]. Под умножением языков Ьг и L.2 понимается язык L = Ьг • L2, состоящий из всевозможных конкатенации ху слов х е L-у и у ? L2, т. е. L = {ху | (х, у) е L±X L2), где L± X L2 — декартово произве- произведение языков (см. § 1.2). Из ассоциативности конкатенации следует ассоциативность операции умножения языков, так что последняя относится к полугрупповым операциям. В то же время умножение языков не коммутативно, Li • ЬгФ Ьг- Ьъ кроме того L0 — 0L = = 0 для любого L б ©. С помощью операции умножения можно возводить данный язык L в степень: L1 = L, L2 = L • L, Ьъ = L ¦ L ¦ L, ... , Ln = L • L L. п раз ее Объединение всех лоследоватедьных степеней языка L, L* = U Ln, n=l § 5.4. Линейные и автоматные грамматика 207 называется итерацией L* языка L. Можно показать, что мно- множество © замкнуто относительно операций умножения и итерации5. Действительно, пусть языки Lb L2 регулярны. Тогда найдутся автоматные грамматики G° = (91, Уд, olf PJ и Gj = (ЭД, У^, о2, Р2), порождающие соответственно языки Ьг, L2, причем предполагается, что нетерминальные алфавиты этих грамматик не пересекаются, 7ц р|Уц = 0 . Рассмотрим автоматную грамматику Ga = (9t, Ун, оъ Р), где о!—аксиома грамматики G?; Ун = УниУн; Р состоит из продукций, входящих в схемы Pi и Р2, причем все заключитель- заключительные продукции вида t]> -> а грамматики G? заменяются продукциями i|j -> аа2 (о2 — аксиома грамматики G2). Нетрудно видеть, что L (Ga)= = Lx • L2, откуда следует регулярность языка Li • L2 Для доказательства замкнутости множества © относительно итерации достаточно по грамматике Ga = (91, Ун, a, P), порождающей произвольный регулярный язык L(G) = Le©, построить грам- грамматику G° = (9t, Ун. с, Р1), в схему которой входят все продукции схемы Р и продукции вида ^^-аа, если ф->аеР- Очевидно, L (Gi) = L*, так что язык L* регулярен, откуда и следует замк- замкнутость множества © относительно итерации. Множество © всех регулярных языков с определенными опе- операциями объединения, умножения и итерации образует алгебру регулярных событий, играющую важную роль в теории конечных автоматов и в автоматных грамматиках [19, 24]. В частности, су- существуют алгоритмы, позволяющие по любому конечному автомату (автоматной грамматике) построить для языка, представимого данным автоматом (порожденного грамматикой), выражение алгебры ©, составленной из элементарных однобуквенных языков {а} (для любого а € А) и операций алгебры © (проблема анализа конечных автоматов). С другой стороны, можно для любого такого выра- выражения сконструировать автомат, представляющий соответствующий язык (проблема синтеза конечных автоматов). Это означает, что множество элементарных языков образует базис алгебры @. Одной из основных проблем в алгебре © является проблема тождественных преобразований формул с целью их оптимизации по определенным критериям [7,23, 94,99, 137, 138]. К основным тождествам алгебры ©, играющим в ней роль аксиом, относятся (a.p)T=a(p.T), E.37) («UP)Ut = «U(PUt). E-38) aUP=PU», E-39) aUa = a, E-40) 2 Иногда итерация определяется как объединение L*, включающее в себя нулевую степень языка L, L° = e.
208 Глава б. Формальные языки, и грамматики a*=a*aUa. E.41) E.42) E.43) (Здесь и далее а, р, f, 8—произвольные выражения алгебры @.) Если скобок нет, то операции выполняются в следующем порядке: итерации, умножения, объединения. Используются также правила, позволяющие нз аксиом получать новые тождества — теоремы в данном исчислении: 1) /?! — правила замены; пусть а = C и j = o — произвольные тождества в алгебре @, причем а—подформула, входящая в f! тогда выводимы тождества f' = Т ит'= &> гДе т' — формула, полу- полученная в результате замены вхождения а в f вхождением Р; 2) R2— решение уравнений; из тождества а = a|3[J T выводимо тождество а = fP* U Т- Выводом в данном исчислении называется конечная последо- последовательность тождеств, каждое из которых либо аксиома, либо следует из предыдущих тождеств на основании приведенных выше правил вывода. Заключительное тождество вывода называется теоремой данного исчисления. Как и в других исчислениях, основными проблемами в данном нечислении являются непроти- непротиворечивость (любая теорема должна быть тождеством, выполнимым в алгебее @) и полнота (любое выполнимое в © тождество явля- является теоремой в данном исчислении, т. е. может быть выведено из аксиом E.37)—E.43) с помощью правил R±, R2). Нетрудно показать, что построенное исчисление непротиворе- непротиворечиво. Каждая нз аксиом E.37)—E.43) является тождеством, вы- выполнимым в алгебре @. Точно так же выполнимы все тождества, полученные из аксиом в результате применения правила замены. Покажем, что правило R2 сохраняет выполнимость тождеств в алгебре @. Пусть a = aP(Jf — тождество, выполнимое в @. Применяя по- последовательно правило замены, получаем совокупность тождеств, выполнимых в @: U ТР U ••• UTPUf' @.44) где к = О, 1, 2, ... Следовательно, любая цепочка, входящая в тР* U Т» принадлежит и выражению a : fE* U T ^ a- С ДРУгой стороны, справедливо и обратное включение аЕЕтР^иТ- Действи- Действительно, выберем произвольную цепочку х ? а., где | х \ = г — длина цепочки х. Тогда в совокупности E.44) найдется тождество а = = aCr+1 U fPr|J "тР7" • • • U тР U Т> из которого следует, что х € ар74. Это в свою очередь означает, что а: € jPr U ••• U тР U Т- ~ § 5,4. Линейные и автоматные грамматики 209 (а,0) образом, ее = -jP* U 7 — тождество, выполнимое в @, так что пра- правило R2 сохраняет выполнимость тождеств в алгебре @. Из при- приведенных рассуждений следует теорема. Теорема 5.13. Аксиоматическая система E.37)—E.43) с пра- правилами вывода i?i, R2 непротиворечива. В работе [99] доказана полнота данного исчисления. В то же время для алгебры © не существует конечной полной системы аксиом, если правило замены — единственное правило вывода [94]. В теории формальных языков и ее приложениях важное место занимают преобразователи, осуществляющие перевод (трансляцию) цепочек с одного языка на другой (см. гл. 6). Пусть Лд = (й, S, о, S, Г) — конечный детерминированный ав- автомат. Снабдим его выходным алфа- алфавитом 25 = [Ьъ . . . , ЬТ], г~^2, и потребуем, чтобы автомат на каждом такте работы при подаче входного символа а е 21 одновре- одновременно выдавал некоторый выход- выходной символ Ь € 2S- Функциониро- Функционирование такого автомата может быть описано графом Г', который совпадает (с точностью до пометок над ребрами) с графом Г. Если в графе Г из вершины ib в вершину т ведет ребро, помеченное символом я 6 3t, то в графе Г' из вер- вершины <j) в вершину х ведет ребро, помеченное парой (а, Ь), где Ъ € 25 — выходной символ, который выдает данный автомат, нахо- находясь в состоянии ф при подаче на вход символа а. Описанный таким образом автомат Ап — (9t, 25, S, a, 9, Г') называется конечным преобразователем. Конечный преобразователь Ап каждой цепочке х е F (Щ, вос- воспринимаемой автоматом Ая, ставит в соответствие выходную це- цепочку An(x)?F(%), порожденную аьтоматом Ап. Множество всех таких цепочек образует язык, порожденный автоматом Ап: (Ъ,0> Рис. 32. где L(An) = Ь(АЯ) — язык, представимый автоматом Ап. Нетрудно показать, что язык L (Ап), порожденный конечным преобразова- преобразователем Ап, регулярен. Для этого достаточно в пометках над ребрамп устранить символы входного алфавита и детерминизировать полу- полученный автомат, если он окажется недетерминированным. Например, конечным преобразователем является автомат с заключительной вершиной т и выходным алфавитом {0, ^, 1}, заданный графом, приведенным на рис. 32. Этот автомат, воспринимая цепочку ancbm, одновременно порождает цепочку 0" X lm> так чт0 язык {ancbm \ п,
210 Глава 5. Формальные язык» и грамматики т=1, 2, ...} представим, а язык {0nXlm| n> m=l, 2, .. .} порождаем данным автоматом. Заметим, что функционирование конечного преобразователя мож- можно определить также двумя функциями — функцией переходов ср: 21 X S-+-S и функцией выходов Д:&х?->-25, которые обычно задаются таблицами соответственно переходов (табл. 7) и выходов (табл. 8) [24]. Таблица 7 Таблица 8 ? а Ь с а а а о т ¦г а X а а а а а Д а Ь с о 0 0 0 ф 0 0 0 1 0 а 0 0 • 0 § 5.5. Алгебры контекстно-свободных языков Развитие теории кс-языков тесно связано с применением алгебра- алгебраических методов [19, 48, 70, 95]. В частности, в теории кс-языков изучаются алгебраические свойства некоторых важных операций над кс-языками, находятся в соответствующих алгебрах системы образующих, устанавливаются критерии полноты, выясняются не- некоторые свойства структуры подалгебр (см. § 3.1—3.3). При этом в сигнатуру алгебр кс-языков обычно включаются операции, отно- относительно которых множество §, всех кс-языков замкнуто (мно- (множество $ замкнуто относительно n-арной операции Q, если Q (Ьъ L2, ... , Ln) с $ для любых Lj, ... , Ln 6 $). К операциям, отно- относительно которых множество $ всех кс-языков замкнуто, относится прежде всего суперпозиция \ЬЪ . .. , Ln 1 (см. § 3.1, примеры 5—7). Пусть Lit L 6 $ — произвольные кс-языки, порожденные кс- грамматиками G4 = Bt, VlK, o{) Pj), G = (9t, VH, a, P) соответственно (i = 1, 2, ... , n); причем нетерминальные алфавиты v\, vl, ... ... , Ун! VB — попарно не пересекаются, 3t = {ax, . .. , am), где n. Каждому из выделенных терминальных символов qlt q2, ... , qn 6 5t сопоставим соответственно дополнительный нетерминал 5.5. Алгебры контекстно-свободных языков 211 Qi$VH\J U Fh при любом i = 1, 2, ... , re. Пусть, далее, Р° вклю- »=х чает в себя все продукции iji-xji E.45) (i = 1, 2, . . . , п), а также все продукции схемы Р, в правых частях которых все вхождения терминалов qlf ... , qn заменены нетерминалами qb ... , qn. Тогда язык порождается кс-грамматикой G = (&, Vn, a, P), где FH = VH \j U (.U ^) U (?Х) • • • » ?n}; a — аксиома грамматики G; Р = PQ U U CU/i)- Действительно, выберем произвольную цепочку х € L. По опре- определению суперпозиции цепочку х можно представить в виде х — •= ХгУгЧУг • • • ХпУп^п+и гДе Уг€ Ьг, ... ,уп? Ln; х' = х& . . . . . . xnqnxn+1 € L. Это означает, что для каждой цепочки t/4 сущест- существует вывод aj^z/i E.46). в соответствующей грамматике G4 при любом t = 1,2, кроме того, для цепочки х' существует вывод п\ E.47> в грамматике G. Следовательно, используя продукции, входящие в Р°, по выводу E.47) для цепочки x" = xiq1x2q2 ... xnqnxn+h можно построить вывод а=*-ж" в грамматике G. Затем, применяя продукции E.45), получаем вывод а=?Х1О\Х.го2 . .. хпапхп+1 в грам- грамматике G. Наконец, используя E.46), получаем вывод цепочки х- в грамматике G: • ¦ хпапхп+1 =*• ххухх2о2 .. . xnona;n+1 = E.48> xvilnxn+\ ~ Хш Таким образом, справедливо включение L<=:L{G).
212 Глава 5. Формальные языки и грамматики Докажем теперь справедливость обратного включения L(G)<=L- E.49) Выберем произвольную цепочку z ? L (G) и рассмотрим некоторый вывод o4z E.50) этой цепочки в грамматике G. Поскольку нетерминальные алфа- алфавиты грамматик Gi; G попарно не пересекаются, вывод E.50) можно перестроить так, что вначале применяются продукции из Р°, со- соответствующие продукциям грамматики G, затем — продукции вида E.45) и, наконец, — группы продукций, входящие в схемы Pt (i = 1, 2, ... , п) в соответствующем порядке. Следовательно, существуют цепочки z' = z1q1z2q2 . . . znqnzn+1 е L, щ ? Llt u2 € € L2, ... , ип е ?п такие, что z = z-$l-&$H . . . znunzn+1. Это означает, что z e Ь и справедливо включение E.4&). Из включений E.48), E.49) вытекает, что L=L(G). Таким образом, справедливо сле- следующее утверждение. Теорема 5.14. Множество ft всех кс-языков замкнуто относи- относительно суперпозиции. Анализируя проведенное доказательство, замечаем, что если грамматики Gx, G2, ... , Gn, G автоматны, то грамматику G также нетрудно свести к эквивалентной автоматной грамматике, исключая известным способом (см. § 5.3) продукции вида E.45). Поэтому согласно теореме 5.10 справедливо такое следствие. Следствие 1. Множество © всех регулярных языков замкнуто относительно суперпозиции. Пусть 21 = {«!,. . . , ат}, т~^ 2,— произвольный терминальный алфавит. Выделим в алфавите 21 символы а, Ъ е 21 и рассмотрим языки U (Щ = [а, Ь} (состоящий из двух однобуквенных цепочек а и Ь), П (Щ = {ab} (содержащий единственную цепочку аЪ) и а* (представляющий собой итерацию элементарного языка [а]). Оче- Очевидно, что языки U B1), П (Щ и а* являются кс-языками. Сопо- Сопоставим теперь выделенным символам а, Ъ ? 21 соответственно про- произвольные кс-языки Llt L2. Выполнив суперпозиции, получим S3 Li, L2 а" = Согласно доказанной теореме приведенные суперпозиции порождают кс-языки. Произвольность выбора языков Ьъ Ь2 € $ позволяет сделать следующий вывод. § 5.5. Алгебры контекстно-свободных языков 213 Следствие 2. Множество $ всех кс-языков замкнуто относи- относительно операций объединения, умножения и итерации. В дальнейшем используется замкнутость множества R также относительно унарной операции исключения пустого слова е, 7 "^ ' еслн е~? ^' L\e, еслн е е L, для любого Le ft (см. теорему 5.5), и относительно операции об- обращения, т. е. L'1 = {х~х | х б L) € $ для любого L б ft (цепочка х~г = 64fetfib • • • «i, является обратной цепочке х = а^Яг, . . . Действительно, если L — кс-язык, порожденный грамматикой G со схемой {ijji-^Wi}, то язык L порождается кс-грамматикой G со схемой {(]>{ ->- WT} • Несмотря на замкнутость множества $ от- относительно объединения, можно показать, что другие теоретико- множественные операции (пересечение, дополнение) уже выводят из класса кс-языков. В качестве примера рассмотрим языки Lx = {a^bman | n, m = 1, 2, . . .}, L2 = {anbnam | n, m = 1, 2, ...}, порождаемые кс-грамматиками соответственно Gi со схемой а- а- т- т ¦ E.51) и G2 со схемой 0- 0- ф. га, ab, E.52) так, что LX = L (Gx) и L2 = L (G2). Следовательно, Lx, Ь2 € Ж; более того, языки Li, L2 линейны. В то же время Lx f] A = (anbnan | n = = 1,2, ...}ё"$ (см. § 5.3). Таким образом, множество ft всех кс- языков и множество S всех линейных языков не замкнуты отно- относительно пересечения. Из соотношения \~\L2) E.53)
214 Глава 5. Формальные языка и грамматики следует, что операция дополнения выводит за пределы множества кс-языков (линейных), так как в противном случае согласно фор- формуле E.53) и следствию 2 доказанной выше теоремы множество $ (соответственно 2) оказалось бы замкнутым относительно пере- пересечения . Заметим, однако, что множество $ замкнуто относительно суженной операции пересечения. Пересечение произвольного кс- языка с любым регулярным языком снова образует кс-язык [19]. Это следствие приведенной ниже теоремы подтверждает основопо- основополагающую роль регулярных множеств в общей теории кс-языков. Рассмотрим произвольную кс-грамматику G = (91, Ун, о, Р) и конечный преобразователь Т = (91, 35, S, s0, Q, ц>, Д), где 91 и 35 — соответственно входной и выходной алфавиты; S — множество со- состояний; s0 6 S — начальное состояние; 8 <= S — множество заклю- заключительных состояний; ф — функция переходов; Д — функция выхо- выходов данного преобразователя (см. § 5.4). Пусть L{G)— кс-язык, порожденный грамматикой G; L (Т) — язык, представимый преоб- преобразователем Т. Теорема 5.15. Язык Т(L) = {Т(х) \xtL(G)[\L(T)}, состоящий из всех цепочек, порожденных преобразователем Т, при подаче на вход преобразователя воспринимаемых им цепочек из L (@) является также кс-языком. Доказательство. Построим кс-грамматику G' = C5, Ун, о', Р'), порождающую язык Т (L). Для этого рассмотрим объединенный алфавит V = %\]VK грамматики G и множество S = (s0, sb . . . , sk) состояний преобразователя Т. Аксиомой грамматики G' является новый нетерминал a' J У, кроме него в нетерминальный алфавит Vi входят символы Д(8 s.) для любых терминальных или нетерми- нетерминальных символов Д 6 V грамматики G и пар состояний sit Sj е S преобразователя Т. Схема Р' грамматики G' состоит из следующих трех групп продукции: 1) а' ->¦ 6(Soi g) для любых q б ^, где а — аксиома грамматики <?; s0 и q e S — соответственно начальное и заключительное состояния преобразователя Т; 2) ФОч, *})-+*?\ц,Ч^\ч„Чг) ¦•¦ ^tin-l'*}) ДЛЯ ПРОИЗВОЛЬНОЙ ПрО- дукции <!)->- ib'ib2 ... Фп е Р грамматики G и любых состояний sii Sj, qlt ... , qn_1 € S преобразователя Т; 3) заключительные продукции a^.,s.)-+b такие, что ц>(а, s4) = = Sj и Д (a, s^ = b, где а е 9t; Ъ 6 S3; su sj^S; q> и Д — соответ- соответственно функции переходов и выходов преобразователя Т. Нетрудно видеть, что для всякой цепочки х = а^а2 ... ат ? L(G) с помощью продукций, принадлежащих группам 1, 2, в грамма- грамматике G' выводима цепочка х' = a(Soi qi)Ci?qu qi) ... a\q _., g) при любых 5.5. Алгебры контекстно-свободных языков 215 ?i» ?г. • ¦ • 1 9r-i е ^' где s0 и g 6 2 — соответственно ¦ начальное и заключительное состояния преобразователя Т. В то же время к цепочке х' применимы продукции группы 3, если (s0, ?i, • • • о 5 д) путь в Т, несущий цепочку х из начального состо- состояния Sq в заключительное q 6 Q так, что Д (a1, s0) = bl5 Д (а2, q$ = = Ъ„ ... , Д (аг, gr_i) = Ьг и bjbi ... Ът € ^C5) —цепочка, порож- порожденная преобразователем Г при подаче на его вход цепочки xtL(G)[\L(T). Таким образом, L(G') = T(L). Теорема доказана. Заметим, что число нетерминалов и продукций грамматики G' обычно избыточно. Пусть, например, даны кс-грамматика Gi со схемой ¦ ааа, порождающая язык ) = [anban\ n = 0, 1, 2, .. .}; E.54) конечный преобразователь Т1 с начальным состоянием s и заклю- заключительным q, заданный графом (рис. 33) так, что L G\) = = {anbF (Щ | п — 1, 2, . . .} — язык, представимый в Тг; порожденный преобразователем Тх язык L = @n ^F (S5) [ и = 1, 2, . . .}, где & = = (а, Ь} и 35 = (О, X' 1} — соответст- соответственно входной и выходной алфавиты преобразователя 7\. Тогда грамматика С = C5, К, o(s> ,;, Р') с нетерминаль- ным алфавитом Уд = (c(S) g), a(s, S), a<g, gj, b(«, q), hq, ?)}) схема которой имеет вид Рпс. 33. ,9)'i 0(з, b(s, s, 9) порождает язык L(G') = @п^ 1ПI л = 1, 2, . ..}, совпадающий с множеством всех цепочек, порожденных преобразователем Тх при подаче на его вход цепочек из L(G^)[\L(T1). Пусть L(D)e@ — произвольный регулярный язык, представи- представимый детерминированным автоматом D. Построим по автомату D конечный преобразователь Т (представляющий язык L{T) — L(D)), функция выходов которого имеет вид Д (a, s) = а для любых (a, s) e 6 91 X S, где 91 — входной алфавит; S — множество состояний авто- автомата D. Построенный таким образом преобразователь Т копирует воспринимаемую им цепочку 1(х) = х для любого xtL(T).
216 Глава 5. Формальные языка и грамматика Пусть L (G) 6 $ — произвольный кс-язык, порожденный грам- грамматикой G. Тогда T(L) = L(G) [)L(T) = L{G)[)L{D) и из дока- доказанной теоремы вытекает такое следствие. Следствие 1. Пересечение L (G) |~) L (D) принадлежит $ для любых L(G)e$ и ?(?>)?©, т. е. множество $ всех кс-языков замкнуто относительно суженной операции пересечения произволь- произвольных контекстно-свободного и регулярного языков. Таким образом, можно отбрасывать «лишние» (не имеющие нужной формы) цепочки данного кс-языка, пересекая его с под- подходящим регулярным языком, при этом оставшиеся цепочки снова образуют кс-язык. Левым (правым) делением L\u(L/7u) языка L на одноэле- одноэлементный язык {и} [19] называется операция, порождающая новый язык: u = {х | их б L] (L^u = \х | хи е L}). E.55) E.56) E.57) Левое деление удовлетворяет следующим свойствам: V). где е — пустое слово; (А и ?2) V = (L g) V = (LiV) где е, если e e Ьъ 0, если e^Li; 0—пустой язык. Аналогичным свойствам удовлетворяет операция правого деления. Следствие 2. Множество $ всех кс-языков замкнуто относи- относительно операции левого (правого) деления. Действительно, пусть L g ft — произвольный кс-язык над алфа- алфавитом й и и = а^а^ ... ak — некоторая цепочка над этим же ал- алфавитом. Покажем, что язык L^u также является кс-языком. Для этого рассмотрим конечный преобразователь Т, в котором пред- представим регулярный язык М = (и%*) t @, т. е. L (Т) = М, причем, воспринимая цепочку х^М, преобразователь Т выдает символы е при подаче на вход символов начальной подцепочки и, копируя остальную часть цепочки х так, что Т(х) = х', где х = их' — про- произвольная цепочка из М. Подавая на вход преобразователя Т цепочки из пересечения L[\M, убеждаемся в том, что L\u = = T(L). Но согласно доказанной выше теореме язык T(L) = = [Т (х) | х б L [)М] является кс-языком. Таким образом, множество $ замкнуто относительно операции левого деления. Замкнутость множества & относптельно операции правого деления следует из замкнутости этого множества по опера циям обращения и левого деления. § 5.5. Алгебры контекстно-свободных языков 217 В теории кс-языков важное место занимают рекурсивные про- процедуры, порождающие из конечных языков бесконечные [95]. Пусть ?7П= {ф{:: = /у(фх, ф2, ••• , Фя)|*=1, 2, ... , п] E.58) является системой уравнений (см. § 5.3) с выделенным нетерми- нетерминалом (]>1, где U((]>!, ф2, ¦ • • . W = till ЧМ zi2U • • • U zift. —такой полином, что каждая цепочка ziy (I sS^/^&j) содержит хотя бы один нетерминал из алфавита FH = {фь • ¦ • , Ы ПРИ любрм ъ = = 1,2, ... , п. Рассмотрим языки Ьъ L2, ... , Ln^F(Щ над терминальным алфавитом St. Аналогично рекурсивному процессу, изложенному в § 5.3, подставим языки Ьъ L2, ¦ ¦ • , Ln вместо переменных соответственно t]>i, ф2, . . . , фп в каждую из правых частей системы уравнений E.58). В результате получим новые языки над алфавитом St: ¦¦¦ ,Ln), ... ,Ln), ъ ... ,Ln). E.59) Затем, вновь подставляя языки L\, L\, ... , L\ E.59) вместо пере- переменных фх, . .. , ф„ в правые части уравнений E.58), получаем Продолжив рекурсивно этот процесс, получим ft 1 i — /1 к~1\ при любом к = 1, 2, ... Пусть L" = О Ь\ при любом i = 1, 2, ... , п. Операцию ре- рекурсии, заданную системой уравнений W1 E.58), можно рассмат- рассматривать как (п -г 1)-арную операцию Rn+1 (Ьъ L2, ... , Ln; L) над языками Lx, . . . , Ln, Х^Е^(^). гДе ? —язык, полученный в ре- результате исключения всех нетерминальных символов, входящих
218 Глава 5. Формальные языки и грамматика в правые части уравнений системы Vй. Операция рекурсии по- порождает новый язык L* = Rn+1 (Li, ... , Ln; L), причем схема такого порождения определяется, как было показано выше, системой уравнений Un. Каждому кс-языку можно поставить в соответствие операцию рекурсии, порождающую данный язык нз конечных языков. На- Например, рассмотренный выше (см. E.54)) кс-язык L (Gx) = {anban | n= = 0, 1, 2, . . .} порождается операцией рекурсии R2(In; L), схема которой определяется единственным уравнением {ф :: = <j)[J atya], где Ьг = Щ, Ъ = {аа}. В то же время языки Lx = {anbman | п, т = 1, 2, . . .}, L2 = {anbnam | п, т = 1, 2, . . .}, которые порождаются кс-грамматиками соответственно со схемами E.51), E.52), могут быть порождены также операциями рекурсии Li = Rl@, 0, {Щ; {аа, b}), L2 = R\{<2>, 0, {ab}; {a, ab}), задан- заданными системами уравнений С другой стороны, любая рекурсия кс-языков образует снова кс- язык. Таким образом, множество ft замкнуто относительно операции рекурсии, причем совокупность всех конечных языков является системой образующих в алгебрах кс-языков, сигнатуры которых содержат всевозможные рекурсии. Рассмотрим алгебру ft всех кс-языков над алфавитом 21 = = [аъ . . . , ап}, сигнатура которой содержит наряду с операциями (исключение пустого слова), U (объединение языков), • (умно- (умножение языков) также всевозможные суперпозиции и рекурсии [118]. Пусть ft0 = $\{{е), 0]; gcS0 —множества всех конечных языков над алфавитом 3t; gr<=K — множество всех конечных языков L таких, что для цепочки x$L выполняется неравенство |^|^7-, где | х | — длина цепочки х, г ^ 1. Заметим, что ft0 образует подалгебру алгебры ft, а множество К замкнуто по операциям ", [} , •, <S"+1. Справедлив следующий тривиальный критерий полноты в под- подалгебре Жо. Теорема 5.16. Система языков EcS0 является системой об- образующих подалгебры $0 тогда и только тогда, когда выполняется включение S^S1, где К1—множество всех элементарных одно- буквенных языков {аг}, . .. , [ат}. § 5.5. Алгебры контекстно-свободных языков 219 Необходимость сформулированного условия очевидна, так как множество $о\[а} является подалгеброй, максимальной относи- относительно $0 для каждого а € 9t, а достаточность — так как система языков К1 порождает подалгебру $0 (см. § 3.2, пример 8). Перейдем к построению всех максимальных подалгебр алгебры ft. К ним относятся, в частности, множества $е = ^о U Iе} и ^0 = = ^о U 0i где {е) — язык, состоящий из одного пустого слова е; 0 —пустой язык. Рассмотрим отображение ф, которое произволь- произвольному слову х над алфавитом й = [аъ . . . , ат} ставит в соответ- соответствие m-мерный набор t]> (х) = (пъ . . . , пт), где щ — число вхож- вхождений символа аг е 21 в слово х, причем <])(е) = @, ... , 0). Распространим отображение Ф на произвольные подмножества свободной полугруппы F (Щ так, что для любого L cf (Щ t]> (L) = = {(j) (ж) | ж 6 L}. Пусть 5?ai — множество кс-языков, содержащее все языки L такие, что либо (пъ ... , n{_v I, ni+1, ... /ы)? g"i})(L) при любых nj^O (]ф1), либо для любого («!, . . . , Щ_г, 1. «i+1, . . . , ?im> € <1> (Ь) найдется набор (п[, ... , п'т) 6 ф (Ь), где «г* > 1, nj = 0 при любом щ = 0 (] фг). Иными словами, L € ^ai тогда и только тогда, когда L вообще не содержит слов с единствен- единственным вхождением символа а„ либо, если такое слово есть (х 6 L), для него всегда найдется по крайней мере одно слово х' 6 L, со- содержащее несколько вхождений символа аг и не содержащее символов, не входящих в слово х. Нетрудно проверить замкнутость множества Яа. относительно операций, входящих в сигнатуру ал- алгебры ft так, что fta. образует подалгебру алгебры ft для любого at€9t. Теорема 5.17. Система языков ScS порождает алгебру ft тогда и только тогда, когда для каждой подалгебры fte, ft0, fta{ (?=1,2, ... ,т) в системе S найдется хотя бы один язык, не принадлежащий данной подалгебре. Необходимость очевидна. Достаточность. Из определений мно- множеств fte и ft0 следует, что система ? содержит языки (е) и 0. Пусть {Ьъ ... , Lm}<=?, где ?4?5Ц (i = 1, 2, ... , m). Тогда в язык Lt входит слово х, имеющее единственное вхождение символа ог, причем любое слово с несколькими вхождениями сим- символа аг содержит по крайней мере один символ, не входящий в слово х. Пусть в слово х кроме символа аЛ входят также символы аи, аи, ... , a((| f 31. Каждому символу а{. сопоставим язык {е} (/ = 1,2, ... , к), всем остальным символам алфавита 3t, кроме символа а{, сопоставим язык 0. Тогда а г пробегает множество {at\{ai, atl, . . . , aik}}. Таким образом,
220 Глава 5. Формальные языки и грамматики систему ? удалось свести к системе S1 = @, [е], [аг] \ i = 1, 2, ... ... , т], которая образует базис алгебры ft. Операции сигнатуры алгебры ft имеют общее свойство: в ре- результате применения к непустым словам они порождают новые слова, не убывающие по длине. Процесс порождения становится более гибким и разнообразным, если к операциям алгебры ft при- присоединить операцию деления на одноэлементный язык. Рассмотрим алгебру ft всех кс-языков, сигнатура операций которой содержит все операции, входящие в сигнатуру алгебры ft, а также операцию Ь^и левого деления, и множество ее макси- максимальных подалгебр. Пусть ?а. (где йц € 2t; р ? Р) — множестио кс- языков такое, что L е ?а. тогда и только тогда, когда ф (х) = — (пъ п2, ... , пи ... , пт), где пг = О или щ ¦ р для любого слова х 6 L (здесь и далее п \ т означает, что число п кратно числу т). Иными словами, либо каждое слово х е L вообще не содержит вхождений символа а{, либо число таких вхождений кратно данному простому числу р€.Р. Нетрудно убедиться в том, что множество ?а{ замкнуто относительно сигнатуры операций алгебры ft. Действительно, последние не нарушают свойства слов, принадлежащих языкам из ??:, которое состоит в том, что число вхождений символа а{ кратно р. Следовательно, ??. образует под- подалгебру алгебры ft. Покажем, чо %%. является максимальной под- подалгеброй алгебры 1к. Пусть L — произвольный язык, не принадлежащий подал- подалгебре ??.. Тогда найдется по крайней мере одно слово х 6 L, такое, что (]> (х) = (пъ . . . , пт), где щ не делится на р. По определению Iе} € ??> и можно выполнить подстановку Sm [. \ LI = L' ^а*при любом ] Ф i. Пусть хг 6 L —слово наименьшей длины такое, что \х1\ не делится на р. Выберем одноэлементный язык (а^а^} € ?<^ (при ] ф г), где х[; х"х € а\\ \ х[ | + | х\ \ = р; A^1 + 1 х[\) ¦ р. Отсюда следует, что \х'1г\ не делится на р. Используя операцию умноже- умножения языков, получаем L" = L' {х^х^}. Далее, разделив L" на одно- одноэлементный язык {x2uj\ e ?a., где х2 е а* и | х2 \ — \ хг \ + | х[ |, по- получаем L'^^aj} = {x'i}, а применив^ — 2) раз операцию подста- подстановки, — где | и\ = \x\v~~1. Однако для простого р и для я, которое не делится на р, ар~г = 1 (mod/?) (теорема Ферма [17]). Следовательно, § 5.5. Алгебры контекстно-свободных языков 221 |^'|p-is^ (modp), и, разделив {и} на одноэлементный язык. {v} € ??., где | v | = 14' jP — 1, получим однобуквенный язык {а{\. Заметим, что {flj) e ?^. при любом ]фг. Таким образом, присоеди- присоединение произвольного языка L^%^ н множеству %1{ порождает систему образующих алгебры ft. В силу бесконечности множества Р' всех простых чисел справедлива следующая тебрема [118]. Теорема 5.18. Множество всех максимальных подалгебр алгебры ft бесконечно. Эта теорема справедлива, несмотря на конечную порожденность алгебры ft. Полученные результаты переносятся на алгебры регулярных. языков, в сигнатурах которых операции рекурсии заменены ите- итерацией.
ГЛАВА 6 ПАРАМЕТРИЧЕСКИЕ СИСТЕМЫ ПРОГРАММИРОВАНИЯ § 6.1. Автоматы над внутренней памятыб В связи с синтезом логических структур многих важных сизтем- ных процессов представляет интерес применение в абстрактной модели ЭВМ, рассмотренной в § 4.1, в качестве управляющих, наряду с конечными, бесконечных автоматов с различной органи- организацией внутренней памяти. Обобщая известные структуры памяти, рассмотрим элластичную ленту [21], или, кратко, ленту, разделенную на ячейки, которые последовательно занумерованы натуральными числами из множества 7V = {1, 2, . . .}. Номер ячейки играет роль адреса при обращении к памяти. Ячейки ленты расположены вертикально так, что ячейка с номером 1 является самой верхней. Любая ячейка может содер- содержать один символ (букву) из множества 21 (необязательно конеч- конечного), названного алфавитом данной ленты. В каждый момент времени содержимым ленты является цепочка произвольной длины х = игаг ... an€jF(9t). При этом цепочка х располагается в п верхних ячейках, остальные ячейки ленты остаются пустыми. К ленте допускаются обращения в режиме записи и чтения. В режиме записи символа а е 21 в i-ю ячейку «хвост» йга1+1 . . . ап цепочки х смещается вдоль ленты на одну ячейку вниз и символ а помеща- помещается в освободившуюся i-ю ячейку так, что содержимое ленты составляет цепочку х' — аг ... ai_1aaiai+x . . . а,п; наоборот, в ре- режиме чтения из г-й ячейки воспринимается, а затем стирается, символ аг (ее содержимое), причем подцепочка ai_hl . . . ап сме- смещается на одну ячейку вверх, образуя новое содержимое х" = = аг ... ai_1ai+1 . . . ап данной ленты (см. стр. 223). Рассмотренная лента является естественным обобщением струк- структур памяти, положенных в основу известных концепций беско- бесконечных автоматов. Понятие ленты служит также» абстрактной мо- моделью памяти стековых ЭВМ, отражая ее наиболее характерные свойства. §6.1 Автоматы над внутренней памятью 223 Содержи- Содержимое исход- исходной ленть Ч а2 • ai-i fli fli+l • On • Запись символа а в г-ю ячейку fll а2 . fli-l а "i fli+i • fln * Чтение символа из i-й ячейки аг а2 ¦ <4-i • • При реализации некоторых важных системных процессов широкое распространение получила магазинная память. Магазин представ- представляет собой ленту, в которой для записи и чтения доступна лишь верхняя ячейка, называемая вершиной магазина; в режиме записи содержимое магазина сдвигается на одну ячейку вниз и в освобо- освободившуюся вершину записывается некоторый символ из алфавита данного магазина; при чтении содержимое вершины магазина сти- стирается, а оставшаяся часть цепочки смещается на одну ячейку вверх; таким образом, символ, записанный в магазин последним,, воспринимается при чтении как первый: Вершина• Содержи- Содержимое мага- магазина Ч Ч • fln Запись символа а а Ч а. . «п Чтение из магазина аз • ап '.
224 Глава 6. Параметрические системы программирования Наряду с двусторонними магазинами, работающими как в ре- режиме записи, так и в режиме чтения, можно рассматривать одно- односторонние магазины, работающие лишь в одном из указанных режимов. Магазин, работающий лишь в режиме чтения, исполь- используется в качестве входной ленты для автоматных структур. Функ- Функция выходов автомата состоит в накоплении результирующей ¦цепочки на выходной ленте, которая представляет собой односто- односторонний магазин, функционирующий в режиме записи. Модификацией магазина является стековая память. Стек пред- представляет собой магазин, любая ячейка которого доступна просмотру (чтению с сохранением содержимого ячейки). Другой важной разновидностью магазина является магазин- счетчик, алфавит которого содержит лишь один символ. Накопле- Накопление этого символа на ленте используется в качестве количествен- количественной характеристики в процессе переработки информации. Стеки и счетчики широко используются в системном програм- программировании при реализации рекурсивных процедур, циклов и дру- других важных алгоритмических конструкций. Важным ограничением режимов обращения к ленте является ¦введение естественной очередности на порядок считывания сим- символов, записываемых на ленту. Для организации функционирования ленты по принципу очереди режимы чтения и записи необходимо разделить по месту обращения. Чтение, как и в случае магазина, производится из самой верхней ячейки ленты — ее вершины, а запись — снизу в свободную ячейку с наименьшим номером — основание ленты. Лента, образованная таким образом, названа циклической очередью или памятью типа «бобслей» (кратко — ¦бс-памятыо) [123]. Содержи- Запись Вершина ->¦ Основание-* мое бобс- бобслея 0-1 * • символа а 0-1 а2 ; «п а '. Чтение из Ообслея а2 • Как и в случае магазина, бобслей, алфавит которого содержит лишь один символ, является счетчиком. Для практических при- § 6.1. Автоматы над внутренней памятью 225 ложений представляет интерес изучение вспомогательной памяти, сочетающей свойства магазина и бобслея. К такой памяти отно- относится прежде всего память типа «бс-магазин» [89, 90]. бс-Магази- ном является лента, допускающая обращение к своей вершине в режиме записи и чтения, а к основанию — только в режиме записи. Таким образом, бс-магазин моделирует как магазин, так и бобслей. Память подобного типа может быть использована при параллельной обработке скобочных структур (см. § 6.4). Определение автомата с п вспомогательными лентами является естественным обобщением известных концепций бесконечных авто- автоматных структур. Рассмотрим конечный автомат, который кроме входного и выходного каналов имеет каналы для работы с п внут- внутренними лентами (п^О). На входной и выходной лентах разме- размещаются соответственно входные и накапливаются выходные це- цепочки. Автомат А с п внутренними лентами представляет собой объект A*=(S,X,Y, Zlt ... , Zn, с?, <pt, ф{, 8, s0, F), где S — конечное множество состояний автомата А; X и7 — соот- соответственно входной и выходной алфавиты; Zi— алфавит f-й внут- внутренней ленты; cp :S X [Х{] /\}->-S — функция переходов, связанная с чтением входной цепочки (символ Л используется для пере- переключений автомата в новое состояние без обращения к входной ленте); ср4:? х^Х N->S—функция переходов, связанная с чте- чтением из г-ж ячейки (г € N) ?-й внутренней ленты; фt iS-t-S X X Zi X N — функция записи в r-ю ячейку ?-й внутренней ленты (? = 1,2, ... ,п); b:S->Y X S — функция выходов; s0 6 5 — на- начальное состояние; FczS—множество заключительных состояний автомата. Конфигурацией автомата А назовем набор (s, p, ръ р2, ... , рп, д), где s 6 S — состояние автомата; р(д)—содержимое входной (выходной) ленты; р4 — содержимое ?-й внутренней ленты автомата (?=1,2, ... , п). В каждый момент дискретного автоматного времени детермини- детерминированный автомат А с п внутренними лентами совершает одно и только одно элементарное действие из следующих пяти типов действий. 1. Чтение очередного символа из входной ленты и переход в новое состояние, зависящее в соответствии с функцией ср от прочитанного символа и состояния автомата перед этой операцией. 2. Чтение из некоторой ячейки ?-й внутренней ленты согласно выбранному типу памяти и переход в следующее состояние, зави- зависящее в соответствии с функцией ср{ от прочитанного символа и текущего состояния автомата. 3. Запись в некоторую ячейку ?-й внутренней ленты некоторого символа из алфавита Zb зависящего в соответствии с функцией ф4 8 8-330
226 Глава 6. Параметрические системы программирования от текущего состояния автомата, и однозначный переход в следующее состояние. 4. Запись на выходную ленту некоторого символа (из алфави- алфавита Y), зависящего в соответствии с функцией о от текущего со- состояния автомата, и однозначный переход в следующее состояние. 5. Переключение автомата А в очередное состояние в соответ- соответствии с функцией ф без обращения к его лентам. В первом и втором случаях при исчерпании содержимого соот- соответствующих лент (когда считывается пустой символ) переход в новое состояние считается неопределенным и автомат безрезуль- безрезультатно останавливается. В недетерминированном автомате с п лентами функции, опре- определяющие переходы, могут быть многозначными. Кроме того, в не- некоторых состояниях автомат может выполнять одно из некоторой совокупности допустимых элементарных действий. Детерминированный и недетерминированный автоматы могут быть заданы двувходовой таблицей, столбцы которой соответствуют состояниям данного автомата, а строки сгруппированы в (п -\- 2) секций. Первая секция — секция чтения из входной ленты. Состав- Составляющие ее строки соответствуют различным символам входного алфавита и заполняются в соответствии с функцией ф (действие 1). В следующих п секциях (по числу внутренних лент) согласно функциям ф{ (действие 2) фиксируются переходы автомата, свя- связанные с чтением из соответствующих лент, причем строки секции, сопоставленной ?-й ленте, отмечены разными символами алфавита Zj данной ленты (? = 1,2, ... , п). Последняя секция состоит из единственной строки, в которой отражены действия 3—5 в соот- соответствии с функциями tjjj, 8, ф. Автоматы с п вспомогательными лентами допускают параллель- параллельный режим работы благодаря выполнению групповых операций обращения к нескольким лентам. При групповой операции в не- некотором состоянии последняя секция содержит выражение [х, z?«, (-11 z% • • • , zqrn, у], где q{ = j 01 (? = 1, 2, . . . , п); ж — символ, счи- 71 I 1J тываемый с входной ленты; zr. (zr) — символ, считываемый (за- (записываемый) с Г{-й ячейки i-й внутренней ленты, Zr. = Л > У — выходной символ; каждый из перечисленных символов может сов- совпадать с Л (9 = 0, z° = Л), если соответствующая лента не участ- участвует в данной групповой операции; отсутствие нижнего индекса означает обращение к вершине магазина или, в зависимости от режима обращения, к вершине или основанию бобслея. В качестве примера рассмотрим две таблицы, задающие автоматы с одной внутренней лентой: детерминированный (табл. 9) и неде- недетерминированный (табл. 10) автоматы с входным алфавитом [а, Ь) § 6.1. Автоматы над внутренней памятью 227 и алфавитом внутренней Таблица 9 ленты {р, q\. Второй авто- автомат недетерминирован в трех состояниях. В со- состоянии 1 это происходит из-за неоднозначности пе- перехода в состояния 2 и 3 при считывании символа а из входной ленты и двух типов элементарных дейст- действий —¦ считывания из вход- входной ленты и записи во внутреннюю ленту. В состоянии 2 автомату представляется воз- возможность выбора одного из двух элементарных действий — считы- считывания из входной или внутренней ленты. В состоянии 4 суще- существует неоднозначность перехода (не сопровождающегося никаким другим действием) в состояния 1 и 3. В состоянии 5 выполня- выполняется групповая операция чтения на выходе символа а и записи в вершину внутренней ленты символа q с последующим переходом в состояние 41. Таблица 10 а Ь Р q 1 2 3 2 1./> 3 5 4 4 2. /Г I.? 5 4. q а Ъ Р q 1 2, 3 4 1. Р 2 3 4, р-1 2. q~x 3 4. q 4 1.3 5 4, [a, q] Многотактный переход из начального состояния s0 с пустым наполнением внутренних лент в некоторое заключительное состоя- состояние s 6 F считается правильным, если наполнение внутренних лент в состоянии s также пусто. Автомат А воспринимает входную цепочку х 6 F (X), если возможен правильный переход из началь- начального состояния s0 в некоторое заключительное состояние s ? F, при котором происходит полное считывание цепочки а; из входной ленты. Множество всех цепочек, воспринимаемых автоматом А, образует язык L(A)<=F(X), представимый данным автоматом. При изу- изучении вопросов, связанных с представимостью языков, достаточно 1 В секциях считывания из внутренней ленты (см. табл. 9, 10) для наглядности указывается операция вычеркивания считываемой буквы (р
228 Глава 6. Параметрические системы программирования рассматривать автоматы с п внутренними лентами без выхода. Кон- Конкретизация памяти, используемой в автоматах с п внутренними лентами, приводит к известным концепциям бесконечных авто- автоматов. Автомат порождает выходную цепочку y?F(Y), если при не- некотором заполнении входной ленты возможен правильный переход из начального в заключительное состояние, при котором на выход- выходной ленте оказывается записанной цепочка у. Язык М порождается автоматом А, еели последним порождаются все цепочки языка и только они. Автомат отображает (или транслирует) язык L на язык М, если при начальных заполнениях входной ленты цепочками языка L автомат порождает все цепочки языка М и только такие цепочки, одновременно воспринимая соответствующую цепочку языка L. Проиллюстрируем сущность приведенных выше определений на некоторых характерных примерах, отражающих особенности соответствующих автоматных структур. Автоматы, внутренними лентами которых являются магазины, составляют класс и-магазинных автоматов [28]. В системном про- программировании для реализации многих важных процессов широко применяются одномагазинные автоматы (см. § 6.2). Пример 1. Построим одномагазинный автомат Аъ представ- представляющий зеркальный кс-язык Li = {х^хг\х 6 F (Щ), где 5t = = {#, b), xr—зеркальное отображение цепочки х. Автомат имеет входной алфавит X = {а, Ъ, ^} и алфавит внутреннего магазина Z={a',b'}. Функционирование автомата определяется табл. 11. Начальное состояние —1, заключительные — 6,7. Автомат считы- считывает с входной ленты начальную подцепочку х € F (Щ вплоть до появления на входе разделителя ^. Одновременно во внутреннем магазине накапливается копия зеркального образа прочитанной Таблица 11 § 6.1. Автоматы над внутренней памятью 229 а Ъ а' Ъ' 1 2 3 2 4, а' 3 4, V 4 2 3 5 Б 6 7 6 5 7 —= 5 подцепочки. Затем происходит опустошение магазина при считы- считывании с входа подцепочки хТ. Так, воспринимая цепочку abaab)^ ^baaba e Llt автомат функционирует следующим образом. Вначале считывает на входе подцепочку abaab, проходя последовательность состояний 1, 2, 4, 3, 4, 2, 4, 2, 4, 3; при этом в состояниях 2, 3 в магазине накапливается обращенная копия b'a'a'b'a' считанной подцепочки. Затем переходит в состояние 4, в котором с входной ленты считывается разделитель ^, и воспринимает «хвост» baaba, вырабатывая последовательность состояний 5, 7, 5, 6, 5, 6, 5, 7, 5, 6 так, что в состояниях 6, 7 происходит опустошение магазина. Рассмотренный пример отражает соответствие структуры цепо- цепочек зеркального языка основному принципу работы дгагазина: «по- «последняя запись считывается первой» (представление языков магазин- магазинными автоматами рассмотрено в § 6.2). бс(и)-Автоыатом называется автомат с п внутренними бобслеями. Изучению класса автоматных структур данного типа посвящена работа -[123]. В частности, представляет интерес рассмотрение класса бс-автоматов с одним бобслеем без выходов. Пример 2. Построим бс-автомат А2, представляющй нс-язык ^2 = {х^х\х б F{%)}, где % — {а,Ъ]. Автомат Л2 имеет входной алфавит Х={а, Ь, ^} и алфавит бобслея Z={a', b'}. Функцио- Функционирование бс-автомата А2 определяется также табл. 11 с учетом замены магазина бобслеем. Начальное состояние — ^заключитель- ^заключительные — 6, 7. Автомат считывает с входной ленты начальную под- подцепочку х 6 F (Щ, копируя ее в бобслее цепочкой х' g F (Z), и после появления на входе разделителя ^ производит опустошение боб- бобслея при считывании с входа подцепочки х. Так, воспринимая цепочку abba ^ abba 6 L, автомат А2 функционирует следующим образом. В состояниях 1, 4 считывает с входной ленты начальную подцепочку abba, наполняя (в состояниях 2, 3) бобслей ее копией a'b'b'a'; при этом вырабатывается последовательность состояний 1, 2, 4, 3, 4, 3, 4, 2. Далее, в состоянии 4 считывает на входе раз- разделитель ^, переходя в состояние 5 с последующим чтением «хвоста» abba входной цепочки и опустошением бобслея. Воспри- Воспринимая цепочку abba ^ abba б L2, автомат осуществляет правильный переход A, 2, 4, 3, 4, 3, 4, 2, 4, 5, 6, 5, 7, 5, 7, 5, 6) из начального состояния 1 в заключительное 6. Справедливо следующее утверждение [123]. Теорема 6.1. Для любого бс-автомата А существует эквива- эквивалентная ему машина Тьюринга М, так что L(A) = L (М), где L {А) и L (Л'Г) — языки, представимые соответственно автоматом А и машиной М. Следствие. В автоматах с одной вспомогательной лентой пред- ставимы произвольные рекурсивно-перечислимые множества. Счетчпковым автоматом или счетчнковой машиной [105] назы- называется автомат А с п вспомогательными счетчиковыми лентами.
230 Глава 6. Параметрические системы программирования Класс С (п) счетчиковых автоматов образует собственный подкласс в классах М(п) и-магазинных и В (п) бс (гс)-автоматов, так что С{п)а{М{п)[\В{п)). Пример 3. Построим недетерминированный счетчиковый авто- автомат А3, осуществляющий трансляцию Т : anbncn-^In (п = 1, 2, . . .)• Языком, представимым в А3, является нс-язык L3 — [anbncn \ п = = 1,2, . . .}, а язык L'3 = {1п | п = 1, 2, . . .} порождается данным автоматом. Трансляция состоит в чтении на входе цепочки апЪпсп, воспринимая которую автомат осуществляет правильный переход из начального состояния в заключительное, порождая на выходной ленте цепочку 1п, фиксирующую длину согласованных под- подцепочек на входной ленте. Автомат Ая имеет входной алфавит X = [а, Ъ, с), два счетчика с алфавитом Z = {р} и выходной алфавит Y = {1}. Секция записи, содержащая групповые операции, определяющие функционирование автомата, представлена в табл. 12. Начальное состояние —1, за- заключительное — 3. В состоянии 1 выполняется групповая операция чтения символа а на входе с одновременной записью в оба счет- счетчика символа р. Затем автомат может оставаться в состоянии 1, повторяя указанные действия, либо перейти в состояние 2, в котором Таблица 12 1 1, 2 [а, р, р, А] 2 2, 3[6, р-1, Л, Л 3 3[с, Л, р'1, А] осуществляется одновременно чтение символов Ъ с входной ленты и опустошение первого счетчика и запись на выходную ленту символов /. Переходя в состояние 3, автомат читает на входе символы с и опустошает второй счетчик. Автомат недетерминиро- недетерминирован в состояниях 1, 2. Автомат А3 воспринимает лишь цепочки языка L3. Действи- Действительно, пусть на вход автомата А3 поступает цепочка ambnch, при- причем тпфп. Если тп<.п, то автомат считывает в состоянии 1 на входе подцепочку ат, одновременно наполняя оба счетчика содер- содержимым рт. В состоянии 2 автомат воспринимает подцепочку Ьт, опустошая первый счетчик. При этом на входной ленте остается «хвост» bn~mck. Однако чтение в состоянии 2 очередного входного символа Ъ приводит к считыванию из пустого счетчика, что влечет за собой безрезультатный останов автомата. Если т > п, то автомат считывает в состояниях 1, 2 входную подцепочку атЪп и переходит в состояние 3, читая на входе символы с. При этом содержимым первого счетчика является цепочка рт~п и его дальнейшее опу- опустошение невозможно, что исключает правильный переход из на- § 6.1. Автоматы над внутренней памятью 231 чального в заключительное состояние. Следовательно, т. = п! Равенство пг=п — к устанавливается аналогично. Таким образом, язык L3 представим автоматом А3, ocym;ecTJ вляющим трансляцию цепочек х б L3 в цепочки х' € L'3. Рассмотренные концепции автоматов над внутренней памятью и соответствующие формы их представлений применяются при разработке систем автоматизации программирования как трансли- транслирующего, так и интерпретирующего типа. Основным назначением трансляторов является существенное ускорение процесса получения программ на машинных языках и обеспечение более полного ис- использования машинных ресурсов. Помимо перевода алгоритмов с одного языка (входного) на другой (промежуточный или язык ЭВМ) транслирующая система позволяет выявлять синтаксические и семантические ошибки в алгоритмах, чем частично решается задача отладки программ. Кроме того, благодаря соответствующим оптимизационным блокам системы, обрабатывающим алгоритмы посредством применения эквивалентных преобразований на уровне входного или выходного языка, можно получить программы, удов- удовлетворяющие определенным требованиям качества. Наряду с транслирующими системами все большее значение приобретают системы интерпретирующие, которые (как и транс- транслирующие) могут быть реализованы как программными, так и схем- схемными средствами. Интерпретатор осуществляет последовательную обработку (перевод) операторов программы, записанной в его входном языке, и одновременно их интерпретацию — выполнение машинных команд, реализующих данный оператор. Процессы перевода выпол- выполняемого алгоритма и его интерпретация при использовании этих систем тесно взаимосвязаны, что облегчает отработку и отладку программ, в частности при постановке на ЭЦВМ задач исследо- исследовательского характера. Однако повторное выполнение операторов в таких системах связано с повторным переводом их на язык интерпретации (как правило, язык машины), поэтому скорость выполнения готовых программ в системах интерпретации ниже, чем в системах трансляции. Проблема трансляции и интерпретации данного языка програм- программирования представляет собой по существу две проблемы — анализа и синтеза. В основу построения первых трансляторов положена идея компоновки рабочей программы из программ, соответствующих отдельным операторам исходного ачгоритма. Трансляторы такого рода многопроходовые, т. е. при их работе запись обрабатываемого алгоритма или его эквивалента просматривается несколько раз. Так, прп первом просмотре обрабатываются все описательные части программы, в которых приводятся характеристики данных, при втором — переводятся в промежуточные коды арифметические опера- операторы и т. д. Затем осуществляется общее распределение памяти и присвоение истинных адресов. Если входной язык системы
232 Глава 6. Параметрические системы программирования программирования оказывается пригодным для описания алгоритмов трансляции, то созданием таких систем в значительной мере реша- решается проблема автоматизации процесса конструирования трансля- трансляторов [128]. Появление языков для описания грамматик языков программи- программирования (так называемых метаязыков) создало предпосылки для построения алгоритмов синтаксического контроля и анализа, которые по заданному описанию грамматики одного из языков данного класса и программе в этом языке могут выдавать синтаксическое дерево программы. Существенно, что процесс синтаксического конт- контроля или анализа языка во многих случаях не зависит от конкрет- конкретных особенностей ЭВМ. Благодаря этому блок анализа транслятора становится универсальным, применимым для трансляции с других языков данного класса. Однако метод построения многих систем программирования жестко привязан к конкретным входному и вы- выходному языкам. Вместе с тем опыт эксплуатации ЭВМ, снабжен- снабженных соответствующими системами программирования, подсказывает, что пара «входной и выходной языки системы» не может оста- оставаться постоянной. Быстрое расширение сферы применения ЭВМ требует большой свободы при создании языков программирования, оперативной разработки новых и совершенствования существующих систем программирования. Кроме того, конструирование систем программирования связано с исследованием класса языков, которые получаются в результате несущественных изменений входного языка с целью достижения разумного компромисса между изо- изобразительной мощью языка и сложностью строящейся системы. В то же время даже незначительная модификация входного или выходного языка в системе программирования, жестко привязан- привязанной к последним, может привести к глобальной перестройке всей системы в целом. Это обусловило интенсивное развитие нового подхода к разработке систем программирования, ориентированных на класс входных и выходных языков, — параметрических систем программирования [95—98]. Развитие параметрических систем программирования тесно связано с разработкой методов их конструирования, оставляющих неизменной значительную часть создаваемой системы, независимо от выбора входного и выходного языков из некоторых классов. Такой подход к организации структуры систем программирования определяет ее качество, трудоемкость и степень автоматизации разработки. Структура синтаксически управляемых трансляторов представ- представляет собой совокупность управляющей программы и семантичес- семантических подпрограмм, осуществляющих замену синтаксического раз- разложения программы ее семантическим эквивалентом в выходном языке транслирующей системы, в частности в машинном. Транс- Транслятор обрабатывает исходную информацию, посимвольно просмат- § 6.1, Автоматы над внутренней памятью 233 ривая ее в порядке записи. При этом программа обработки каждого символа определяется, вообще говоря, не только этим символом, но и содержащей его синтаксической структурой. Некоторые сим- символы на данном уровне анализа не могут быть обработаны и за- засылаются в специально организованную вспомогательную память: магазинную, бобслей, счетчиковую и другие, в зависимости от соответствующей синтаксической структуры. Таким образом, перевод с одного языка на другой делится на два этапа, которые часто выполняются одновременно: 1) синтакси- синтаксическое разложение исходной записи программы, т. е. перевод ее на язык с тривиальным синтаксическим анализом (проблема ана- анализа); 2) замена элементов разложения их семантическими экви- эквивалентами на выходном языке, в частности машинном. Как правило, при этом перевод распадается на цепочку указанных этапов, свя- связанную с использованием одного или нескольких промежуточных языков (посредников) [128], откуда возникают некоторые общие проблемы, безотносительно к входным — выходным языкам, так как трудности перевода обусловливаются не столько избранными языками, сколько грамматиками, задающими эти языки. Проблема конструирования синтаксически управляемых транс- трансляторов, ориентированных на широкий класс грамматик, содер- содержащих аппарат для своего расширения, стимулировала новые исследования по формализации синтаксиса и семантики языков программирования. Процессы трансляции и интерпретации доста- достаточно широкого класса языков программирования происходят в одних и тех же условиях и могут быть описаны алгоритмами выполнения заданной переработки информации в зависимости от значений некоторых параметров, определяющих конкретный язык. Если запись в исходном языке транслируется в некоторый универ- универсальный машинно-независимый язык, достаточно близкий к внут- внутренним языкам определенного класса ЭВМ, формальное описание синтаксиса и семантики языка приобретает машинно-независимую форму, что позволяет автоматизировать процесс построения транс- трансляторов по их описанию для пары из множества входных и выход- выходных языков. Основные трудности задачи в данном случае заклю- заключаются в создании удобных метаязыков, на базе которых могут быть разработаны параметрические системы (транслирующего или интерпретирующего типа), ориентированные на класс языков. В работах [15, 129, 96—98] предложен метод построения пара- параметрических систем, состоящий в эффективном решении проблемы синтаксического анализа для широкого класса языков программи- программирования. Этот метод положен в основу параметрической системы транслирующего типа [88], ориентированной на класс языков. При разработке использован метод задания семантики по синтаксической структуре предложения языка посредством индукции. В связи с этим к проблеме формализации языка программирования добав-
234 Глава 6. Параметрические системы программирования ляется проблема формализации его синтаксического и семантичес- семантического описания, которая решается путем создания метаязыка для описания синтаксиса и на его основе — метаязыка для описания семантики языков программирования. В качестве последнего пред- предложен ряд языков, в частности язык СЕМОЛ [88], построенный на базе адресного языка [128] (см. § 6.4, 6.5). Дальнейшее развитие идей автоматизации программирования привело к созданию операционных систем, в которых автоматизи- автоматизируется не только процесс программирования (включая хранение, документирование и размножение программ), но и труд опера- оператора [87]. В связи с расширением использования ЭВМ возникли задачи, компактное описание которых выходит за рамки одного процедур- процедурно-ориентированного языка [36]. Для решения таких задач были созданы языки общего назначения: ПЛ/1 [102], Симула-67 [42] и АЛГОЛ-68 [11], которые можно отнести к языкам третьего поко- поколения. При описании синтаксиса и семантики языков, подобных АЛГОЛу-68, может быть использован, в частности, аппарат много- многоосновных алгебр (см. § 3.5, 6.7, а также [71]). § 6.2. Синтез магазинных автоматов Одной из важных проблем в разработке современных систем про- программирования является проблема синтаксического анализа про- программ. Процесс синтаксического анализа программы состоит в рас- распознавании правильности данной программы, т. е. ее принадлеж- принадлежности к рассматриваемому алгоритмическому языку2. Этот этап называется этапом синтаксического контроля программы. Одно- Одновременно с контролем осуществляется описание синтаксической структуры правильных программ, подобно тому как производится грамматический разэор предложений в естественных языках. Для формального описания синтаксиса алгоритмических языков широко применяется так называемая бэкусовская нормальная фор- форма. Пусть, например, требуется описать синтаксическую структуру формул, строящихся с помощью сложения и умножения перемен- переменных, идентификаторы которых представляют собой произвольные слова в двухбуквенном алфавите (х, у). Применяя бэкусовскую нотацию, определение произвольной формулы указанного вида можно задать двумя формулами: (формула) :: = «формула» ^ ((формула» | (переменная) | ((формула)) + ((формула)) (переменная) :: = х\у\(переменная)х|(переменная)у. - Программа здесь рассматривается как цепочка символов, а алгорит- алгоритмический язык — как множество таких цепочек. § 6.2. Синтез магазинных автоматов 23! Существует более сжатая форма записи этих соотношений в виде системы уравнений в языках (см. § 5.3). Для осуществления такой записи прежде всего введем буквенные обозначения всех понятий и символов из приведенных бэкусовских строчек: а, Ъ — соответ- соответственно открывающая и закрывающая скобки, с, d — знаки сло- сложения и умножения. Тогда, согласно приведенному определению, понятие (формула) означает некоторое множество слов (язык) в алфавите {а, Ь, с, d, х, у). Обозначим это множество буквой S., а множество слов, представленное понятием (переменная), —R Тогда вместо бэкусовских строк может быть записана эквивалент- эквивалентная им система уравнений3 S:: = R V aSbcaSb \/ cSbdaSb, \ R:: = x\/y\/Rx\/Ry. J F.1 Операция дизъюнкции здесь понимается как объединение соот ветствующих множеств, произведение множеств слов PQ обозна чает множество, составленное из всех слов вида pq, где р 6 Р q^Q. Используя описанную в § 5.3 методику решения систеи уравнений, обозначим через <S@) и i?<°> множества слов, получае мые подстановкой в правые части уравнений F.1) вместо S ч1 пустого множества 0. Тогда 5@) = 0 и i?<°> = x\Jy. При любо! * = 0,1,2, ... Нетрудно видеть, что при всех i S^<= и R(i)czRli+1\ Объе динения 0 5A) = S и Q 2?(l> = R представляют собой минималь i=0 г=0 ное решение системы уравнений F.1). Легко убедиться, что пр: этом множество S состоит из всех формул, а множество R — и всех переменных в смысле приведенного выше определения эти понятий. Указанным приемом любое описание синтаксиса в виде бжу совских нормальных форм может быть представлено в виде систем] уравнениях в языках. Преимуществом последней формы запис: наряду с краткостью является также возможность выполнена различных тождественных преобразований. Для подобных преоЕ разований используется коммутативность дизъюнкции (объедине ния) языков и дистрибутивность умножения по отношению к дизт юнкции. Это позволяет раскрыть скобки и выносить за скобк общие множители так же, как в обычной алгебре (учитывая липи 3 Здесь п до конца настоящего параграфа синтакорческпе понятия (hi терминалы) обозначаются прописными латинскими буквами, а состояли в соответствующих автоматах — греческими.
236 Глава 6. Параметрические системы программирования ¦что умножение языков в общем случае некоммутативно). Исполь- вуя подобные преобразования, систему F.1) можно привести к виду S:: =RyaSb(c\/d)aSb, "I F.2) R:: = x\/y\/R(x\/y). При построении трансляторов с входных языков на машинные в традиционных ЭВМ синтаксический анализ выражений на вход- входных языках осуществляется программными средствами. Программы получаются весьма громоздкими, а их выполнение занимает много машинного времени. В машинах со структурной интерпретацией языков синтаксический анализ выражений может осуществляться схемными методами, с помощью которых алгоритмы анализа реа- реализуются экономнее и гораздо быстрее [18]. Основным методом как программного, так и схемного решения является построение магазинных автоматов, представляющих выбранные языки. Для решения вопросов, связанных с представимостью языков автома- автоматами над внутренней памятью, особую роль играют правильные переходы. Напомним, что переход автомата из состояния а в со- состояние р называется правильным, если в обоих этих состояниях (но, вообще говоря, не в промежуточных) внутренние ленты авто- автомата пусты. Можно дать и другое определение правильности пере- перехода магазинного автомата из одного состояния в другое. Если в начальном состоянии а во внутреннем магазине хранилось какое- то слово р, то переход из состояния а в состояние р называется правильным тогда и только тогда, когда в состоянии Р содержи- содержимое внутреннего магазина равно р, а во всех промежуточных состояниях оно не меньше р. Иными словами, стирание букв первоначального заполнения внутреннего магазина во время всех промежуточных переходов запрещено. В силу предположения о не- неопределенности переходов при считывании с лент пустой буквы приведенные определения, очевидно, эквивалентны: из состояния а в состояние р правильный переход в смысле первого определения возможен тогда и только тогда, когда переход правильный в соот- соответствии со вторым определением. В остальном на случай мага- магазинных автоматов полностью распространяются приведенные в § 6.1 основные понятия, связанные с представимостью языков, их порождением, отображением (трансляцией) одного языка на другой и др. Задача построения магазинного автомата, представляющего заданный язык, называется задачей синтеза соответствующего авто- автомата. Оказывается, что для всех языков, которые задаются урав- уравнениями вида F.1), получаемыми из произвольных бэкусовских нормальных форм, задача синтеза всегда разрешима. Опишем один простой и естественный алгоритм синтеза [28, 18]. Рассмотрим задачу синтеза автомата, представляющего язык, за- задаваемый системой уравнений F.2). Первый шаг алгоритма состоит § 6.2. Синтез магазинных автоматов 237 в том, что все вхождения неизвестных (S и R) в правые части урав- уравнений индивидуализируются путем приписывания разным вхож- вхождениям одной и той же переменной разных индексов. В нашем случае это приводит к выражениям S = R1\/aS1b(c\/d)aS2b, R = x\/y\/R2(x\/y). F.3) На втором шаге правые части уравнений, состоящие из двух или более дизъюнктивных членов, заключаются в скобки, после чего все символы в них (включая знаки дизъюнкции и скобки, но не введенные индексы у переменных) разделяются вертикальными черточками так, чтобы каждый из них оказался между двумя последовательными черточками. Выражения F.3) принимают при этом вид S=\(\R1\\/\a\S1\b\(\c\\j\d\)\a\S2\b\)\, R = \(\x\y \у\у \R2\(\x\\/\y\)\)\. F.4) На третьем шаге все черточки нумеруются последовательно целыми числами. При этом черточки, которые стоят в начале всех дизъюнк- дизъюнктивных членов, заключенных в скобки, получают тот же номер, что и черточка перед скобками, а те черточки, которые стоят в конце этих дизъюнктивных членов, нумеруются так же, кан черточка после соответствующих скобок. Остальные черточки по- получают различные номера. После выполнения указанной нуме- нумерации 5 |(|Z?| |(| 11 ||(| 455 |l)k| 6667 !(MV|*/|V|2|(H VM)I)I 9 9 10 9 10 9 11 11 10 11 10 10 10 Все введенные номера (назовем их местами в данных выражениях) отождествляются с состояниями синтезируемого автомата. Все переменные с индексами, входящие в правые части построенных выражений (Slt S2, Ri, R2), составляют алфавит внутреннего мага- магазина. Буквы а, Ь, с, d, х, у — входной алфавит (алфавит входного магазина). Следующий шаг состоит в построении таблицы синтезируемого автомата по правилам, определяющим элементарные действия автомата в каждом состоянии. 1. Если состояние нумерует место в выражении непосредст- непосредственно слева от какой-нибудь буквы входного алфавита (в нашем примере места 1, 4, 5, 6, 8, 9, 11), то осуществляется считывание этой буквы из входного магазина и переход к месту (состоянию) непосредственно справа от соответствующей буквы. 2. Если состояние нумерует место непосредственно слева от какой-нибудь буквы алфавита внутреннего магазина (места 1, 3,
238 Глава 6. Параметрические системы программирования 7, 9), то осуществляется запись этой буквы в магазин и переход к самому левому начальному месту выражения, равному этой букве без индекса. Например, из места 1 переходим в место 9, записывая в магазин R1, или из места 7 переходим в место 1, записывая в магазин 52. 3. В самых правых (конечных) местах выражений B и 10) осуществляется считывание (верхней) буквы из внутреннего мага- магазина и переход к месту, расположенному непосредственно справа от считанной буквы (благодаря индексации это место определяется однозначно). Если магазин пуст, соответствующий переход не опре- определен и автомат должен остановиться. Заметим, что, как будет ясно из дальнейшего, в конечных местах выражения, равного какой-либо букве алфавита магазина (например, S), может счи- тываться только та же буква с различными индексами. Для других букв алфавита магазина (в нашем примере Rlt R2) соответствую- соответствующий переход считается неопределенным. Таблица 13 а & с d X У Si s2 д2 i 3 9, Rt 2 A.S71 я <r~x о, o2 3 4 5 5 6 6 6 7 7 1.^2 8 2 9 10 10 9, R2 10 2, RT1 11, R~* ii 10 10 Построим таблицу автомата для рассматриваемого примера (табл. 13). Автомат, задаваемый этой таблицей, будет, как легко видеть, недетерминированным, ибо в состояниях 1 и 9 не выпол- выполняется условие наличия лишь одного элементарного действия. § 6.2. Синтез магазинных автоматов 239 Во всех незаполненных местах таблицы соответствующие элемен- элементарные действия не определены. Исходная система уравнений F.2), по которой построена табл. 13, задает два языка: S и R. Автомат, заданный табл. 13, представ- представляет оба языка. Для представления языка S в качестве началь- начального состояния должно быть выбрано начальное место первого выражения A), а в качестве заключительного состояния — ко- конечное место этого выражения B). Аналогично для представления языка R начальное состояние автомата должно быть отождествлено с начальным местом второго выражения, а заключительное — с его конечным местом (места соответственно 9 и 10). Это правило дей- действует и при любых других системах уравнений. Описанный алгоритм применим к любой конечной системе языков, заданных бэкусовскими нормальными формами. Нам оста- осталось лишь доказать, что строящиеся с помощью этого алгоритма автоматы действительно представляют данные языки. Чтобы не усложнить систему обозначений, проведем доказательство на рас- рассмотренном примере (метод доказательства непосредственно пере- переносится и на общий случай). Введем следующие обозначения: 5(°>- и R("'-события, »9<0> = = 0V а 0 Ь (су d) a 0 Ъ = 0 и i?(°> = x\Jy\J 0 [x\Jy)~ x\/y; при любом i = 0, 1, 2, ... Pf?i — язык, состоящий из всех слов, при восприятии которых построенный нами автомат (задаваемый табл. 13) осуществляет правильный переход из i-ro состояния в у'-е так, что максимальное число букв, дописываемых во внутренний магазин, ни в каком из промежуточных состояний не превышает к (в у-м состоянии в силу определения правильного перехода к — 0). Очевидно, что Pit\ = = б1*' и ° д°\ \о Предположим, что уже доказана справед- справед= ?(г) и Рэ%о = #(г) ПРИ всех г = 0, 1, ... ливость равенств ... ,к—1,к. Тогда sk+i = RmyaSmb (с v d) а5(йN = pwio v аР№Jб (c v d) flp№Jb, JR(ft+1> = a.Vl/V^(fe)(^VJ/) =x\/yyP^i0(x\/y). Из описанных выше правил синтеза автомата непосредственно вытекает, что при восприятии любой цепочки р из события Pi/ioV V aPi,zb (c\/ d) aP[']2b автомат совершит правильный переход из состояния 1 в состояние 2, а в промежуточных состояниях запол- заполнение магазина не превысит к-\-1 букв. Действительно, если р 6 -P^'iO) то при считывании этого слова в состоянии 1 автомат
240 Глава 6. Параметрические системы программирования должен избрать путь записи Rx в магазин и перехода в состояние 9. После этого, согласно определению множества Р$\ автомат осу- осуществит правильный переход в состояние 10, считав при этом слово р из входного магазина. Учитывая уже записанную в магазин букву Rt, заполнение магазина в промежуточных состояниях не превысит k + li а в заключительное, 10-е, состояние автомат при- придет, имея в магазине лишь букву i?x. Считав эту букву, он перейдет в состояние 2 и, поскольку магазин окажется пустым, остановится. Таким образом, действительно осуществится требуемый правиль- правильный переход из состояния 1 в состояние 2. Аналогично разбирается случай р е aP^2b(c\/d) aP^2b, т. е. по- показывается, что Р§\0 V аР1%Ь (с V d) aPf\b a Pf^- Точно таким же способом доказывается, что Пусть р — любое слово из Pf^t^. Если р?РA%, то по предполо- предположению индукции р € S(h), а так как ?<ft> a Slh+1\ то р е 5(ft+1). Если же pg" Р[}2, то, поскольку к -\-1 ^ 1, при восприятии слова р автомат обязательно использует магазин. Выделим первую запись в магазин при считывании слова р. Из табл. 13 следует, что для этого есть две возможности: запись в магазин может произойти сразу в состоянии 1 (запишется RJ жиж в состоянии 3 после предварительного считывания из входного магазина буквы а (во внутренний магазин запишется при этом буква S}). Рассмотрим второй случай (первый случай рассматривается совершенно ана- аналогично), т. е. р = арх. Так как при этом в магазин запишется буква Si, а автомат, перейдя из состояния 3 в состояние 1, должен осуществить правильный переход (из состояния 1 в состояние 2), то в некотором состоянии эта запись должна быть стерта. Согласно табл. 13 это возможно лишь в состоянии 2. Следовательно, pi = = 9iP2> гДе Qi € Р{и2- После стирания Si из магазина автомат пере- переходит в состояние 4. В этом состоянии автомат должен обязательно считать из входного магазина сначала букву Ь, затем с или d, после чего, считывая букву а, он попадает в состояние 7, где в магазин будет записана буква S2, а автомат перейдет в состояние 1. Таким образом, р2 = Ьсар3 или р2 = bdap3. Буква S-2 снова должна быть где-то считана. Поскольку это может произойти только в состоянии 2, р3 = q^Pt, гДе 9г € Pi,\- Но после считывания буквы S2 автомат попадает в состояние 8, где он может считать лишь букву Ъ из входного магазина и по- попасть в заключительное B) состояние с пустым магазином. Так как автомат остановится, то слово р должно быть на этом исчерпано (ведь р g Pf^)). Следовательно, Pi = b и р = aq-Jjjaq^b, где j = с § 6.2. Синтез магазинных автоматов или d. Так как qx ^) (к+1) и q2 то р Р$\о \b (c\/d) X (k+i) Таким образом, Р^^ czS(k+i), откуда, учитывая ранее выве- выведенное обратное включение, получаем P^t1' = Sih+i). Аналогично доказывается, что Pf,+io = R^h+i). Тем самым индукция проведена. А так как объединение всех множеств Sh (к = 0, 1, 2, . ..) есть Sr 00 ... а объединение U Р[ 2 = -Pi 2 — совокупность входных слов, осу- ществляющих правильные переходы автомата из состояния 1 в состояние 2, то мы доказали, что язык S действительно пред- представлен построенным автоматом. Доказательство (при выборе- в качестве начального 9-го, а в качестве заключительного Ю-го состояний) справедливо и для языка R. Тем самым полностью- обоснована справедливость описанного выше алгоритма синтеза магазинного автомата. Рассмотрим некоторые упрощения, позволяющие уменьшить число состояний магазинного автомата или число букв в алфавите- его внутреннего магазина. Пусть некоторая буква записывается в магазин только в начальном состоянии автомата, переход же, как требуется алгоритмом синтеза, совершается опять в это же- состояние. Считывается эта буква в конечном.состоянии автомата. Предположим, что автомат переходит в то же конечное состояние- (т. е. не изменяет состояния). Эту букву, как и сопутствующие ее- записи и считыванию переходы (сохраняющие прежнее состояние), можно исключить из таблицы автомата, не изменив представляемые- автоматом языки. Действительно, записанная в начальном состо- состоянии, она не оказывает никакого влияния на выполняемые опе- операции до тех пор, пока автомат не попадает в заключительное- состояние. Теперь буква может оказать влияние только тогда, когда она находится в верхней ячейке магазина, но тогда она обязательно должна быть в этом состоянии считана. Поскольку же- состояние при этом не изменяется, то все происходит так, как если бы эта буква не была записана в магазин. Если произвести операцию объединения начальных состояний,, то, как легко видеть, места справа от букв магазинного алфавита,, первых в дизъюнктивных членах правых частей уравнения вида F.3) илн F.4), можно отождествить с конечными местами выра- выражений для соответствующих букв (без индексов). Если эти места, как, например, место справа от буквы R± в рассмотренном нами примере, были ранее отождествлены с другими состояниями, то их следует предварительно «разъединить» и затем объединить с новыми местами. При этом добавляется переход (без выполнения каких-либо других действий) из нового объединенного состояния в состояние, с которым рассматриваемое место было объединено
242 Глава 6. Параметрические системы программирования до сих пор. В нашем примере это приводит к следующей новой нумерации мест: s = ll 12 \(\\V\y\ 119 19 4' 4 5 ' 4 5' 5 '6 ' 7 8 8 9 '9 9 ' 9~ 9 9 9 Теперь буквы i?x и R2 будут записываться в магазин в состо- состоянии 1 с сохранением состояния и считываться в состоянии 9 опять-таки с сохранением состояния. Как отмечалось, эти буквы могут быть исключены из алфавита магазина. В результате по- получим таблицу автомата, представляющего языки S и R (табл. 14). Язык S представляется состоянием 8, а язык R — состоянием 9. Начальное состояние для обоих языков — 1. Таблица 14 а Ъ с d X У Si 1 2 9 9 2 1.^1 3 4 4 5 5 5 6 6 1. S2 7 8 8 i.st1 9 9 9 8 Легко видеть, что описанным способом всегда можно устранить из алфавита магазина все буквы, являющиеся первыми буквами дизъюнктивных членов уравнений, задающих рассматриваемые языки. Заметим, что хотя автомат, задаваемый табл. 14, недетерми- недетерминированный, его нетрудно детерминизировать, если учесть, что переход из состояния 9 в состояние 8 следует выполнять лишь тогда, когда во входном магазине очередная считываемая буква не х или у. В противном случае автомат после двух шагов перей- § 6.2. Синтев магазинных автоматов 243 дет в состояние 3 или 7 и остановится, поскольку дальнейшие переходы будут не определены. Таким образом, справедлива следующая теорема. Теорема 6.2. Всякий кс-язык может быть представлен авто- автоматом (вообще говоря, недетерминированным) с одним внутренним магазином. Справедливо и обратное утверждение: одномагазинные авто- автоматы представляют лишь кс-языки. Проблема анализа состоит в построении системы уравнений, порождающей язык, представ- представленный данным автоматом [28]. Несколько видоизменив идею, предложенную А. А. Летичевским, опишем один из возможных простых алгоритмов анализа одномагазинного автомата (вообще говоря, недетерминированного). Для любой пары состояний (ar P) автомата А обозначим через La р язык, представимый данным авто- автоматом при выборе а в качестве начального и р — в качестве за- заключительного состояний. Пусть Ма — множество состояний, в которые автомат может перейти из состояния а за один такт, не выполняя никаких записей или считываний; М^а) — множество всех состояний, в которые можно перейти за один такт из состояния а, считывая с входной ленты непустой символ а; Ма> н — множество всех состояний, к которым возможен переход из а за один такт, сопровождаемый записью во внутренний магазин непустого символа R (принадле- (принадлежащего алфавиту данного магазина); NR — множество состояний, в которых возможно считывание символа R из внутреннего мага- магазина, a iVT) н — множество состояний, в которые можно попасть за один такт из состояния f g Nr. Наконец, если аФ р, где е — пустое слово; 0 — пустой язык. На основании второго определения правильности переходов для любой пары (а, Р) со- состояний рассматриваемого автомата А можно записать уравнение ха, р = V хъ 9 V V V ахъ р v у_ V V "Л1о, В V V #7. Д^о, S V % (Х*, где % — входной алфавит автомата А, 5К — алфавит внутреннего магазина (предполагается, что дизъюнкция пустого множества членов представляет собой пустое множество). Рассмотрим систему уравнений Q указанного типа, взятых по всевозможным парам состояний (а, Р) автомата А. Тогда справедливо следующее ут- утверждение.
244 Глава 6. Параметрические системы программирования Теорема 6.8. Минимальное решение системы уравнений Q сов- совпадает с системой языков La р для любых пар состояний (ее, C) ¦автомата А. Для задания языка L, представимого автоматом А, посредством системы уравнений достаточно к системе Q присоединить еще ¦одно уравнение: х = V хч я» гЛе ^о — начальное состояние авто- автору ь°>р мата A, F — множество его заключительных состояний. Рассмот- Рассмотренный алгоритм анализа одномагазинных автоматов может быть улучшен с помощью минимизации числа уравнений, входящих в систему Q. Остановимся кратко на представлении языков гс-магазинными автоматами (rc^l). Заметим, что представимость и порождение языков гс-магазинными автоматами тесно взаимосвязаны: если •существует гс-магазинный автомат А (детерминированный или недетерминированный), порождающий некоторый язык L, то может быть построен гс-магазинный автомат В (вообще говоря, недетер- недетерминированный), представляющий язык L. Действительно, пере- переместим в табл. 14, задающей функционирование автомата А, все переходы из секции чтения входной ленты в секцию записи, а все переходы, связанные с записью на выходную ленту, — в секцию чтения входной ленты. Если переход из состояния а в состояние 6 -сопровождался записью символа у на выходную ленту, то в секции чтения этот переход будет осуществляться лишь при условии чтения символа у на входе автомата В. При таких перемещениях, ¦очевидно, не нарушится правильность переходов автомата А. В результате автомат В будет воспринимать те и только те це- цепочки, которые ранее порождались автоматом А. В заключение приведем некоторые примеры представления языков 7г-магазинными автоматами. Пример 1. Построим двухмагазинный автомат, представля- представляющий нс-язык Li^lx^x) для любого x^F(%), где 9t = {а, Ь} (см. § 5.2). Функционирование этого автомата определено табл. 15. В начальном состоянии 1 автомат считывает с входного магазина символы а или Ъ и переходит в состояние 2 или 3 соответственно, одновременно записывая во внутренний магазин I символ е. В со- состояниях 2 и 3 записывает в магазин I символы А и В соответ- соответственно, переходя в состояние 4, повторяет цикл, связанный ¦с записью в магазин I символов А и В при считывании с вход- входного магазина соответствующих символов а или Ъ и переходит в состояние 5 при считывании ^. Так, если во входной магазин записано слово abb % abb 6 Ьъ то, переходя в состояние 5, авто- автомат считает с входного магазина подцепочку abb ^, одновременно •записав в магазин I цепочку ВВАЕ. В состояниях 5—7 осущест- осуществляется перезапись из магазина I в магазин II, так что при счи- считывании из магазина I символа е автомат, опустошив магазин I § 6.2. Синтез магазинных автоматов 245 a Ъ * A В ? A В 1 2 3 2 4, A (I) 3 4.5A) 4 2 3 5 5 6, Л LIT1 8, e-i 6 5. 4A1) 7 5. В (II) T а б л п 8 9, Л" 10, A-1 ца по 8 15 ш 8 II и 8аписав в магазин II цепочку ABB, переходит в состояние 8. В состоянии 8 и заключительных состояниях 9 и 10 автомат читает из магазина II символы А и В и затем с входа — символы а и Ъ соответственно, так что цепочка ABB стирается из магазина II, если на вход поступает abb. Построенный автомат детерминиро- детерминированный во всех состояниях, кроме начального 1, в котором одно- одновременно выполняется чтение из входного магазина и запись в магазин I символа е. Пример 2. Автомат, функционирование которого определено табл. 16, представляет нс-язык (см. § 5.2) L2 = {anbncn\ ?г= 1, 2, . . .}. В начальном состоянии 1 автомат читает с входа символ а и, записывая в магазины I и II символ А, переходит в состо- состояние 4. Затем этот цикл повторяется при чтении с входа символа а. При подаче на вход символа Ъ автомат переходит в состояние 5, стирая из магазина I символ А. В состоянии 6 при поступлении Ъ вновь происходит стирание А из магазина I, а при подаче с в за- заключительном состоянии 7 стирается А из магазина II. В состо- состоянии 8 повторяется обращение к магазину II при чтении с входа символа с. Таким образом, правильный переход из состояния 1 в заключительное состояние 7 (связанный с опустошением магазинов I и II) осуществляется лишь при подаче на вход цепочки вида anbncn 6 L2. Из табл. 16 следует, что построенный автомат детер- детерминированный. Пример 3. Снабдим автомат, построенный в примере 2, выходной лентой с алфавитом Y=*{b}. Заменив в состоянии 5
246 Глава 6. Параметрические системы программирования Таблица 16 а Ъ с I—A И—В 1 2 2 3, А (I) 3 4, А (II) 4 2 5 5 6, Л 6 5 7 m 8, Л 8 7 (см. табл. 16) операцию чтения символа а из магазина I групповой операцией [Л, -4, Л> Ъ], помещенной в секцию записи с после- последующим переходом в состояние 6, получим автомат, реализующий трансляцию Т: anbncn->bn при любом п = 1, 2, ... .Действи- .Действительно, как и в примере 2, этот автомат представляет язык {anbncn\п= 1, 2, ...}. В то же время он порождает язык {Ьп\ п = = 1, 2, . . .}, причем при заполнении входной ленты цепочкой anbncn осуществляет правильный переход из начального состоя- состояния 1 в заключительное 7, порождая выходную цепочку Ъп. Класс языков, представляемых гс-магазинными автоматами G1^2), совпадает с классом рекурсивно-перечислимых множеств. Это утверждение следует из возможности представления в авто- автоматах с двумя внутренними магазинами средств известных алго- алгоритмических систем, в частности машин Тьюринга [76, 154]. § 6.3. Методы синтаксического анализа в системах программирования Одним из основных блоков в современных системах программи- программирования является анализатор — блок, осуществляющий синтакси- синтаксический анализ входной программы. Классификация методов синтаксического анализа, используе- используемых при разработке анализаторов, проводится исходя из стратегии анализа, положенной в основу того или иного метода [104]. Наибольшее распространение получили методы синтаксического анализа, основанные на стратегии восходящего анализа, которая состоит в сведении анализируемой цепочки с помощью продукций данной грамматики к ее аксиоме. Методы этого класса называ- называются методами анализа сверткой. § 6.3. Методы синтаксического анализа в системах программирования 247 Рассмотрим, например, язык арифметических выражений, по- порожденный грамматикой с системой продукций а->(аХр), F.5) а->(а + Ь), F.6) Р->Ь, F.7) где а — аксиома, +, Х> (>)> а> ^ — терминальные символы, а, р — нетерминальные символы. С помощью стратегии свертки проана- проанализируем цепочку F.8) Выделим в ней подцепочку (а + Ь) и заменим ее как правую часть про- продукции F.6) нетерминалом а, кото- который составляет левую часть «той продукции. Получим цепочку ((а ^ Ь) ^Ь), в которой на основании про- продукции F.7) первое вхождение сим- символа Ъ заменяется нетерминалом р. Применив к цепочке ((а ^ р) ^ Ь) продукцию F.5), получим цепочку (а^Ь). Наконец, вновь применив к полученной цепочке продукцию F.7), а затем F.5), свернем анали- анализируемую цепочку в аксиому а. Таким образом, цепочка F.8) правильна и ей соответствует дерево синтаксического анализа, представленное на рис. 34. Рассмотренному классу двойственны методы анализа разверт- разверткой, основанные на стратегии нисходящего анализа — развертки. В противоположность анализу сверткой процесс развертки состоит в получении анализируемой цепочки из аксиомы данной грамма- грамматики, что соответствует построению вывода указанной цепочки. Так, в рассмотренном выше примере цепочка F.8) может быть получена в результате развертки аксиомы о с использованием продукций F.5)—F.7) данной грамматики: Рпс. 34. Р) X Р) X Р) =* ((°Х Р) X Р) Методам анализа разверткой посвящены работы [296, 126, 142, 151, 152, 157, 160]. В остальных методах анализа обычно сочетаются элементы свертки и развертки. Заметим, что и для свертки, и для раз-
248 Глава 6. Параметрические системы программирования вертки существуют языки и грамматики, синтаксический анализ которых производится эффективнее методами, основанными на данной стратегии, чем двойственными методами. Описанные выше стратегии анализа левосторонние, так как обработка символов цепочки производится слева направо. Однако, в отличие от свертки, развертка представляет собой целенаправ- целенаправленную стратегию, поскольку на каждом шаге анализа преследу- преследуется цель, состоящая в таком выборе применяемых продукций, чтобы к уже полученной начальной подцепочке можно было при- присоединить очередной символ или группу символов анализируемой цепочки. При анализе сверткой на каждом шаге обрабатывается самая левая подцепочка, которую можно свернуть, и более глубокие цели не ставятся. Обычно «чистый» анализатор, основанный лишь на свертке или развертке, может использовать продукции, которые впослед- впоследствии приводят к тупикам, т. е. цепочка анализируется до конца и дальнейший анализ ее невозможен. Для преодоления тупиков, как правило, предусматривают возврат к некоторой метке, откуда можно выбрать новый вариант анализа. Такой возврат сопровож- сопровождается восстановлением отдельных подцепочек анализируемой цепочки (при свертке) и стиранием некоторых присоединенных групп символов (при развертке). Другой метод преодоления ту- тупиков связан с параллельным проведением всевозможных анализов, из которых исключаются тупиковые. В связи с левосторонней обработкой анализируемых цепочек с точки зрения практических приложений значительный интерео представляют формализмы для описания языков, допускающие беступиковый (беспереборный) синтаксический анализ. При бес- беступиковом анализе цепочки х появление хотя бы одного тупика свидетельствует о том, что x^L(G), где L (G)— язык, порожден- порожденный заданной грамматикой G. Однако в общем случае,.как от- отмечалось выше, методы синтаксического анализа могут сопровож- сопровождаться значительным перебором, так как из наличия одного тупика еще нельзя заключить, что x^L(G). (В частности, нижняя оценка сложности алгоритмов синтаксического анализа кс-языков, как известно, равна п2, где п — длина анализируемой цепочки [5]). Стремление избежать попадания в тупик привело к созданию модифицированных анализаторов, в которых находят отражение элементы как свертки, так и развертки, вследствие чего проис- происходит слияние обоих направлений в решении проблемы анализа, основанном на указанных стратегиях. Применение продукций на очередном шаге анализа модифицированные анализаторы связывают с проверкой некоторых контекстных условий, относящихся к пред- предыстории анализа, а также к дальнейшим путям его продолжения. кс-Грамматика G(m, n) называется грамматикой с (/те, п) огра- ограниченным контекстом [144] тогда и только тогда, когда приме- § 6.3. Методы синтаксического анализа в системах программирования 249 нение каждой ее продукции однозначно определено левым кон- контекстом, состоящим из т символов, и правым контекстом из п символов. Кроме того, при левостороннем анализе цепочки на каж- каждом шаге осуществляется поиск самой левой подцепочки, которая является правой частью некоторой продукции грамматики G (т, п). Затем анализатор осуществляет свертку при условии, что т сим- символов слева и п символов справа от выделенной подцепочки удовлетворяют соответствующим контекстам. В частности, грам- грамматиками с A.1) ограниченным контекстом являются грамматики предшествования (или старшинства разделителей), впервые рас- рассмотренные Р. Флойдом [143]. кс-Грамматика G = (9t, FH, о, Р) называется операторной или грамматикой с разделителями, если выполняется ограничение, состоящее в том, что в схеме Р отсутствуют продукции вида ф —> zlptz2, где ф, р, т 6 FH; Zi, z2 — произвольные цепочки (возможно, пустые) в алфавите V = 9t (J Vu. Отсюда следует, что ни одна це- цепочка в алфавите V, выводимая из любого нетерминала ф 6 FH, не может содержать двух рядом стоящих нетерминалов. Следует заметить, что многие языки программирования имеют операторные грамматики или приводятся к ним путем несущест- несущественного изменения структуры языка. На множестве всех терминалов операторной грамматики вво- вводятся отношения предшествования =, •>, <•: 1) ui^=uj, если существует продукция ф->-ъ^ага^% или ф-> 2) а{ •> uj, если существует продукция ф -> zizajZ.2, причем * * ?Zui или T=#-zaip; 3) аг <• uj, если существует продукция ф причем т * или т=>ра^г; здесь ф, т, р б FH; zlt z2, z — произвольные цепочки в алфавите V (возможно, пустые). Между каждой упорядоченной парой терминальных символов может существовать от одного до трех отношений предшествования или не существовать ни одного (когда эти символы не встреча- встречаются рядом в цепочках языка, порождаемого данной грамматикой). Операторная грамматика G называется грамматикой пред- предшествования или грамматикой старшинства разделителей, если для каждой упорядоченной пары терминальных символов а{, a,j б 3t существует не более одного отношения предшествования, а язык, порожденный такой грамматикой, — яаыком предшествования или Я8ыком старшинства разделителей. Основная идея предложенного Р. Флойдом алгоритма анализа по отношениям предшествования состоит в следующем. Рассмотрим цепочку х = z^a^La^ в объединенном алфавите V, причем терминальные символы в подцепочке z расположены в
260 Глава 6. Параметрические системы программирования порядке аГ1, аГг, ... , аГп (п^1). Пусть, далее, в цепочке выпол- выполняются следующие отношения предшествования: ar <5 fiVi == аГг == • • • == агп •> «s (нетерминальные символы, возможно встречающиеся в подце- подцепочке z, здесь роли не играют). Тогда подцепочку z можно свер- свернуть в некоторый символ фй и перейти к цепочке х' = z1ar'bkusz2. В алгоритме Флойда обычно используется магазин, в который записываются символы анализируемой цепочки в порядке их следо- следования (слева направо) до тех пор, пока между аГп — верхним тер- терминалом магазина иа, — очередным терминалом данной цепочки не выполнится отношение аГп •> as. Затем с помощью отношений предшествования из верхних символов магазина выделяется под- подцепочка z, подлежащая свертке. Заменяя в магазине подцепочку z некоторым произвольно выбранным символом *bk, продолжаем ана- анализ, сравнивая аТ с as. Всякая правильная цепочка языка L (G) может быть свернута к произвольно выбранному нетерминальному символу фг. Отношения предшествования можно задавать с помощью квад- квадратной матрицы размерности m X m, где m — число терминалов грамматики L, Предшествование проверяется по матрице для метки столбца, соответствующей очередному символу анализируе- анализируемой цепочки, и метки строки, соответствующей верхнему терми- терминальному символу магазина. На практике при составлении матрицы предшествования часто используются специальные множества левых L (ф) и правых R (ф) терминалов, соответствующие некоторому нетерминалу <р данной грамматики, которые определяются рекурсивно: L (<!>)¦— множество {аг} тех терминалов а{ 6 9t, для которых существует продукция (dj -> агх) 6 Р или (ф -> рагх) б Р, либо схема Р содержит продукцию <Ь-урх такую, что аг?Ь(р); аналогично R(<b) — мно- множество {uj} тех терминалов а, 6 9t, для которых существует про- продукция (ф -> xdj) б Р или (ф -> xajp) € Р, либо схема Р имеет про- продукцию Ф -> хр такую, что щ 6 R (р) (х — цепочка, возможно пустая, в объединенном алфавите V=U[jVK, рбУн)- Для предварительного контроля анализируемой цепочки часто используют также матрицы возможных сочетаний терминальных символов в цепочках языка. Пример 1. Пусть а, а, ¦(«)» $ 6.5. Методы синтаксического анализа в системах программирования 251 С помощью вспомогательных множеств левых L и правых В терминальных символов для каждого нетерминала грамматики - +1- и схемы Pi данной грамматики составим матрицу отношений предшествования. Так как Р-> |J X Т е-Pi и )€-^(P)> то )?>Х- Далее, из продукций a->a+p, 7->(a), a-^-#ad^, а также из N-R(a) заключаем, что )•> +, )•>),) t>4f:> Аналогично из при- приведенных выше продукций, поскольку / 6 R (Р) ж I € R (а), следует заполнение второй строки матрицы. Кроме того, X € -R (Р) и X 6 Л (а), значит, X •> X. X •> +» X •» и X *> #• в то же вРемя из C -> р X Т и ¦? (т) = IG -П следует, что X <г ( и X <? ^. Точно так же из a->a + р и L(P) = {(, /, X} заключаем, что + <• (, + <;/,+<. Х- А из +ей(а) и y->(а), а->#сс# следует + •> +. Далее, (=) на основании -у-*-(а), кроме того, из L (а) = = {(, /, Х- +] вытекает, что «.(, «./, «• Х> (<? +• Наконец, # ± # в силу a-> ;|ф a #. Учитывая также L(a), получаем #<•(, #<il, # <• X и #<;+• Матрица отношений предшест- предшествования имеет вид ) / + ( ( <¦ < < I <• <• •> •> •> <• + -> •> •> •> <• <• ) •> •> •> •> • # •> •> •> •> • Проанализируем с помощью алгоритма Флойда цепочку # (/-}-/) X ^ #' принадлежащую языку L (G)
252 Глава в. Параметрические системы программирования # (ф.) * / # Выделенная ттт „ подцепочка. Шаг Текущая цепочка подлежащая свертке 2 4? (ф| -f- /) 4f I -Н* -^ 3 5 6 8 ф? При анализе цепочки используем магазин. Вначале левый символ 4Ф исходной цепочки заносим в магазин. По матрице пред- предшествования # <• d где # — терминал в вершине магазина, (— очередной символ анализируемой цепочки. Это означает, что символ ( необходимо записать в магазин. Далее, (<• /, где / — очередной символ цепочки, поэтому его также заносим в магазин. Наконец, /•>+, так что (<•/•>+. Таким образом, левое вхож- вхождение символа / в исходную цепочку подлежит свертке на первом шаге. Заменяя / в вершине магазина произвольно выбранным нетер- нетерминалом фь продолжаем процесс анализа. Сравнивая по матрице предшествования (•— верхний, терминальный символ в магазине и -\ очередной символ цепочки, находим (<• -(-, поэтому символ + должен быть записан в магазин. По тем же соображениям очередной символ / также заносим в магазин. Далее, /•>), так что выделенное вхождение символа / подлежит свертке на втором шаге. Для очередного символа ) анализируемой цепочки выпол- выполняется отношение -(-•>), где -] верхний терминал магазина, так что на третьем шаге подлежит свертке подцепочка фх + ф2 и т. д. Наконец, на последнем шаге сворачиваем цепочку 4? фв # в нетерминал ф7. Таким образом, выбранная цепочка языка L(Gj) может быть проанализирована с помощью алгоритма Флойда. В то же время алгоритм Флойда из-за отсутствия механизма, устанавливающего связь между символами фй, вырабатываемыми в процессе свертки, и нетерминалами исходной грамматики, может осуществлять свертку неправильных цепочек. Так, в приведенном примере алгоритм успешно сворачивает цепочку (+/), которая не принадлежит языку L(Gi). Ненадежность синтаксического контроля, который составляет часть синтаксического анализа, явля- является основным недостатком алгоритма Флойда. Однако метод пред- предшествования — достаточно гибкое, эффективное и простое средство анализа. Он применяется при разработке трансляторов, в част- § 6.3. Методы синтаксического анализа в системах программирования 255F ности двухпроходовых, которые при первом проходе осуществляют синтаксический контроль входной программы и собирают сведения о переменных, блоках и других объектах, а при втором, эффек- эффективно используя отношения предшествования и собранные при первом проходе сведения, производят синтаксический анализ и одновременно составляют машинную программу. Метод Флойда получил дальнейшее развитие в работах Н. Вирта и X. Вебера [159], в которых отношения предшествования рас- распространены не только на терминальные, но и на нетерминальные символы кс-грамматики. Тем самым снимается требование, состо- состоящее в том, чтобы анализируемые грамматики были операторными. По Н. Вирту и X. Веберу отношения предшествования (=), @, ©. определяются следующим образом: 1) Si©Sj, если существует продукция ty-*-zi 2 © ) 2) 3) Sj, если существует * и вывод T1=>z,S'i (и x S если существуют продукция * продукция ф или ф и вывод Здесь S^ Sj б V = % U FH; z, zb z2, w — некоторые цепочки в объ- объединенном алфавите V; ф, ть т2 6 Vn. кс-Грамматика G = Et, VK, a, P) называется грамматикой пред- предшествования по Вирту и Веберу или грамматикой старшинства,- если для любой упорядоченной пары символов из объединенного- алфавита V = 3t (J VH выполняется не более одного отношения пред- предшествования типа @, ©, @, причем никакие продукции, принад- принадлежащие схеме Р данной грамматики, не имеют одинаковых правых частей. Каждая цепочка языка такой грамматики имеет единст- единственное дерево синтаксического анализа, и поэтому грамматики данного класса однозначны. При анализе, как и в алгоритме Флойда, символы анализируемой цепочки в порядке их обработки (слева направо) записываются в магазин до тех пор, пока не выполнится отношение Srn@Sj, где Srn — символ, записанный в вершине магазина, Sj — очередной символ данной цепочки. Посла этого среди символов Srn, Srn_v ... , STl, St, записанных в верхней части магазина, выделяется подцепочка SrnSrn^1 . ¦. Srlt подлежа- подлежащая свертке, где Srn (=) Srn_1 © • • • © Sri и St © Sri. В этом случае- выделенная подцепочка является правой частью единственной: продукции ф —>¦ SrnSrn_1 . . . STl и может быть заменена левой частью данной продукции. В алгоритме Вирта — Вебера, как и в алгоритме Флойда, ис- используются матрица предшествования и матрицы возможных соче- сочетаний, которые, однако, задают отношения предшествования не- нетолько для терминалов, но и для всех символов объединенного- алфавита V и поэтому более громоздки. При этом, как и в алго-
254 Глава 6. Параметрические системы программирования ритме Флойда, используются множества всех левых L (ф) и правых R (ф) символов для некоторого нетерминала ф данной грамматики, которые определяются следующим образом: ?(ф) = {D |, если D б V и существует продукция (ф -> Dz) € Р или (ф -> pz) б Р, причем D^L(p)}, R(ii) = {D\, еслиЛеУ и существует продукция (ф-> -> zD) е Р или (ф -> zp) е Р, причем D ? R (p)} (z — цепочка, воз- возможно пустая, в объединенном алфавите V = ^{]Уа', ф> р 6 Ун)- Пример 2. Пусть G2 = а, Р2), а = {#,а, Ъ, с}, У„={о, а, р, т>. Р2= {а-># a#i сс->Р, Р~>Рт> Р->Ъ T~^а' Язык ? (G2), порожденный этой грамматикой, содержит любую цепочку, состоящую из терминальных символов а, Ь, с и ограни- ограниченную символами #. Множества левых L и правых R символов имеют вид , с}, L(a) = {р, -f, а, ?(Р) = 1Р, т. а, L(T) = {а, Ь, с}, Д (о) = Л(а) = 1Р, т, а, Ь,с], R (р) = {т, а, Ь, с}, Д(Т) ={а, Ь, с}. и в примере 1, используя множества левых и правых сим- символов, по схеме Р2 данной грамматики заполняем матрицу отно- отношений предшествования: с Ь а В ¦( а # Р 7 а, Ъ, с При синтаксическом анализе цепочки # сЬа 4Ф согласно алгоритму Впрта — Вебера выполняем следующие шаги сворачивания: § 6.3. Методы синтаксического анализа в системах программирования 255 1аг 1 2 3 4 5 6 7 8 9 Текущая цепочка # cba# # iba # #Р&а# #Р7а# # Ра# #Рт# #Р# #«# а Выделенная подцепочка, подлежащая свертке с 7 Ь Рт а P-r Р Подобно алгоритму Флойда, подцепочки, подлежащие свертке-,, выделяем по матрице предшествования, используя магазин. Вна- Вначале в магазин засылаем символ :(?, затем, так как 4Ф ©с> и сим- символ с. Далее, с @ Ъ, так что в вершине магазина выделено вхожде- вхождение символа с, подлежащее свертке на первом шаге. По схеме Р2 данной грамматики находим единственную продукцию '{-> с, правая часть которой совпадает с выделенной подцепочкой, и за- заменяем в вершине магазина с символом f. Далее, -[ @ Ь, так что* вхождение -j- также подлежит свертке. В силу (Р~>т) 6 Р2 заме- заменяем в вершине магазина -f символом р. Затем, поскольку Р©Ь, символ Ъ засылаем в магазин и аналогично предыдущему заменяем его символом -[. Так как f@a и Р©Т> в верхних ячейках ма- магазина оказалась выделенной подцепочка Pf, подлежащая свертке^ на четвертом шаге. Продолжая этот процесс, сворачиваем цепочку # сЪа # € L (G2) в аксиому а данной грамматики, что подтверждает- правильность исходной цепочки. Нетрудно видеть, что грамматика G2 не операторна и поэтому не может быть проанализирована методом Флойда. С теоретической точки зрения алгоритм Вирта — Вебера позво- позволяет проводить достаточно эффективный анализ и контроль про- программ. Однако требование о несовпадении правых частей раз- различных продукций существенно сужает класс языков, которые; могут быть проанализированы с помощью этого алгоритма. Метод отношений предшествования, предложенный Р. Флой- дом и получивший дальнейшее развитие в работах Н. Вирта и X. Вебера, применим для анализа лишь кс-языков. В работе [101} предлагается обобщение этого метода на произвольные порождаю- порождающие грамматики Хомского. Пусть G = Ct, FH, a, P) — произвольная порождающая грам- грамматика и В — некоторый символ из объединенного алфавита V = = 91U Ун- Для символа В определим множество самых левых L (В) и самых правых R (В) символов из V:
256 L(B) Глаеа {D\, если D ? У и существует продукция (Bx или продукция Eж->512)б Р, причем Dei^ ует проду -Dz) ? Р , F.9) или продукция Eж>51) Л (?) = (D |, если D б У и существует продукция (zB-+zD) е Р или продукция (жВ-^-гВ^б Р, причем ?> 6 Л (Вх)} F.10) •(ж, z—некоторые цепочки, возможно, пустые, в алфавите У; В, Въ D еУ). Из F.9) и F.10) следует, что терминалы и нетерми- нетерминалы могут иметь непустое множество левых (правых) символов при условии, что они использовались как начальные (конечные) ¦символы в левых частях продукций, входящих в схему Р. Отношения предшествования для порождающих грамматик ¦общего типа определим следующим образом: 1) SiTSj, если существует продукция (z-+z1StSjZ2) Ч Р; 2) Si<^Sj, если существует продукция (z-4-z1SiNz2) 6 Р и 3) Si^>Sj, если существует продукция (z —>-zxiViSjz2) € Р и Si^R(N) или найдется продукция (z->ZxiViiV2z2) e P, причем jSiG-R(iVi), a Sj?L(N2) (z, zu z2— некоторые цепочки, возможно пустые, в алфавите У; iV, iVb iV26V). Порождающая грамматика G = Ct, Ун. °i P) называется грам- грамматикой предшествования Вирта—Вебера, если каждая упоря- упорядоченная пара символов объединенного алфавита У имеет не более одного отношения предшествования, а язык, порожденный такой грамматикой, — языком предшествования Вирта—Вебера. Пример 3. Пусть G = CtyH, Р) Рз = {pi'. т.™ Г (G) = \anbnan\n =1,2, . • •)» Грамматика G3 п°Р°*даеТ *Т(ш § 5.3). Запишем множества :Ьы^гп^^^^^ 1. а}. Л (а)--, Матрица отношений предшествования имеет вид ft. a, P a •II == __i <: :> <: <: <: > == <: <: <: •> > а == <: — 1 Проиллюстрируем процесс свертки на примере выводимой цепочки (aabbaa) 6 L (G3); при этом используем в приведенном порядке про- продукции pv р7, ръ, ра, ръ, р p Р2 Pi Р2, Pi- Текущая цепочка aabbaa aabbaa a-^ajbbaa bP Выделенная подцепочка, подлежащая свертке а а Ъ ixPi aiaiPiPa P Ъ а Р« ? Шаг 1 2 3 4 5 9 10 а" — Подцепочки, подлежащие свертке, выделяем по матрице пред- предшествования, используя магазин, как и по алгоритмам Флойда и Вирта — Вебера (см. примеры 1, 2). Единственное отличие состоит в том, что при свертке правых частей не контекстно-свободных продукций рз и Ра в вершину магазина засылаются соответствую- соответствующие левые части. На основе описанного подхода в работе [101] предложены эффективные алгоритмы анализа, обобщающие алгоритмы Флойда и Вирта — Вебера на порождающие грамматики общего типа. Показано, что произвольная порождающая грамматика с помощью эквивалентных преобразований может быть приведена к грамма- грамматике предшествования, и разработан алгоритм такого перехода. 9 8-330
258 Глава 6. Параметрические системы программирования Более широкий класс кс-языков, допускающих эффективный анализ сверткой, описывают LR (&)-грамматики, предложенные Д. Кнутом [150]. кс-Граыматика G = (9t, FH, о, Р) называется LR (й)-граммати- кой, если применение каждой продукции из Р в процессе свертки однозначно определяется всей левой частью анализируемой цепочки и правыми очередными к терминальными символами; язык, по- порожденный LR (А)-грамматикой, называется LR (&)-языком. Так, при анализе цепочки методом LR (А)-гралматик с использованием магазина для выделения цепочки, подлежащей свертке, необходимо просматривать весь магазин (а не только фиксированное число символов в нем, как, например, в случае грамматик предшест- предшествования) и следующие к терминальных символов анализируемой цепочки. Д. Кнут доказал, что для каждого кс-языка, воспри- воспринимаемого детерминированным магазинным автоматом, существует LR (А)-грамматика, порождающая этот же язык. Более того, для любой LR (А)-грамматики существует эквивалентная LR (^-грам- (^-грамматика. Разработан также алгоритм для проверки, является ли данная грамматика LR (А)-грамматикой при фиксированном к, причем в положительном случае строится детерминированный магазинный автомат, воспринимающий данный язык. Таким образом, наличие LR (А)-грамматики является наиболее общей характеристикой класса однозначных языков в терминах пор ождающих грамматик. Переходя к методам анализа разверткой, заметим, что в этом направлении получены менее значительные результаты и его раз- развитие было не столь интенсивным по сравнению с методами ана- анализа сверткой. К наиболее распространенным и эффективным методам бесту- беступикового анализа разверткой относится метод деления на слово с одноименной операцией над языком (см. § 5.5). Пусть заданы некоторая цепочка х 6 F (%) и исходная кс-грам- матика G = (9t, FH, о, Р), допускающая беступиковый синтакси- синтаксический анализ. В качестве начальной рассмотрим пару (х, о), где х — анализируемая цепочка, а — аксиома грамматики G. Допустим, что на некотором шаге алгоритма анализа делением на слово была получена пара (xi: г;),.где х{ — конечная подцепочка цепочки х, z{ = 'bVi, причем v\ — цепочка (возможно, пустая) над объеди- объединенным'алфавитом V =%\}Vn. Тогда переход к паре (xi+1, zj+1) состоит в следующем. Среди продукций, входящих в схему Р грамматики G, находим продукцию <b -> w, применение которой к выделенному символу ф цепочки zi порождает цепочку wVi = = Mt+iWi-j-i либо WVi = ui+i> гЛе ui+i — начальная подцепочка (воз- (возможно, пустая) цепочки хг. Если указанная продукция не сущест- существует, то получаем тупик. Согласно выбору грамматики G это означает, что анализ цепочки х завершен, причем x~^L{G). Если § 6.3. Методы синтаксического анализа в системах программирования 259 WVi — ui+izvi+v то сокращая цепочки х{ и wvt слева4 на цепочку ui+1, получаем очередную пару (xi+h tvi+1). Если xi+1 = e, анализ вновь завершен и x^L(G). Если wvi = ui+1 и в результате опи- описанного выше сокращения получена пара (е, е), анализ завершен успешно, так что х € L (G). В противном случае вновь получаем тупик и х^L(G). Метод деления на слово допускает естественную магазинную интерпретацию с использованием двух магазинов, причем на г'-м шаге алгоритма первый из них хранит компоненту хг пары (xi: zt), полученной на данном шаге, а второй (магазин вывода) — ком- компоненту zj этой пары. На первом шаге алгоритма первый магазин содержит анализируемую цепочку, которая в процесса анализа как бы стирается по частям. Магазин вывода на первом шаге хранит а-аксиому грамматики и в процессе анализа моделирует левый вывод данной цепочки. Таким образом, возникает проблема выделения классов грам- грамматик, ориентированных на беступиковый детерминированный анализ разверткой с применением метода деления на слово. За- Заметим, что левый вывод в таких грамматиках управляется остат- остатком анализируемой Цепочки, находящимся справа от текущего символа, и состоянием магазина вывода. Важным классом однозначных кс-грамматик, допускающих беступиковый анализ разверткой, являются 1Х(/с)-граммати- ки [152]. Пусть G = (9t, VK, о, Р) — некоторая кс-грамматика и 5 g VK — новый нетерминальный символ. Рассмотрим кс-грамматику G = = (%, Va, с, Р), где % = 9Щ (#}, FH = FHU {в}, схема Р получа- получается в результате присоединьаия к Р дополнительной продукции 5->a#*; очевидно, L(G) = L(G)#ft- Грамматика G называется LL (й)-грамматикой (/с^О), если на любом шаге левостороннего вывода применение каждой продукции из Р однозначно опреде- определено терминальным началом строки, полученной на данном шаге вывода (история вывода), и к очередными терминалами, появ- появляющимися при продолжении вывода. Иными словами, если (а, ... , wbv, uzv, ... ,uw . . .) И (а, ... , wbv', uz'v', ... , i.w ... _ ^ — левые выводы в LL (А)-грамматике G, где и, w — терми- терминальные цепочки, причем j w | = к, то z = z', т. е. на выделенном шаге примененная продукция (ф -> z) e P однозначно определена терминальным началом «и» строки wbv и последующей терминаль- терминальной цепочкой w длины к. Язык L(G), порожденный LL (А)-грам- матикол G, называется LL (&)-языком. 4 Под левым сокращением цепояек г п г' на цепочку и понимается одновременное деление слева каждой п.ч этпх цепочек на цепочку и. 9*
260 Глава 6. Параметрические системы программирования Синтаксический анализ разверткой с помощью LL (А)-грамматик состоит в построении левого вывода анализируемой цепочки x?F(%), каждый шаг которого удовлетворяет следующим усло- условиям: 1) терминальное начало и строки utyv, полученной на данном шаге вывода, совпадает с некоторым началом цепочки х; 2) следующие к терминалов в х составляют цепочку, которая может появиться непосредственно в процессе вывода, если на данном шаге применить соответствующую продукцию (Л->г)бР. Если исследуемые к символов не совпадают ни с одной из таких цепочек, то х~? L(G). Заметим, что LL (й)-грамматики не вполне удобны для прове- проведения анализа разверткой, поскольку на каждом шаге необходимо хранить терминальное начало «щ> строки левого вывода, несмотря на то, что оно может быть сколь угодно большой длины. В этом отношении для анализа разверткой гораздо удобнее использовать строгие LL (й)-грамматики, предложенные в работах [151, 157]. Строгой LL (&)-грамматикой называется грамматика G, для кото- которой на любом шаге левого вывода применение каждой продукции из Р однозначно определено очередными к терминалами, появляю- появляющимися при продолжении вывода. Иными словами, если (о, ... . . . , u<bv, uzv, ... , uw ...) и (а, . .. , u$vx, uxz'vx, . . . , uxw ...) — левые выводы в строгой LL (А)-грамматике G, где их, w — терми- терминальные цепочки, причем \w\ = к, то z = z', т. е. на выделенном шаге примененная продукция (ib->zNP однозначно определена терминальной цепочкой w длины к, идущей вслед за терминаль- Е1ым началом и строки вывода, полученной на данном шаге. Пример 4. Рассмотрим грамматику, заданную схемой ¦Pi = Очевидно, эта грамматика порождает язык L = [апЪт 4+ | т., п = = 1,2, . . .}. Покажем, что грамматика со схемой Рх является строгой LL B)-грамматикой. Действительно, продукция рх всегда применяется лишь в начале вывода, независимо от последующих терминалов, и поэтому удовлетворяет LL (О)-свойству, а значит, и LL{1)- и LL B)-свойствам. Вообще говоря, из определения LL (А)-грамматики следует, что всякая продукция, обладающая LL (А)-свойством, удовлетворяет также свойству LL (к -f 1). Про- Продукция р2 применяется всегда, когда очередными терминалами выводимой цепочки являются аа, продукция р3 — когда очеред- очередными терминалами являются ab, так что рг п р3 обладают свойст- свойством LLB). Аналогично продукция р4 применяется всегда, когда § 6.3. Методы синтаксического анализа в системах программирования 261 очередные терминалы — ЪЬ, продукция ръ — при очередных тер- терминалах bdfc. Таким образом, приведенная грамматика является LL ^-грам- ^-грамматикой и, кроме того, строгой LL B)-грамматикой, так как при- применение каждой продукции зависит от очередной пары терми- терминалов и не зависит от истории вывода. По определению каждая строгая LL (А)-грамматика является просто LL (й)-грамматикой. Однако обратное утверждение неверно: существуют нестрогие LL{k)-грамматики. Пример 5. Рассмотрим грамматику, заданную схемой ±fc3, р4:т->бЬ, p7:Jj->6, : ф -> a-zddty p p3:o->d-:bc, (e — пустое слово). Приведенная грамматика является LL (З)-грам- матикой, так как продукция р± удовлетворяет LL (О)-свойству, Рг — Рб. Рв — LL A)-свойству, а ра — ps — LL (З)-свойству. Дейст- Действительно, предположим, что получена строка вывода с самым левым нетерминалом ф. Применяя продукцию р6, в дальнейшем можем получить цепочку ebb (если на предыдущих шагах при- применялись продукции р3 и р-0). С другой стороны, эта же цепочка получается в результате применения продукции р8 (если ранее применялись продукции р3 и р4). Следовательно, нет однознач- однозначности в выборе продукции при просмотре очередных трехеимволь- ных цепочек и поэтому приведенная грамматика не является строгой LL (З)-грамматикой. Однако первому (из рассмотренных выше) варианту появления цепочки bbc сопутствует терминальное начало wa, а второму — терминальное начало w'd, где w, w' — некоторые терминальные цепочки, так что данная грамматика является LL (к)-грамматикой. В то же время доказано [157], что для каждой LL (А)-грамматики существует эквивалентная строгая LL (А)-грамматика, так что класс LL (А)-языков совпадает с клас- классом строгих LL (А)-языков. Строгие LL (/г)-грамматики допускают беступиковый анализ разверткой, при котором не учитывается влияние терминального начала некоторой строки вывода на его дальнейшее продолжение. Поэтому при строгих LL (А)-грамматиках может быть эффективно использован изложенный выше метод анализа делением на слово. Действительно, получив на некотором шаге анализа пару (xt, 4у,-),' по первым к символам цепочки х-х осуществим однозначный переход к паре [хь zv{), где D -> z) € Р — продукция, применимая на данном шаге, zvt = Ui~\~vi+1. Выполнив затем сокращение цепочек xt п zvi на терминальное начало ui+1, получим пару (zi+1, tvi+1) и пере- перейдем к очередному шагу анализа. Если такой переход невозмо- невозможен, то уже на данном шаге можно заключить, что анализируемая
262 Глава 6. Параметрические системы программирования цепочка не принадлежит языку, порожденному заданной строгой LL (А)-грамматикой. Несколько иное определение грамматик, порождающих тот же класс языков, что и LL (/с)-грамматики, предложено Д. Вудом [160]. Каждой продукции (Ф->г) 6 Р грамматики G поставим в соот- соответствие множество М.ь, z (k) = {и?} всех терминальных цепочек и? длины к таких, что в грамматике G осуществляется левый вывод (о, ... ,wbv,uzv, ... ,uw, .-..). Грамматика G называется лево- факторной или ?/7(&)-грамматикой, если для любых двух раз- различных продукций tj)->-z и ib->z', принадлежащих схеме Р, выполняется соотношение М^ -z-(k) [\М^ г- (к)—.0 . Любая LF (к)- грамматика является строгой 1/1,(й:)-грамматикой- и наоборот, так что классы языков, порожденных LL (ку и ^.(А)-грамматиками, совпадают. Метод анализа делением на слово эффективен и при исполь- использовании класса LL (/)-грамматик, предложенных К. Чуликом [142]. Эти грамматики представляют собой обобщение (вообще говоря, не конструктивное) понятий LL (к)- и строгой LL (А)-грамматик. Пусть f:S-*D — функция, определенная на некотором под- подмножестве S^F (Щ свободной подгруппы над алфавитом 9t с про- произвольно выбранной областью значений D. Грамматика G назы- называется LL (/)-грамматикой, если для любых левых выводов (а, ... , щ^ъ UiZVb ... , щи?) и (а, . . . , щ$и2, Щ^и2, ..., щи?'), где .щ, и?, и?' — терминальные цепочки, из f(u?) = f(u?') следует z = z'. Функция / называется различающей функцией грамма- грамматики 5. Применяя в качестве различающей функцию / (и?) — к: и? с об- областью определения ? = {и>} всех и> б F (Щ таких, что \и?\^к, причем к:и? = и, где и — терминальное начало цепочки.и? длины к, получаем LL (й)-грамматику. Аналогично можно определить стро- строгую LL (/)-грамматику (обобщение строгой LL (й)-грамматики), потребовав, чтобы для любых левых выводов (а, ... , ii^Vi, щъиъ ... . .. , щи>) и (а, ... , utfbVb, u2z'v2, ... , u2w'), где- щ, ы2, и?, и?' — терминальные цепочки, из f(w) = f{w') следовало z = z'. Функ- Функция / называется строго различающей функцией грамматики G. Для эффективного применения метода анализа делением на слово к кс-грамматике G достаточно, чтобы для нее существовала строго различающая функция. Наряду с рассмотренными методами левостороннего синтакси- синтаксического анализа, при конструировании средств математического обеспечения для многопроцессорных вычислительных комплексов применяются методы параллельного синтаксического анализа, с помощью которых осуществляется одновременная обработка фрагментов входной программы [93, 123, 135, 153]. В работе [123] § 6.3. Методы синтаксического анализа в системах программирования 263 выдвинута принципиально новая концепция двустороннего син- синтаксического анализа, состоящего в параллельной встречной об- обработке символов цепочки с противоположных ее концов двойст- двойственными методами развертки и свертки. Различаются два варианта стратегии двустороннего анализа: ПР-анализ (левая развертка — правая свертка) и РП-анализ (левая свертка — правая развертка) [83, 89]. В результате ПР- и РП-анализов порождаются соответ- соответственно левый и правый выводы анализируемой цепочки. Далее рассматривается стратегия ПР-анализа. При этом имеется в виду, что РП-анализ может быть организован двойственным образом. Пусть G = (9t, VH, о, Р) — приведенная кс-грамматика (см. § 5.3). Для цепочек уъ у2, zb z2 6 F (V) введем отношение непосредственной ПР-выводимости (уъ z1)\~\(y2, z2), если выполняются следующие G условия: 1) ух = uiiv, у2 = uwv, где и ? F (Щ; w, v ? F (V), причем схема Р содержит продукцию р: ф->ы?; 2) zx = u'w'v', z2 = u'xv', где и' eF(k); и?', v' e F (F), причем схема Р содержит продукцию р':т->и/. Транзитивное замыкание непосредственной ПР-выво- димости приводит к отношению |~! ПР-выводимости в грамма- 1 о тике G. Из приведенных определений следует^ что цепочка х правильна, * х б L (G), тогда и только тогда, когда (а, х) |~j (z, z'), где z = z' G либо z = u<bv, z — uwv, и схема Р содержит продукцию р: ф -> и?. Т/Г ' * * * Иными словами, если а = z1=^zi=^zi+1=^-zn = х — левый вывод цепочки x$L(G), то можно указать такой номер i, что (zl5 z2, ... , г{) —часть вывода, полученная разверткой слева направо, в то время как строки zn, zn_1, .. . , zi+1 порождаются сверткой справа налево, причем число шагов развертки и свертки отли- отличается не более чем на единицу. Пример 6. Рассмотрим кс-грамматику, заданную схемой Pi-<*¦ ¦ aob, -ab. Очевидно, эта грамматика порождает язык L = [апЪп \ п = 1, 2, .. .} (см. § 5.2, пример 4). Выберем правильную цепочку a4b4 e L, левый вывод которой имеет вид w = (a, asb, а2аЬ2, a3ab3, а4Ь4). По выводу w для цепочки а4Ь4 может быть построен следующий ПР-вывод: (а, а4Ь4) ]=; (aob, а?оЪ3) \—\ (arab2, а2аЪг).
264 Глава 6. Параметрические системы программирования ПР-вывод цепочки а5Ьъ имеет вид (а, а5Ь5) |—| (aab, й4а64) |—| (а2а62, а3о63), причем из строки z = a2ob2 в результате применения продукции р1:а-^-аа6 может быть получена строка z' = a3ob3. Анализаторы, ориентированные на стратегию двустороннего анализа, могут быть смоделированы с помощью магазинных ПР- анализаторов, впервые предложенных в работе [123]. На входной ленте этого автомата установлены указатели, фиксирующие фазу анализа в текущий момент. Внутренняя память состоит из двух магазинов: магазина развертки Мр и магазина свертки Мй. На- Начальное заполнение входной ленты имеет вид | ах, а2, ... , ап~\, где х = ага2 ... ап — анализируемая цепочка, при этом в началь- начальном состоянии магазин Мр содержит аксиому а, а магазин Мс пуст. Управляющий блок организован в соответствии с грамма- грамматикой входного языка и позволяет на каждом шаге ПР-анализа применять пару продукций (р, q) соответственно по развертке и свертке с одновременным сдвигом указателей на входной ленте, отделяющих проанализированные части входной цепочки, и из- изменением содержимого магазинов Мр и Мо. При коллизии ука- указателей (переходе одного из них через другой) осуществляется возврат по одному из направлений ПР-анализа. Например, воз- возврат по развертке выражается в сдвиге на один шаг влево левого указателя и свертке в магазине Мр по последней из применен- примененных в данном направлении продукций. Правильный переход в заключительное состояние совершается при слиянии указателей па входной ленте и совпадении содержимого магазинов Мр и Мс. Проиллюстрируем функционирование магазинного ПР-анали- затора в процессе анализа цепочек языка L = \апЪп \ п = 1, 2, . ..], рассмотренного в примере 5. Анализ цепочки a4fr4, приведенный в табл. 17, завершен успешно благодаря слиянию указателей и совпадению содержимого Мр и Мс, что подтверждает правильнссть данной цепочки a4fe4 g L. В табл. 18 показан ПР-анализ цепочкио%ъ. На третьем шаге произошла коллизия указателей. Однако возврат Таблица 17 § 6.4. Параметрические грамматики инверсно-рекурсивного типа 265 Номер шага 0 1 2 Заполнение входной ленты '~ааааЪЪЪЪ~\ а\~аа~\аЬЬЬЬ аа\ \aabbbb Мр а аЪ abb мс — abbb abb Использо- Использование пары продукций — (Pi. Pi) (Pu Pi) ¦ I левого указателя и свертка в магазине Мр по продукции рг при- привели к слиянию указателей и совпадению содержимого магазинов. Следовательно, и в этом случае анализируемая цепочка a5b° пра- правильна, a5b5tL. Таблица 18 Номер шага 0 1 CS1 3 4 Заполнение входной ленты \~aaaaabbbbb~\ a\~aaa~\abbbbb oa\~a~\aabbbbb аа~\ а \~aabbbbb аа\ \aaabbbbb мр а аЪ abb abbb abb — abbbb abbb abb abb Использование пары продукции — (Pi. Pa) (Pi. Pi) (Pi. Pi) Свертка в Мр по pt Рассмотренная в настоящем параграфе техника управления левосторонним анализом сверткой и разверткой может быть ис- использована также при организации боступикового двустороннего, анализа. С целью изучения возможности эффективной реализации стратегии ПР-анализа разработана [83] подробная блок-схема ПР-анализатора параметрического типа. По этой блок-схеме состав- составлена программная модель ПР-анализатора на языке АНАЛИТИК: для ЭВМ МИР-2. § 6.4. Параметрические грамматики инверсно-рекурсивного н рекурсивного типа Системы программирования относятся к основным и наиболее развитым средствам автоматизации программирования. Как уже упоминалось в § 6.1, широко применяются языки программиро- программирования самой различной ориентации, для которых разработаны эффективные системы программирования транслирующего и интер- интерпретирующего типа. При этом процесс перевода с одного языка на другой включает кроме синтаксической и вторую фазу — се- семантическую, которая по дереву синтаксического анализа входной программы выполняет индуктивное построение ее семантического эквивалента на выходном языке (выходная программа), что обус- обусловливает необходимость формализации не только синтаксиса, но п семантики языков программирования. Определенный вклад в этом направлении составляет теория-интерпретированных языков, и интерпретаторов. Интерпретированный язык сочетает в себе как спнтакспческпй, так и семантический аспекты, что позволяет'
266 Глава 6. Параметрические системы программирования подойти к проблеме параметризации процесса трансляции в целом, а не только его синтаксической фазы. Предложены параметри- параметрические модели, параметрами которых служат грамматики и другие объекты, отражающие наиболее общие и существенные черты классов входных и выходных языков соответствующих систем программирования. В результате подстановки фиксированных зна- значений вместо указанных параметров получается конкретная система программирования для некоторой пары входного — выходного язы- языков из выделенных классов. Такие конкретные системы програм- программирования называются параметризованными, а сам процесс по- построения их — процессом параметризации. К параметрическим моделям относятся параметрические грам- грамматики, являющиеся эффективным средством управления процес- процессом написания и анализа программ. В соответствии с двойствен- двойственностью подходов к решению проблемы синтаксического анализа (см. § 6.3) различают параметрические грамматики инверсно- рекурсивного (аналог свертки) и рекурсивного (аналог развертки) типа [96]. Параметрическая грамматика инверсно-рекурсивного типа (ПГИРТ) G = (R, А, ф) представляет собой объект, зависящий от следующих параметров: системы уравнений с выделенным уравнением Нг (V) — :: фх> соответствующим аксиоме (см. § 5.3), где Нг (V) — конечные языки в объединенном алфавите V=$[JVa; множества А бинарных отношений k^F (V) x F (V); п отображения ф: U Hi(y)-*-A, ставящего в соответствие каждой 1=1 цепочке z б Hi(V) некоторое бинарное отношение Д е А, ф(ф4, z) = = Д. Цепочка у непосредственно выводима из цепочки х в грам- грамматике G (х (= у (G)) (или х\= у, если грамматика G подразуме- подразумевается, х, у eF (V)) при условии, что х = и^иъ у = ихЪрг, иричехМ z ? Hi(V) и (иъ Ух) 6 Д = ф(ф{, г). Иными словами, подцепочку z, входящую в левую часть уравнения Нг (V) = :: <Ь4, можно свернуть в нетерминал ф4, если в цепочке х подцепочка z имеет контексты (иь ух)> которые входят в соответствующие бинарные отношения А = ф(ф4, z). Цепочка у выводима из цепочки х в грамматике G, если существует вывод z0. zL, ... , zn такой, что х = z0, у = zn и при каждом i = 1, 2, .. . , п zi_1 (^ z{ (G). Выводимость обозна- * — * — чается x]^z y{G) (или xfczy, если грамматика G подразумевается). Под языком L (G), порождаемым грамматикой G, понимается мно- жество терминальных цепочек х ? F(Щ таких, что x^ziii(G). § 6А. Параметрические грамматики инверсно-рекурсивного типа 267 Пример 1. Рассмотрим параметрическую грамматику Ga = = (R, Аа, фа), где множество ^/состоит из единственного бинар- бинарного отношения Д = {е} X F (Щ, так что каждой цепочке z € Ht (V), входящей в левую часть некоторого уравнения Нг(У) =:: ф{, отображение фа ставит в соответствие отношение Д = ф(ф{, z), i = 1, 2, ... , п, V = &UVK. Очевидно, язык L(Ga), порожденный данной параметрической грамматикой, автоматный (см. § 5.4). Действительно, свертка по цепочке z 6 Н\ (V) возможна, когда продукция ф4 —>- z леволинейна, причем контексты удовлетворяют выбранному отношению Д. Подставив вместо соответствующего параметра грамматики Ga систему уравнений R, состоящую из леволинейных продукций и порождающую произвольный авто- автоматный язык L, получим L(Ga) = L. Таким образом, справедлива теорема. Теорема 6.4. Параметрические грамматики инверсно-рекур- инверсно-рекурсивного типа пороэюдают произвольные автоматные языки. Пример 2. Рассмотрим параметрическую грамматику Ga = = (R, Ал, фп), где множество Ал состоит из. единственного бинар- бинарного отношения Д = F (Щ X F (Щ, так что фл (ф{, z) = Д для любой цепочки z 6 Нг (V) (V = 9HJ Vs, i = 1, 2, ... , и). Как и в примере 1, свертка цепочки z?Hi(V) возможна, когда продукция ф4-*-г линейна и имеющиеся на данном шаге контексты удовлетворяют выбранному отношению Д. Таким образом, подставив вместо пара- параметра R в грамматику Gn систему уравнений, порождающую про- произвольный линейный язык (см. § 5.4), получим L(Gn) = L. Спра- Справедлива следующая теорема. Теорема 6.5. Параметрические грамматики инверсно-рекурсив- инверсно-рекурсивного типа порождают произвольные линейные языки. Пример 3. Рассмотрим параметрическую грамматику GKC = = (R, Акс, фкс), где множество Акс состоит из единственного би- бинарного отношения Д = F (V) х F (V), так что сркс (i>i, z) — Д для любой цепочки z € #{ (V) (V = %{j Va, i = 1, 2, ... , п). Язык L (GKC) совпадает с кс-языком, порожденным системой уравнений (см. § 5.3). Приведенное построение называется трпвпальной параметризацией системы уравнений Ё. Таким образом, справедлива теорема. Теорема 6.6. Параметрические грамматики инверсно-рекурсив- инверсно-рекурсивного типа порождают произвольные кс-языки. Пример 4. Рассмотрим нс-язык L6 = {xbx\ для любого не- непустого слова х 6 F (Щ), где 51 = {аъ я2, ... , ат), с порождающей грамматикой Gs (см. § 5.2, пример 6). Построим параметрическую грамматику G6(R6, A6, ср6), порождающую нс-язык L6. Параметры грамматики Gs определяются следующим образом:
¦268 Глава 6. Параметрические системы программирования 1) X F G) = Pi. (У) = at (У) = ф,. = :: а :: ф. X х) р;. X F (Ух) X а ( ) Рассмотрим вывод цепочки (аффа^) с L6 в грамматике G6. Сво- Сворачивая цепочки, входящие в левые части HS(V) и Н9 (У) при- приведенной системы уравнений, лолучаем цепочку а^^а.^. Далее, последовательно сворачивая цепочки, входящие в H-j, Нй и Нъ, получаем а^^а.^. Вновь применяя в указанном порядке свертки, получаем Рф1ф2а1а2. Применяя последовательную свертку цепочек, входящих в Н^ Hz и Н2, получаем Рф1а1ф2а2- Наконец, применяя свертки цепочек, входящих в Нх, получаем завершенную часть вывода Рф1а1ф2а2 }pz аф1а1ф2а2 ?г аф2а2 (^ а. Пусть G = (Й, Ун, о, Р) — произвольная нс-грамматика (см. § 5.2). Из каждой нс-продукции (щ^и^ -*- щгщ) 6 Р выделим кс-продукцию ф->-2 и контексты (щ, и2), в которых она применима. Пусть {(uii,usj)\i = l,2, ... ,r(^,z)} F.11) является совокупностью всех контекстов, в которых применима продукция ф -»- z. По выделенным кс-продукциям составим систему уравнений Йе = 1Я1(У)=::ф1|г=1,2> ... , п]. Кроме того, по контекстам F.11), соответствующим продукции ф -*¦ z, составим бинарное отношение Объединив отношения Д(ф, z) для всех z, входящих в левые части построенной системы уравнений Rq, получим множество Aq. На- § 6.4. Параметрические грамматики инверсно-рекурсивного типа 269 конец, определив отображение cpfi так, что фС(ф z)=^(i. z)> получим параметрическую грамматику G = (RG, AG, фс) такую, что L (G) = = L(G). Таким образом, справедлива теорема. Теорема 6.7. Параметрические грамматики инверсно-рекур- инверсно-рекурсивного типа порождают не-языки. Как отмечалось выше (см. § 6.3), с точки зрения практичес- практического построения систем программирования представляют интерес формализмы для описания языков, допускающие беспереборный анализ, при котором наличие хотя бы одного тупика означает, что анализируемая цепочка не принадлежит заданному языку. К таким формализмам относятся беспереборные грамматики G = = (R, А, ф). Доказано, что любой кс-язык может быть задан не- некоторой беспереборной грамматикой G. Следовательно, эффек- эффективность синтаксического анализа цепочек данного языка зависит от сложности бинарных отношений, входящих в параметр А грам- грамматики G. Поэтому естественно классифицировать методы син- синтаксического анализа по сложности бинарных отношений из А- В работе [79] приводится формализация стратегии левосторонней свертки в терминах параметрических грамматик инверсно-рекур- инверсно-рекурсивного типа. Рассмотрим грамматику G — (R, А, ф), где Л = (Я4(У) = = :: ф41 i = 1, 2, ... ,п). Параметры А и ф определяются следую- следующим образом. Каждой цепочке z 6 Н{ (У) сопоставляется конечное множество MzczF(k) цепочек в терминальном алфавите 9t. Отоб- ражение ф: U Нг (У) ->- А ставит в соответствие каждой цепочке гб#{(У) бинарное отношение A = (L1,L2), где L1 — множество допустимых цепочек v € F (У), которые используются для одно- однозначного выделения в vzw самой левой подцепочки z, подлежащей свертке; L2 =MZ ¦ F (Щ. Параметр А — множество всех бинарных отношений Д = ср (ф4, z) для каждой цепочки z 6 Н{ (У) (i = 1, 2, ... ... , л). Грамматика q с определенными параметрами А и ф называется параметрической грамматикой инверсно-рекурсивного типа с выводом слева направо или ?,/?-грамматикой. Отношение (F (V) Мх X M2F (У)) с F (У) X F (У), где Мъ М2 — конечные мно- множества цепочек в алфавите У == Й U Ун> называется квазпунивер- сальным. В работе [79] доказано, что для ограниченно-контекстных грамматик Флойда и LR (й)-грамматик Кнута (см. § 6.3) сущест- существуют эквивалентные беспереборные грамматики G соответственно с квазиуниверсальными отношениями и выводом слева направо. Это позволяет автоматически получать эффективные алгоритмы синтаксического анализа для широкого класса кс-языков со слож- сложностью, пропорциональной длине анализируемой цепочки.
270 Глава 6. Параметрические системы программирования Пусть R = {ф|:: = Ht (V) | ? = 1, 2, ... , п} — система уравне- уравнений, задающая некоторый кс-язык. Строка фй:: = Hk(V) подобна строке фг:: = ffr(V), если существует взаимно-однозначное соот- соответствие _ф :#fe(F)-e-->-#r(F), которое каждой цепочке z = ... usi>isus+1 б Hk (V) сопоставляет цепочку z' = щ^г{ • -ч, ¦• ¦ ^ф^^/б НТ (V), где щ 6 F (Щ при любом / = 1,2, .'.! , s + 1, причем сЬ?( = ф[( либо ф? = фй и ^Г = фг при каждом ? = = 1,2, ... , s. Нетерминал фй равносилен нетерминалу фг, если строки фь :: = H^(V) и фг:: = HT(V) подобны. Введенные отношения равносильны, и подобия являются отношениями эквивалентности на множествах нетерминалов и строк (соответственно) и опреде- определяют разбиение соответствующих множеств на классы эквива- эквивалентности. Система уравнений R* называется приведенной формой си- системы R, если R и R* порождают один и тот же язык и выпол- выполняются следующие условия: 1) язык L^, порожденный по г-й компоненте системы R* (см. § 5.3), бесконечен при каждом ? = 1,2, ... , п; 2) каждый класс подобия (равносильности) состоит из един- единственной строки (одного нетерминала). Доказано, что любая система уравнений R, задающая некоторый кс-язык, может быть преобразована к эквивалентной приведенной форме [79]. Приведенная форма позволяет расширить класс кс-грамматик, для которых существуют эквивалентные беспереборные грамма- грамматики G рассмотренных выше типов. Действительно, есть кс-грам- матики, которые не являются ограниченно-контекстными и LR (к)- грамматиками, но приведенная форма которых уже принадлежит к перечисленным классам, откуда следует существование экви- эквивалентных беспереборных грамматик G соответственно с квази- квазиуниверсальными отношениями и выводом слева направо. Пример 5. Рассмотрим систему уравнений = #ф!#, — Ь^Ь.^у bo'bo = ф,с\/с, кс-Грамматика, соответствующая этой системе уравнений, не явля- является LR (/с)-грамматпкой при любом к, так как при фиксирован- фиксированном к можно указать правильные цепочки, в которых однозначнее определение свертки на некоторых шагах требует просмотра пра- § 6.4. Параметрические грамматики инверсно-рекурсивного типа 271 вого терминального контекста, превосходящего по длине выбран- выбранное к. Такая, например, цепочка # Ъ1ск+1а1#. Первое вхождение символа с является самой левой подцепочкой, подлежащей свертке. Однако определение нетерминала, который необходимо подставить, связано с просмотром последующих терминалов. В то же время приведенная форма данной системы имеет вид ^2a2 V &2ф2а2 V h<b2as V b2<b2as, и, очевидно, является LR (й)-грамматикой. Ей эквивалентна бес- беспереборная грамматика Gx = (R^, Аъ срх), где До = (е, с), Ai =(#,#). Д. = ( U #г 1=1,2 Дь если Д2, если Перейдем к параметрическим грамматикам рекурсивного типа (аналог развертки). Под взвешенной цепочкой понимается пара (z, L), где zeF(F), L^F(%); вторая компонента — язык L — называется весом цепочки z — первой компоненты пары (z, L). Взвешенная цепочка (z, L) называется ассоциированной с терми- терминальной цепочкой zkF(%), если z^L. Примерами взвешенных цепочек служат пары (a<b,L) и (<г3Ь2, L), где L = [anbm \ n, m = = 1,2, ...}, причем вторая пара представляет собой взвешенную цепочку, ассоциированную с цепочкой asb2, в то же время взве- взвешенная цепочка (anL) не ассоциирована с терминальной цепоч- цепочкой а", так как anJL. Параметрической грамматикой рекурсивного типа (ПГРТ) называется грамматика G = (R, А, ср) со следующими параметрами: Д = {ф4 ;: = ff{ (У) | i = 1, 2, .. . , п}— система уравнений с выделен- выделенной аксиомой фх! -4 — множество бинарных отношений Д, каждое
272 Глава 6. Параметрические системы программирования из которых состоит из совокупности взвешенных цепочек; п ... ф: U Нг(У)~*-А — отображение, сопоставляющее каждой цепочке z 6 Нг (V) некоторое бинарное отношение Д = ф (ф^ z) из мно- множества А. Пример 6. Грамматикой рекурсивного типа является грам- грамматика Gx = (i?i, Аь фх), параметры которой определяются сле- следующим образом: а" = аф, ф = {(а"ф, aF (a) F (Их ф = {(а"ф, aF (a) | п = 1, 2, . . . }, I п = 1, 2, . . . }, Дф, = {(апЬтфь aF (a) bF (Ъ)) | п, т, = 1, 2, ... Дф, = {(а"стф2, cF (9ti)) I m, n = 1, 2, ... }, где F (9ti) — свободная полугруппа над алфавитом 9ii = {a, b, с); F(a),F(b)— свободные полугруппы над однобуквенными алфави- алфавитами {a}, [b] соответственно. Отображение фх определяется равен- равенствами Ф1 (о, аф) = Д», <?i (ф, аф) = Дф, я>х (ф. Ь, фО = Дф, ох (ф, с©2) = Дф, ?i (?ii z) = Д*1 Для каждой цепочки z е Ях (Fj), ?i (?2i z) = Дф3 Для каждой цепочки z 6 Я2 (F^, где Fj = E1-1U {°i ф. фц фг]} — объединенный алфавит. Взвешенная цепочка (у, L2) непосредственно выводима из взве- взвешенной цепочки (х, Lj) в грамматике G = (R, А, о), (ж, Lx) (^ (у, L2)(G) или (ж, Z/x) (zr: (у, L2), если грамматика G подразумевается, при условии, что ж = Кхф^ц у = к^^х, причем «х С F (91), zi H{ (F) и (ж, L) f Д = в (ф{, z), следовательно, язык L2 = L1 [\L непуст. Так, для грамматики Gx (см. пример 6) (а*ф, F (91J) }= (aftc62, cF(9t1)). Действительно, к цепочке а''6 с весом L1 = F(9t1) при- применяется продукция <!)--*-сд*, причем ?i (ф, сф2) = А* = {(ггпф, cF(Ulx)) | п =1, 2, . ..), так что в результате получается цепочка aftcd).,. с весом L2 = F (9tx) flcF E1Х) = с-^ (^i). В то же время взве- взвешенная цепочка (accs2, L2) не выводится непосредственно из взве- взвешенной цепочки (аф, aF (%х)), так как cF (9^) {] aF (91^ = 0. 6.4. Параметрические грамматики инверсно-рекурсивного типа 273 Взвешенная цепочка (г/, L2) выводима из взвешенной цепочки (ж, L^ в грамматике G = (R, А, ©), если существует вывод (z0) Lo) x, Li) (= • • • |= (zn, LJ F.12) такой, что x — z0, Lx = Lo и г/ = zn, L2 = Ln. Первые компоненты взвешенных цепочек, входящих в F.12), представляют собой левосторонний вывод цепочки у = zn из цепочки ж = z0 в кс-грам- матике, соответствующей системе уравнений R, а вторые — моно- монотонно убывающую последовательность языков >1 = Lo id = L% F.13) Выводимость (у, L2) из (ж, Lx) обозначается (ж, Lx) fr: (г/, L2) (G) или (ж, Lx) ^ (г/, L2), если грамматика G подразумевается. Под языком L (G), порождаемым грамматикой G = (#, А, ©), понимается множество таких и только таких терминальных цепочек ж^(91), для каждой из которых существует ассоциированная цепочка (х, L), выводимая из взвешенной цепочки (фь F (91)). В общем случае такой язык L (G) является собственным подмножеством языка L(R), порожденного системой уравнений R, являющейся параметром данной грамматики G = (R, А, ср), так как на замены ф4 цепочками из Нг (V) накладываются дополнительные ограничения, связанные с использованием параметров А и ср. В частности, грамматика Gx (см. пример 6) порождает язык L (Gx) = {a"frm | n, /71=1, 2, ...}, который является собственным подмножеством языка L (/?х) = (anbm> U aV1 п, т.\, т2 = 1, 2, ...}, порожденного системой уравнений /?х- Действительно, в грамматике G выводимы взвешенные цепочки вида (anbm, aF (a)bF(b)). Так, вывод (оаф, aF (a) F (9Ix) t= (oab?1, , aF (a) 6F (Ь)) (a, F (91x)) t= (аф, a aF (a) 6F является выводом взвешенной цепочки (a2b2, aF (a) 6F (Ь)) в градь матике Сх, откуда следует, что orb2 ? L(Gi). С другой стороны, aV'g L(Gi), поскольку при построении выводов соответствующих взвешенных цепочек замещение нетерминала 6 цепочкой сф2 невоз- невозможно из-за пустоты пересечения весов, aF (a) F (9ti) f) cF (9tx) = 0. Таким образом, из определений непосредственной выводимости и выводимости в грамматике G = (#, А, ср) следует, что вывод взвешенной цепочки, ассоциированной с цепочкой x^L (G), управ- управляется параметрами R, А, ср так, что на каждом шаге в качестве второй компоненты строится некоторый вес (язык, содержащий цепочку х), тогда как первой компонентой является цепочка, терминальное начало которой совпадает' с началом цепочки ж.
274 Глава 6. Параметрические системы программирования Заметим, что понятие веса является обобщением понятия мно- множества Mi,<z(k), которое используется при определении LF(к)- грамматик (см. § 6.3), так как оба эти понятия содержат допол- дополнительную информацию о возможности замещения нетерминала ф цепочкой z на каждом шаге вывода. Пусть R = [tyi:: = Ht (V) | i = 1, 2, ... , п] — некоторая система уравнений, порождающая язык L(R). В частности, система R может быть представлена соответствующей БНФ. Рассмотрим грам- грамматику G = (R, А, ср), параметр А которой состоит из единствен- единственного бинарного отношения к. — {(х, F(Щ\ для всякого x?F.(V)}. Язык L(G), порожденный этой грамматикой, очевидно, совпадает •с языком L(R), т.е. L(G) = L(R). Переход от задания языка посредством системы R к его заданию с помощью параметричес- параметрической грамматики G является тривиальной параметризацией систе- системы R (или соответствующей БНФ). Таким образом, справедливо •следующее утверждение. Теорема 6.8. Параметрическая грамматика G = (R, А, ср), .полученная с помощью тривиальной параметризации системы урав- уравнений R, задает тот же язык, что и система уравнений R. Из этой теоремы следует, что параметрические грамматики рекурсивного типа являются естественным обобщением кс-грам- матик, а значит, и БНФ. Грамматика G = (R, А, ср) называется беспереборной, если для различных цепочек z, z' е Н{ (V), ср (ф4, z) f) <р (фг> z') = 0 ПРИ каж- каждом г — 1, 2, ... , п, т. е. бинарные отношения, соответствующие цепочкам z и z', при отображении ср не пересекаются. Это озна- означает, что на каждом шаге вывода в беспереборной грамматике G замена нетерминала ф4 цепочкой z 6 Нг (V) однозначно определя- определяется информацией о возможном продолжении вывода, содержа- содержащейся в весе соответствующего бинарного отношения. Доказано, ¦что любой кс-язык порождается некоторой беспереборной грам- грамматикой G [96]. В то же время обратное утверждение неверно, так как не веяний язык, порожденный беспереборной граммати- грамматикой G, контекстно-свободный. Таким образом, эффективность ¦синтаксического анализа языков, заданных грамматиками из рас- рассмотренного класса, как и при задании грамматиками инверсно- рекурсивного типа, зависит от сложности бинарных отношений, входящих в множество А. Поэтому при классификации методов синтаксического анализа разверткой с помощью грамматик G = = (R, А, ср) следует учитывать сложность параметра А. В работе 1126] формулируются достаточные условия, позволяющие выделить классы грамматик G = (R, А, ср), ориентированных на бесперебор- беспереборный синтаксический анализ разверткой. Эти классы являются обобщениями классов LL (/с)-строгих LF (к)- и LL (/)-грамматик, при этом осуществляется параметризация грамматик из указанных классов, т. е. переход к эквивалентной грамматике G. § 6.4. Параметрические грамматики инверсно-рекурсивного типа 275- Строго беспереборной называется грамматика G = (R, А, ср), параметры которой удовлетворяют следующим условиям: 1) если (v, Li) 6 ср (ф4, z) и (v, L2) <Е с» (ф4, z') для различных цепочек z, z' б ?Hi(V), то Lx{]L2 = 0; 2) для любой цепочки гб#{G) из (v, LJ б ср (ф4, z) и (у, ?2) 6 «р (фг, z') следует, что ^ = L2. Первое- условие требует, чтобы на каждом шаге вывода замена ф{ цепоч- цепочкой z однозначно определялась информацией о возможности про- продолжения этого вывода, второе означает, что всякое преобразование первой компоненты взвешенной цепочки влечет за собой одно- однозначное преобразование второй компоненты — веса этой цепочки. Так, грамматика Gx (см. пример 6) не является беспереборной, а значит, и строго беспереборной, поскольку пересечение срх (<Ьи ^ti) П?1 (ti> Ц = Д(Ь непусто. Пример 7. Строго беспереборной является грамматика G2 =¦ = (R2, А2, ср2), которая порождает LL (&)-язык, L = [апЪт # | п, т = 1,2, ...} (см. § 6.3, пример 4) и параметры которой опре- определяются следующим образом: ф1:: = аф2, ф2:: = аф2\/Ьф3, ф3:: = &фв V Ь, А, = < Ф()} ДФ. = {A>i #, &F (Й2)) Ai2 = {(an<b2 #, anaF д", = {(аП*>2 #, anbF ( Д13 = {(ап6тф3 #, a"fe для любого п > 1}, для любого п > 1}; Ct2) | для любого п, m Д', = {(а"Ьтф3 #, а"Ьт # | для всех п, т > 1], где 9t2 = (а, Ь, it) — терминальный алфавит. Отображение ср, опре- определяется равенствами <?2 (Фо. <р1. #) = До0 ?2 (Фв, Ьфз) = Д^ ?2 (Ф ф) 4< ?2 (!», ) 4v Действительно, для взвешенных цепочек (апд2 #, Lj) e Д^ = = ?2 (ф2, аф2) и ^ (а"ф2 #, L[) е Д^ = ?2 (ф2, Ьй3), Zx f| L; = 0, где- Zj = anaF Et2), L^ = a"^ Et2). Аналогично для взвешенных цепочек- (aW3 #, i2) 6 Д^ = ?2 (Фз, Ь63) и (anbm #, L,') 6 Д?3 = ср, (ф3, Ь), где Ь2{]Ц = 0, L2=anbmbF(%2), Ц = {апЬт~#). Кроме того, каждое бинарное отношение, входящее в А2, функционально по второй компоненте (т. е. не содержит двух пар с одинаковой первой и разными вторыми компонентами). Таким образом, грам- грамматика G2 удовлетворяет условиям строгой беспереборностп.
276 Глава 6. Параметрические системы программирования Вывод ^ фь F {%) t (zb Lj) (= (z2, L2) t= • • • |= (zft) Lft) (k > 1) взвешенной цепочки (zft, Lft) в грамматике С? называется управ- управляемым некоторой терминальной цепочкой х?Р(Щ, если каждая цепочка гг = uibpi имеет терминальное начало щ, совпадающее с началом цепочки х, причем х б L{ при любом i = 1, 2, ... , к. Примером управляющего вывода в грамматике G служит вывод взвешенной цепочки (х, L), ассоциированной с цепочкой х 6 L (G), управляемый цепочкой х; в грамматике С?2 (см. пример 7) — вывод {ф„, F (Й2)) ?= (([>! #, F (&2)) t= (аф2#, aF Ct2)) t= (aa«|>2#, aaF Et2)) tr fr (aabtys#, aabF (9t2)), управляемый цепочкой хх --= aaba±? g L (G2). Действительно, а' принадлежит весу каждой взвешенной цепочки данного вывода и терминальные начала первых компонент этих цепочек совпадают с началом цепочки хг. Теорема 6.9. Для каждой цепочки х € F (Щ в строго беспере- беспереборной грамматике G существует единственный максимальный по длине вывод, управляемый данной цепочкой. Действительно, пусть (ibb F (Щ) $= (zb Lx) \= • • • tr (zk, Lk) — некоторый максимальный по длине вывод в грамматике G, управ- управляемый цепочкой xtF(%). В силу строгой беспереборностй на каждом шаге данного вывода преобразование первой компоненты взвешенной цепочки влечет за собой однозначное преобразование ее второй компоненты. С другой стороны, если на произвольно выбранном г-н шаге данного вывода (г ^ 1), на котором осущест- осуществляется переход от (zr_b Lr_x) к {zr,Lr), где zr_l = uT-$ivT-l, zT = иТ-1?иТ^ъ z 6 Ht (V), заменить Ф{ цепочкой z' e H{ (V), отличной от z, то согласно условию строгой беспереборностй F.11) получим взвешенную цепочку (ur_1z'vr_u L'r) такую, что Lr[)L'r= 0,т.е. х~? L'r, а это противоречит свойству вывода, согласно которому он управляем цепочкой х. Отсюда следует, в частности, что всякая строгая беспереборная грамматика G однозначна, т. е. для любой цепочки х 6 L(G) существует единственный вывод в G взвешенной цепочки (х, L), ассоциированной с х. Кроме того, всякая строго беспереборная грамматика G допускает беспереборный синтакси- синтаксический анализ разверткой. Для этого достаточно рассмотреть мак- максимальный по длине вывод в G, управляемый произвольно выб- выбранной цепочкой x^F(Щ. Тогда х? L(G) в том и только в том случае, когда данный вывод завершается взвешенной цепочкой (х, L), ассоциированной с х. Дополнительные ограничения, налагаемые на параметры строго беспереборных грамматик, позволяют, в частности, решить про- проблему параметризации известных классов кс-грамматик, ориенти- ориентированных на беспереборный синтаксический анализ разверткой (см. § 6.3). Рассмотрим множество Р всех беспереборных грам- грамматик G — (R, А, ©), параметры которых удовлетворяют соотно- соотношению о F{, z) = {(и°Ь{и, uL (и) | для всех и б Ьг\, F.14) § 6.4. Параметрические грамматики инверсии-рекурсивного типа 277 где Lt^F (Щ и L (и) — некоторый язык (вообще говоря, завися- зависящий от и). Пусть G — произвольно выбранная LL (/)-грамматика. Нетерминал <]^ 6 FH имеет префикс и, если в G существует левый вывод o4-j, где x = wbi. В качестве языка L{, входящего в соот- соотношение F.14), выберем множество всех префиксов нетермина- нетерминалов <bi. Тогда, конкретизируя язык L (и) как некоторое множество прообразов различающей функции / LL (/)-грамматпки G, можно доказать, что существует строго беспереборная грамматика G б Р, эквивалентная грамматике G. Накладывая дальнейшие ограничения на параметры строго беспереборных грамматик, можно решить проблему параметризации строгих LL (/)-, LF (к)- и LL (^-грам- (^-грамматик [126]. Теория параметрических грамматик рекурсивного и инверсно- рекурсивного типа может быть положена в основу параметричес- параметрических моделей, ориентированных на беступиковый двусторонний ПР-анализ (см. § 6.3). Пусть G = (Р, А, ср) — произвольная ПГРТ, где Р :{р: ty-^-w) — схема кс-грамматик, соответствующая системе уравнений R; А = = {Др | р б Р] — совокупность бинарных отношений, функциональ- функциональных по второй компоненте; ср: Р—>-А — отображение, сопостав- сопоставляющее каждой продукции р б Р бинарное отношение Др 6 А, ср (р) = Др. С рассмотренным выше понятием управляемого вывода ассоциирована концепция а-выводимости [89. 90]: в ПГРТ G из цепочки Zi = uvv непосредственно a-выводима цепочка z2 = uwv с управлением терминальной цепочкой х = их' fr: z2), если есть G продукция р: dj ->- со б Р, причем в отношении Др = ср (р) найдется пара (ziL) б Др такая, что х' 6 L. Транзитивное замыкание отно- относе X шения (^ приводит к отношению a-выводимости z\—z, так что о о существует последовательность z0, z1: ... zheF(V), где z = z0, x ъ = zh, причем при любом i = 0, 1, ... , к — 1, z{ t= zi+1. Язык, G порожденный ПГРТ G, представляет собой множество термпналь- ных цепочек L(G)= (а;|а1—х), a-выводимых из аксиомы а. с Пусть z = wbv — произвольная строка вывода в кс-грамматике Р ж z' — uwv получена из z в результате применения продукции p:<b-+wtP. Строго беспереборная ПГРТ G* = (Р, А*., ср*) назы- называется совершенной, если для любого бинарного отношения Др е А* выполняется условие (z, L) б Др тогда и только тогда, когда L = * р * = {х | а* =? z =ф z =^ их \.
278 Глава 6. Параметрические системы программирования К важным проблемам теории кс-языков относится проблема Гинзбурга [19], состоящая в построении грамматических и авто- автоматных моделей, характеризующих класс однозначных кс-языков. Эта проблема решается теоремой, устанавливающей критерии однозначности кс-языков в терминах совершенных ПГРТ [125]. Теорема 6.10. кс-Язык L однозначный тогда и только тогда, когда существует совершенная ПГРТ G* = (Р, Й* »*) такая, что L =L(G*). В терминах а-выводимости естественно формулируется процесс управляемого двустороннего вывода в ПГРТ G (ПР (а)-вывод). Из пары (z1: z[) непосредственно ПР (а)-выводима пара (z2, z'2) при управлении терминальной цепочкой х (z1, z.[) \—\ (z,, z,'), если G хх х Zij— z2 и z2' (^ z^. Транзитивное замыкание отношения I—I приво- G G x О дит к отношению ПР (а)-выводимости f— [89, 90]. Цепочка х при- G надлежит L (G) тогда и только тогда, когда существует ПР (а)- ас -^ вывод W = (а, ж) |=| (z, г') такой, что z= z' либо z f^: z'. Вывод W, G G удовлетворяющий указанным условиям, правильный. Тупиковым (или тупиком) будем считать ПР (а)-вывод W в грамматике G, не являющийся продолжением правильного ПР (а)-вывода, причем в G не существует правильного ПР (а)-вывода, до которого может быть продолжен вывод W. Грамматика G называется ПР (а)-бес- тупиковой (ориентированной на беступиковый ПР-анализ), если наличие для цепочки х 6 F (Щ по крайней мере одного тупика означает, что x$L(G) [125]. Теорема 6.11. 1) Произвольная совершенная ПГРТ G* ориен- ориентирована на беступиковый однозначный ПР (а)-анализ и 2) классы LL(k)-, LLS (k)-, LF (к)-, LL (В)-грамматик до- допускают параметризацию, ориентированную на беступиковый Ш(а)-анализ [89, 90]. Пример 8. Рассмотрим зеркальный язык L = [х, х~1 \х б 6F(9t) % {a b}} порождаемый ПГРТ G (PA) = (a, b}}, порождаемый ПГРТ G = (P, А, ©), где Pi: a—*¦ aa, p3: a —*- bzb, P = А = Дх = {{zsz-1, aF (Щ) J для любого z ? F (%)}, Д2 = {(zsz'1, aaF(%)) | для любого z i F (Щ), Л3 = {(гэг, bF (Щ) | для любого z ? F (Щ), A4 = {(zsz-1, bbF (Щ) | для любого z ? F (&)}, ?(p1)=Ai (i = l,2,3,4). § 6.4. Параметрические грамматики инверсно-рекурсивного типа 279 Проиллюстрируем процесс ПР (а)-вывода по ПГРТ G на примере цепочки .х= aabbacLZ L (G), (а, х) |~| (ааа, ааа, аа). Из первой ком- G поненты заключительной пары непосредственно а-выводима ее вторая компонента, откуда следует правильность анализируемой цепочки. Техника управления левосторонним выводом, положенная в основу ПГРТ, может быть использована при организации бес- беступикового двустороннего ПР-анализа. Двойственным образом в процессе управления ПР-анализом применим аппарат ПГИРТ. В работах [89, 125] предложены двусторонние параметрические грамматики, в которых управление процессами развертки и свертки разделено. По каждому из направлений можно сочетать различ- различные способы управления разверточного типа. В частности, посред- посредством двусторонних грамматик могут быть промоделированы стратегии левостороннего анализа. Особый интерес представляет изучение параметрических мо- моделей, по которым могут быть сконструированы анализаторы, функционирующие с временной сложностью, пропорциональной длине анализируемых цепочек. К таким моделям относятся грам- грамматики ПГРТ G, в которых множество А бинарных отношений ассоциировано с совокупностью регулярных языков, что позволяет существенно упростить процесс анализа с помощью предваритель- предварительной конечно-автоматной обработки входных цепочек [2]. Концепция предварительной конечно-автоматной обработки допускает обобщение на случай двустороннего ПР-анализа. Для такого обобщения каждому регулярному языку Lp, ассоциирован- ассоциированному с бинарным отношением Др, сопоставим конечный автомат З l Lp = LGp), где Sp- — входной алфавит, ор — функция 8р, L множество состояний, SpU р, Ll, Fp) такой, переходов, Lv — начальное состояние, Fp — множество заключи- тельных состояний автомата Ар. Автоматы Ар (р ? Р) назовем левосторонними. Всякому левостороннему автомату Ар соответ- соответствует правосторонний автомат Ар — C5 (Sp), SJ) {^{, Ьр, {Fp\) без заключительных состояний, где 35 (Sp) — булиан над множеством sp, элементы которого (подмножества в Sp) являются состояниями автомата Ар; SpU (X) ~ его входной алфавит; op(S, a)= {s\op • • (s, a) -; S, S*=i Sp, a e SpU {^}} — функция переходов; Fp — на- начальное состояние автомата Ар. Правосторонний автомат Ар может быть построен по левостороннему автомату Ар по аналогии с ал- алгоритмом перехода от праволинейной грамматики к леволинейной, предложенным в § 5.4.
280 Глава 6. Параметрические системы программирования Для предварительной конечно-автоматной обработки исполь- зуется техника следов [100]. Автоматы В = X Av и B = движутся по входной ленте навстречу друг другу (рис. 35) (X — декартово произведение автоматов). Каждая ячейка входной ленты разделена на три секции. Средняя секция содержит соот- соответствующий символ анализируемой цепочки. В левую (правую) секцию помещаются конфигурации состояний автомата В (В), Развертка Свертка a, S. a2 h I, ahi 4 II Шп-IH U-v Ы т-1 т-(П) Рис. 35/ вырабатываемые в процессе предварительной конечно-автоматной обработки. После достижения противоположных концов анали- зируемой цепочки автоматы В я В выключаются п начинает функционировать магазинный ПР-анализатср Ас При этом вклю- чаются ассоциированные с автоматами В та В контролирующие устройства С ж С, которые по результатам конечно-автоматной обработки проверяют терминальные контексты, допускающие при- применение продукций р и q в процессе соответственно развертки и свертки. Затем ПР-аналпзатор Аа функционирует по схеме, описанной в § 6.3. Параметрические модели с регулярным управлением, ориен- ориентированные на беступиковып однозначный ПР-аналпз, называются г-моделялш. Справедливо следующее утверждение [124, 125]. § 6.4. Параметрические грамматики инверсно-рекурсивного типа 281 Теорема 6.12. Для произвольной r-модели D может быть скон- сконструирован магазинный ПР'-анализатор, AD с предварительной конечно-автоматной обработкой такой, что L {Ad) = L (D). При атом временная сложность алгоритма ПР-анализа, реализованного в An, пропорциональна длине анализируемой цепочки. Из этой теоремы следует, в частности, что магазинные ПР- анализаторы с предварительной конечно-автоматной обработкой можно применять при конструировании средств математического обеспечения для многопроцессорных вычислительных комплексов. Параметрические модели грамматик, ориентированные на ПР- анализ, могут быть применены и для организации управления неоднозначным ПР-анализом, необходимость в котором подтвержда- подтверждается практикой использования современных языков программи- программирования. В работах [89, 90] рассматривается понятие скобочной ПГРТ, отражающей сущность неоднозначности в терминах пар согласованных скобок — точек ветвления и слияния. Внутренняя память ПР-анализатора Ас ассоциированного с некоторой скобоч- скобочной ПГРТ G, содержит кроме магазинов Мр и Мс также по одному бс-магазину (см. § 6.1) для каждого из направлений ПР-анализа. бс-Магазин функционирует как бобслей при поиске согласованных пар скобок, достигнутых по обоим направлениям ПР-анализа, и как магазин — когда соответствующая пара скобок достигнута по одному из направлений. Автомат Ag называется бс-анализа- тором, соответствующим скобочной ПГРТ G. Справедливо следую- следующее утверждение [89, 90]. Теорема 6.13. Произвольная скобочная ПГРТ G допускает бес- тупиковый ПР-анализ на соответствующем бс-анализаторе. Метод неоднозначного ПР-анализа может быть проиллюстри- проиллюстрирован на примере существенно неоднозначного языка L = {ahbhcmdnen} [} {ahbmcmdnes} [} {akbmcndne% где к, т, га, s = 1, 2, ... , порожденного скобочной ПГРТ [89]. Естественным обобщением двусторонней стратегии является концепция многослойного анализа, состоящая в разметке входной программы связанными парами указателей, ограничивающими независимо друг от друга анализируемые фрагменты программы, и их совместной ПР- или РП-обработке. В работах [124, 125] предложены параметрические модели языков, ориентированные на проведение эффективного многослойного ПР-анализа. Заметим, что методы параллельного двустороннего анализа допускают эффек- эффективную реализацию в однородных структурах, элементной базой которых являются автоматы над внутренней памятью (см. § 6.1). Стратегия двустороннего анализа и ее обобщения могут быть использованы при конструировании анализаторов для гибких и достаточно сложных систем математического обеспечения, ориен- ориентированных на многопроцессорные вычислительные комплексы,
282 Глава 6. Параметрические системы программирования а также при решении задач отладки программ, их контроля и локализации ошибок в системах программирования коллективного пользования, работающих в режиме диалога с разделением времени. § 6.5. Метаязык СМ-грамматнк и проблемы трансляции Решение проблемы синтаксического анализа и контроля языков программирования — одной из главных проблем в современной теории и практике программирования (см. § 6.1—6.3) — тесно связано с разработкой эффективных форм представлений грамматик анализируемых языков. Достаточно полно отражают специфику алгоритмов анализа и контроля метаязыки распознавающего типа. К таким метаязыкам относится, в частности, метаязык СМ-грам- матик — форма представления га-магазинных автоматов, ориенти- ориентированная на описание синтаксиса и позволяющая учитывать семан- семантические эквиваленты элементов синтаксического разложения ана- анализируемых программ [15, 129]. Отличительной особенностью СМ-грамматик является сочетание свойств грамматик распозна- распознающего и порождающего типа, а также выполнение функций нетерминальных символов именами, обозначающими комплексы продукций. Выбор продукции из комплекса связан с выполнением допол- дополнительной операции над памятью, состоящей из га магазинов (га>0). Строго говоря, под СМ-грамматикой подразумевается тройка C = (&, R, г), где C = (Й, V, Г) — система алфавитов грамматики C, 9[ _ терминальный алфавит, причем пустой символ е принадле- принадлежит Й, V — вспомогательный алфавит, в котором выделен спе- специальный символ Л ? V, Г — магазинный алфавит такой, что Г г) V, R — множество имен, соответствующих комплексам про- продукций определенного вида, причем Rf\V = 0 и Fcz(i?UF), Я = [г0, г0) — выделенные имена комплексов продукций СМ-грам- матики, г0 — аксиома грамматики @ (имя начального комплекса продукций); г0 — имя заключительного комплекса (комплекса с пустым множеством продукций). Продукции, входящие в комплексы грамматики C, имеют следующий вид: "W" "п> " ¦ а =»¦/¦, F.15) где а <Е 9t — символ терминального алфавита, wm (аъ ..., ос„) — га-арное отношение, определяющее вид операции над памятью (т= 0, 1, 2), а4 —цепочка в магазинном алфавите Г при любом i, 1^г<га, г ? R — имя комплекса продукций преемников, к которым осуществляется переход после применения данной продукции при условии, что выполняется отношение wm. § 6.5. Метаязык СМ-грамматик и проблемы трансляции 283 При т = 0 никакие операции над магазинами не производятся, При т = 1 (т = 2) в магазин с номером i при всех i = 1, ... , п последовательно слева направо записывается (стирается) цепочка оц =5^= Л • Операция записи выполняется безусловно, а стирания — при условии, что цепочка сцФ/\ в продукции грамматики и цепочка, содержащаяся в верхних ячейках ?-го магазина, совпадают. Если эти цепочки не совпадают хотя бы при одном ?, то соответст- соответствующая продукция неприменима и стирание из магазинов не произ- производится. Если сц = Л, то содержание г-го магазина не изменяется. Метаязык СМ-грамматик удобен как для порождения, так и для распознавания. Порождение некоторой цепочки языка, задан- заданного СМ-грамматикой C, начинается с применения какой-нибудь продукции, которая принадлежит начальному комплексу, помечен- помеченному аксиомой г0. Примененная продукция определяет первый символ порождаемой цепочки, необходимую операцию над мага- магазинами, а также последующие применимые продукции-преемники, из которых выбирается очередная продукция; порождение цепочки завершается применением продукции, имеющей в первой части заключительное состояние г0. Распознавание принадлежности исходной цепочки заданному языку сводится к проверке вхождения первого символа данной цепочки в левую часть одной из про- продукций начального комплекса г0; каждый следующий символ цепочки должен встречаться в левой части одной из применимых продукций-преемников, а последний определен продукцией с г0 в правой части. Как при порождении, так и при распознавании применение каждой продукции сопровождается определенными предписанными продукцией действиями .над магазинами. Кроме того, в начале и в конце процесса содержимое всех магазинов должно быть пустым. Язык L (&) порождается (распознается) СМ-грамматикой C, если в & порождаются (распознаются) те и только те цепочки, которые принадлежат заданному языку. Пример 1. Любой конечный язык Ьг = {хъ х2, ... ,хк},ще хх — ахо ai2' • • • i а;п. — непустая цепочка в алфавите 5t = [аъ а2> ••• ! ат} при любом l^i^/c, порождается СМ-грамматикой ©1 с совокупностью комплексов
284 Глава 6. Параметрические системы программирования (В данном примере при интерпретации продукций СМ-грамматики магазинная память, не используется, в таком случае пометки w0 могут опускаться). Пример 2. Универсальный язык Ь2, состоящий из всех непустых цепочек в алфавите % = {аъ а2, ... , а^}, порождается СМ-грамматикой @2 с комплексом продукций го = {аг^-го, а{=>г0\1 = 1,2, ... ,т). Пример 3. Язык L3 = {апЪап\п = О, 1, 2, . . .} порождается СМ-грамматикой @3 с терминальным алфавитом %3 = (я, Ь), алфа- алфавитом магазина Г3 — {а'} и совокупностью комплексов го = {а r0, a №2(a') w2(a') г =#. r2, a =#¦ {\ . . .} порождается СМ- грамматикой ©4 с терминальным алфавитом Э?4 = {а, Ъ), алфави- алфавиГ {'} Пример 4. Язык L4 = {anbn\ n = 1,2, рмматикой ©4 с терминальны ф том магазина Г4 {а'} и совокупностью комплексов ту= {а rQ, a w2(a') = [Ъ =? Г2}, u>i(a') w2(a') Ь Г21 ) Г0}. Пример 5. Язык L-o—{xx~1} для пустой цепочки x?F(&b) порождается СМ-грамматикой @5 с терминальным алфавитом %ъ = [аъ . . . , ат), алфавитом магазина Г6 = {a'v . . . ^} вокупностью комплексов a>i(aj) JOifaj) ''О = {ai => г0, Ч => М> В приведенных примерах СМ-грамматики @х — @5 порождают контекстно-свободные языкп (см. § 5.2, примеры 1—5, а также § 5.3). Пример 6. L6 — {х^х} для любой непустой цепочки х 6 F (Qt4) порождается СМ-грамматпкоп @6 с терминальным алфавитом Ste = (a, Ь, X} наД памятью, состоящей из двух магазинов с алфа- алфавитом Г6= \а', Ъ'\. Грамматика @ имеет следующую совокупность комплексов: 6.5. Метаязык СМ-грамматик и проблемы трансляции 285 ri = гса(а', л) гс,(л, а') = {Рз1 '¦ е ===*¦ гъ р32: е гс2(л, а') гс2(л, Ь') = 1P4i :«==»¦ 7*4. Pj2:b= гс2(л, а') гсг(л, Ь') где е — пустое слово, Л — вспомогательный символ для «защиты» содержимого магазина. Рассмотрим грамматику @6, порождающую язык для цепочки aab^aab^Le. В начале соответствующего вывода применяем продукции р01, р01, р02, р03 6 г0, которые порож- порождают цепочку аа&Х и записывают в первый магазин последо- последовательно а', а', V. Затем с помощью р12 б гх считываем V из первого магазина и переходим к продукции р31 б г3, записывая во второй магазин Ъ' с возвратом к гх. Далее, применяя последовательность продукций рг1, р21, рп, р22, полностью переписываем содержилюе первого магазина во второй. Наконец, используя р41, р42, рц (¦. rt, завершаем вывод исходной цепочки. Пример 7. Язык L-, = {anbncn\n = 1, 2, .. .} порождается СМ-грамматикой @, с терминальным алфавитом ЭЦ = [а, Ъ, с\ над памятью, состоящей из двух магазинов с алфавитом Г7 = (а.'}. Грамматика @7 имеет следующую совокупность комплексов: Г2— Цепочка aabbcc 6 L7 имеет в грамматике @7 следующий вывод. Вначале применяются продукции р01, рй2 6 гй, которые порождают подцепочку аа и одновременно записывают в оба магазина це- цепочки а'а', затем—продукции р1Ъ Pi2^rv порождающие под- подцепочку aabb и стирающие содержимое первого магазина. Наконец, продукции р2Ъ р22 б г2 завершают выход исходной цепочки. Для практических приложений используются более компактные приемы описания языков в терминах СМ-грамматик [30]. В примерах 6 и 7 СМ-грамматики порождают нс-языки (см. § 6.2, примеры 1, 2, а также § 5.2), не являющиеся кс-языками. Класс языков, порождаемых СМ-грамматиками, совпадает с классом рекурсивно-перечислимых множеств. Это следует па возможности представления в терминах СМ-грамматпк средств известных алгоритмических систем, например машин Тьюринга. Установим связь между однсмагазинными СМ-грамматиками
286 Глава 6. Параметрические системы программирования и кс-грамматиками (см. § 5.3), аналогом кэторых являются БНФ, используемые для описания синтаксиса языков программирования [132]. Пусть G = (&, Va, а, Р) — некоторая кс-грамматика и L (G) — порождаемый ею язык. Как известно (см. § 5.4), используя допол- дополнительные нетерминалы, можно исключить вхождения в схему Р продукций вида ?->-их и \-*-и, где и € F (Щ — терминальная це- цепочка длины |и| > 1, \, х ? Va. Так, продукция \-+аха<!х заменима парой продукции ?—^-а^, х!—>-а2х, где хх— дополнительный не- нетерминал аъ а2 6 81- Продукции, входящие в схему Р, разобьем на две группы: 1) Рг — множество всех правосторонних продукций грамматики G (см. § 5.4); 2) Р2 = Р\Рг— остальные продукции грамматики G. Рассмотрим одномагазинную СМ-грамматику @ = (&, V, R, а), где % — терминальный алфавит, совпадающий с терминальным алфавитом грамматикиG, V = Va{j ЗГ — магазинный алфавит грам- грамматики @, 3t' = {fl'| для любого agSt}, R — совокупность комп- комплексов продукций грамматики G, помеченных символами, входя- входящими в V, а — метка начального комплекса продукций. Каждой правосторонней продукции (? -и» ах) е Pi грамматики G сопоставим ¦СМ-продукцшо ?: а =»• х, заключительной продукции вида (? -и» а) 6 е Р — СМ-продукции Z-.a^-M и ^:а=4г0, где М — метка обра- обращения к магазину, т. е. считывания символа из вершини магазина и перехода к комплексу продукций, -помеченному данным сим- символом. Каждой кс-продукции \ ->- z 6 Р2> гДе z = и^щ^ . ¦ ¦ щЧъ.Щ+ъ u{uk+1 б F (Qt), Sj 6 FH (i = 1. 2, ... , А), поставим в соответствие СМ-продукцию \: e =^- M, где z' = u'^u^z . . ¦ u'kihu^+l, так что -если u=aefie2 .. . ae$, то u' = aefie, ... ae's. Кроме того, к про- продукциям СМ-грамматики @ отнесем продукцию вида а': {а=>М, ^г=^г0| для любого а^Щ. Начальный комплекс образуют все •продукции, помеченные меткой а. Заключительным состоянием в @ является 7-0. Переход в это состояние при опустошении ¦магазина означает принадлежность цепочки языку L (@). Докажем, что СМ-грамматика © эквивалентна кс-грамматике @, т. е. грам- грамматики Си© порождают один и тот же язык L (G) = L (©). Рассмотрим произвольную правильную цепочку и = ага2 L(G) F.16) и покажем, что и б ?(©)• Согласно F.16) в грамматике© найдется левый вывод z^o. ... , zT, где zx = a, zr = и, причем Pi, ... -Л-i^ F.17) является последовательностью продукций, порождающих данный бывсд. По последовательности F.17) можно построить последо- § 6.5. Метаязык СМ-грамматик и проблемы трансляции 287 вательность СМ-продукций, которая является выводом этой ж& цепочки и в грамматике ©. Действительно, продукции рг: (I -*¦ ах) g Рг (или рг: (? -и» а) € Рг} поставим в соответствие СМ-продукцию ^:а=#-х (или ^:{а=^Мг IC(Z') д=^г0}, а продукциям p;:(^z)f Р2 — СМ-продукции ?: е => М. Для чтения из магазина, в вершине которого находится символ а' б F, введем вспомогательные продукции а' :{а=>М, й=фг0}. Заметим, что переход в г0 допустим лишь на заключительном шаге СМ-вывода. Построенный таким образом СМ-вывод порождает цепочку F.16) в грамматике @, так что справедливо включение L(G)c^L (©). Для установления обратного включения L (®)^L (G) достаточно в СМ-выводе произвольной цепочки и 6 L (©) заменить СМ-продукции соответствующими продукциями грамматики G, отбросив вспомогательные продукции вида а':а=*-М. В резуль- результате получим левый вывод цепочки и в грамматике G. Таким образом, справедливо следующее утверждение. Лемма 6Л. Для каждого контекстно-свободного языка сущест- существует порождающая его одномагазинная СМ-грамматика L (@) = L. Проиллюстрируем приведенную процедуру построения СМ- грамматики © на следующем примере. Пример 8. Пусть схема кс-грамматики имеет вид Р = Тогда ¦ ах ¦ е Соответствующие продукции СМ-грамматики © имеют вид Кроме того, грамматика © имеет вспомогательные продукции Ъ':{Ъ=?М, 6=#-г0}. Выберем цепочку aabbeL(<3), причем а, ах, aab, aazb, ааэЪЪ, ааЪЪ является ее левым выводом в грамматике G. Тогда а: а =#¦•:, х: е ) М ') М F.18) F.19)
288 Глава 6. Параметрические системы программирования есть вывод цепочки ааЪЪ в СМ-грамматике @, причем, если в вы- выводе F.19) заменить СМ-продукции соответствующими кс-про- дукциями, а вспомогательные СМ-продукции отбросить, получим первоначальный левый вывод F.18) в грамматике G. Рассмотрим произвольную ?г-магазинную СМ-грамматику @, порождающую некоторый язык ?(©)- Для грамматики © можно построить ?г-магазинный автомат А (см. § 6.2) (вообще говоря, недетерминированный) воспринимающий язык?(@). Состояниями такого автомата являются метки продукций грамматики @, при- причем в каждом состоянии автомат А может одновременно выполнять ¦совокупность элементарных действий, предписанных соответст- соответствующей СМ-продукцией. Начальным состоянием автомата А явля- является аксиома грамматики @, отмечающая начальный комплекс продукций, а заключительным состоянием — соответствующий символ грамматики @. Отсюда следует, что и для одномагазин- ной СМ-грамматики @ существует одномагазинный автомат А, воспринимающий язык?(@). Однако, как известно, одномагазин- ные автоматы могут воспринимать лишь кс-языки. Поэтому одномагазинные СМ-грамматики также порождают только кс- языки. Таким образом, согласно доказанной выше лемме справедлива- следующая теорема [132]. Теорема 6.14. Язык L порождается одномагазинной СМ-грам- матикой тогда и только тогда, когда L — кс-язык, т. е. однома- одномагазинные СМ-грамматики равносильны (в смысле порождения языков) кс-грамматикам. Заметим, что одномагазинная СМ-грамматика, построенная описанным выше способом, сохраняет основные свойства соответ- соответствующей кс-грамматики. В частности, однозначным кс-граммати- кс-грамматикам соответствуют детерминированные одномагазинные СМ-грам- ыатики, представляющие класс детерминированных магазинных автоматов (см. § 6.2). Кроме того, для кс-грамматики, представ- представленной нормальной формой Грейбах [147], правые части продукций в которой начинаются терминальными символами, можно построить эквивалентную одномагазинную СМ-грамматику без пустого слова в левых частях СМ-продукций. Пример 9. Пусть схема кс-грамматики G' имеет вид Р = ¦Соответствующие продукции СМ-грамдттики ©' имеют вид Щф') ) а, а-»-6}, 6: § 6.5. Метаязык СМ-грамматик и проблемы трансляции 289 Кроме того, грамматика © имеет вспомогательные продукции 6':{&=*М, Ь=$-г0]. Как и в примере 8, для построенных грам- грамматик Из приведенных выше рассуждений следует, что переход от гадания языков кс-грамматиками (в частности, БНФ) к эквива- эквивалентным СМ-грамматикам не сложен. Моделирование левого вывода в терминах СМ-грамматик позволяет использовать их для дву- двустороннего ПР-анализа [125]. Пусть D — параметрическая модель, ориентированная на бес- беступиковый однозначный ПР-анализ, Ац — соответствующий мага- магазинный ПР-анализатор такой, что L (Ао) — L (D). Для кс-грам- кс-грамматики Р, которая является параметром модели D, построим эквивалентную СМ-грамматику ©. Функционирование ПР-анали- затора Ав может быть организовано в соответствии с СМ-грам- матикой © и аппаратом управления, заложенным в модели D. При этом СМ-продукции по развертке выполняются в режиме записи, а при свертке — в режиме чтения. Такая организация функционирования ПР-анализатора Ао называется представлением в форме двусторонней СМ-грамматики ©д. Теорема 6.15. Произвольный ПР-анализатор AD представим в форме двусторонней СМ-грамматики ©д. Пусть D — некоторая г-модель, AD — эквивалентный ПР-анали- ПР-анализатор с предварительной конечно-автоматной обработкой (см. § 6.4). Следствие. ПР-анализатор AD представим в форме двусторон- двусторонней СМ-грамматики ©о- Метаязык СМ-грамматик может быть использован при решении задачи анализа и синтеза в проблеме трансляции с одного языка программирования на другой, а также в параметрических системах программирования. В работе [129] предлагается уточнение понятия продукций СМ-грамматик, удобное для описания процесса перевода цепочки (программы) входного языка на некоторый промежуточ- промежуточный язык, цепочки которого представляют собой последователь- последовательности операторов обращения к семантическим подпрограммам, причем фактическими параметрами последних являются символы входной цепочки. При трансляции с класса входных языков в левых частях СМ-продукций допускаются совокупности синтаксически однотип- однотипных терминальных символов или их сочетаний, принадлежащих к одно лгу или нескольким входным языкам и требующих одина- одинаковой (с точностью до фактических параметров) семантической обработки. С помощью инвариантного относительно класса входных языков ядра параметрической системы, описанного в терминах СМ-продукций, устанавливается соответствие между символами Ю 8-33D
290 Глава 6. Параметрические системы программирования входной программы и их семантическими эквивалентами в выход- выходных языках. Пусть Т — параметрическая система транслирующего типа. При описании системы Т могут быть использованы СМ-продукции вида Х^ЬХр^п^Р. F.20) Здесь X = (х) — совокупность символов входного алфавита, 8, р принадлежат выходному алфавиту и означают имена соответ- соответствующих семантических подпрограмм, п — натуральное число (номер одной из продукций), Os^n^N (TV — общее число про- продукций, задающих систему Т), Р — некоторый кортеж номеров продукций, задающих систему Т. Внутренняя память состоит из регистра ф, хранящего в каждый данный момент номер обозревае- обозреваемой продукции, и трех магазинов А, В, С. Магазин А использу- используется для трансляции парных символов, однозначно соответствую- соответствующих друг другу (например, открывающая и закрывающая скобки), магазин В — при обработке символов, семантика которых опре- определяется правым контекстом, магазин С — для обработки символов, позволяющих прогнозировать возможные пути синтаксического анализа. В начале работы транслятора все магазины пусты, а регистр ф содержит единицу. Синтаксический анализ и построение семантического эквива- эквивалента некоторой входной цепочки осуществляются при ее одно- одноразовом (беспереборном) посимвольном просмотре слева направо. Обработка каждого входного символа связана с последовательным пересмотром продукций от продукции с номером 'ф до нахождения применимой продукции вида F.20) или обнаружения во входной цепочке синтаксической ошибки. Признаком синтаксической ошибки является попытка чтения из пустых магазинов, а также наличие хотя бы одного непустого магазина после завершения работы. Информация о ней выдается с помощью специальной продукции СОШ а, F.21) где а — имя подпрограммы, определяющей тип допущенной ошибки. Продукция вида F.20) неприменима тогда и только тогда, когда: 1) просматриваемый символ входной цепочки не совпадает ни с одним символом, входящим в совокупность х б X из левой части продукции F.20), соответствующей выбранному входному языку; 2) просматриваемый символ совпадает по крайней мере с одним указанным символом, но m = 2, а символ v 6 V не совпадает с сим- символом, хранящимся в вершине магазина А, и просмотр непри- неприменимой продукции приводит к увеличению содержимого регист- регистра ф на единицу, что соответствует выбору очередной продукции, применимость которой подлежит проверке. V § 6.5. Метаязык СМ-грамматик и проблемы трансляции 291 Выполнение каждой продукции вида F.20) состоит в опреде- определении семантической реакции (в зависимости от символов 8 и р) и установлении номера продукции преемника. Определение семан- семантической реакции заключается в следующем. 1. т = 0. Если символ 8 непуст, а р = е, то 8 дописывается к выходной цепочке. Если 8 = е и р ф е, то символ р дописывается к выходной цепочке, причем его адрес запоминается в вершине магазина В для возможного последующего переопределения в соот- соответствии с правым контекстом. Просматриваемый символ в этом случае условно определен. Наконец, если 8 Ф е и р Ф е, то символ р засылается в выходную цепочку по адресу, считываемому из вер- вершины магазина В. Эта ситуация соответствует переопределению ранее условно определенного символа. При 8 = р = е не возникает никаких реакций, связанных с формированием выходной цепочки (что соответствует обработке символов, не несущих семантической нагрузки, например комментариев в АЛГОЛе). 2. т = 1 (т — 2). Кроме действий, подлежащих выполнению при т — 0, в вершину магазина А засылается (из вершины А считывается) символ v, причем при т = 2 в случае несовпадения символа в вершине магазина А с символом v 6 V, указанным в рас- рассматриваемой продукции, последняя по определению неприменима. Установление номера преемника производится следующим об- образом. При Рф 0 все элементы преемника засылаются в магазин С. Если при этом п = 0, то продукция-преемник определяется путем увеличения содержимого г|з на единицу. В противном случае п является номером продукции-преемника и засылается в регистр г|з. Если Р = 0 и п Ф 0, продукция-преемник определяется путем засылки п в регистр \J). При п = 0 и пустых магазинах А, В, С анализ завершен успешно; если хотя бы один из этих магазинов непуст, то это свидетельствует о наличии синтаксической ошибки. Для обращения к магазинам используются продукции вида СТЕКр, F.22) где р — имя магазина. Выполнение такой продукции при р = С состоит в выборе символа из вершины магазина С и засылке его в регистр т|) для определения номера продукции-преемника по данному символу анализируемой цепочки. Если магазин С оказы- оказывается пустым, алгоритм прекращает работу, выдавая информацию о наличии синтаксической ошибки. При выполнении продукции СТЕК р при р = В из вершины магазина В считывается очередной символ. Заметим, что кроме определения семантических эквивалентов интерпретация продукций транслятора Т обеспечивает полный синтаксический контроль: 1) обнаруживает все те символы вход- входной цепочки, которые в соответствии с синтаксисом языка не 10*
292 Глава 6. Параметрические системы программирования согласуются с предшествующей подцепочкой (с их левым контек- контекстом); 2) указывает на незавершенность цепочки (если в ней нет ошибок первого вида). Пример 10. Рассмотрим фрагмент описания грамматики простого арифметического выражения языка АЛГОЛ-60: (арифметическое выражение):: = (простое арифметическое выражение) ^ (простое арифметическое выражение) :: = (терм)|(операция типа сложения) (терм)|(простое арифметическое выражение) (операция типа сложения) (терм) (операция типа сложения) :: —+|— (терм) :: = (множитель)|(терм) (операция типа умножения) (множитель) (множитель) :: = (первичное выражение) (операция типа умножения):: = X \/ (первичное выражение) :: = (число)|((арифметическое выражение))|(переменная) (переменная):: = (идентификатор)|(идентификатор)[(список индексов)] (список индексов):: = (простое арифметическое выражение) ( (список индексов), (простое арифметическое выражение) (идентификатор):: = (буква)|(идентификатор) (буква) | (идентификатор) (цифра) (число) :: = (цифра)|(число) (цифра) Обозначим кортежи, состоящие из всех букв и цифр, соответ- ственво через Б и Ц; кортеж -\ через © и кортеж х, / — через 0. В данном случае СМ-грамматика языка описывается сле- следующими 48 продукциями, причем % = {Б, Ц, ф, 0, [,], (,), ) 01зХ 2) Б->еХЛХ 3) Ц->Р9ХеХ 4) (+Р3*еХ 5) СОШ, 6) Б-*Р8ХеХ 7) Ц-^Р8ХеХ 8) [^Р5ЖРц 9) СТЕК В X С, 10) Ц^Р1оХе 11) СТЕК С, 12) 0^Р2ХеХ 13) ф^Р1ХеХ 14) # + Р14Хе 15) СОШ, 16) © + Р13ХеХ17Х0 17) Б + еХ^Х12Х29, 18) Ц^Р9ХеХ ЮХ29, 19) (^4X^X16X25, 20) СОШ, 21) Б + Р8ХеХ21Х0. 22) Ц^Р8ХеХ21Х0, 23) f^XPu 24) СТЕК В X С, И)г(-В,) 25) ) -> Р4ХеХ 26) )^Р4ХеХ 32X45, § 6.5. Метаязык СМ-грамматик и проблемы, трансляции 293 39) 40) 41) 42) 43) 44) 45) л" 46) 47)' 48 [ ~*~ Ръ X -^п СТЕК В X С, ф^ЛХ^Х 0-^-р2Х е^< —*- Р-, УлУ СТЕК С, 1 —v. Р S? р Ч^ J ^^ х в 7\ с /Ы Г^Чх^х СТЕК С. Х32; ;66 X :ЗЗХ 32Х! 12 X 29 X 41.Х. ^4 0, 0, 2, 0, 0, 0, Ю2(Вз) 27) У-+ Р4Хе 28) СТЕК С, 29) © + Р1Х 30) 0^Р2Х 31) СТЕК С, 32) 0^Р1зХ 33) B^eX^ 34) Ц^Р9Хе 35) (^3>Р3Хе 36) СОШ, 37) Б^Р8^е 38) Ц^Р8Хе Для семантического определения указанной грамматики ис- используются 14 лодпрограмм. Каждая из них выполняет некоторую функцию трансляции текущего символа исходной последователь- последовательности: Рх и Р2 — трансляция арифметической операции типа сло- сложения и умножения; Р3 и Р4, Рь и Рв — обработка соответственно открывающей и закрывающей, круглой и квадратной скобок; Р, и Р8 — первой буквы и последующих, знаков идентификатора; ¦^9 и -^10 — первой и последующих цифр числа; Ри — первой буквы в записи переменной с индексом; Р12—запятой; Р13 и Р14 -* со- соответственно знаков одноместной операции и конца выражения. Определим для примера грамматическую правильность (не- (неправильность) и семантику цепочек А, А1, заданных в рассмат- рассматриваемом языке, по приведенной выше грамматике. В результате анализа входной цепочки А : xyz X (F2 [5] — х) -\- 1 # получаем следующую цепочку имен семантических подпрограмм, над сим- символами которой проставлены соответствующие символы входной цепочки (под именами семантических подпрограмм проставлены номера примененных продукций грамматики): X Pi 2 1 У Рв 6 2 2 Р* 6 3 X р* 9 12 4 ( 4 5 17 22 23 5 34 9 1. 11 44 46 10 29 11 17 12 Ра 24 31 31 25 13 Pi 13 14 1 3 15 # Ри 11 14 16
294 Глава в. Параметрические системы программирования ( Р» 4 ( Р» 19 а Pi 17 + Pi 24 29 1 18 ) Р* 11 29 25 Имена семантических подпрограмм, которые могут быть подверг- подвергнуты переопределению, подчеркиваются. В данном случае пере- переопределению было подвергнуто второе ив трех подчеркнутых имен, что отмечено стрелкой с указанием на ней переопределяю- переопределяющего имени Ри. При выполнении этой цепочки подпрограмм получаем последовательность команд некоторой гипотетической одноадресной машины: -*F2[5] —х Xxyz + 1, где F2[5] соответствует адресу пятого элемента в массиве F2, адрес которого (и адреса переменных х и xyz) задается специаль- специальной таблицей, полученной при трансляции описания программы. Для цепочки Ai : {{а + 1) # аналогично получаем ' # Ри 28 31 Последней выполняемой продукцией является продукция 31, при- приводящая к чтению из пустого стека С, что означает наличие ошибки во входной цепочке. Как показал опыт построения систем программирования, пред- предлагаемый метод анализа языков позволяет существенно сократить сроки изготовления таких систем. § 6.6. СМ-формализмы и их применение .: . к системам программирования Естественным обобщением СМ-грамматик являются СМ-системы [14], представляющие собой универсальную схему, которая позво- позволяет с общих позиций подойти к рассмотрению таких сложных проблем, как конструирование языков программирования и транс- трансляторов для формального перевода с одного языка на другой, создание метатрансляторов и генераторов транслирующих систем, разработка методики доказательств утверждений о конкретных программах, языках программирования и трансляторах, развитие теории синтаксиса, формализация семантики языков и мета- метаязыков [48]. Характерная особенность СМ-систем заключается в том, что запоминающие устройства того или другого типа вводятся не- непосредственно в грамматику языка. Как и в СМ-грамматиках, в СМ-системах сочетаются порождающие и распознающие свой- свойства грамматик. 6.6. СМ-формалиамы и их применение к системам программирования 295 Обычно для каждого формального языка тем или иным спо- способом формулируются его синтаксис и семантика, так что проблема трансляции заключается в построении отображения, которое со- сопоставляло бы каждой цепочке формального, языка его семан- семантический эквивалент в машинном языке. Естественно, что в этом случае отдельное определение семантики формального и машин- машинного языков носит вспомогательный характер, основную роль играет само отображение, при задании которого учитываются семантические особенности рассматриваемой пары языков. Таким образом, можно сформулировать относительное семантическое определение, предполагающее установление связи между цепоч- цепочками двух языков и перенесение семантики цепочки одного языка на цепочку другого. При этом можно рассматривать не только пары языков формальный — машинный, но и формальный — фор- формальный, машинный — машинный и более общие комбинации, включающие несколько языков, как и в параметрических системах программирования. Формально связь между цепочками пары явыков может быть задана в виде бинарного отношения. Семейство всех таких отно- отношений слишком велико, и обычно рассматриваются только его некоторые подклассы. Если учитывать общий метод задания фор- формальных и машинных языков в виде грамматик, то весьма естест- естественным является рассмотрение подкласса конечно-порожденных отношений. Общий способ задания отношений такого типа заклю- заключается в следующем (см. § 5.1). В каждом языке выделяется конечное множество цепочек, между которыми устанавливаются связи, т. е. образуются пары цепочек. Кроме того, задается конеч- конечное множество преобразований (правил вывода), которые позволяют из данного конечного множества пар цепочек выводить все другие слова языков. Выводимые слова порождаются заданными преоб- преобразованиями в виде пар, причем каждая такая пара принадлежит определяемому отношению. Далее следует описать подкласс от- отношений, замкнутый относительно фиксированного набора преоб- преобразований, или, наоборот, если вадан некоторый подкласс отношений, то нужно определить, имеет ли указанный класс конечную систему образующих (связанные пары цепочек) отно- относительно конечного набора преобразований операций (см. § 3.1— 3.3). Пусть St, 3R — два алфавита, где SR может совпадать с 9t; Lg? и Ljgj — соответственно явыки в алфавитах 91 и SR; Т — ко- конечно-порожденное отношение на языках Ь% и Lgjj, T<=F(ty) x X FCR), так что Т{(х, у)\х$ L%, у 6 ?$$}, причем ргхТ = L%, рг2 Т = Lgjj; Э — отношение эквивалентности на Т, т. е. для не- некоторых пар (х, у) и (х', у') из Т справедливо (х, у) = (х', у').
296 Глава 6. Параметрические системы программирования Отношение Э определяет отношения эквивалентности 9^, 9^ на языках Ь^, Lgjj: х¦'= х' тогда и только тогда, когда существуют такие у, у' б Ь«п, что (х, у) = (х'у'). В этом случае также у = у'. 6 Щ Отношение Ге называется 9-трансляцией, если Т — взаимно-одно- взаимно-однозначное отношение с точностью до выбора представителя из класса эквивалентности по 9, т. е. если по одному члену пары (х, у), например по х, можно найти у' =у и, наоборот, по у можно найти х' = х. Отношение Г9 называется 9-интерпретацией, если Т — одно- еЖ значное отношение с точностью до выбора представителя из класса эквивалентности по 9^. Представляется целесообразным расширить понятие интерпре- интерпретации, сведя к интерпретации любое преобразование исходной цепочки, при котором используется, возможно, лишь частичная информация о данной цепочке (примером может служить построе- построение блок-схемы по программе, написанной в АЛГОЛе). Распро- Распространенное определение понятия интерпретации, объединяющее перевод программы в машинный код с одновременным выполне- выполнением операций, также включается в данное определение. Понятие трансляции сохраняется только за такими преобразованиями про- программы из одного языка в другой, которые позволяют, в случае необходимости, восстановить исходную программу. Чтобы сохра- сохранить возможность эквивалентных преобразований транслируемых программ, вводится дополнительное отношение 9. Конечно, можно определить отношение 9 так, чтобы 9-трансляция совпадала на мно- множестве F (Щ с 9-интерпретацией, однако 9-интерпретация непред- непредполагает порождение соответствующего элемента в множестве F (Щ. Пусть отношение Т задано. Тогда проблема принадлежности формулируется следующим образом: для любой пары цепочек (я, у) 6 F (Щ X F (Щ необходимо выяснить, принадлежит ли пара (х, у) отношению Т. Проблема существования для заданного Т состоит в выяснении, существует ли для произвольно выбранного х б F (Щ цепочка у 6 F (Щ такая, что (х, у) 6 Т. Известно несколько способов задания отношения Т. Наиболее общие из них — пред- представление отношений в терминах порождающих грамматик (см. гл. 5), определение автомата, индуцирующего данное отношение (см. § 6.1, 6.2), а также системное задание, объединяющее неко- некоторые черты порождающих грамматик ж распознающих автоматов (см. § 6.5). Для любого из перечисленных способов возникает проблема перечислимости, состоящая в установлении принадлеж- принадлежности пар цепочек (х, у) отношению Т. Формализм СМ-систем § 6.6. СМ-формализмы и их применение к системам программирования 297 является обобщением метаязыка СМ-грамматик и относится к си- системному способу задания Т. Рассмотренное бинарное отношение Т является частным слу- случаем более общего отношения X ••• XF(%) x *¦($»!) X ••• XF($1Q) при p = g= 1. Введение отношения У(Р, g) позволяет описать за- задачу переработки языковой информации с учетом реальных машин- машинных условий и возможности одновременного выполнения несколь- нескольких операций, а также решить несколько задач за один просмотр цепочки в реальном масштабе времени. Пусть 01 ь ЭД2, • ¦ • i 9Ц> — входные, a $ЯЪ 3J}2, ... , 9Kg — выход- V ¦ Я ные алфавиты и 51 = Q 5Ц, Ж = U 9K,-. Рассмотрим декартовы ii ji произведения = ^Ot х х X X • x H где S, = {Ьщ Е F (Щ \1 = 1, 2, ... , р] и S2 = {Ьш;. с F (Щ | / =, = 1,2, ... , q] — семейства соответственно входных и выходных языков. Так, каждая цепочка языка L^ (L$m) представляет собой упорядоченную последовательность из p(q) цепочек, принадле- принадлежащих языкам семейства S1(S2). В общем случае СМ-система состоит из р входных лент, на которых записана цепочка языка Lor, q выходных лент, на которые в процессе работы записывается цепочка языка L^, и некоторого множества"отмеченных продукций. Введение нескольких входных лент вызвано тем, что часто вход- входную информацию удобно задавать разными способами, причем на каждом шаге она должна вводиться параллельно, а не последо- последовательно, например программа и исходные данные или входная информация и управляющие воздействия. Этим объясняется и введение нескольких выходных лент, на которых записывается перевод входной цепочки. Каждая продукция СМ-системы включает в себя метку данной продукции, операцию считывания с входных и записи на выход- выходные ленты, операцию с внутренним запоминающим устройством СМ-системы, множество меток продукций, одна из которых при- применяется после выполнения данной. Внутреннее запоминающее устройство СМ-системы может использовать магазинную память, счетчики, листовую память, различные комбинации запоминающих устройств. Более того, в некоторых случаях удобно использовать память, заданную в виде магнитных барабанов, дисков и лент. Однако для задания конкретной СМ-системы вид памяти и способ оперирования ею должен быть заранее зафиксирован.
298 Глава 6. Параметрические системы программирования Формально СМ-системой называется множество отмеченных про- продукций , ... , аР11 # Ь11Х, ... , bqv.; $9^; ту,, ... , }, F.23) где ту — метка продукции, aiv. е Щ, bjv, е 9Kj, 93^ cz ЭД (ЭД — совокуп- совокупность всех допустимых операций над внутренней памятью СМ- системы, / — конечное множество индексов меток (г = 1, 2, . . . , р; 7=1,2, ... ,д). По предположению каждый алфавит Щ, ?3Jj содержит символ пустого слова е, т. е. любой символ аи bj, входящий в продукцию, может совпадать с е. Это означает, что в продукции с данного внешнего входа (выхода) ничего не читается (не записывается). Кроме того, вместо буквы aiv. может стоять специальный символ —, означающий, что с ?-й ленты считывается любой очередной нахо- находящийся на ней символ. Количество продукций СМ-системы опре- определяется числом элементов множества /. СМ-система функционирует следующим образом. На первом шаге к цепочке х 6 Ьы, записанной на входных лентах, применяется первая продукция с меткой тг. Продукция ту вида F.23) приме- применима на данном шаге, если очередными символами, считываемыми с входных лент, являются aiv_ и над внутренней памятью СМ-си- СМ-системы выполняются условия применимости операций, входящих в Жр.. В этом случае все символы aiv. (t = 1, ... , р) стираются с соответствующих входных лент; символы Ъ^ (/ = 1, ... , q) записываются в соответствующие выходные ленты; над внутренней памятью выполняются операции из Зйр.. На следующем шаге СМ-система переходит к применению одной из продукций rH (t = = 1, ... , s). Если ни одна из продукций ту( не применима, си- система останавливается. Среди меток СМ-снстемы есть метка заклю- заключительного состояния Г0, означающая конец работы. СМ-система переводит входную цепочку х б Ьы в выходную у 6 L^, если существует последовательность продукции где rv.i=r1, /у. = г0, и на fe-м шаге применима продукция туй (к = 1, 2, ... , п—1), преемникам которой является продукция г В результате применения продукций последовательности F.24) цепочка х преобразуется в цепочку у. До начала работы и после перехода к заключительному состоянию память СМ-систе- СМ-системы пуста. Если выходных лент нет, СМ-система вырождена. В этом случае распознается принадлежность входной цепочки х языку Ь<^. Ана- § 6.6. СМ-формализмы и их применение к системам программирования 299 логично, если нет входных лент, перечисляются (порождаются) цепочки языка L^. Транслирующие СМ-грамматики (ТСМ-грамматики) являются частным случаем СМ-систем, память которых состоит из п мага- магазинов. В качестве операций над памятью используются операции Wjn (т =0, 1, 2), описанные ранее (см. § 6.5). Рассмотрим следую- следующий пример ТСМ-грамматики. Пусть Lgj = {anbncn | ?г> 1}, Lsgj= {anbcn | ?г> 1} и задана транс- трансляция ГЕ%Х% такая, что Т = {(anbncn, anbcn)\n^i}. Эта трансляция осуществляется ТСМ-грамматикой с двумя внутрен- внутренними магазинами одной входной и одной выходной лентами: гг<а#а; ^A,1); г2, г3>, 2 г#; ^(,) 2 г2<а#а; wt B, 2); г2, л ,, г3 < Ъ # е; w2 B, /\); л,, г4 >, г4<Ь#Ъ; w2(l, Д); гъ,гв>, гь<с#с; w2(A, 2); гБ,/¦„>, . г6<с#с; и>2(Л, 1); Г0>, Формализм, основанный на понятии СМ-системы, может быть- использован при описании операционных систем [13], являющихся важной частью средств математического обеспечения современных ЭВМ (см. § 6.1). Рассмотрим класс СМ-систем, использующих память типа БС (см. § 6.1), с помощью которой информация быстро и равномерно передается па устройства, перерабатывающие ее для минимизации времени их простаивания. Конечный БС состоит из конечного числа ячеек, расположенных в виде ленты. Запись символа в БС производится всегда с одного конца ленты, а считывание — с дру- другого. Записываемый символ занимает самую левую ячейку. Если символ считывается из ВС, то он стирается с правого конца и одновременно все символы, записанные в ВС, сдвигаются на одну ячейку вправо. Если БС пуст, то выходная ячейка заполняется символом Ai который исчезает только после записи какого-либо символа. Обозначим операции в БС следующим образом: запись — В8Х (х), чтение — BS2 (x) (в скобках стоит символ, считываемый из БС или записываемый в БС). Если все ячейки БС заняты, то опе- операция В8г неприменима. Если символ, стоящий в правом конце БС, не совпадает с символом х, операция BS2(x) неприменима. Если СМ-снстема содержит п БС, то указанные операции имеют вид BS{ (хъ ... ,хп) (г = 1, 2). Замена xh (k = 1, 2, ... , п) сим- символом Л означает, что с данным БС в этой продукции никакие операции не производятся. Символами входного алфавита данного класса СМ-систем являются номера входных устройств и некоторые
300 Глава 6. Параметрические системы программирования вспомогательные символы, вырабатываемые СМ-системой в процес- процессе работы. Выходной алфавит составляют имена команд, которые передаются на исполнение. Задачи, решаемые операционными системами, могут быть све- сведены к переводу последовательности директив пользователя в при- приказы операционной системы. Такая трансляция может быть осу- осуществлена построенной для этой цели СМ-системой. Рассмотрим описание в СМ-формализме простейшей операционной системы ОС-1. Пусть ОС-1 рассчитана на сопровождение п задач в вычис- вычислительной системе, имеющей п магазинных лент (по числу задач), т устройств ввода и к устройств вывода. Допустим, что задачи поступают в систему в произвольные моменты времени и обслу- обслуживаются вычислителем в порядке их поступления. Пусть на работу вычислителя ОС-1 отводит определенные, вообще говоря произвольные кванты времени. Если задача не решена за отве- отведенный квант времени, то OG-1 записывает задачу на свободную магнитную ленту и продолжает ее решение только после удовле- удовлетворения остальных заявок, принятых машиной для решения к моменту прерывания. Общее число таких заявок не превышает п. ОС-1 запоминает порядок поступления заявок и распределяет внутреннюю память (магнитные ленты) для хранения неокончен- неоконченных задач. ОС-1 работает по следующей схеме. В начале каждого кванта времени анализируется запрос устройств ввода (в порядке их номеров) на прием задачи. Если запросов нет ни на одной пз них, анализируется БС. Если запросов нет и в БС, то ОС-1 выключается на единицу времени. При поступлении входного сигнала а определяется, не превышает ли уже имеющаяся очередь заявок общее число задач п, которые могут одновременно нахо- находиться в памяти машины. Если это число равно п, то входной сигнал не допускается в машину. В противном случае номер вход- входного устройства, на котором находится поступившая задача, запи- записывается в БС, т. е. ставится в очередь. После этого из БС в рабочую ячейку считывается номер устройства, содержимое которого должно обрабатываться процессором. Если этим устрой- устройством оказывается магнитная лента, то ее содержимое переписы- переписывается в процессор, а номер освободившейся ленты заносится в БС. Если этим устройством оказывается входное с номером i, то его содержимое вводится в процессор, а устройство ввода освобожда- освобождается для приема новой задачи. После ввода задачи поступает команда а — «счет», и в течение т единиц времени эта команда исполняется, т. е. ОС-1 «ждет» время т. В процессе работы каждая задача выдает в рабочую ячейку дан- данные «задача окончена» — Ъ или «задача не окончена» — Ъ. Если задача окончена, то из БС считывается в рабочую ячейку номер свободного выходного устройства и выходная информация окон- § 6.6. СМ-формалаамы и их применение к системам программирования 301 ченной задачи поступает на это устройство. Одновременно номер данного устройства заносится в БС. Если задача не окопчена, то из БС считывается номер свободной магнитной ленты и содер- содержимое процессора (неоконченная задача) записывается на нее. После этого номер заносится в БС и ОС-1 переходит к повторению цикла обслуживания. Описанная ОС-1 может быть представлена как СМ-система, содержащая т входных лент, на которые поступает информация о наличии в данном входном устройстве задачи (символы а); одну выходную ленту, на которую ОС-1 выдает приказы входным и выходным устройствам и процессору; три внутренние БС: одна для запоминания последовательности решаемых задач, две другие соответственно для запоминания свободных магнитных лент и вы- выходных устройств. Входной алфавит Э? содержит единственный символ а, соответствующий наличию задачи на данном входном устройстве. Выходной алфавит 93} состоит из следующих симво- символов — кодов соответствующих приказов операционной системы устройствам машины: ар — пересылка содержимого магнитной ленты, номер которой содержится в рабочей ячейке; рр — пере- пересылка в процессор содержимого входного устройства, номер кото- которого задан в рабочей ячейке; у — подготовка процессора для вы- выполнения новой задачи; бр-напись содержимого процессора на магнитную ленту, номер которой указан в рабочей ячейке; ?р — включение выходного устройства, номер которого содержится в рабочей ячейке; а — передача управления задаче. Символами внутреннего алфавита, используемыми в операциях с БС, для входных устройств считаются целые числа от 1 до т; для магнитных лент — от т -\-1 до т -\- п; для выходных уст- устройств—от /га + ге+1 до т-\-п-\-к. Символами внутреннего алфавита для операций с рабочей ячейкой — целые числа от 1 до т -+- п + к и два символа Ъ и Ъ — «конец» или «не конец» задачи. Кроме того, в записи операций над памятью в продукциях СМ-системы используются символы BS2(—) и BSi('p): первый соответствует считыванию символа из БС и записи его в рабочую ячейку, второй — записи в БС содержимого рабочей ячейки. Символы xS, стоящие в продукции после #, означают задержку в выполнении перехода к следующей продукции на т единиц времени. Если т равно единице времени, символ 15 опускается. R (Ъ) — считывание Ъ в рабочую ячейку. Формальное описание ОС-1 на языке СМ-систем имеет вид го(а,е, ... ,е#; , Л, е,е, ... ,е,а #; е,е, ... ,е#; m, Л, Л); , Л, Л);
302 Глава 6. Параметрические системы программирования е,е, ... ,е#р#р; BS2(~, Л, Л); 7-1 (е, ... ,е#р; BS2(~, Л, Л); г2) г2(е, ... , е# ар; BS1{A, 'p. Л);г3 в, ... ,е#рр; АМЛ, Л, Л);^) г3(е, . .. ,e#rSa; BSt{A, Л, Л); г в, .. rs(e, г6(е, _ #бр; Я F), 5?2(Л,~, Л);г6) ,е#?р; АМЛ, А, 'р);/-0> , е#7'> 5^1 ('Р. Л, Л);''о) § 6.7. Многоосновные алгебры и языки программирования Конструирование параметрических систем программирования связано с решением многих сложных проблем. К ним относится прежде всего разработка формализмов, ориентированных на опи- описание синтаксиса и семантики языков программирования (см. § 6.3—6.6). При решении этой проблемы оказывается весьма эффективным использование аппарата многоосновных алгебр [71]. Рассмотрим класс порождающих алфавитных алгебр (Ш, Q) с выделенной основной компонентой — множеством А^,а б 9К, эле- элементами которых являются цепочки в некотором терминальном алфавите % (см. § 3.6). Многоосновная алгебра CR, Q) порождает язык L^-F (Щ, если L = А^о. Для каждой кс-грамматики G = = (St. Ун. о» Р) может быть построена многоосновная алгебра $R(G) = {Aq,\\p? Vs] с выделенной компонентой Ав, L(G) = AC. Смысл такой конструкции можно проиллюстрировать на примере кс-грамматики G' — (&', Ун, а, Р') со схемой Р' = р2 : р3: 6 Pi : б Ъ, где W = {a,b}; Ун = {о'1б}- Очевидно, кс-грамматика G' порож- порождает язык L (G') = {апЪт\ п, т = 1, 2, . . .}. Рассмотрим систему множеств Ж (G) = {А^ | \J) б Vn], где 4Ф — множество всех терми- терминальных цепочек, выводимых из нетерминала 1|з в грамматике G. Для кс-грамматики G' система основных множеств имеет вид &(G') = {Aa, Аь}, тр,еАё = {апЪт\п, m = 1, 2, . . .}, Лб = {Ьт|иг = = 1, 2, .. .}. Каждой кс-продукции р-.^-^ ицг-+1) 6 Р поставим в соответствие конкатенарную операцию wp : Ал X А.{ X ¦ Ay, определенную на множествах § 6.7. Многоосновные алгебры и языки программирования 303 Ал, А ь ... , A.i и такую, что при подстановке вместо соответ- 1 ¦ ri ствующих аргументов произвольных цепочек xs = A}i (I ^ s ^г{) vs значением операции wv является цепочка х = ицх1ицх2 . .. ... uir.xr.ui(ri+ih принадлежащая множеству 4Ф.. Конкатенарные операции, ассоциированные со схемой Р' кс-грамматики G', со- составляют сигнатуру 2', в которую входят унарные операции где u;Pl (a) =aa, wVl (б) = аб, г^Рз (S) =Ьб, а также нульарная операция wPi — Ъ над множеством As. Построенная таким образом- многоос- многоосновная алгебра ($Sl (G); Q) с выделенной основной компонентой Аа, соответствующей аксиоме грамматики G, называется контекстно- свободной многоосновной алгеброй (кс-алгеброй), ассоциирован- ассоциированной с грамматикой G. Так, с кс-грамматикой G' ассоциирована кс-алгебра (SB?(G'); Q) с выделенной основной компонентой Аё. Рассмотренная конструкция подтверждает справедливость сле- следующего утверждения. Теорема 6.16. Язык L является кс-языком тогда и только тогда, когда существует порождающая его контекстно-свободная алгебра. Заметим, что при описании языков с помощью порождающих многоосновных алгебр сохраняется возможность проведения син- синтаксического анализа данных языков изложенными выше методами. Проблема синтаксического анализа допускает алгебраическую интерпретацию, связанную с введением синтаксической алгебры ® = ("$V; 2), которая представляет собой свободную многоосновную алгебру (см. § 3.6), состоящую из элементов, соответствующих синтаксическому разложению языковых объектов. Синтаксическая структура языка L определяется порождающей алгеброй & = = (Ay; Q), синтаксической алгеброй © = (Si,; Q) и синтаксическим гомоморфизмом /sln:©->St. При этом элементу a t А,*,, если /sin (s) = а, соответствует элемент s б Si, — синтаксическое разло- разложение элемента а. В математической лиигвистике широко рас- распространен способ представления синтаксической структуры языковых объектов в виде деревьев грамматического разбора (см. гл. 5). Синтаксическая структура языка L однозначна, если гомо- гомоморфизм /sin индуцирует взаимно-однозначное отображение мно- множества Si,o на Д|,о, где 5фо и А^о — выделенные компоненты алгебр соответственно © и St, так что каждая правильная цепочка языка имеет единственное синтаксическое разложение. Если гомомор- гомоморфизм /sin является изоморфизмом, синтаксические структуры языковых объектов строго однозначны.
304 Глава 6. Параметрические системы программирования Наряду с синтаксической естественно рассматривать семанти- семантическую структуру языка, которая определяется алгеброй 33 = (Д>/, Q) и гомоморфизмом gsem:©-»-^- При этом S3 называется семан- семантической алгеброй, а гомоморфизм gsem — семантическим гомо- гомоморфизмом, который сопоставляет синтаксической структуре язы- языковых объектов (элементов алгебры Щ их семантическую струк- структуру. Семантика элемента а € Л,ь с синтаксической структурой s 6 Si, (/Sin (s) — а) определяется элементом Ъ 6 В^ таким, что Ъ = = gsem(s). Подобно синтаксису, языковые объекты в зависимости от свойств гомоморфизма gsem могут иметь однозначную, строго однозначную и неоднозначную семантическую структуру. При строгой однозначности семантической структуры существует ото- отображение Agen: &->-33 такое, что гомоморфизм ^sem представим в виде композиции отображений /sin и hgen, т. е. gsem =/sin • hgen. Ото- Отображение gSem, если gsem (s) = gs'em(s'), индуцирует на алгебре <5 отношение конгруэнтности р, sps', которое в случае строгой одно- однозначности переносится также на алгебру 91. Отношение р назы- называется отношением семантической эквивалентности языковых объектов и может быть использовано при эквивалентных преоб- преобразованиях программ по выбранным критериям. В процессе трансляции с языка L на язык L' необходимо установить взаимосвязь семантических структур соответствующих языковых объектов. Рассмотрим случай, когда порождающие алгебры языков L и L' имеют одну и ту же сигнатуру операций Q и общую семантическую алгебру 33. Для языков L и L' спра- справедливо отношение перевода Э, ада', где а ? L, а' ? L', если сущест- существуют синтаксические разложения s и s' элементов соответственно а и а' с одной и той же семантикой, gsem (s) =gB'em(s'). Алгебра- Алгебраическая характеристика процесса трансляции для языков L и L', которым соответствуют порождающие многоосновные алгебры с не- несовпадающими сигнатурами операций, приведена в работе [71]. Разновидностью многоосновных алгебр являются мультиалгебры, аппарат которых также может быть эффективно использован для решения проблемы формализации синтаксиса и семантики языков программирования. Полученные в данном направлении результаты подробно изложены в монографии [36] (см. § 6.7). Семантика языков программирования может трактоваться, в силу его разрешимости, как семантика программ, составленных на данном языке. Это означает, что семантическое погружение языка в алгоритмические алгебры сопряжено с поиском базиса и системы образующих, ориентированных на представление его программ. Базисные операторы интерпретируются как машинные средства, в терминах которых представлены в регулярной форме основные языковые конструкции, входящие в систему образующих алгоритмических алгебр. Семантика языка, погруженного в алго- алгоритмические алгебры, определяется как замыкание соответствую- § 6.7, Многоосновные алгебры и языки программирования 305 щей системы образующих посредством суперпозиции входящих в нее операторных функциональных и логических структур. Подход, примененный при построении семантического погруже- погружения адресного языка в алгоритмические алгебры (см. § 4.5, а также- [59]), нашел дальнейшее развитие при описании семантики языков программирования типа АЛГОЛ-60 с достаточно простой струк- структурой данных.
ЛИТЕРАТУРА 1. Александров П. С. Введение в общую теорию множеств и функ- функций. М., Гостехиздат, 1948. 411 с. 2. Анисимов А. В. Формальные грамматики, учитывающие внешние терминальные контексты. — Кибернетика, 1974, № 3. с. 81—88. 3. Ахоу Ульман. Теория языков. — Кибернет. сб. Новая сер., 1969, вып. 6, с. 145—184. 4. Бабенко Л. П., Ющенко Е. Л. О классификации языков програм- программирования. — Системное и теорет. программирование. Тезисы докл. III Всесоюз. симпозиума. Т. 2. Кишинев, 1974, с. 145—152. 5. Бардзинь Я. М. Сложность распознавания симметрии на машинах Тьюринга. — Проблемы кибернетики, 1965, вып. 15, с. 245—249. ¦6. Биркгоф Г. Теория структур. М., Изд-во иностр. лит., 1952. 407 с. 7. Б о дн арчу к В. Г. Системы уравнений в алгебре событий. — Журн. вычисл. математики и мат. физики, 1963, 3, № 6, с. 1077—1088. '8. Б о дна р чу к В. Г., Ц е йт лин Г; Е. Об алгебрах периодически опре- определенных преобразований бесконечного регистра. — Кибернетика, 1969, № 1, с. 18-28. 9. БурбакиН. Теория множеств. М., «Мир», 1965. 450 с. '10. Валуцэ И. И. Отображения. Алгебраические аспекты теории. Киши- Кишинев, «Штиинца», 1976. 139 с. 11. Васильев В А. Язык АЛГОЛ-68. Основные понятия. М., «Наука», 1972. 128 с. 12. Вельбицкий И. В. Технология производства программ на базе Д-метаязыков. — Системное и теорет. программирование. Тезисы докл. III Всесоюз. симпозиума. Т. 1. Кишинев, 1974, с. 260—271. 13. Вельбицкий И. В., Мейтус В. Ю., Ющенко Е. Л. М-форма- лизмы и их применения к операционным системам. — Труды BcecoiO3i симпозиума по теории языков и методам построения систем програм- программирования. К., 1972, с. 22—30. ¦14. Вельбицкий И. В., Мейтус В. Ю., Ющенко Е. Л. Теория Af-систем и ее приложения. — Проблемы кибернетики, 1973, вып. 27, с. 251—266. 15. Вельбицкий И. В., Ющенко Е. Л. Метаязык, ориентированный на синтаксический анализ и контроль. — Кибернетика, 1970, № 2, с. 50-54. 16. Виленкин С. Я., ТрахтенгерцЭ. А. Математическое обеспече- обеспечение управляющих вычислительных машив<, М., «Энергия», 1972. 392 с. 17. Виноградов И. М. Основы теории чисел. М., «Наука», 1965. 172 с. 18. Вычислительные машины с развитыми системами интерпретации. К., «Наук, думка», 1970. 260 с. Авт.: В. М. Глушков, А. А. Бараба- Барабанов, Л. А. Калиниченко, С. Д. Михновский, 3. Л. Рабинович. 19. Гинзбург С. Математическая теория контекстно-свободных языков. М., «Мир», 1970. 328 с. -20. Гладкий А. В. Лекции по математической лингвистике. Для студен- студентов НГУ. Новосибирск, Изд-во Новосиб. ун-та, 1966. 189 с. Литература 307 21. Гладкий А. В. Формальные грамматики и языки. М., «Наука», 1973. 368 с. 22. Гладкий А. В., Мельчук И. А. Элементы математической линг- лингвистики. М., «Наука», 1969. 192 с. 23. Глушков В. М. Абстрактная теория автоматов. — Успехи мат. наук, 1961, 16, вып. 5, с. 3—62. 24. Глушков В. М, Синтез цифровых автоматов. М., Физматгиз, 1962. 476 с. 25. Глушков В. М. Введение в кибернетику. К., Изд-во АН УССР, 1964» 324 с. 26. Глушков В. М. Теория автоматов и формальные преобразования микропрограмм. — Кибернетика, 1965, № 5, с. 1—10. 27. Глушков В. М. К вопросу о мивимизации программ и схем алго- алгоритмов. — Кибернетика, 1966, № 5, с. 1—4. 28. Г л у шко в В. М. О простых алгоритмах анализа и синтеза магазин- магазинных автоматов. — Кибернетика, 1968, № 5, с. 1—10. 29. Г лушк о в В. М., Бодн арчук В. Г., Гринченко Т. А., До- Дородницына А. А., Клименко В. П., Летичевский А. А., Погребинский С. Б., Сто гний А. А., Фишман Ю. С. АНАЛИТИК (алгоритмический язык для описания вычислительных процессов с использованием аналитических преобразований). — Кибер- Кибернетика, 1971, № 3, с. 102—134. 30. Глушков В. М., Вельбицкий И. В., Стогний А. А. Об одном подходе к построению системного математического обеспечения совре- современных вычислительных машин. — Кибернетика. 1972, № 3, с. 25—36, 31. Глушков В. М., Капитонова 10. В., Летичевский А. А. О методике проектирования вычислительных машин в системе1 ПРОЕКТ. — Кибернетика, 1971, № 2, с. 1—17. 32. Глушков В. М., Капитонова Ю. В., Летичевский А. А. Автоматизация проектирования вычислительных машин. К., «Наук, думка», 1975. 231 с. 33. Глушков В. М., Капитонова Ю. В., Летичевский А. А. Теория структур данных и параллельные синхронные вычисления. — Кибернетика, 1976, № 6, с. 2—15. 34. Глушков В. М., Летичевский А. А. Теория автоматов и про- программирование. — В кн.: Первая Всесоюз. конф. п,о программированию. Пленарные докл. К., 1968, с. 3—19. 35. Глушков В. М., Летичевский А. А. Теория дискретных преоб- преобразователей.— В кн.: Избранные вопросы алгебры и логики. Новоси- Новосибирск, 1973, с. 5—40. 36. Глушков В. М., Цейтлин Г. Е., Ющенко Е.Л. Алгебра. Языки. Программирование. К., «Наук, думка», 1974. 328 с. 37. Глушков В. М., Цейтлин Г. Е., Ющенко Е. Л. Теория авто- автоматов и некоторые вопросы синтеза структур языковых процессоров. — Кибернетика, 1975, № 5, с. 1—21. 38. Гнеденко Б. В., Королюк B.C., Ющенко Е. Л. Элементы про- программирования. М., «Наука», 1964. 348 с. 39. Гонца М. Г., Маричук М. Н. К проблеме синтаксического анализа языков с помощью рекурсивно-полных грамматик. — Прикл. математика п программирование, 1973, вып. 10, с. 61—о7. 40. Горпнович Л. Н., Трахтенгерц Э. А. Особенности математи- математического обеспечения многопроцессорной вычислительной системы с пере- перенастраиваемой структурой. — Системное и теорет. программирование. Тезисы докл. III Всесоюз. симпозиума. Т. 2. Кишинев, 1974, с. 153— 163. 41. Дал У., Дейкстра Э., Хоор К. Структурное программирование. М., «Мир», 1975. 248 с.
308 Литература 42. Дал У., Мюрхауг В.. Нюгорд К. Симула-67. Универсальный язык программирования. М., «Мир», 1969. 99 с. 43. Евреинов Э. В. Теоретические основы построения универсальных вычислительных сред. — Вычисл. системы, 1965, вып. 16, с. 3—72. -,-44. Евреинов Э. В., Косарев Ю. Г. Однородные универсальные вы- вычислительные системы высокой производительности. Новосибирск, «Наука», 1966. 308 с. 45. Ершов А. П. Об операторных схемах Янова. — Проблемы киберне- кибернетики, 1967, вып. 20, с. 181—201. •46. Ершов А. П. Теория программирования и вычислительные системы. М., «Знание», 1972. 64 с. ¦47. Ершов А. П. Современное состояние теории схем программ. — Про- Проблемы кибернетики, 1974, вып. 27, с. 87—111. 48. Ершов А. П., Ляпунов А. А. О формализации понятия програм- программы. — Кибернетика, 1967, № 5, с. 40—57. 49. Журавлев 10. И. Теоретико-множественные методы алгебры ло- логики. — Проблемы кибернетики, 1962, вып. 8, с. 5—44. 50. Иванов П. М. Аксиоматизация микропрограммных алгебр. — Теорет. кибернетика, 1970, вып. 5, с. 9—48. 51. Ингерман П. Синтаксически ориентированный транслятор. М., «Мир», 1969. 176 с. 52. Камынин С. С, Любимский Э. 3. Алгоритмический машинно- ориентированный язык АЛМО. — Алгоритмы и алгоритмич. языки, 1967, вып. 1, с. 1—64. 53. Капитонова Ю.В. Дискретные системы и задачи их реализации. —> Кибернетика, 1975, № 4, с. 7—11; № 5, с. 21—27. 54. Карри X. Основания математической логики. М., «Мир», 1969. 576 с. 55. Кекелия В. И., Кирсанов Г. М., Цейтлин Г. Е. Реализация средств алгоритмических алгебр в однородных структурах. — Кибер- Кибернетика, 1974, № 5, с. 29—36. 56. Кекелия В. И., Цейтлин Г. Е. К реализации многорегистровых периодически определенных преобразований в одной абстрактной мо- модели вычислительной среды. — Вычисл. системы, 1971, вып. 47, с. 87—102. 7. Кирсанов Г. М., Цейтлин Г. Е. К вопросу автоматизации фор- формальных преобразовании в системе алгоритмических алгебр. — В кн.: Вопросы обучения языкам программирования. К., 1974, с. 3—18. 58. Кирсанов-Г. М., Цейтлин Г. Е. Некоторые вопросы полноты аксиоматической системы в алгоритмических алгебрах. — Кибернети- Кибернетика, 1977, № 4, с. 35—37. ,59. Кирсанов Г. М., Цейтлин Г. Е., Ющенко Е. Л. О применеппи микропрограммных алгебр к некоторым вопросам автоматизации про- программирования.— В кн.: Математическое обеспечение ЭЦВМ. К., 1971, с. 99—117. ¦60. К лини С. К. Введение в математику. М., Изд-во иностр. лит., 1957. 526 с. ¦61. Кон П. Универсальная алгебра. М., «Map», 1968. 341 с. -¦62. Косарев Ю. Г., Миренков Н. Н. Математическое обеспечение однородных вычислительных систем. — Вычислительные системы, 1974, вып. 58, с. 61—79. ¦63. Котов В. Е. Теория параллельного программирования. Прикладные аспекты. — Кибернетика, 1974, № 1, с. 1—16; № 2, с. 1—18. В4. Коэн П. Д ж. Теория множеств в континуум-гипотеза. М., «Мир», 1969. 345 с. ¦65. Криницкий Н. А. Равносильные преобразования алгоритмов и про- программирование. М., «Сов. радио», 1970. 304 с. 66. Курош А. Г. Лекции но общей алгебре. М., Физматгиз, 1962. 396 с. Литература 309 67. Курош А. Г. Теория групп. М., «Наука», 1967. 648 с. 68. Л а в р о в С. С. Введение в программирование. М., «Наука», 1973. 351 с. 69. Лазарев В. Г. Принципы реализации и особенности синтеза авто- автоматов в базисе однородных сред. — Труды Междунар. симпозиума ИФАК. Дискретные системы. Т. 1. Рига, 1974, с. 26—36. 70. Летичевский А. А. Представление контекстно-свободных языков в автоматах с памятью типа push—down. — Кибернетика, 1965, № 2, с. 80—85. 71. Летичевский А. А. Сивтаксис и семантика формальных языков. — Кибернетика, 1968, № 4, с. 1—10. 72. Летичевский А А. функциональная эквивалентность дискретных преобразователей. — Кибернетика, 1969, № 2, с. 15—17; 1970, № 2, с. 14—29; 1972, № 1, с. 1—5. 73. Логика. Автоматы. Алгоритмы. М., Физматгиз, 1963. 556 с. Авт.: М. А. Айзермап, Л. А. Гусев, Л. И. Розоноэр, И. М. Смирнова, А. А. Таль. 74. Л я пин Е. С. Полугруппы. М., Физматгиз, 1960. 592 с. 75. Ля пу нов А. А. К алгебраической трактовке программирования.— Проблемы кибернетики, 1962, вып. 8, с. 235—243. 76. Мальцев А. И. Алгоритмы и рекурсивные функции. М., «Наука» 1965. 391 с. 77. Мальцев А. И. Алгебраические системы. М-. «Наука», 1970. 391 с. 78. М а л ь ц е в А. И. Итеративные алгебры и многообразия Поста. — В кн.: Избранные труды А. И. Мальцева. Т. 2. М., 1976, с. 316—330. 79. Манакова Е. И. К проблеме синтаксического анализа языков слева направо. — В кн.: Математическое обеспечение ЭЦВМ. К., 1971, с. 43—54. М а рков А. А. Теория алгоритмов. М., Изд-во АН СССР, 1954.374 с. (Труды Мат. ин-та АН СССР, 42). Микроэлектроника и одаородные структуры для построения логических п вычислительных устройств. М., «Наука», 1967. 227 с. Авт.: И. В. Прангишвили, Н. В. Абрамова, Е. В. Бабичева, В. В. Иг- натущенко. Миренков Н. Н. Структурное параллельное программирование.— Программирование, 1975, № 3, с. 3—14.- Мищенко В. В., Цейтлин Г. Е., Ш а п о в а л о в а Н. Н. К воп- вопросам автоматного взаимодействия при реализации некоторых систем- системных процессов, -г- В кн.: Вопросы обучения языкам программирования. К., 1974, с. 18-40. Нариньянн А. С. Теория параплельаого программирования. Фор- шальные модели. — Кибернетика, 1974, № 3, с. 1—16; № 5, с. 1—14, Наур П. Алгоритмический язык АЛГОЛ-60. Пересмотреаное сообще- сообщение. М., «Мир», 1965. 76 с. Новиков П. С. Элементы математической логики. М., Физматгиз, 1959. 400 с. : Операционная система ГВМ/360. Супервизор и управление дан- данными. М., «Сов. радио», 1973. 312 с. Параметрически е транслирующие 80. 81-. — 82. 83. V84- 85. 86. 87. 88. 89. 90. системы. Ч. 1—2. Кппшпев, «Штипнца», 974. Авт.: М. Г. Гонца, М. Н. Маричук, Г. А. Бостан, Г. А. Магарпу. Перевозчикова О. Л., Цейтлин Г. Е., Шевченко В. В. О моделях грамматик, ориентированных на двусторонний синтакси- синтаксический анализ языков. — Кибернетика, 1976, № 3, с. 1—11. Перевозчикова О. Л., Цейтлин Г. Е., Шевченко В. В., Ющенко Е. Л. Стратегия двустороннего .синтаксического анализа языков и бс-автоматы. — Системное и теорет. программирование. Тезисы докл. Ill BcecGK». симпозиума. Т. 1. Кишинев, 1974, с. 249—250.
310 Литература 91. Подловченко Р. И. Д-схемы и отношения эквивалентности между ними. — Проблемы кибернетики, 1973, вып. 27, с. 213—237. - 92. П о с ц е л о в Д. А. Введение в теорию вычислительных систем. М., «Сов. радио», 1972. 280 с. 93. Пронина В. А., Трахтенгерц Э. А. Параллельный синтакси- яеский анализатор для многопроцессорной вычислительной системы с перестраиваемой структурой. — Системное и теорет. программиро- программирование. Тезисы докл. III Всесоюз. симпозиума. Т. 2. Кишинев, 1974, с. 208—214. 94. Редько В. Н. Об определяющей совокупности соотношений алгебры регулярных событий. — Укр. мат. журн., 1964, 16, № 1, с. 120—126. 95. Р е д ь к о В. Н. Некоторые вопросы теории языков. — Кибернетика, 1965, № 4, с. 12—22. 96. Редько В. Н. Параметрические грамматики и проблема параметри- параметризации. — Автоматизация программирования, 1969, вып. 1, с. 27—36. 97. Редько В. Н. Интерпретированные языки и интерпретаторы.—Ки- интерпретаторы.—Кибернетика, 1969, № 5, с. 81—90. 98. Редько В. Н., Ющенко Е. Л. Алгоритмические языки и транс- транслирующие системы. — Кибернетика, 1967, № 5, с. 87—91. 99. Саломаа А. Аксиоматизация алгебры событий, реализуемых логи- логическими сетями. — Проблемы кибернетики, 1966, вып. 17, с. 237—246. 100. Трахтенброт В. А., Вардзинь Я. М. Конечные автоматы. По- Поведение и синтез. М., «Наука», 1970. 400 с. 101. Трахтенгерц Э. А., Шум ей А. С. Синтаксический анализ язы- языков, порождаемых однозначными грамматиками предшествования. — Журн. вычисл. математики и мат. физ., 1971, 11, № 4, с. 1005— 1013. 102. Универсальный язык программирования PL/1. M., «Мир», 1968. 352 с. 103. Управляющая машина широкого назначения «Днщро» и програм- программирующая программа к ней. К., «Наук, думка», 1964. 280 с. Авт.: Е. Л. Ющенко, В. Н. Малиновский, Г. А. Полищук, Э. К. Ядренко, А. И. Никитин. 104. Фельдман Дж., Г райе Д. Системы построения трансляторов.— Алгоритмы и алгоритмич. языки, 1971, вып. 5, с. 105—184. 105. Фишер П., Мейер А., Розенберг А. Счетчиковые машины и счетчиковые языки. — В кн.: Проблемы математической логики. М., 1970, с. 380-401. 106. Флор ее А. Программное обеспечение. М., «Мир», 1971. 519 с. 107. Флор ее А. Организация вычислительных машин. М., «Мир», 1972. 428 с. 108. Хаусдорф Ф. Теория множеств. М.—Л., ОНТИ, 1937. 304 с. 109. Хомский Н. О некоторых формальных свойствах грамматик. — Кибернет. сб., 1962, вып. 5, с. 279—312. НО. Хомский Н. Формальные свойства грамматик. — Кибернет. сб. Новая сер., 1966, вып. 2, с. 121—230. 111. Цейтлин Г. Е. Вопросы полноты в множестве гс-отношений.— Тео- Теория автоматов, 1967, вып. 3, с. 16—29. 112. Цейтлин Г. Е. Элементы теории булевых функций. К., «Техшка», 1967. 75 с. 113. Цейтлин Г. Е. Вопросы функциональной полноты для одной моди- модификации алгебры логики. — Кибернетика, 1969, № 4, с. 39—45. 114. Цейтлин Г. Е. Структура модифицированной алгебры Поста и ее свойства. — Киберветика, 1970, № 4, с. 39—55. 115. Цейтлин Г. Е. О бесконечно порожденных подалгебрах модифици- модифицированной алгебры Поста. — Кибернетика, 1971, № 2, с. 43—56. 116. Цейтлин Г. Е. Канонические представления логических условий Литература 311 в системе алгоритмических алгебр. — В кн.: Языки программирования и методы их реализации. К., 1973, с, 22—34. 117. Цейтлин Г. Е. Формальные преобразования в алгоритмической алгебре условий. Препринт Ин-та кибернет., 73-25. К., 1973. 28 с. 118. Цейтлин Г. Е. Некоторые структурные проблемы в алгебрах кон- контекстно-свободных языков. — Проблемы кибернетики, 1974, вып. 28, с. 269—275. 119. Цейтлин Г. Е. О критериях бесконечной порожденное™ в универ- универсальных алгебрах. — Кибернетика, 1974, № 3, с. 46—52. 120. Цейтлин Г. Е. Однородные структуры и модифицированные алгеб- алгебры Поста.— Труды Междунар. симпозиума ИФАК. Дискретные си- системы. Т. 3. Рига, с. 238—247. 121. Цейтлин Г. Е. Проблема тождественных преобразований схем структурированных программ с замкнутыми логическими условиями. Ч. 1. — Кибернетика, 1978, № 3, с. 50—57. 122. Цейтлин Г. Е. Система алгоритмических алгебр и некоторые схемы управления в однородных структурах. — В кн.: Вопросы теории и построения вычислительных систем (Вычислительные системы). Ново- сиб., 1977, с. 29—40. 123. Цейтлин Г. Е., Ющенко Е. Л. О представлении языков в бо автоматах. — Кибернетика, 1974, № 6, с. 40—52. 124. Цейтлин Г. Е., Ющенко Е. Л. Некоторые вопросы теории пара- параметрических моделей языков и параллельный синтаксический ана- анализ.— Труды Всесоюз. симпозиума по методам реализации новых алгоритмич. языков. Ч. 2. Новосибирск, 1975, с. 61—73. 125. Цейтлин Г. Е., Ющенко Е. Л. О параметрических моделях язы- языков, ориентированных на однозначный ПР-анализ. — Кибернетика, 1977, № 1, с. 21—35. 126. Шевченко В. В. Об одном подходе к проблеме синтаксического анализа. — Кибернетика, 1974, № 4, с. 30—39. 127. Ш рейд ер 10. А. Равенство, сходство, порядок. М., «Наука», 1971. 256 с. 128. Ющенко Е. Л. Адресное программирование. К., Гостехиздат УССР, 1963. 288 с. 129. Ющевко Е. Л., Лаврищева Е. М. Метод анализа программ на базе СМ-грамматик. — Кибернетика, 1972, № 2, с. 41—45. 130. Ющенко Е. Л., Перевозчикова О. Л. Развитие языков про- программирования и диалоговых систем в СССР. —Кибернетика, 1976, № 6, с. 16—33. 131. Ющенко Е. Л., Цейтлин Г. Е. Об алгебре многорегистровых операторов. —Кибернетика, 1971, № 2, с. 66—71. 132. Ющенко Е. Л., Цейтлин Г. Е. О СМ-грамматиках контекстно- свободных языков. — В кн.: Системное программирование. Ч. 2. Ново- Новосибирск, 1973, с. 155—160. 133. Я б л о некий С. В. Функциональные построения в /с-значной логи- логике. — Труды Мат. ин-та АН СССР. 1958, 51, с. 5—142. 134. Яблонский С. В., Гаврилов Г. П., Кудрявцев Б. В. Функции алгебры логики и классы Поста. М., «Наука», 1966. 119 с. 135. Я н г е р Д. X. Распознавание и анализ контекстно-свободных язы- языков за время rfi. —В кн.: Проблемы математической логики. М., 1970. с. 344—363. 136. Янов Ю. И. О логических схемах алгоритмов. —Проблемы кибер- кибернетики, 1958, вып. 1, с. 75—127. 137. Я.йов Ю. И. Об инвариантных операциях над событиями. —Про- —Проблемы кибернетики, 1964, вып. 12, с. 253—258.
312 Литература 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. Floyd R. W. 1964, 7, № 2, p. G 1 u s h к о v V. gashev V. A. В., Mjasnikov V. A., Tor- and compnting technology. —In: 65—70. E., Jushchenko E. L. The Янов 10. И. О некоторых подалгебрах событий, не имеющих конеч- конечных полных систем тождеств. —Проблемы кибернетики, 1966, вып. 17, с. 255—259. Янов 10. И., Мучник А. А. О существовании fc-значных замк- замкнутых классов, не имеющих конечного базиса. —Докл. АН СССР, 1959, 127, № 1, с. 44—46. Brooker R., Morris D. An assembly program for a phrase struc- structure language. — Comput. J., I960, 3, № 3, p. 168—174. Brooker R., Morris D,, McCallum J., R о h J. The compiler compiler. — Annu. Rev. Automat. Program., 1963, № 3, p. 229. Culic Karel. II Contribution to deterministic top-down analysis of context-free languages. — Kybernetika, 1968, 4, № 5, p. 422—431. Floyd R. W. Syntactic analysis and operator precendence. —J. Assoc. Comput. Mach., 1963, 10, № 3, p. 316—333. Bounded context syntactic analysis. — Communs ACM, 62-67. .M., Ignatiev M. Recursive machines IFIP Congress-74. Stockholm, 1974, p. Glushkov V. M., Tseitlin G. theory of language processors and homogeneons structures. — In: II Inter- International Symposium on Programming. Paris, 1976, p. 201—218. Greibach S. A. A new normal form theorem for context-free phrase structure grammars. — J. Assoc. Comput. Mach., 1965, 12, № 1, p. 42—52. Hennie F. S. Iterative arrays of logical circuits. New York — London, John Willey, Sons, Ins., 1961. 242 p. Irons E. T. A syntax directed compiler for ALGOL-60. —Communs ACM, 1961, 4, № 1, p. 51—55. Knuth D. E. On the translation of languages from left to right. — Inform, and Contr., 1965, 8, № 6, p. 607—639. Kurki-Suonio R. Notes on top-dowm languages. —BIT, 1969, 9, № 4, p. 225-238. Lewis P. M., Stearns R. E. Syntax-directed transduction. — J. Assoc. Comput. Mach., 1968, 15, № 3, p. 464—488. Mafuszynski J. Contribution to the bottom-up recognition.—Bull. Acad. pol. sci. Ser. sci. math., astron. et phys., 20, № 9, p. 785—788. Mi n s k у M. H. Recursive unsolvability of Post's problem of «Tag» and other topics in the theory of Turing machines. —Ann. Math., 1961, 74, № 2, p. 437—455. Post E. L. The two-valued iterative systems of mathematical logic- Ann. Math. Stud., 1941, № 5, p. 2—337. Rosenberg I. G. Completeness, closed multiple-valued logics. —Montreal, Centre Montreal, 1974. 26 p. Rosenkrantz D. J., Stearns top-dowm grammars. — Inform, and Tseytlin~~~~ dimentional №32, VVirt formal definition. № 2, p. 89—99. Wood D. The theory of left-factored languages. P. 1, 2. —CompnU J., 1969, 12, № 4, p. 349—356; 1970, 13, № 1, p. 55—62. classes and relations de rech. math. Univ. in de R. E. Properties of deterministic Contr., 1970, 17, № 3, p. 226—256. G. E. The theory of the modified Post algebras and multi- automata structnres. — Lect. Notes Comput. Sci., 1975, 418—424. N.. Weber H. EULER: a generalization of ALGOL and its 2. — Commnns ACM, 1966, 9, № 1, p. 13—25; P. 1, ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ Автомат — детерминированный 203, 225 — конечный 202 — магазинный 228, 236 — над внутренней памятью 222 — операционный 114 — с п вспомогательными лентами 226 — с памятью типа бобслей 229 — счетчиковый 229 — управляющий 114 Адрес 51 — 2-го ранга 51 — высшего ранга 51 Адресный язык 163 Аксиома грамматики 172 Аксиомы булевой алгебры 16, 17, 66, 127 — алгебры событий 207 Алгебра — бесконечно порожденная 78 — булева 66, 127, 206 — конечно-порожденная 78 — контекстно-свободная 303 — континуального типа 81 — ft-значная Поста 73 — логики 87 — многоосновная 108, 302 — модифицированная Поста 145, 160 — не имеющая базиса 82 — плотная 84 — операторов 118 — универсальная 68 Алгебры алгоритмические 118 Алгол-60 180 Алгоритм — регуляризации 120 — синтаксического анализа 234, 246 — — контроля 234 Анализ — беспереборный 248 — беступиковый 248 ¦— восходящий 246 — двусторонний 263 — левосторонний 248 — многослойный 281 — нисходящий 247 — синтаксический, см. синтакси- синтаксический анализ — тупиковый 248 Анализатор 246 Алфавит 172 •— нетерминальный 173 — объединенный 173 — терминальный 173 Антипмпликация 88 — обратная 88 — прямая 88 Антисимметричность 14, 53 Ассоциативность 16,19, 70 Базис алгебры 81 — бесконечный 82 — конечный 83 Бобслей 229, 299 бс-Аналпзатор 281 бс-Магазии 225, 281 Бэкусова нормальная форма 180, 234 Вершина максимальная 182 Взаимно-однозначное отображе- отображение 50 — соответствие 22 Вирта — Вебера алгорптм синтак- синтаксического аналпза 253, 255 Включение множеств 13 — строгое 13
314 Предметный указатель Вложение изоморфное 57, 104 Вхождение подцепочки 178 — символа 178 Вывод 107, 172, 174, 181, 272 — бесповторный 187 — левый 188 — полный 175 — правый 188 — тождества в алгебре событий 208 — тупиковый 174, 278 — управляемый 273 Выражение арифметическое 292 Гомоморфизм 99, 102 — естественный 100 Грамматика автоматная 202, 274 — беспереборная 271 — в нормальной форме 175, 176 — инверсно-рекурсивного типа 266, 267, 269 — контекстно-свободная 187 — леволинейная 199 — левофакторная 262 — линейная 199 — LL(k) 259 — LF(k) 262 — LL(f) 262 — LR 269 -г- непосредственно составляю- составляющих 179, 188 — неукорачивающая 186, 193 — обобщенная 184, 189 — операторная 249 — определенная 189 — параметрическая 265, 266, 269, 274 — порождающая 173, 176 — праволинейная 199 — предшествования 249 — предшествования Вирта —Ве- бера 253, 256 — приведенная 194 — распознающая 173 — рекурсивного типа 271, 277 — скобочная 281 — сп ограниченным контекстом 249 — старшинства разделителей 249, 253 — формальная 172 — Хомского 173 — эквивалентная 175, 186 Грань верхняя (нижняя) 58 Граф структурный 62 График гс-отношения 36 Грейбах нормальная форма 288 Группа — обратимых операторов 105 Группоид 102 — абелев 102 — аддитивный 102 — идемпотентный 102 — мультипликативный 102 Двойственное выражение 60, 132 Двойственности принцип, см. принцип двойственности Декартова степень 21 Декартово произведение 21 Деление языка на слово 216, 258 Де Моргана правило 17 Дерево вывода 182 Диагональ 44 Диаграммы Венна 16 Дизъюнктивная нормальная фор- форма 90,134 простая 134 — расширенная 136 совершенная 90, 134 — — — сокращенная 141 Дизъюнкция 16, 126, 148 — условий 117 — элементарная 89, 133 Дистрибутивность 17, 20 Дополнение 16, 66 Единица полной структуры 65 — полугруппы 102 — главная 103 Жегалкина набор 89 — полином 91 Закон обращения 104 Замыкание 76 Зона регистра активная 163 Идентификатор 180 Идемпотентность 17, 102 Изоморфизм алгебр 67, 99, 109 — моделей 67 — структур 64 — частично упорядоченных мно- множеств 56 Имыитатор 76 Иыплпканта140 — простая 141 Импликация 88 Инверсия 144 Инволюция 17 Индукция трансфинитная, см. трансфинптная индукция Интервал 24, 61 Интерпретатор 41, 231, 265 Интерпретация 140, 233, 296 Интуитивная теория множеств 11 Инструментальная машина 76 Предметный указатель 315 Истинности значения 87 — таблицы 88, 127 Итерация языка 207 Каноническая форма 106, 189 Кардинальное число 31 Кантора — Бернштейна теорема 31 Кантора теорема 27, 33, 34 — диагональный метод 27 Квазипорядок 56 Квайна алгоритм 141 Класс разбиения 20, 53 — грамматический 173 — примитивный 101 — смежности 53 — функционально замкнутый 92 Кнута алгоритм синтаксического анализа 269 Кодирование 23 Коммутативность 16, 19 Композиционный ряд 65 Композиция отношений 46 ¦— операторов однорегистровых 145 многорегистровых 148 — трансляторов 74 — функций 148 Конгруэнция 99 Конкатенация 70 Конус 60 Конституэнта единицы 89, 134 — обобщенная 137 Контекст в не продукции 179 Континуум-гипотеза 35 Конъюнктивная нормальная фор- форма 90, 134 Конъюнкция 16 — расширенная 135 — полная 137 — условий 117 — элементарная 133, 89 Корень дерева 182 Коэффициент периодически опре- определенного преобразования 143 Критерий конечной порожденно- сти 85 — Поста о полноте 80, 93 — существования базиса 84 Лента элластичная 222 Логическое сложение 16 — исчисление 173 — произведение 16 Магазин 223 — входной 224 — вывода 259 — выходной 224 — двусторонний 224 — односторонний 224 Математическое обеспечение 113 Метапеременные 173 Метаязык 234 Метка обращений к магазину 286 Микропрограмма регулярная 118 Минимизация условий 140 — функций 91 Множество 11 — вполне упорядоченное 58 — двойственное 60, 155 — изолированное 94 — информационное 115 — континуальное 27 — левых символов 251 — линейно упорядоченное 56 — несчетное 27 — плотное 25 — правых символов 251 — рекурсивное 186 — самодвойственное 155 — счетное 24 — универсальное 14 — частично упорядоченное 56 Модель 67 — абстрактная вычислительной среды 166 — абстрактная ЭВМ 114 — параметрическая 266 Моноид 103 Мощность множества 28, 30 Непротиворечивость системы ак- аксиом 208, 209 Нетерминал 270 Образ 49 Обращение в режиме записи 222 чтения 222 Обращение цепочки 213 — языка 213 Объединение множеств 15 — языков 15 Оператор 103 — ввода — вывода 164 — выделения 166 — засылки 165 — многорегистровый 147, 171 — обратимый 105 — однорегистровый 144 — пересылки 166 — пропуска скобок 166 — тождественный 164 Операция — гс-арная 36 — булева 15 — неполного склеивания 141
316 Предметный указатель — обращения 213 — пересечения 15, 214 — поглощения 141 — поразрядная 148, 164 — производная 71 — рекурсии 217 — чтения 222 — элементарная 172 Основание алгебры 86 Отношение и-арное 37 — бинарное 38 — всюду определенное 47 — квазиуниверсальное 269 — обратное 42 — ге-отношение 36 — перевода 41 — предшествования 250, 255 — стабильное 99 — унарное 37 — функциональное 46 — частичного порядка 55 — эквивалентности 53 Отображение — адресное 51 — взаимно-однозначное 50 — зеркальное 180 — естественное 55 — тождественное 50 Отождествление аргументов 151 — координат 43 Отражение зеркальное слова 180 Отрезок нумерующий 141 Отрицание 88 Очередь циклическая 224 Параметризация 266, 271 — тривиальная 274 Перевод оптимальный 113 Пересечение множеств 15 — языков 14, 214 Пересчет на регистре 150 Переход правильный 227 Плотности условие 83 Поверхность алгебры 86 Подалгебра 76 — достижимая сверху (снизу) 86 — изолированная 96, 154 — максимальная 79, 159 — пограничная 160 — предельная 160 Подмножество 13 — собственное 13 Подобие строк 270 Полугруппа 70, 145 — свободная 103 — симметрическая 104 Порождающая многоосновная ал- алгебра 110 Порядок линейный 56 — строгий 56 — частичный 56 Правила — вывода 210 — замены 210 — поглощения 17 ПР-анализатор с регулярным уп- управлением 280 — магазинный 264 ПР-выводимость 263 Предикат 67 Преобразование периодически определенное 143 — с вспомогательными перемен- переменными 149 Преобразователь конечный 209 Приведенная форма грамматики 194, 270 Принцип двойственности 60, 91, 132 . Проблема аксиоматизации алго- алгоритмических алгебр 125 — анализа автоматов 207, 243 — перечислимости 296 — полноты 79, 208 — принадлежности 296 — синтаксического анализа 234Г 246 — синтеза автоматов 207 — существования 296 Продолжение вершины 182 Продукция 172 Проекция отношения 46 Прообраз 49 — полный 49 Прямая сумма 20 Путь в дереве 182 Разбдение 20 Развертка 247 Разность множеств 19 — симметрическая 19 Разряд регистра 141 ¦ j Распознавание правильности це- цепочки 173 _¦ ; ¦•-¦¦¦ Регистр абстрактный 115, 141 Регулярная схема микропрограм- микропрограммы 118 Рекурсия языков 217 Решетка 62 Решение системы уравнений 196, 208 — минимальное 196 Рефлексивность 13, 22, 52 Ряд композиционный, см. компо- композиционный ряд Предметный указатель 317 Свертка 246 — де Моргана 45 Сдвиг 144,164 — частичный 166 Сегмент 24 Семантика языка программирова- программирования 304 Сечение 46 Сигнатура 67, 68 — алгебры 68 — модели 67 Символ — начальный 173 — парный 290 — фиктивный 194 Симметричность 25, 53 Синтаксис языка программирова- программирования 180 Синтаксический анализ 234, 246, 282 — контроль 234 — тип 184 Синтез магазинного автомата 234, 236 Система — аксиоматическая 209 — алгоритмических алгебр 118 — образующих 78 — операционная 234, 299 — параметрическая 233 — программирования 41 — составляющих 178 — уравнений 195 — формальная 172 — функционально полная 91 Слово пустое 213 СМ-грамматика — двусторонняя 289 — транслирующая 299 — одномагазинная 285 СМ-система 294, 298 — вырожденная 298 Собственное подмножество 13 Событие 203 Совокупность соотношений опре- определяющая 108 Составляющая цепочки 178 атомная 178 Способ проведения вывода 181 Степень языка 206 Стратегия двустороннего анализа 263 — развертки 247 — свертки 246 Стрелка Пирса 88, 94 Строгое включение 13 Структура — булева 66 — дистрибутивная 66 — однородная 143 — полная 65 — синтаксическая 178 Сумма (mod 2) 88 — прямая 20 Суперпозиция отношений 48 — функций 71 — языков 70, 210 Схема грамматики 173 — каскадная 143 Таблица истинности 88 Тип модели 67 Тождество 101 Транзитивность 14, 23, 53 Транслятор 41 - — двухпроходовый 253 — синтаксически управляемый 232 Трансляция 113, 209, 295, 296 Транспозиция 42 Трансфинитная индукция 59 Трансцендентное число 29 Трассировка 168 Умножение левое условия на. опе- оператор 117 — операторов 116 — языков 206 Условие однозначности 203 — операторное 132 — полной определенности 203 — связности 203 — характеристическое 131 Участок линейный программы 115- Фактор-алгебра 100 — множество 106 Ферма великая теорема 13 — теорема 220 Фиксатор 51 Фильтр 126 Флойда алгоритм синтаксическо- синтаксического анализа 249, 252, 253 Форма системы уравнений приве- приведенная 270 Формальная система 172 Формальный язык 172 Функция алгебры логики 73, 8Т — булева 48 — выходов 210, 225 — двойственная 132, 155 — &-значноп логики 73 — инверсная 132 — линейная 92 — монотонная 92 — переходов 210, 225 \?
318 Предметный указатель — порождающая 143, 170 — различающая 262 — самодвойственная 92 — сохраняющая 0 92 1 92 — характеристическая 14 Цепочка ассоциированная с дере- деревом 184 — взвешенная 271 — выводимая 174, 266, 273 — непосредственно выводимая 266, 272 — обратная 213 — правильная 172 Цепь 56 Цермело теорема 59 Цикл 42 Цорна лемма 59 Частичный порядок 55 Штрих-операция 51,164 — Шеффера 88, 94 Эквивалентность 88 Эквивалентные множества 22 Элемент — максимальный 58 — минимальный 58 — наибольший 58/ — наименьший 58 — непосредственно следующий (предшествующий) 59 — неразложимый 105 — обратный 104 — универсальный 155 Эммулятор 75 Язык — автоматный 267 — естественный 173 — интерпретированный 265 — искусственный 172 — контекстно-свободный 187 — леволинейный 199 — линейный 199 — над алфавитом 30 — непосредственно составляющих 179, 188 — порожденный автоматом 209, 228 грамматикой 175, 266, 273 системой уравнений 196 — праволинейный 199 — представимый автоматом 203, 227 — предшествования 249 — предшествования Вирта — Ве- бера 256 — регулярный 203, 205 — старшинства разделителей 249 — типа АЛГОЛ 196 — формальный 172 — LL{k) 259 — LR(k) 258 УКАЗАТЕЛЬ ТЕОРЕМ И ЛЕММ ' Теоремви 1.1 1.2 1.3 1.4 1.5 1.6 2.1 2.2 2.3 2.4 2.5 2.6 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 4.1 4.2 4.3 25 27 29 31 33 34 50 54 60 64 64 65 77 78 79 80 80 82 83 83 136 146 154 3.9 3.10 3.11 3.12 3.13 3.14 3.15 3.16 3.17 3.18 3.19 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.4 4.5 84 85 90 91 93 96 97 97 101 104 108 118 118 132 135 139 141 144 145 146 155 155 4.10 4.11 4.12 4.13 4.14 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 5.10 5.11 5.12 5.13 5.14 4.6 4.7 148 152 154 156 162 175 184 184 186 189 194 196 197 199 205 205 206 209 212 156 156 5.15 5.16 5.17 5.18 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 6.10 6.11 6.12 6.13 6.14 6.15 6.16 214 218 219 221 229 243 244 267" 267' 267 269' 274 276; 278 278 281 281 288- 289' 303 Леммы' 4.8 6.1 162 28? шщы, В указателе приведены номера теорем и лемм и соответствующие им стра-